- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/Timeline/Repository.php
- Класс: Bitrix\Crm\Service\Timeline\Repository
- Вызов: Repository::prepareLoadHistoryQuery
private function prepareLoadHistoryQuery(
int $limit,
bool $isExtraFetch,
\Bitrix\Main\ORM\Query\Query $bindingQuery,
array $filter,
?DateTime $offsetTime,
int $offsetId
): \Bitrix\Main\ORM\Query\Query
{
$query = TimelineTable::query();
$query->addSelect('*');
$query->addSelect('bind.IS_FIXED', 'IS_FIXED');
$query->registerRuntimeField('',
new ReferenceField('bind',
\Bitrix\Main\ORM\Entity::getInstanceByQuery($bindingQuery),
['=this.ID' => 'ref.OWNER_ID'],
['join_type' => 'INNER']
)
);
if (!empty($filter['ID']))
{
if (is_array($filter['ID']))
{
$query->whereIn('ID', $filter['ID']);
}
else
{
$query->where('=ID', $filter['ID']);
}
}
if (isset($filter['CREATED_to']))
{
$filter['CREATED_to'] = DateTime::tryParse($filter['CREATED_to']);
}
if (isset($filter['CREATED_from']))
{
$filter['CREATED_from'] = DateTime::tryParse($filter['CREATED_from']);
}
if (
$offsetTime instanceof DateTime
&& (!isset($filter['CREATED_to']) || $offsetTime->getTimestamp() < $filter['CREATED_to']->getTimestamp())
)
{
if ($isExtraFetch)
{
$query->addFilter('addFilter('=CREATED', $offsetTime);
$query->addFilter('context))->applyToQuery($query);
$query->setOrder(['CREATED' => 'DESC', 'ID' => 'DESC']);
if ($limit > 0)
{
$query->setLimit($limit);
}
return $query;
}