- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/observer/entity/observertable.php
- Класс: Bitrix\Crm\Observer\Entity\ObserverTable
- Вызов: ObserverTable::transferOwnership
static function transferOwnership($oldEntityTypeID, $oldEntityID, $newEntityTypeID, $newEntityID)
{
if(!is_int($oldEntityTypeID))
{
$oldEntityTypeID = (int)$oldEntityTypeID;
}
if($oldEntityTypeID <= 0)
{
throw new Main\ArgumentException('Must be greater than zero.', 'oldEntityTypeID');
}
if(!is_int($oldEntityID))
{
$oldEntityID = (int)$oldEntityID;
}
if($oldEntityID <= 0)
{
throw new Main\ArgumentException('Must be greater than zero.', 'oldEntityID');
}
if(!is_int($newEntityTypeID))
{
$newEntityTypeID = (int)$newEntityTypeID;
}
if($newEntityTypeID <= 0)
{
throw new Main\ArgumentException('Must be greater than zero.', 'newEntityTypeID');
}
if(!is_int($newEntityID))
{
$newEntityID = (int)$newEntityID;
}
if($newEntityID <= 0)
{
throw new Main\ArgumentException('Must be greater than zero.', 'newEntityID');
}
$data = array();
$now = new Main\Type\DateTime();
$connection = Main\Application::getConnection();
$dbResult = $connection->query(
"SELECT USER_ID, SORT FROM b_crm_observer WHERE ENTITY_TYPE_ID = {$oldEntityTypeID} AND ENTITY_ID = {$oldEntityID}"
);
while($fields = $dbResult->fetch())
{
$data[] = $fields;
}
if(empty($data))
{
return;
}
foreach($data as $item)
{
$queries = $connection->getSqlHelper()->prepareMerge(
'b_crm_observer',
array('ENTITY_TYPE_ID', 'ENTITY_ID', 'USER_ID'),
array(
'ENTITY_TYPE_ID' => $newEntityTypeID,
'ENTITY_ID' => $newEntityID,
'USER_ID' => $item['USER_ID'],
'SORT' => $item['SORT'],
'CREATED_TIME' => $now,
'LAST_UPDATED_TIME' => $now
),
array('SORT' => $item['SORT'], 'LAST_UPDATED_TIME' => $now)
);
foreach($queries as $query)
{
$connection->queryExecute($query);
}
}
$connection->queryExecute(
"DELETE FROM b_crm_observer WHERE ENTITY_TYPE_ID = {$oldEntityTypeID} AND ENTITY_ID = {$oldEntityID}"
);
}