- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue.php
- Класс: BitrixImOpenLinesQueue
- Вызов: Queue::getList
static function getList($params)
{
$lastActivityDate = self::getTimeLastActivityOperator();
$timeHelper = Application::getConnection()->getSqlHelper()->addSecondsToDateTime('(-'.$lastActivityDate.')');
$query = new Query(QueueTable::getEntity());
if(Loader::includeModule('im'))
{
$query->registerRuntimeField('', new ReferenceField(
'IM_STATUS',
'BitrixImModelStatusTable',
['=ref.USER_ID' => 'this.USER_ID'],
['join_type'=>'left']
));
$query->registerRuntimeField('', new ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN %1$s > '.$timeHelper.' && (%2$s IS NULL || %1$s > %2$s) THEN 'Y' ELSE 'N' END', ['USER.LAST_ACTIVITY_DATE', 'IM_STATUS.IDLE']));
}
else
{
$query->registerRuntimeField('', new ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN %s > '.$timeHelper.' THEN 'Y' ELSE 'N' END', ['USER.LAST_ACTIVITY_DATE']));
}
if(isset($params['select']))
{
$query->setSelect($params['select']);
}
else
{
$query->addSelect('ID')->addSelect('IS_ONLINE_CUSTOM');
}
if (isset($params['filter']))
{
$query->setFilter($params['filter']);
}
if (isset($params['order']))
{
$query->setOrder($params['order']);
}
if(
!empty($params['cache']) &&
isset($params['cache']['ttl'])
)
{
$query->setCacheTtl($params['cache']['ttl']);
if(
isset($params['cache']['cacheJoins']) &&
$params['cache']['cacheJoins'] === true
)
{
$query->cacheJoins(true);
}
}
return $query->exec();
}