- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/timeline/logmessagecontroller.php
- Класс: Bitrix\Crm\Timeline\LogMessageController
- Вызов: LogMessageController::onCreate
public function onCreate(array $input, int $typeCategoryId, ?int $authorId = null): void
{
if (empty($input))
{
return;
}
// LEAD or DEAL
$entityTypeId = $input['ENTITY_TYPE_ID'] ?? null;
$entityId = $input['ENTITY_ID'] ?? null;
if (!isset($entityTypeId, $entityId))
{
return;
}
$settings = $input['SETTINGS'] ?? [];
$bindings[] = [
'ENTITY_TYPE_ID' => $entityTypeId,
'ENTITY_ID' => $entityId
];
$sourceId = '';
// COMPANY or CONTACT
$baseEntityTypeId = $input['BASE_ENTITY_TYPE_ID'] ?? null;
$baseEntityId = $input['BASE_ENTITY_ID'] ?? null;
if (isset($entityTypeId, $entityId))
{
$base = [];
if (isset($baseEntityTypeId))
{
$base['ENTITY_TYPE_ID'] = $baseEntityTypeId;
}
if (isset($baseEntityId))
{
$base['ENTITY_ID'] = $baseEntityId;
}
$settings['BASE'] = $base;
if (isset($baseEntityTypeId, $baseEntityId))
{
$bindings[] = [
'ENTITY_TYPE_ID' => $baseEntityTypeId,
'ENTITY_ID' => $baseEntityId
];
}
if (isset($input['BASE_SOURCE']))
{
$sourceId = $input['BASE_SOURCE'];
}
if (isset($input['BASE_SOURCE_ID']))
{
$sourceId = $input['BASE_SOURCE_ID'];
}
}
$params = [
'TYPE_CATEGORY_ID' => $typeCategoryId,
'ENTITY_TYPE_ID' => $entityTypeId,
'ENTITY_ID' => $entityId,
'AUTHOR_ID' => ($authorId > 0) ? $authorId : static::getCurrentOrDefaultAuthorId(),
//'CREATED' => (new DateTime())->add('PT1S'), // for the correct order of records in the timeline
'SETTINGS' => $settings,
'SOURCE_ID' => $sourceId,
'BINDINGS' => $bindings,
];
if ($input['ASSOCIATED_ENTITY_TYPE_ID'])
{
$params['ASSOCIATED_ENTITY_TYPE_ID'] = $input['ASSOCIATED_ENTITY_TYPE_ID'];
}
if ($input['ASSOCIATED_ENTITY_ID'])
{
$params['ASSOCIATED_ENTITY_ID'] = $input['ASSOCIATED_ENTITY_ID'];
}
if (isset($input['CREATED']) && $input['CREATED'])
{
$params['CREATED'] = $input['CREATED'];
}
$timelineEntryId = $this->getTimelineEntryFacade()->create(
Facade::LOG_MESSAGE,
$params
);
if ($timelineEntryId <= 0)
{
return;
}
foreach ($bindings as $binding)
{
$this->sendPullEventOnAdd(
new ItemIdentifier($binding['ENTITY_TYPE_ID'], $binding['ENTITY_ID']),
$timelineEntryId
);
}
}