protected static function doAdd($userId, array $data, array $parameters, Collection $errors) { $task = \CTaskItem::add($data, $userId); $taskID = $task->getId(); if ($taskID) { if (is_array($data[static::SE_PREFIX . 'CHECKLIST']) && !empty($data[static::SE_PREFIX . 'CHECKLIST'])) { // add checklist here } if ($data["ADD_TO_TIMEMAN"] == "Y") { \CTaskPlannerMaintance::plannerActions(array('add' => array($taskID))); } } return $task; }
public function start($taskId) { global $CACHE_MANAGER, $USER; // Stop timer of user (if it is run) $this->stop(); $oTaskItem = CTaskItem::getInstance($taskId, $this->userId); $arTask = $oTaskItem->getData(false); if (!$oTaskItem->isActionAllowed(CTaskItem::ACTION_START_TIME_TRACKING)) { return false; } // Run timer for given task $arTimer = CTaskTimerCore::start($this->userId, $taskId); $this->cachedLastTimer = null; $arAffectedUsers = array_unique(array_merge(array($this->userId, $arTask['RESPONSIBLE_ID']), (array) $arTask['ACCOMPLICES'])); foreach ($arAffectedUsers as $userId) { $CACHE_MANAGER->ClearByTag('tasks_user_' . $userId); } if ($arTimer === false) { return false; } else { // Add task to day plan if (isset($USER) && is_object($USER) && $USER->getId() == $this->userId) { $arTasksInDayPlan = CTaskPlannerMaintance::getCurrentTasksList(); if (!in_array($taskId, $arTasksInDayPlan)) { CTaskPlannerMaintance::plannerActions(array('add' => array($taskId))); } } if ($arTask['REAL_STATUS'] != CTasks::STATE_IN_PROGRESS) { if (!$oTaskItem->isActionAllowed(CTaskItem::ACTION_START) && $oTaskItem->isActionAllowed(CTaskItem::ACTION_RENEW)) { $oTaskItem->renew(); } if ($oTaskItem->isActionAllowed(CTaskItem::ACTION_START)) { $oTaskItem->startExecution(); } } return $arTimer; } }
$templateData = CTaskTemplates::GetList(false, array('ID' => intval($arResult['COPY_PARAMS']['ORIGIN_TEMPLATE'])), false, array('USER_ID' => $loggedInUserId), array('ID'))->fetch(); if (is_array($templateData)) { $oTask->addChildTasksByTemplate(intval($arResult['COPY_PARAMS']['ORIGIN_TEMPLATE'])); // task access rights check inside } } } catch (Exception $e) { if ($e->GetCode() & TasksException::TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE) { $arResult['ERRORS'] = unserialize($e->GetMessage()); } else { $arResult['ERRORS'][] = array('text' => 'UNKNOWN ERROR OCCURED', 'id' => 'ERROR_TASKS_UNKNOWN'); } } } if ($_POST["ADD_TO_TIMEMAN"] == "Y") { CTaskPlannerMaintance::plannerActions(array('add' => array($taskID))); } if ($arFields["REPLICATE"] == "Y") { unset($arTemplateFields["DEADLINE"], $arTemplateFields["START_DATE_PLAN"], $arTemplateFields["END_DATE_PLAN"]); $arTemplateFields["TASK_ID"] = $taskID; $arTemplateFields["ACCOMPLICES"] = sizeof($arTemplateFields["ACCOMPLICES"]) ? serialize($arTemplateFields["ACCOMPLICES"]) : false; $arTemplateFields["AUDITORS"] = sizeof($arTemplateFields["AUDITORS"]) ? serialize($arTemplateFields["AUDITORS"]) : false; $arTemplateFields["TAGS"] = strlen(trim($arTemplateFields["TAGS"])) > 0 ? serialize(explode(",", $arTemplateFields["TAGS"])) : false; $arTemplateFields["FILES"] = sizeof($arTemplateFields["FILES"]) ? serialize($arTemplateFields["FILES"]) : false; $arTemplateFields["DEPENDS_ON"] = sizeof($arTemplateFields["DEPENDS_ON"]) ? serialize($arTemplateFields["DEPENDS_ON"]) : false; $arTemplateFields["REPLICATE_PARAMS"] = serialize($arTemplateFields["REPLICATE_PARAMS"]); $taskTemplate = new CTaskTemplates(); $templateId = $taskTemplate->Add($arTemplateFields, array('CHECK_RIGHTS_ON_FILES' => 'Y', 'USER_ID' => $USER->getId())); if (intval($templateId)) { // checklist if (is_array($_POST['CHECKLIST_ITEM_ID'])) {