- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/userpause.php
- Класс: BitrixImOpenLinesUserPause
- Вызов: UserPause::getHistory
static function getHistory(DateTime $dateStart, ?DateTime $dateEnd = null, int $configId = 0, int $userId = 0): array
{
if (!Loader::includeModule('im'))
{
return [];
}
$history = UserLogTable::query()
->setSelect([
'USER_ID',
'DATA',
'DATE_CREATE',
])
->setOrder(['DATE_CREATE' => 'ASC'])
->addFilter('=TYPE', Log::TYPE_PAUSE)
->addFilter('>=DATE_CREATE', $dateStart)
->addFilter('addFilter('=USER_ID', $userId);
}
elseif ($configId)
{
$subQuery = ConfigQueueTable::query()
->setSelect(['ENTITY_ID'])
->where('CONFIG_ID', $configId)
->where('ENTITY_TYPE', 'user')
;
$history->whereIn('USER_ID', $subQuery);
}
$result = $startDates = [];
foreach ($history->fetchAll() as $row)
{
if (!isset($startDates[$row['USER_ID']]))
{
$startDates[$row['USER_ID']] = null;
}
if (!isset($result[$row['USER_ID']]))
{
$user = User::getInstance($row['USER_ID']);
$result[$row['USER_ID']]['user'] = (new RestAdapter($user))->toRestFormat();
}
if ($row['DATA'] === 'Y')
{
$startDates[$row['USER_ID']] = $row['DATE_CREATE'];
}
else
{
$result[$row['USER_ID']]['history'][] = [
'start' => $startDates[$row['USER_ID']] ? $startDates[$row['USER_ID']]->toString() : null,
'end' => $row['DATE_CREATE']->toString(),
];
$startDates[$row['USER_ID']] = null;
}
}
foreach ($startDates as $userId => $startDate)
{
if ($startDate)
{
$result[$userId]['history'][] = [
'start' => $startDate->toString(),
'end' => null
];
}
}
return $result;
}