- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/intranet/absence/user.php
- Класс: BitrixSocialnetworkIntegrationIntranetAbsenceUser
- Вызов: User::getVacationList
static function getVacationList(): array
{
global $CACHE_MANAGER;
$result = [];
$cacheTTL = 3600 * 24 * 30;
$cacheDir = '/sonet/user_absence';
$cache = new CPHPCache();
if ($cache->initCache($cacheTTL, 'intranet_absence', $cacheDir))
{
$result = $cache->getVars();
}
else
{
$cache->startDataCache();
$CACHE_MANAGER->startTagCache($cacheDir);
if (
ModuleManager::isModuleInstalled('intranet')
&& Loader::includeModule('iblock')
&& ($absenceIblockId = (int)Option::get('intranet', 'iblock_absence'))
)
{
$CACHE_MANAGER->registerTag('iblock_id_'.$absenceIblockId);
$res = CIBlockProperty::getList(
[],
[
'IBLOCK_ID' => $absenceIblockId,
'ACTIVE' => 'Y',
'CODE' => 'ABSENCE_TYPE',
]
);
if (
($property = $res->fetch())
&& ($absenceTypePropertyId = (int)$property['ID'])
)
{
$vacationXMLIdList = [];
$res = CIBlockPropertyEnum::getList(
[],
[
'PROPERTY_ID' => $absenceTypePropertyId,
'XML_ID' => [ 'VACATION', 'LEAVEMATERINITY' ],
]
);
while ($enum = $res->fetch())
{
$vacationXMLIdList[$enum['XML_ID']] = (int)$enum['ID'];
}
if (isset($vacationXMLIdList['LEAVEMATERINITY']))
{
$result = array_merge($result, self::getVacationListOfType([
'absenceIblockId' => $absenceIblockId,
'absenceTypeId' => $vacationXMLIdList['LEAVEMATERINITY'],
]));
}
if (isset($vacationXMLIdList['VACATION']))
{
$result = array_merge($result, self::getVacationListOfType([
'absenceIblockId' => $absenceIblockId,
'absenceTypeId' => $vacationXMLIdList['VACATION'],
'fromTimestamp' => time() - (3600 * 24 * 120),
]));
}
}
}
$CACHE_MANAGER->endTagCache();
$cache->endDataCache($result);
}
return $result;
}