public static function update($userId, $taskId, $itemId, array $data, array $parameters = array('PUBLIC_MODE' => false)) { $errors = static::ensureHaveErrorCollection($parameters); if ($parameters['PUBLIC_MODE']) { $data = static::filterData($data, $errors); } $rData = array(); $rCan = array(); if ($errors->checkNoFatals()) { $task = static::getTask($userId, $taskId); $item = new \CTaskElapsedItem($task, $itemId); $item->update($data); $rData['ID'] = $itemId; } return array('TASK' => $task, 'ERRORS' => $errors, 'DATA' => $rData, 'CAN' => $rCan); }
/** * Update an elapsed time record */ public function update($id, array $data, array $parameters = array()) { global $USER; $result = array(); if ($id = $this->checkId($id)) { if (isset($data['TASK_ID'])) { $this->add('FIELD_NOT_ALLOWED', 'You are not allowed to pass TASK_ID field', Collection::TYPE_WARNING, array('TASK_ID')); unset($data['TASK_ID']); // not allowed to change TASK_ID of an existing item } // get task id $taskId = $this->getOwnerTaskId($id); if ($taskId) { $task = \CTaskItem::getInstanceFromPool($taskId, $USER->GetId()); // or directly, new \CTaskItem($taskId, $USER->GetId()); $item = new \CTaskElapsedItem($task, $id); $item->update($data); } } return $result; }
} else { $redirectTo = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASKS"]); } $oTask->delete(); } elseif ($action == "elapsed_add") { $redirectTo = $APPLICATION->GetCurPageParam(RandString(8), array("ACTION", "sessid")) . "#elapsed"; $minutes = (int) $_POST['HOURS'] * 60 + (int) $_POST['MINUTES']; CTaskElapsedItem::add($oTask, array('MINUTES' => $minutes, 'COMMENT_TEXT' => trim($_POST["COMMENT_TEXT"]))); } elseif ($action === 'elapsed_update') { $seconds = (int) $_POST['HOURS'] * 3600 + (int) $_POST['MINUTES'] * 60; if (isset($_POST['SECONDS']) && $_POST['SECONDS'] > 0) { $seconds += (int) $_POST['SECONDS']; } $redirectTo = $APPLICATION->GetCurPageParam("", array("ACTION", "sessid")) . "#elapsed"; $oElapsedItem = new CTaskElapsedItem($oTask, (int) $_POST['ELAPSED_ID']); $oElapsedItem->update(array('SECONDS' => $seconds, 'COMMENT_TEXT' => trim($_POST["COMMENT_TEXT"]))); } elseif ($action === 'elapsed_delete') { $redirectTo = $APPLICATION->GetCurPageParam("", array("ACTION", "sessid", "ELAPSED_ID")) . "#elapsed"; $oElapsedItem = new CTaskElapsedItem($oTask, (int) $_GET['ELAPSED_ID']); $oElapsedItem->delete(); } else { $arMap = array('close' => 'complete', 'start' => 'startExecution', 'accept' => 'accept', 'renew' => 'renew', 'defer' => 'defer', 'decline' => 'decline', 'delegate' => 'delegate', 'approve' => 'approve', 'disapprove' => 'disapprove'); if (isset($arMap[$action])) { $arArgs = array(); if ($action === 'decline') { $arArgs = array($_POST['REASON']); } elseif ($action === 'delegate') { $arArgs = array($_REQUEST['USER_ID']); } call_user_func_array(array($oTask, $arMap[$action]), $arArgs); }