$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; }