/** * boolean update() * updates a task in database * @return true on success, else false * @access public */ function update() { global $dbInst, $config, $toolInst, $loginInst; if (!$loginInst->hasAccess("task.update")) { return false; } if (!$this->check()) { return false; } if ($this->id == $this->mountId) { $toolInst->errorStatus("recursion error: unable to mount task into itself"); return false; } if (in_array($this->id, $this->treeId($this->mountId))) { $toolInst->errorStatus("recursion error: unable to mount task into one of its members"); return false; } $query = "update " . $dbInst->config['table_task'] . " set " . "finish = '" . $this->finish . "'," . "plannedhours = '" . $this->plannedHours . "',"; if ($loginInst->hasAccess("task.fixedPrice")) { $query .= "fixedprice = '" . str_replace(',', '.', $this->fixedPrice) . "',"; } $query .= "body = '" . $this->body . "'," . "type_id = '" . $this->typeId . "'," . "user_id = '" . $this->userId . "'," . "subject = '" . $this->subject . "'," . "mount_id = '" . $this->mountId . "'," . "status_id = '" . $this->statusId . "'," . "poster_id = '" . $this->posterId . "'," . "project_id = '" . $this->projectId . "'," . "priority_id = '" . $this->priorityId . "' where id = '" . $this->id . "'"; $result = $dbInst->query($query); $dbInst->status($result[1], "u"); if ($result[1] == 1 || $result[1] == 0) { // notification mail to manager, if task set to done if ($result[1] == 1 && $this->isDone()) { $projectInst = new project($this->projectId); $this->mail($projectInst->managerId, " --== TASK DONE ==--\n\nused time: " . $toolInst->formatTime($this->getSummary())); } // logging $userInst = new user($this->userId); $this->logger->info("changed task (" . $this->subject . ") for " . $userInst->name); if (tool::secureFiles('userfile', 'name') && @file_exists(tool::secureFiles('userfile', 'tmp_name'))) { // attachment successfully uploaded, we can save it $attach = new attachment(); $attach->taskId = $this->id; $attach->insert(); $this->logger->info("added attachment (" . $this->file . ") to task " . $this->subject); unset($_FILES['userfile']); } // process all childs $childs = $this->childs(); while ($element = current($childs)) { $child = new task($element); // we need to update the project id in all child tasks $child->projectId = $this->projectId; // task is set to status "done", we should start all child tasks now if ($this->isDone()) { $child->start(); $child->mail($child->userId, "There's an automatically started task for you:"); } $child->update(); next($childs); } return true; } return false; }
function insert() { global $dbInst, $loginInst, $toolInst; if (!$loginInst->hasAccess("request.insert")) { return false; } if (!$this->check()) { return false; } $query = "insert into " . $dbInst->config['table_request'] . " " . "(subject,body,time,priority_id,poster_id,type_id,project_id) " . "values (" . "'" . $this->subject . "'," . "'" . $this->body . "'," . "'" . $toolInst->getTime("U") . "'," . "'" . $this->priorityId . "'," . "'" . $this->posterId . "'," . "'" . $this->typeId . "'," . "'" . $this->projectId . "')"; $result = $dbInst->query($query); $id = $dbInst->getValue("select distinct last_insert_id() from " . $dbInst->config['table_request']); $dbInst->status($result[1], "i"); if ($result[1] == 1 || $result[1] == 0) { $this->id = $id; $this->mail("there's a NEW request for you. Please assign this to a developer:"); // logging $projectInst = new project($this->projectId); $this->logger->info("added request (" . $this->subject . ") to project " . $projectInst->name); if (tool::secureFiles('userfile', 'name') && @file_exists(tool::secureFiles('userfile', 'tmp_name'))) { // attachment successfully uploaded, we can save it $attach = new attachment(); $attach->taskId = $this->id; $attach->insert(); $this->logger->info("added attachment (" . $this->file . ") to request " . $this->subject); } return $id; } else { return false; } }