Exemple #1
0
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new CTimeManUser();
     }
     return self::$instance;
 }
Exemple #2
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;
 }
Exemple #3
0
     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;
 }