Beispiel #1
0
         $arRes['CHAIN'][] = array('ID' => $arRes['ID'], 'NAME' => $arRes['NAME'], 'URL' => str_replace('#ID#', $arRes['ID'], $section_url));
     } else {
         $db1 = CIBlockSection::GetNavChain($iblockId, $arRes['ID']);
         while ($sect = $db1->Fetch()) {
             $arRes['CHAIN'][] = array('ID' => $sect['ID'], 'NAME' => $sect['NAME'], 'URL' => str_replace('#ID#', $sect['ID'], $section_url));
         }
     }
     if (!isset($arChains[$sect['ID']])) {
         $arChains[$sect['ID']] = $arRes['CHAIN'];
     }
     if (null === $chain_root) {
         $chain_root = $arRes['CHAIN'][0]['ID'];
     } elseif (false !== $chain_root && $chain_root != $arRes['CHAIN'][0]['ID']) {
         $chain_root = false;
     }
     $arRes["SETTINGS"] = CReportSettings::GetSectionSettings($arRes["ID"], true);
     $arRes["CAN_EDIT_TIME"] = "N";
     $arRes["HAS_SETTINGS"] = "N";
     if ($arRes["SETTINGS"]["UF_REPORT_PERIOD"] && !$arRes["SETTINGS"]["PARENT"]) {
         $arRes["HAS_SETTINGS"] = "Y";
     }
     if (in_array($arRes['ID'], $arSubordination) || CTimeMan::IsAdmin()) {
         $arRes["CAN_EDIT_TIME"] = "Y";
     }
     $res['DEPARTMENTS'][$arRes['ID']] = $arRes;
 }
 if ($chain_root) {
     foreach ($res['DEPARTMENTS'] as &$dpt) {
         if (count($dpt['CHAIN']) > 1) {
             array_shift($dpt['CHAIN']);
         }
 function GetUserSettings($USER_ID = false)
 {
     global $CACHE_MANAGER;
     $USER_ID = intval($USER_ID);
     if ($USER_ID == false) {
         $USER_ID = $GLOBALS['USER']->GetID();
     }
     $arSettings = array();
     $cache_id = self::getSettingsCacheId($this->USER_ID);
     if ($CACHE_MANAGER->Read(30 * 86400, $cache_id, "timeman_report_settings")) {
         $arSettings = $CACHE_MANAGER->Get($cache_id);
     } else {
         //$CACHE_MANAGER->RegisterTag("USER_CARD_".intval($USER_ID / TAGGED_user_card_size));
         $dbSettings = CUser::GetByID($USER_ID);
         $arUser = $dbSettings->Fetch();
         //getting user settings
         if ($arUser) {
             $arSettings = array('UF_REPORT_PERIOD' => CReportSettings::GetPeriodByID($arUser['UF_REPORT_PERIOD']), 'UF_LAST_REPORT_DATE' => $arUser['UF_LAST_REPORT_DATE'], 'UF_TM_REPORT_DATE' => $arUser['UF_TM_REPORT_DATE'], 'UF_SETTING_DATE' => $arUser['UF_SETTING_DATE'], 'UF_TM_TIME' => $arUser['UF_TM_TIME'], 'UF_TM_DAY' => $arUser['UF_TM_DAY']);
             //exhibited a period of individual settings - if not, check section settings
             if (!$arSettings["UF_REPORT_PERIOD"] && is_array($arUser['UF_DEPARTMENT']) && count($arUser['UF_DEPARTMENT']) > 0) {
                 foreach ($arUser['UF_DEPARTMENT'] as $dep) {
                     $res = CReportSettings::GetSectionSettings($dep);
                     //have a period setting in a section?
                     $user_setting_date = $arSettings["UF_SETTING_DATE"];
                     $arSettings = array('UF_REPORT_PERIOD' => $res['UF_REPORT_PERIOD'], 'UF_LAST_REPORT_DATE' => $arUser['UF_LAST_REPORT_DATE'], 'UF_TM_REPORT_DATE' => $res['UF_TM_REPORT_DATE'], 'UF_TM_TIME' => $res['UF_TM_TIME'], 'UF_TM_DAY' => $res['UF_TM_DAY']);
                     //section settings were updated?
                     if ($res["UF_SETTING_DATE"] && (!$user_setting_date || MakeTimeStamp($user_setting_date, CSite::GetDateFormat("FULL", SITE_ID)) < MakeTimeStamp($res["UF_SETTING_DATE"], CSite::GetDateFormat("FULL", SITE_ID)))) {
                         //nulling last date report and update settings date
                         $arSettings["UF_SETTING_DATE"] = $res["UF_SETTING_DATE"];
                         $arSettings["UF_LAST_REPORT_DATE"] = "";
                     }
                     $arSettings["PARENT"] = $res["PARENT"] ? $res["PARENT"] : $res["ID"];
                     $arSettings["PARENT_NAME"] = $res["PARENT_NAME"] ? $res["PARENT_NAME"] : $res["NAME"];
                 }
             }
         }
         $CACHE_MANAGER->Set($cache_id, $arSettings);
     }
     $arSettings['UF_DELAY_TIME'] = $_SESSION['TIMEMAN_REPORT_DELAY_TIME_' . $USER_ID];
     return $arSettings;
 }