예제 #1
0
 protected function getOwnerTaskId($itemId)
 {
     $item = \CTaskElapsedTime::getList(array(), array('ID' => $itemId), array('skipJoinUsers' => false))->fetch();
     if (is_array($item) && !empty($item)) {
         return $item['TASK_ID'];
     } else {
         $this->add('ITEM_NOT_FOUND', 'Item not found');
     }
     return false;
 }
예제 #2
0
 protected static function getTimemanCloseDayData($arParams)
 {
     if (CModule::IncludeModule('timeman')) {
         global $USER;
         $arTasks = array();
         $userId = $USER->getId();
         $runningTaskId = null;
         $taskRunTime = null;
         // key features of that info:
         // [REPORT_REQ] => 'A' means that day will be closed right now. other variants - just form show.
         // [INFO][DATE_START] => 1385459336 - unix timestamp of day start
         // [INFO][TIME_START] => 46136 - short timestamp of day start
         // [DURATION]
         // [TIME_LEAKS]
         $arTimemanInfo = CTimeMan::GetRunTimeInfo(true);
         if (!($userId > 0)) {
             foreach ($arTimemanInfo['PLANNER']['DATA']['TASKS'] as $arTask) {
                 $arTask['TIME'] = 0;
                 $arTasks[] = $arTask;
             }
             return array('TASKS' => $arTasks);
         }
         $unixTsDateStart = (int) $arTimemanInfo['INFO']['DATE_START'];
         $oTimer = CTaskTimerManager::getInstance($userId);
         $arTimer = $oTimer->getLastTimer();
         if ($arTimer && $arTimer['TIMER_STARTED_AT'] > 0) {
             $runningTaskId = $arTimer['TASK_ID'];
             if ($arTimer['TIMER_STARTED_AT'] >= $unixTsDateStart) {
                 $taskRunTime = max(0, time() - (int) $arTimer['TIMER_STARTED_AT']);
             } else {
                 $taskRunTime = max(0, time() - $unixTsDateStart);
             }
         }
         $bitrixTimestampDateStart = $unixTsDateStart + CTasksTools::getTimeZoneOffset();
         $dateStartAsString = ConvertTimeStamp($bitrixTimestampDateStart, 'FULL');
         foreach ($arTimemanInfo['PLANNER']['DATA']['TASKS'] as $arTask) {
             $rsElapsedTime = CTaskElapsedTime::getList(array('ID' => 'ASC'), array('TASK_ID' => $arTask['ID'], 'USER_ID' => $userId, '>=CREATED_DATE' => $dateStartAsString), array('skipJoinUsers' => true));
             $arTask['TIME'] = 0;
             while ($arElapsedTime = $rsElapsedTime->fetch()) {
                 $arTask['TIME'] += max(0, $arElapsedTime['SECONDS']);
             }
             if ($runningTaskId && $arTask['ID'] == $runningTaskId) {
                 $arTask['TIME'] += $taskRunTime;
             }
             $arTasks[] = $arTask;
         }
         return array('TASKS' => $arTasks);
     }
 }