• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/leadcontroller.php
  • Класс: Bitrix\Crm\Timeline\LeadController
  • Вызов: LeadController::register
public function register($ownerID, array $options = null)
{
	if(!is_array($options))
	{
		$options = array();
	}

	$enableCheck = isset($options['EXISTS_CHECK']) ? (bool)$options['EXISTS_CHECK'] : true;
	if($enableCheck && TimelineEntry::isAssociatedEntityExist(\CCrmOwnerType::Lead, $ownerID))
	{
		return;
	}

	$fields = self::getEntity($ownerID);
	if(!is_array($fields))
	{
		return;
	}

	//region Register Creation
	CreationEntry::create(
		array(
			'ENTITY_TYPE_ID' => \CCrmOwnerType::Lead,
			'ENTITY_ID' => $ownerID,
			'AUTHOR_ID' => self::resolveCreatorID($fields),
			'CREATED' => isset($fields['DATE_CREATE']) ? DateTime::tryParse($fields['DATE_CREATE']) : null,
			'BINDINGS' => array(
				array(
					'ENTITY_TYPE_ID' => \CCrmOwnerType::Lead,
					'ENTITY_ID' => $ownerID
				)
			)
		)
	);
	//endregion
	//region Register Status History
	$authorID = self::resolveEditorID($fields);
	$historyItems = LeadStatusHistoryEntry::getAll($ownerID);
	if(count($historyItems) > 1)
	{
		$initialItem = array_shift($historyItems);
		$statusNames = \CCrmLead::GetStatusNames();
		$prevStatusID = isset($initialItem['STATUS_ID']) ? $initialItem['STATUS_ID'] : '';
		foreach($historyItems as $item)
		{
			$curStatusID = isset($item['STATUS_ID']) ? $item['STATUS_ID'] : '';
			if($curStatusID === '')
			{
				continue;
			}

			if($prevStatusID !== '')
			{
				ModificationEntry::create(
					array(
						'ENTITY_TYPE_ID' => \CCrmOwnerType::Lead,
						'ENTITY_ID' => $ownerID,
						'AUTHOR_ID' => $authorID,
						'SETTINGS' => array(
							'FIELD' => 'STATUS_ID',
							'START' => $prevStatusID,
							'FINISH' => $curStatusID,
							'START_NAME' => isset($statusNames[$prevStatusID]) ? $statusNames[$prevStatusID] : $prevStatusID,
							'FINISH_NAME' => isset($statusNames[$curStatusID]) ? $statusNames[$curStatusID] : $curStatusID
						)
					)
				);
			}
			$prevStatusID = $curStatusID;
		}
	}
	//endregion
	//region Register Live Feed Messages
	LiveFeed::registerEntityMessages(\CCrmOwnerType::Lead, $ownerID);
	//endregion
}