- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/integration/intranet/user.php
- Класс: BitrixImIntegrationIntranetUser
- Вызов: User::getBirthdayForToday
static function getBirthdayForToday()
{
if (!BitrixMainModuleManager::isModuleInstalled('intranet'))
{
return [];
}
$option = Option::get('im', 'contact_list_birthday');
if ($option === 'none' || BitrixImUser::getInstance()->isExtranet())
{
return [];
}
global $USER;
$today = (new DateTime())->format('m-d');
if ($option === 'department')
{
$cacheId = 'birthday_'.$today.'_'.$USER->GetID();
}
else
{
$cacheId = 'birthday_'.$today;
}
$cache = BitrixMainDataCache::createInstance();
if($cache->initCache(86400, $cacheId, '/bx/im/birthday/'))
{
return $cache->getVars();
}
$user = CUser::getById($USER->GetId())->Fetch();
$filter = [
'=ACTIVE' => 'Y',
'=BIRTHDAY_DATE' => $today,
'=IS_REAL_USER' => true,
];
if ($option === 'department')
{
$filter['=UF_DEPARTMENT'] = $user['UF_DEPARTMENT'];
}
else
{
$filter['!=UF_DEPARTMENT'] = false;
}
$connection = BitrixMainApplication::getConnection();
$helper = $connection->getSqlHelper();
$result = [];
$users = UserTable::getList([
'filter' => $filter,
'select' => ['ID'],
'runtime' => [
new ExpressionField('BIRTHDAY_DATE', str_replace('PERSONAL_BIRTHDAY', '%s', str_replace('%', '%%', $helper->formatDate('MM-DD', 'PERSONAL_BIRTHDAY'))), 'PERSONAL_BIRTHDAY')
],
'limit' => 100,
])->fetchAll();
foreach ($users as $user)
{
$result[] = BitrixImUser::getInstance($user['ID'])->getArray(['SKIP_ONLINE' => 'Y', 'JSON' => 'Y']);
}
$cache->forceRewriting(true);
$cache->startDataCache();
$cache->endDataCache($result);
return $result;
}