/** * Saves a task. * * @param TaskModel $task * @param bool $validate * * @return bool */ public function saveTask(TaskModel $task, $validate = true) { if ($task->isNew()) { $taskRecord = new TaskRecord(); } else { $taskRecord = $this->_getTaskRecordById($task->id); } $taskRecord->type = $task->type; $taskRecord->status = $task->status; $taskRecord->settings = $task->settings; $taskRecord->description = $task->description; $taskRecord->totalSteps = $task->totalSteps; $taskRecord->currentStep = $task->currentStep; if (!$task->parentId || !$task->isNew()) { $success = $taskRecord->saveNode($validate); } else { $parentTaskRecord = $this->_getTaskRecordById($task->parentId); $success = $taskRecord->appendTo($parentTaskRecord, $validate); } if ($success) { if ($task->isNew()) { $task->id = $taskRecord->id; if ($task->parentId) { // We'll be needing this soon $this->_taskRecordsById[$taskRecord->id] = $taskRecord; } } return true; } else { $task->addErrors($taskRecord->getErrors()); return false; } }