public function add($data, $parameters = array()) { global $DB, $USER; $result = array(); if (!$USER->IsAuthorized()) { throw new Tasks\Exception("Authentication is required."); } $title = isset($data["title"]) ? trim($data["title"]) : ""; $responsible = isset($data["responsible"]) ? intval($data["responsible"]) : $USER->GetID(); $deadline = isset($data["deadline"]) && $DB->FormatDate($data["deadline"], \CSite::GetDateFormat("FULL")) ? $data["deadline"] : ""; $description = isset($data["description"]) ? trim($data["description"]) : ""; $project = isset($data["project"]) ? intval($data["project"]) : 0; $nameTemplate = isset($data["nameTemplate"]) ? trim($data["nameTemplate"]) : ""; $ganttMode = isset($data["ganttMode"]) && $data["ganttMode"] === "true"; if (strlen($nameTemplate) > 0) { preg_match_all("/(#NAME#)|(#NOBR#)|(#\\/NOBR#)|(#LAST_NAME#)|(#SECOND_NAME#)|(#NAME_SHORT#)|(#SECOND_NAME_SHORT#)|\\s|\\,/", $nameTemplate, $matches); $nameTemplate = implode("", $matches[0]); } else { $nameTemplate = \CSite::GetNameFormat(false); } $fields = array("TITLE" => $title, "DESCRIPTION" => $description, "RESPONSIBLE_ID" => $responsible, "DEADLINE" => $deadline, "SITE_ID" => $data["siteId"], "GROUP_ID" => $project, "NAME_TEMPLATE" => $nameTemplate, 'DESCRIPTION_IN_BBCODE' => "Y"); $taskItem = \CTaskItem::add($fields, $USER->GetId()); $task = $taskItem->getData(); $task["GROUP_NAME"] = ""; if ($task["GROUP_ID"]) { $socGroup = \CSocNetGroup::GetByID($task["GROUP_ID"]); if ($socGroup) { $task["GROUP_NAME"] = $socGroup["~NAME"]; } } \Bitrix\Main\FinderDestTable::merge(array("CONTEXT" => "TASK_RESPONSIBLE", "CODE" => array("U" . $task["RESPONSIBLE_ID"], "SG" . $task["GROUP_ID"]))); $taskId = $taskItem->getId(); $arPaths = array("PATH_TO_TASKS_TASK" => isset($data["pathToTask"]) ? trim($data["pathToTask"]) : "", "PATH_TO_USER_PROFILE" => isset($data["pathToUser"]) ? trim($data["pathToUser"]) : "", "PATH_TO_USER_TASKS_TASK" => isset($data["pathToUserTasksTask"]) ? trim($data["pathToUserTasksTask"]) : ""); $columnsOrder = null; if (isset($data["columnsOrder"]) && is_array($data["columnsOrder"])) { $columnsOrder = array_map("intval", $data["columnsOrder"]); } $order = isset($data["order"]) && checkSerializedData($data["order"]) ? unserialize($data["order"]) : array(); $filter = isset($data["filter"]) && checkSerializedData($data["filter"]) ? unserialize($data["filter"]) : array(); $navigation = isset($data["navigation"]) && checkSerializedData($data["navigation"]) ? unserialize($data["navigation"]) : array(); $select = isset($data["select"]) && checkSerializedData($data["select"]) ? unserialize($data["select"]) : array(); $result["taskRaw"] = $task; $result["taskId"] = $task["ID"]; $result["taskPath"] = \CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => $task["ID"], "action" => "view")); $result["position"] = $this->getTaskPosition($taskId, $order, $filter, $navigation, $select); if ($ganttMode) { $result["task"] = $this->getJson($task, $arPaths, $nameTemplate); } else { $result["html"] = $this->getHtml($task, $arPaths, $nameTemplate, $columnsOrder); } return $result; }
/** * Return last saved testing results * @return array */ public static function getLastTestingInfo() { /** @global CCacheManager $CACHE_MANAGER*/ global $CACHE_MANAGER; $cacheId = self::CACHE_BASE_ID . "_last_results"; if ($CACHE_MANAGER->read(self::CHECKING_REPEAT_TIME, $cacheId, self::CACHE_DIR)) { $lastResult = $CACHE_MANAGER->get($cacheId); } else { $lastResult = array(); $dbResults = self::getList(); if ($dbResults) { $result = $dbResults->fetch(); if ($result && isset($result["RESULTS"])) { if (checkSerializedData($result["RESULTS"])) { $lastResult["results"] = unserialize($result["RESULTS"]); } } if ($result && isset($result["TEST_DATE"])) { $lastResult["test_date"] = $result["TEST_DATE"]; } } $CACHE_MANAGER->set($cacheId, $lastResult); } return is_array($lastResult) ? $lastResult : array(); }