• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/taskcontroller.php
  • Класс: Bitrix\Crm\Timeline\TaskController
  • Вызов: TaskController::onModify
public function onModify($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');
	}

	$currentFields = isset($params['CURRENT_TASK_FIELDS']) && is_array($params['CURRENT_TASK_FIELDS'])
		? $params['CURRENT_TASK_FIELDS'] : array();
	$previousFields = isset($params['PREVIOUS_TASK_FIELDS']) && is_array($params['PREVIOUS_TASK_FIELDS'])
		? $params['PREVIOUS_TASK_FIELDS'] : array();

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

	$prevStatusID = isset($previousFields['STATUS']) ? (int)$previousFields['STATUS'] : 1;
	$curStatusID = isset($currentFields['STATUS']) ? (int)$currentFields['STATUS'] : $prevStatusID;

	$historyEntryID = 0;
	if($prevStatusID !== $curStatusID)
	{
		$authorID = isset($currentFields['CHANGED_BY']) ? $currentFields['CHANGED_BY'] : 0;
		if($authorID <= 0 && isset($currentFields['RESPONSIBLE_ID']))
		{
			$authorID = (int)$currentFields['RESPONSIBLE_ID'];
		}
		if($authorID <= 0)
		{
			$authorID = \CCrmSecurityHelper::GetCurrentUserID();
		}

		$statusNames = self::getAllStatusNames();
		$historyEntryID = ModificationEntry::create(
			array(
				'ENTITY_TYPE_ID' => \CCrmOwnerType::Activity,
				'ENTITY_ID' => $ownerID,
				'AUTHOR_ID' => $authorID,
				'SETTINGS' => array(
					'ENTITY' => array('TYPE_ID' => \CCrmActivityType::Task),
					'FIELD' => 'TASK:STATUS',
					'START' => $prevStatusID,
					'FINISH' => $curStatusID,
					'START_NAME' => isset($statusNames[$prevStatusID]) ? $statusNames[$prevStatusID] : $prevStatusID,
					'FINISH_NAME' => isset($statusNames[$curStatusID]) ? $statusNames[$curStatusID] : $curStatusID
				),
				'BINDINGS' => self::mapBindings($bindings)
			)
		);
	}
	foreach($bindings as $binding)
	{
		$this->sendPullEventOnAdd(new \Bitrix\Crm\ItemIdentifier($binding['OWNER_TYPE_ID'], $binding['OWNER_ID']), $historyEntryID);
	}
}