• Модуль: 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}"
	);
}