• Модуль: 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;
}