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; }
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' => ''); }