示例#1
0
 public static function GetTaskList($Params = array(), &$arTaskIds)
 {
     $arFilter = array("DOER" => isset($Params['userId']) ? $Params['userId'] : self::$userId);
     // TODO: add filter with OR logic here
     //if (isset($Params['fromLimit']))
     //	$arFilter[">=START_DATE_PLAN"] = $Params['fromLimit'];
     //if (isset($Params['toLimit']))
     //	$arFilter["<=END_DATE_PLAN"] = $Params['toLimit'];
     $tzEnabled = CTimeZone::Enabled();
     if ($tzEnabled) {
         CTimeZone::Disable();
     }
     $rsTasks = CTasks::GetList(array("START_DATE_PLAN" => "ASC"), $arFilter, array("ID", "TITLE", "DESCRIPTION", "CREATED_DATE", "DEADLINE", "START_DATE_PLAN", "END_DATE_PLAN", "CLOSED_DATE", "STATUS_CHANGED_DATE", "STATUS", "REAL_STATUS"), array());
     $offset = CCalendar::GetOffset();
     $res = array();
     while ($task = $rsTasks->Fetch()) {
         $dtFrom = NULL;
         $dtTo = NULL;
         $arTaskIds[] = $task['ID'];
         $skipFromOffset = false;
         $skipToOffset = false;
         if (isset($task["START_DATE_PLAN"]) && $task["START_DATE_PLAN"]) {
             $dtFrom = CCalendar::CutZeroTime($task["START_DATE_PLAN"]);
         }
         if (isset($task["END_DATE_PLAN"]) && $task["END_DATE_PLAN"]) {
             $dtTo = CCalendar::CutZeroTime($task["END_DATE_PLAN"]);
         }
         if (!isset($dtTo) && isset($task["CLOSED_DATE"])) {
             $dtTo = CCalendar::CutZeroTime($task["CLOSED_DATE"]);
         }
         //Task statuses: 1 - New, 2 - Pending, 3 - In Progress, 4 - Supposedly completed, 5 - Completed, 6 - Deferred, 7 - Declined
         if (!isset($dtTo) && isset($task["STATUS_CHANGED_DATE"]) && in_array($task["REAL_STATUS"], array('4', '5', '6', '7'))) {
             $dtTo = CCalendar::CutZeroTime($task["STATUS_CHANGED_DATE"]);
         }
         if (isset($dtTo)) {
             $ts = CCalendar::Timestamp($dtTo);
             // Correction display logic for harmony with Tasks interfaces
             if (date("H:i", $ts) == '00:00') {
                 $dtTo = CCalendar::Date($ts - 24 * 60 * 60);
             }
         } elseif (isset($task["DEADLINE"])) {
             $dtTo = CCalendar::CutZeroTime($task["DEADLINE"]);
             $ts = CCalendar::Timestamp($dtTo);
             // Correction display logic for harmony with Tasks interfaces
             if (date("H:i", $ts) == '00:00') {
                 $dtTo = CCalendar::Date($ts - 24 * 60 * 60);
             }
             if (!isset($dtFrom)) {
                 $skipFromOffset = true;
                 $dtFrom = CCalendar::Date(time(), false);
             }
         }
         if (!isset($dtTo)) {
             $dtTo = CCalendar::Date(time(), false);
         }
         if (!isset($dtFrom)) {
             $dtFrom = $dtTo;
         }
         $dtFromTS = CCalendar::Timestamp($dtFrom);
         $dtToTS = CCalendar::Timestamp($dtTo);
         if ($dtToTS < $dtFromTS) {
             $dtToTS = $dtFromTS;
             $dtTo = CCalendar::Date($dtToTS, true);
         }
         $skipTime = date("H:i", $dtFromTS) == '00:00' && date("H:i", $dtToTS) == '00:00';
         if (!$skipTime && $offset != 0) {
             if (!$skipFromOffset) {
                 $dtFromTS += $offset;
                 $dtFrom = CCalendar::Date($dtFromTS, true);
             }
             if (!$skipToOffset) {
                 $dtToTS += $offset;
                 $dtTo = CCalendar::Date($dtToTS, true);
             }
         }
         $res[] = array("ID" => $task["ID"], "~TYPE" => "tasks", "NAME" => $task["TITLE"], "DT_FROM_TS" => $dtFromTS, "DT_TO_TS" => $dtToTS, "DT_SKIP_TIME" => $skipTime ? 'Y' : 'N', "CAN_EDIT" => CTasks::CanCurrentUserEdit($task));
     }
     if ($tzEnabled) {
         CTimeZone::Enable();
     }
     return $res;
 }
示例#2
0
 function DeleteAttachment($listName, $listItemID, $url)
 {
     if (!$this->__Init()) {
         return $this->error;
     }
     if (!($listName_original = CIntranetUtils::checkGUID($listName))) {
         return new CSoapFault('Data error', 'Wrong GUID - ' . $listName);
     }
     $listItemID = intval($listItemID);
     $pos = strrpos($url, '/');
     if ($pos) {
         $fileName = ToLower(str_replace(array('/', '\\', '..'), '', substr($url, $pos + 1)));
     }
     // minor security
     if (!$fileName) {
         return new CSoapFault('Wrong file', 'Wrong file URL');
     }
     $dbRes = CTaskFiles::GetList(array(), array("TASK_ID" => $listItemID));
     while ($taskFile = $dbRes->Fetch()) {
         $FILE_NAME = ToLower(basename(CFile::GetPath($taskFile["FILE_ID"])));
         if ($FILE_NAME == $fileName) {
             $rsTask = CTasks::GetList(array(), array("ID" => $listItemID), array("ID"));
             if ($arTask = $rsTask->Fetch()) {
                 if (CTasks::CanCurrentUserEdit($arTask["ID"])) {
                     // We got this task only if user has rights on edit it.
                     CTaskFiles::Delete($taskFile["TASK_ID"], $taskFile["FILE_ID"]);
                 }
             }
             break;
         }
     }
     return array('DeleteAttachmentResult' => '');
 }