public function GetReportData($force = false)
 {
     $arResult = array("REPORT_INFO" => array(), "REPORT_DATA" => array());
     $date = $arResult["REPORT_INFO"] = $this->GetReportInfo();
     if ($date["IS_REPORT_DAY"] == "N") {
         return $arResult;
     } elseif ($date["IS_REPORT_DAY"] == "Y") {
         if ($date["IS_DELAY"] == "Y" && MakeTimeStamp($date["DELAY_TIME"], TM_FULL_FORMAT) < time()) {
             $date["IS_DELAY"] = "N";
         }
         if (($date["IS_DELAY"] == "Y" || $date["SHOW_REPORT_FORM"] == "N") && !$force) {
             return $arResult;
         }
     }
     $datefomat = CSite::GetDateFormat("SHORT", SITE_ID);
     $USER_ID = $this->USER_ID;
     $arManagers = CTimeMan::GetUserManagers($USER_ID);
     $arManagers[] = $USER_ID;
     $user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', SITE_ID);
     $dbManagers = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => implode('|', $arManagers)));
     $arCurrentUserManagers = array();
     $arCurrentUser = array();
     while ($manager = $dbManagers->GetNext()) {
         $manager['PHOTO'] = $manager['PERSONAL_PHOTO'] > 0 ? CIntranetUtils::InitImage($manager['PERSONAL_PHOTO'], 32, 0, BX_RESIZE_IMAGE_EXACT) : array();
         $userData = 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']);
         if ($userData["ID"] == $this->USER_ID) {
             $arCurrentUser = $userData;
         } else {
             $arCurrentUserManagers[] = $userData;
         }
     }
     if (count($arCurrentUserManagers) == 0) {
         $arCurrentUserManagers[] = $arCurrentUser;
     }
     $arInfo = CTimeMan::GetRuntimeInfo(true);
     $dbReports = CTimeManReport::GetList(array('ID' => 'ASC'), array('ENTRY_ID' => $arInfo["ID"], 'REPORT_TYPE' => 'REPORT'));
     if ($Report = $dbReports->Fetch()) {
         $RTReport = $Report["REPORT"];
     }
     $dbReport = CTimeManReportFull::GetList(array("DATE_FROM" => "DESC"), array("USER_ID" => $USER_ID, "ACTIVE" => "N"), array(), array("nTopCount" => 1));
     if ($arReport = $dbReport->Fetch()) {
         $arInfo["REPORT_DATE_FROM"] = MakeTimeStamp($arReport["DATE_FROM"], $datefomat);
         $arInfo["REPORT_DATE_TO"] = MakeTimeStamp($arReport["DATE_TO"], $datefomat);
         //$arInfo["TASKS"] = unserialize($arReport["TASKS"]);
         $arInfo["REPORT"] = $arReport["REPORT"];
         $arInfo["PLANS"] = $arReport["PLANS"];
         if ($arReport["FILES"]) {
             $arInfo["FILES"] = unserialize($arReport["FILES"]);
         }
         $arInfo["REPORT_ID"] = $arReport["ID"];
         if ($arInfo["REPORT_DATE_FROM"] != $arInfo["REPORT_DATE_TO"]) {
             $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_FROM"]) . " - " . FormatDate('j F', $arInfo["REPORT_DATE_TO"]);
         } else {
             $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_TO"]);
         }
     } else {
         if (isset($_SESSION['report_files']) && is_array($_SESSION['report_files'])) {
             $arInfo["FILES"] = $_SESSION['report_files'];
         }
         $arInfo["REPORT_DATE_FROM"] = MakeTimeStamp($date["DATE_FROM"], TM_SHORT_FORMAT);
         $arInfo["REPORT_DATE_TO"] = MakeTimeStamp($date["DATE_TO"], TM_SHORT_FORMAT);
     }
     $date_to = $date["DATE_TO"] ? $date["DATE_TO"] : $arReport["DATE_TO"];
     $date_to = MakeTimeStamp($date_to, CSite::GetDateFormat("SHORT", SITE_ID));
     $today = CTimeMan::RemoveHoursTS(time());
     if ($date_to < $today) {
         $arInfo["TASKS"] = array();
         $arInfo["EVENTS"] = array();
     }
     $arLastTasks = array();
     $arFilter = array(">=REPORT_DATE" => $date["DATE_FROM"] ? $date["DATE_FROM"] : $arReport["DATE_FROM"], "<=REPORT_DATE" => $date["DATE_TO"] ? $date["DATE_TO"] : $arReport["DATE_TO"], "USER_ID" => $USER_ID);
     $arTaskIDs = array();
     $arEventIDs = array();
     if (is_array($arInfo['PLANNER'])) {
         $arInfo = array_merge($arInfo, $arInfo['PLANNER']['DATA']);
         unset($arInfo['PLANNER']);
     }
     if (is_array($arInfo["TASKS"])) {
         foreach ($arInfo["TASKS"] as $task) {
             $arTaskIDs[] = $task["ID"];
         }
     }
     if (is_array($arInfo["EVENTS"])) {
         foreach ($arInfo["EVENTS"] as $event) {
             $arEventIDs[] = $event["ID"];
         }
     }
     $res = CTimeManReportDaily::GetList(array(), $arFilter);
     while ($day = $res->Fetch()) {
         $arDayTasks = unserialize($day["TASKS"]);
         $arDayEvents = unserialize($day["EVENTS"]);
         if (is_array($arDayTasks)) {
             foreach ($arDayTasks as $task) {
                 if (!in_array($task["ID"], $arTaskIDs)) {
                     $arInfo["TASKS"][] = $task;
                     $arTaskIDs[] = $task["ID"];
                 } else {
                     foreach ($arInfo["TASKS"] as $key => $cur_task) {
                         if ($cur_task["ID"] == $task["ID"]) {
                             $arInfo["TASKS"][$key]["TIME"] += $task["TIME"];
                         }
                     }
                 }
             }
         }
         if (is_array($arDayEvents)) {
             foreach ($arDayEvents as $event) {
                 if (!in_array($event["ID"], $arEventIDs)) {
                     $arInfo["EVENTS"][] = $event;
                     $arEventIDs[] = $event["ID"];
                 }
             }
         }
         if (strlen($day["REPORT"]) > 0 && !$arInfo["REPORT_ID"]) {
             $day["REPORT"] = nl2br($day["REPORT"]);
             $arInfo["REPORT"] .= "<b>" . $day["REPORT_DATE"] . "</b><br>" . $day["REPORT"] . "<br>";
         }
     }
     if ($RTReport && !$arInfo["REPORT_ID"]) {
         $arInfo["REPORT"] .= "<b>" . ConvertTimeStamp(time(), "SHORT") . "</b><br>" . nl2br($RTReport);
     }
     if (is_array($arInfo['EVENTS'])) {
         foreach ($arInfo['EVENTS'] as $key => $arEvent) {
             if ($arEvent['STATUS'] && $arEvent['STATUS'] != 'Y') {
                 unset($arInfo['EVENTS'][$key]);
             }
         }
         $arInfo['EVENTS'] = array_values($arInfo['EVENTS']);
     }
     if (!$arInfo["REPORT_ID"]) {
         if ($arInfo["REPORT_DATE_FROM"] != $arInfo["REPORT_DATE_TO"]) {
             $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_FROM"]) . " - " . FormatDate('j F', $arInfo["REPORT_DATE_TO"]);
         } else {
             $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_TO"]);
         }
     }
     $arResult["REPORT_DATA"] = array('FROM' => $arCurrentUser, 'TO' => array_values($arCurrentUserManagers), 'INFO' => $arInfo, 'REPORT' => $arInfo["REPORT"], 'PLANS' => $arInfo["PLANS"], 'REPORT_ID' => $arInfo["REPORT_ID"] ? $arInfo["REPORT_ID"] : "");
     return $arResult;
 }
