예제 #1
0
 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;
 }
예제 #2
0
             $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']);
예제 #3
0
 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;
 }
예제 #4
0
 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;
 }
예제 #5
0
 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;
 }
예제 #6
0
 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;
 }