%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/socialnetwork/lib/integration/intranet/absence/ |
Current File : //home/bitrix/www/bitrix/modules/socialnetwork/lib/integration/intranet/absence/user.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage socialnetwork * @copyright 2001-2017 Bitrix */ namespace Bitrix\Socialnetwork\Integration\Intranet\Absence; use Bitrix\Main\Config\Option; use Bitrix\Main\Loader; use Bitrix\Main\ModuleManager; class User { public static function getVacationList() { global $CACHE_MANAGER; $result = array(); $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 = intval(Option::get('intranet', 'iblock_absence'))) ) { $CACHE_MANAGER->registerTag('iblock_id_'.$absenceIblockId); $res = \CIBlockProperty::getList( array(), array( 'IBLOCK_ID' => $absenceIblockId, 'ACTIVE' => 'Y', 'CODE' => 'ABSENCE_TYPE' ) ); if ( ($property = $res->fetch()) && ($absenceTypePropertyId = intval($property['ID'])) ) { $vacationXMLIdList = array(); $res = \CIBlockPropertyEnum::getList( array(), array( 'PROPERTY_ID' => $absenceTypePropertyId, 'XML_ID' => array('VACATION', 'LEAVEMATERINITY') ) ); while($enum = $res->fetch()) { $vacationXMLIdList[] = intval($enum['ID']); } if (!empty($vacationXMLIdList)) { $filter = array( 'IBLOCK_ID' => $absenceIblockId, 'PROPERTY_ABSENCE_TYPE' => $vacationXMLIdList, 'ACTIVE' => 'Y', ); $res = \CIBlockElement::getList( array(), $filter, false, false, array('ID', 'DATE_ACTIVE_FROM', 'DATE_ACTIVE_TO', 'PROPERTY_ABSENCE_TYPE', 'PROPERTY_USER') ); while ($absence = $res->fetch()) { $result[$absence['PROPERTY_USER_VALUE']] = array( 'USER_ID' => $absence['PROPERTY_USER_VALUE'], 'DATE_FROM' => $absence['DATE_ACTIVE_FROM'], 'DATE_TO' => $absence['DATE_ACTIVE_TO'], 'ABSENCE_TYPE' => $absence['PROPERTY_ABSENCE_TYPE_ENUM_ID'] ); } } } } $CACHE_MANAGER->endTagCache(); $cache->endDataCache($result); } return $result; } public static function getDayVacationList($params = array()) { $result = array(); $userList = (isset($params['userList']) && is_array($params['userList']) ? $params['userList'] : false); $vacationList = self::getVacationList(); if (empty($vacationList)) { return $result; } $ts = time(); foreach($vacationList as $vacation) { if ( $userList && !in_array($vacation['ID'], $userList) ) { continue; } $vacationTSStart = makeTimeStamp($vacation['DATE_FROM'], FORMAT_DATETIME); if ($vacationTSStart < $ts) { $vacationTSFinish = makeTimeStamp($vacation['DATE_TO'], FORMAT_DATETIME) + 86400; if ($vacationTSFinish > $ts) { $result[$vacation['USER_ID']] = $vacation['ABSENCE_TYPE']; } } } return $result; } } ?>