示例#1
0
 /**
  * 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;
 }
示例#2
0
 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;
     }
 }