• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/taskcontroller.php
  • Класс: Bitrix\Crm\Timeline\TaskController
  • Вызов: TaskController::onCreate
public function onCreate($ownerID, array $params)
{
	if(!is_int($ownerID))
	{
		$ownerID = (int)$ownerID;
	}
	if($ownerID <= 0)
	{
		throw new Main\ArgumentException('Owner ID must be greater than zero.', 'ownerID');
	}

	$fields = isset($params['TASK_FIELDS']) && is_array($params['TASK_FIELDS']) ? $params['TASK_FIELDS'] : null;

	$bindings = isset($params['BINDINGS']) && is_array($params['BINDINGS'])
		? $params['BINDINGS'] : array();

	if(empty($bindings))
	{
		$bindings = \CCrmActivity::GetBindings($ownerID);
	}

	if(empty($bindings))
	{
		return;
	}

	$authorID = isset($fields['CREATED_BY']) ? $fields['CREATED_BY'] : 0;
	if($authorID <= 0 && isset($fields['CHANGED_BY']))
	{
		$authorID = (int)$fields['CHANGED_BY'];
	}
	if($authorID <= 0 && isset($fields['RESPONSIBLE_ID']))
	{
		$authorID = (int)$fields['RESPONSIBLE_ID'];
	}
	if($authorID <= 0)
	{
		$authorID = \CCrmSecurityHelper::GetCurrentUserID();
	}

	$created = null;
	if(isset($params['PRESERVE_CREATION_TIME'])
		&& $params['PRESERVE_CREATION_TIME'] === true
		&& isset($fields['CREATED_DATE'])
	)
	{
		$created = new DateTime($fields['CREATED_DATE'], Date::convertFormatToPhp(FORMAT_DATETIME));
	}

	$historyEntryID = CreationEntry::create([
		'ENTITY_TYPE_ID' => \CCrmOwnerType::Activity,
		'ENTITY_ID' => $ownerID,
		'AUTHOR_ID' => $authorID,
		'CREATED' => $created,
		'BINDINGS' => self::mapBindings($bindings)
	]);

	$pullEventData = [$ownerID => $fields];

	\Bitrix\Crm\Timeline\EntityController::loadCommunicationsAndMultifields(
		$pullEventData,
		\Bitrix\Crm\Service\Container::getInstance()
			->getUserPermissions($params['CURRENT_USER'] ?? null)
			->getCrmPermissions()
	);

	foreach($bindings as $binding)
	{
		$itemIdentifier = new \Bitrix\Crm\ItemIdentifier($binding['OWNER_TYPE_ID'], $binding['OWNER_ID']);
		$this->sendPullEventOnAdd($itemIdentifier, $historyEntryID, $params['CURRENT_USER'] ?? null);
		$this->sendPullEventOnAddScheduled(
			$itemIdentifier,
			$pullEventData[$ownerID],
			$params['CURRENT_USER'] ?? null
		);
	}
}