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