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; }
$TMUSER->ClearCache(); } } case 'admin_entry': $ID = $_REQUEST['ID']; $arAccessUsers = CTimeMan::GetAccess(); if (count($arAccessUsers['READ']) > 0) { $bCanEditAll = in_array('*', $arAccessUsers['WRITE']); $bCanReadAll = in_array('*', $arAccessUsers['READ']); $dbRes = CTimeManEntry::GetList(array(), array('ID' => $ID), false, false, array('*', 'ACTIVATED')); if ($arRes = $dbRes->Fetch()) { if ($arRes['USER_ID'] == $USER->GetID() || $bCanReadAll || in_array($arRes['USER_ID'], $arAccessUsers['READ'])) { $arRes['TIME_OFFSET'] = CTimeManUser::getDayStartOffset($arRes); $bCanEdit = $bCanEditAll || in_array($arRes['USER_ID'], $arAccessUsers['WRITE']); $user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', $_REQUEST['site_id']); $obUser = new CTimeManUser($arRes['USER_ID']); $obUser->SITE_ID = $_REQUEST['site_id']; $bReturnRes = true; $dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => $arRes['USER_ID']), 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($arRes['USER_ID']); if (!is_array($arManagers) || count($arManagers) <= 0) { $arManagers = array($arRes['USER_ID']); } $user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', $_REQUEST['site_id']); $dbManagers = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => implode('|', $arManagers))); $arCurrentUserManagers = array(); while ($manager = $dbManagers->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']);
private function __getUserRow($arRes, $prefix = '') { if ($this->department) { $arRes['UF_DEPARTMENT'] = array_values(array_intersect($arRes['UF_DEPARTMENT'], $arFilter['UF_DEPARTMENT'])); } $res = array('ID' => $arRes[$prefix . 'ID'], 'NAME' => CUser::FormatName(CSite::GetNameFormat(false), array('USER_ID' => $arRes[$prefix . 'ID'], 'NAME' => $arRes[$prefix . 'NAME'], 'LAST_NAME' => $arRes[$prefix . 'LAST_NAME'], 'SECOND_NAME' => $arRes[$prefix . 'SECOND_NAME'], 'LOGIN' => $arRes[$prefix . 'LOGIN'], 'EMAIL' => $arRes[$prefix . 'EMAIL']), true, false), 'DEPARTMENT' => $arRes['UF_DEPARTMENT'][0], 'URL' => str_replace(array('#ID#', '#USER_ID#'), $arRes[$prefix . 'ID'], $this->path_user), 'TOTAL' => 0, 'TOTAL_DAYS' => 0, 'TOTAL_VIOLATIONS' => 0, 'TOTAL_INACTIVE' => 0, 'SETTINGS' => array(), 'ENTRIES' => array()); $TMUSER = new CTimeManUser($arRes[$prefix . 'ID']); $res['SETTINGS'] = $TMUSER->GetSettings(); unset($res['SETTINGS']['UF_TM_REPORT_TPL']); return $res; }
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; }
public static function GetActiveStatusByTimeman($userId) { if ($userId <= 0) { return false; } if (CModule::IncludeModule('timeman')) { $tmUser = new CTimeManUser($userId); $tmSettings = $tmUser->GetSettings(array('UF_TIMEMAN')); if (!$tmSettings['UF_TIMEMAN']) { $result = true; } else { $tmUser->GetCurrentInfo(true); // need for reload cache if ($tmUser->State() == 'OPENED') { $result = true; } else { $result = false; } } } else { $result = true; } return $result; }
protected function _GetLastData($clear = false) { global $CACHE_MANAGER; if ($clear) { CTimeManUser::$LAST_ENTRY = CTimeManEntry::GetLast($this->USER_ID); $CACHE_MANAGER->Clean($this->_cacheId(), 'b_timeman_entries'); } else { if (!CTimeManUser::$LAST_ENTRY) { if ($CACHE_MANAGER->Read(86400, $this->_cacheId(), 'b_timeman_entries')) { $DATA = $CACHE_MANAGER->Get($this->_cacheId()); } else { $DATA = CTimeManEntry::GetLast($this->USER_ID); $CACHE_MANAGER->Set($this->_cacheId(), $DATA); } CTimeManUser::$LAST_ENTRY = $DATA; } } if (isset($_SESSION['BX_TIMEMAN_LAST_PAUSE_' . $this->USER_ID])) { CTimeManUser::$LAST_ENTRY['LAST_PAUSE'] = $_SESSION['BX_TIMEMAN_LAST_PAUSE_' . $this->USER_ID]; // CTimeManUser::$LAST_ENTRY['LAST_PAUSE']['DATE_START'] += CTimeZone::GetOffset(); // CTimeManUser::$LAST_ENTRY['LAST_PAUSE']['DATE_FINISH'] += CTimeZone::GetOffset(); } else { unset(CTimeManUser::$LAST_ENTRY['LAST_PAUSE']); } return CTimeManUser::$LAST_ENTRY; }