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

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

	if(Main\Loader::includeModule('pull'))
	{
		$ownerTypeID = isset($previousFields['OWNER_TYPE_ID']) ? (int)$previousFields['OWNER_TYPE_ID'] : 0;
		$ownerID = isset($previousFields['OWNER_ID']) ? (int)$previousFields['OWNER_ID'] : 0;

		$historyEntryID = 0;
		if(isset($currentFields['COMPLETED']))
		{
			$curCompleted = $currentFields['COMPLETED'] === 'Y';
			$prevCompleted = isset($previousFields['COMPLETED']) && $previousFields['COMPLETED'] === 'Y';
			if(!$prevCompleted && $curCompleted)
			{
				$authorID = isset($params['USER_ID']) && $params['USER_ID'] > 0
					? (int)$params['USER_ID']
					: \CCrmSecurityHelper::GetCurrentUserID();

				$historyEntryID = \Bitrix\Crm\Timeline\WaitEntry::create(
					array(
						'ENTITY_ID' => $ID,
						'AUTHOR_ID' => $authorID,
						'BINDINGS' => array(
							array(
								'ENTITY_TYPE_ID' => $ownerTypeID,
								'ENTITY_ID' => $ownerID
							)
						)
					)
				);
			}
		}

		$pushParams = array(
			'ENTITY' => self::prepareEntityDataModel($ID, $currentFields),
			'SCHEDULE_ITEM' => self::prepareScheduleDataModel(
				$currentFields,
				array('ENABLE_USER_INFO' => true)
			)
		);

		if($historyEntryID > 0)
		{
			$historyFields = TimelineEntry::getByID($historyEntryID);
			if(is_array($historyFields))
			{
				$pushParams['HISTORY_ITEM'] = $this->prepareHistoryDataModel(
					$historyFields,
					array('ENABLE_USER_INFO' => true)
				);
			}
		}

		$tag = $pushParams['TAG'] = TimelineEntry::prepareEntityPushTag($ownerTypeID, $ownerID);
		\CPullWatch::AddToStack(
			$tag,
			array(
				'module_id' => 'crm',
				'command' => 'timeline_wait_update',
				'params' => $pushParams,
			)
		);
	}
}