public static function instance() { if (!self::$instance) { self::$instance = new CTimeManUser(); } return self::$instance; }
public static function GetRuntimeInfo($bFull = false) { global $USER; $TMUSER = CTimeManUser::instance(); $STATE = $TMUSER->State(); $info = array('ID' => '', 'STATE' => $STATE, 'CAN_EDIT' => 'N'); if ($STATE == 'CLOSED') { $info['CAN_OPEN'] = $TMUSER->OpenAction(); } elseif ($STATE == 'EXPIRED') { $info['EXPIRED_DATE'] = $TMUSER->GetExpiredRecommendedDate(); } $arSettings = $TMUSER->GetSettings(); $info['REPORT_REQ'] = $arSettings['UF_TM_REPORT_REQ']; $info['TM_FREE'] = $arSettings['UF_TM_FREE']; if ($arInfo = $TMUSER->GetCurrentInfo()) { $info['ID'] = $arInfo['ID']; $info['CAN_EDIT'] = COption::GetOptionString('timeman', 'workday_can_edit_current', 'Y') === 'Y' ? 'Y' : 'N'; $info['INFO'] = array('DATE_START' => MakeTimeStamp($arInfo['DATE_START']) - CTimeZone::GetOffset(), 'DATE_FINISH' => $arInfo['DATE_FINISH'] ? MakeTimeStamp($arInfo['DATE_FINISH']) - CTimeZone::GetOffset() : '', 'TIME_START' => $arInfo['TIME_START'], 'TIME_FINISH' => $arInfo['TIME_FINISH'], 'DURATION' => $arInfo['DURATION'], 'TIME_LEAKS' => $arInfo['TIME_LEAKS'], 'ACTIVE' => $arInfo['ACTIVE'] == 'Y', 'PAUSED' => $arInfo['PAUSED'] == 'Y'); if ($arInfo['LAST_PAUSE']) { $info['LAST_PAUSE'] = $arInfo['LAST_PAUSE']; } elseif ($arInfo['PAUSED'] == 'Y') { $info['LAST_PAUSE'] = array('DATE_START' => $info['INFO']['DATE_FINISH']); } $info['SOCSERV_ENABLED'] = IsModuleInstalled('socialservices') && COption::GetOptionString("socialservices", "allow_send_user_activity", "Y") == 'Y'; if ($bFull && $info['SOCSERV_ENABLED']) { $info['SOCSERV_ENABLED_USER'] = $TMUSER->isSocservEnabledByUser(); } } $info['PLANNER'] = CIntranetPlanner::getData(SITE_ID, $bFull); $info['OPEN_NOW'] = $STATE == 'EXPIRED' || $STATE == 'CLOSED' && (!$_SESSION['TM_FORCED_OPEN'] || CTimeMan::RemoveHoursTS($_SESSION['TM_FORCED_OPEN']) != CTimeMan::RemoveHoursTS(time())); if ($info['OPEN_NOW']) { $_SESSION['TM_FORCED_OPEN'] = time(); } $info["FULL"] = $bFull; return $info; }
if ($arSettings['UF_TM_REPORT_REQ'] != 'A' && isset($_REQUEST['timeman_edit_to'])) { $bClose = true; $timestamp = $_REQUEST['timeman_edit_to']; unset($_REQUEST['timeman_edit_to']); } $res = $obUser->EditDay(array('REPORT' => trim($_REQUEST['report']), 'TIME_START' => isset($_REQUEST['timeman_edit_from']) ? intval($_REQUEST['timeman_edit_from']) % 86400 : null, 'TIME_FINISH' => isset($_REQUEST['timeman_edit_to']) ? intval($_REQUEST['timeman_edit_to']) % 86400 : null, 'TIME_LEAKS' => isset($_REQUEST['TIME_LEAKS']) ? intval($_REQUEST['TIME_LEAKS']) % 86400 : null)); if ($res !== false && $bClose) { $bReturnRes = true; $res = CTimeMan::GetRuntimeInfo(true); $res['CLOSE_TIMESTAMP'] = $timestamp; $res['CLOSE_TIMESTAMP_REPORT'] = trim($_REQUEST['report']); } break; case 'close': $bReturnRes = true; $TMUSER = CTimeManUser::instance(); $dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => $USER->GetID()), array('SELECT' => array('UF_*'))); $arCurrentUser = $dbRes->GetNext(); $arCurrentUser['PHOTO'] = $arCurrentUser['PERSONAL_PHOTO'] > 0 ? CIntranetUtils::InitImage($arCurrentUser['PERSONAL_PHOTO'], 32, 0, BX_RESIZE_IMAGE_EXACT) : array(); $arManagers = CTimeMan::GetUserManagers($USER->GetID()); if (!is_array($arManagers) || count($arManagers) <= 0) { $arManagers = array($USER->GetID()); } $arCurrentUserManagers = array(); $user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', $_REQUEST['site_id']); foreach ($arManagers as $managerId) { $dbManager = CUser::GetByID($managerId); if ($manager = $dbManager->Fetch()) { $manager['PHOTO'] = $manager['PERSONAL_PHOTO'] > 0 ? CIntranetUtils::InitImage($manager['PERSONAL_PHOTO'], 32, 0, BX_RESIZE_IMAGE_EXACT) : array(); $arCurrentUserManagers[] = array('ID' => $manager['ID'], 'LOGIN' => $manager['LOGIN'], 'NAME' => CUser::FormatName(CSite::GetNameFormat(false), $manager, true, false), 'URL' => str_replace(array('#ID#', '#USER_ID#'), $manager['ID'], $user_url), 'WORK_POSITION' => $manager['WORK_POSITION'], 'PHOTO' => $manager['PHOTO']['CACHE']['src']); }
public static function getCurrentTasksList() { $list = CUserOptions::GetOption('tasks', self::PLANNER_OPTION_CURRENT_TASKS, null); // current user hasn't already used tasks list or has list in timeman if ($list === null) { if (CModule::IncludeModule('timeman')) { $TMUSER = CTimeManUser::instance(); $arInfo = $TMUSER->GetCurrentInfo(); if (is_array($arInfo['TASKS'])) { $list = $arInfo['TASKS']; } } else { $list = array(); } if ($list !== null) { self::setCurrentTasksList($list); } } if (!is_array($list)) { $list = array(); } return $list; }