Beispiel #2
0
                        }
                        /**************************************************************************/
                        break;
                }
                if (!$res) {
                    if ($ex = $APPLICATION->GetException()) {
                        $error = "{error: '" . CUtil::JSEscape($ex->GetString()) . "', error_id:'" . CUtil::JSEscape($ex->GetId()) . "'}";
                    }
                }
                $APPLICATION->RestartBuffer();
                if ($error) {
                    echo $error;
                } elseif ($bReturnRes) {
                    echo CUtil::PhpToJsObject($res);
                } else {
                    $info = CTimeMan::GetRuntimeInfo(true);
                    $info['PLANNER'] = $info['PLANNER']['DATA'];
                    $arReport = $obUser->SetReport('', 0, $info['ID']);
                    if (is_array($arReport)) {
                        $info['REPORT'] = $arReport['REPORT'];
                        $info['REPORT_TS'] = MakeTimeStamp($arReport['TIMESTAMP_X']);
                    }
                    echo CUtil::PhpToJsObject($info);
                }
            }
        }
    }
} else {
    echo GetMessage('main_include_decode_pass_sess');
}
//require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
Beispiel #3
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (CBXFeatures::IsFeatureEnabled('timeman') && CModule::IncludeModule('timeman') && CTimeMan::CanUse()) {
    if (abs(CTimeZone::GetOffset()) > BX_TIMEMAN_WRONG_DATE_CHECK) {
        $arResult['ERROR'] = 'WRONG_DATE';
        $this->IncludeComponentTemplate('error');
        return true;
    }
    $arResult['TASKS_ENABLED'] = CBXFeatures::IsFeatureEnabled('Tasks') && CModule::IncludeModule('tasks');
    $arResult['START_INFO'] = CTimeMan::GetRuntimeInfo(false);
    $obReportUser = new CUserReportFull();
    $arResult['WORK_REPORT'] = $obReportUser->GetReportData();
    //echo '<pre>'; print_r($arResult['WORK_REPORT']); echo '</pre>';
    CIntranetPlanner::initScripts($arResult['START_INFO']['PLANNER']);
    $arResult['START_INFO']['PLANNER'] = $arResult['START_INFO']['PLANNER']['DATA'];
    CJSCore::Init(array('timeman'));
    $this->IncludeComponentTemplate();
    return true;
} else {
    return false;
}