- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_report_full.php
- Класс: CReportSettings
- Вызов: CReportSettings::GetUserSettings
static function GetUserSettings($USER_ID = false)
{
global $CACHE_MANAGER, $USER;
if($USER_ID === false)
{
$USER_ID = $USER->GetID();
}
$USER_ID = intval($USER_ID);
$arSettings = array();
$cache_id = self::getSettingsCacheId($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'],
'UF_DELAY_TIME' => $arUser['UF_DELAY_TIME'],
);
//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'],
'UF_DELAY_TIME' => $arUser['UF_DELAY_TIME'],
);
//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"] = "";
}
else
{
$arSettings["UF_SETTING_DATE"] = $user_setting_date;
}
$arSettings["PARENT"] = ($res["PARENT"] ?? false) ? $res["PARENT"] : $res["ID"];
$arSettings["PARENT_NAME"] = ($res["PARENT_NAME"] ?? false) ? $res["PARENT_NAME"] : $res["NAME"];
}
}
}
$CACHE_MANAGER->Set($cache_id, $arSettings);
}
return $arSettings;
}