- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/agent/timeline/synclogmessagesourceidagent.php
- Класс: Bitrix\Crm\Agent\Timeline\SyncLogMessageSourceIdAgent
- Вызов: SyncLogMessageSourceIdAgent::getList
private function getList(int $lastId): array
{
$ids = array_column(
TimelineTable::query()
->setSelect(['ID'])
->where('ID', '>', $lastId)
->where('TYPE_ID', TimelineType::LOG_MESSAGE)
->whereIn('TYPE_CATEGORY_ID', [LogMessageType::CALL_INCOMING, LogMessageType::OPEN_LINE_INCOMING])
->whereNot('ASSOCIATED_ENTITY_TYPE_ID', CCrmOwnerType::Activity)
->setLimit(self::BATCH_LIMIT)
->setOrder(['ID' => 'ASC'])
->fetchAll(),
'ID'
);
if (empty($ids))
{
return [];
}
$items = TimelineTable::query()
->setSelect(['ID', 'TYPE_CATEGORY_ID', 'SETTINGS'])
->whereIn('ID', $ids)
->fetchAll()
;
foreach ($items as &$item)
{
$key = $item['TYPE_CATEGORY_ID'] == LogMessageType::CALL_INCOMING ? 'SOURCE_ID' : 'SOURCE';
$item['LOG_MESSAGE_SOURCE_ID'] = $item['SETTINGS']['BASE'][$key] ?? '';
unset($item['SETTINGS'], $item['TYPE_CATEGORY_ID']);
}
unset($item);
return $items;
}