Exemple #1
0
 /**
  * Save an updated issue
  *
  * @return \Model\Issue
  */
 protected function _saveUpdate()
 {
     $f3 = \Base::instance();
     $post = array_map("trim", $f3->get("POST"));
     $issue = new \Model\Issue();
     // Load issue and return if not set
     $issue->load($post["id"]);
     if (!$issue->id) {
         return $issue;
     }
     // Diff contents and save what's changed.
     $hashState = json_decode($post["hash_state"]);
     foreach ($post as $i => $val) {
         if ($issue->exists($i) && $i != "id" && $issue->{$i} != $val && md5($val) != $hashState->{$i}) {
             if (empty($val)) {
                 $issue->{$i} = null;
             } else {
                 $issue->{$i} = $val;
                 if ($i == "status") {
                     $status = new \Model\Issue\Status();
                     $status->load($val);
                     // Toggle closed_date if issue has been closed/restored
                     if ($status->closed) {
                         if (!$issue->closed_date) {
                             $issue->closed_date = $this->now();
                         }
                     } else {
                         $issue->closed_date = null;
                     }
                 }
                 // Save to the sprint of the due date unless one already set
                 if ($i == "due_date" && !empty($val)) {
                     if (empty($post['sprint_id'])) {
                         $sprint = new \Model\Sprint();
                         $sprint->load(array("DATE(?) BETWEEN start_date AND end_date", $val));
                         $issue->sprint_id = $sprint->id;
                     }
                 }
             }
         }
     }
     // Save comment if given
     if (!empty($post["comment"])) {
         $comment = new \Model\Issue\Comment();
         $comment->user_id = $this->_userId;
         $comment->issue_id = $issue->id;
         $comment->text = $post["comment"];
         $comment->created_date = $this->now();
         $comment->save();
         $f3->set("update_comment", $comment);
     }
     // Save issue, optionally send notifications
     $notify = !empty($post["notify"]);
     $issue->save($notify);
     return $issue;
 }
Exemple #2
0
 public function single_put($f3, $params)
 {
     $issue = new \Model\Issue();
     $issue->load($params["id"]);
     if (!$issue->id) {
         $f3->error(404);
         return;
     }
     $updated = array();
     foreach ($f3->get("REQUEST") as $key => $val) {
         if (is_scalar($val) && $issue->exists($key)) {
             $updated[] = $key;
             $issue->set($key, $val);
         }
     }
     if ($updated) {
         $issue->save();
     }
     $this->printJson(array("updated_fields" => $updated, "issue" => $this->_issueMultiArray($issue)));
 }