public function runUpdateMilestoneIssues(TBGRequest $request) { if ($request['milestone_id']) { $milestone = new TBGMilestone($request['milestone_id']); } else { $milestone = new TBGMilestone(); $milestone->setName(TBGContext::getI18n()->__('Unassigned issues / backlog')); $milestone->setId(0); $milestone->setProject($this->selected_project); } foreach ($request['issue_id'] as $issue_id) { $issue = new TBGIssue($issue_id); if (isset($request['estimated_hours'][$issue_id])) { $issue->setEstimatedHours($request['estimated_hours'][$issue_id]); } if (isset($request['estimated_points'][$issue_id])) { $issue->setEstimatedPoints($request['estimated_points'][$issue_id]); } if (isset($request['spent_hours'][$issue_id])) { $issue->setSpentHours($request['spent_hours'][$issue_id]); } if (isset($request['spent_points'][$issue_id])) { $issue->setSpentPoints($request['spent_points'][$issue_id]); } if (isset($request['priority'][$issue_id])) { $issue->setPriority($request['priority'][$issue_id]); } if (isset($request['percent_complete'][$issue_id])) { $issue->setPercentCompleted($request['percent_complete'][$issue_id]); } if (isset($request['severity'][$issue_id])) { $issue->setSeverity($request['severity'][$issue_id]); } if (isset($request['reproducability'][$issue_id])) { $issue->setReproducability($request['reproducability'][$issue_id]); } if (isset($request['category'][$issue_id])) { $issue->setCategory($request['category'][$issue_id]); } if (isset($request['customfield'])) { foreach ($request['customfield'] as $fieldkey => $data) { if (isset($data[$issue_id])) { $issue->setCustomField($fieldkey, $data[$issue_id]); } } } $issue->save(); } return $this->renderJSON(array('estimated_hours' => $milestone->getHoursEstimated(), 'estimated_points' => $milestone->getPointsEstimated(), 'message' => TBGContext::getI18n()->__('%num issue(s) updated', array('%num' => count($request['issue_id']))))); }
protected function _postIssue() { $fields_array = $this->selected_project->getReportableFieldsArray($this->issuetype_id); $issue = new TBGIssue(); $issue->setTitle($this->title); $issue->setIssuetype($this->issuetype_id); $issue->setProject($this->selected_project); if (isset($fields_array['description'])) { $issue->setDescription($this->selected_description); } if (isset($fields_array['description_syntax'])) { $issue->setDescriptionSyntax($this->selected_description_syntax); } if (isset($fields_array['reproduction_steps'])) { $issue->setReproductionSteps($this->selected_reproduction_steps); } if (isset($fields_array['reproduction_steps_syntax'])) { $issue->setReproductionStepsSyntax($this->selected_reproduction_steps_syntax); } if (isset($fields_array['category']) && $this->selected_category instanceof TBGDatatype) { $issue->setCategory($this->selected_category->getID()); } if (isset($fields_array['status']) && $this->selected_status instanceof TBGDatatype) { $issue->setStatus($this->selected_status->getID()); } if (isset($fields_array['reproducability']) && $this->selected_reproducability instanceof TBGDatatype) { $issue->setReproducability($this->selected_reproducability->getID()); } if (isset($fields_array['resolution']) && $this->selected_resolution instanceof TBGDatatype) { $issue->setResolution($this->selected_resolution->getID()); } if (isset($fields_array['severity']) && $this->selected_severity instanceof TBGDatatype) { $issue->setSeverity($this->selected_severity->getID()); } if (isset($fields_array['priority']) && $this->selected_priority instanceof TBGDatatype) { $issue->setPriority($this->selected_priority->getID()); } if (isset($fields_array['estimated_time'])) { $issue->setEstimatedTime($this->selected_estimated_time); } if (isset($fields_array['spent_time'])) { $issue->setSpentTime($this->selected_spent_time); } if (isset($fields_array['milestone']) || isset($this->selected_milestone)) { $issue->setMilestone($this->selected_milestone); } if (isset($fields_array['percent_complete'])) { $issue->setPercentCompleted($this->selected_percent_complete); } if (isset($fields_array['pain_bug_type'])) { $issue->setPainBugType($this->selected_pain_bug_type); } if (isset($fields_array['pain_likelihood'])) { $issue->setPainLikelihood($this->selected_pain_likelihood); } if (isset($fields_array['pain_effect'])) { $issue->setPainEffect($this->selected_pain_effect); } foreach (TBGCustomDatatype::getAll() as $customdatatype) { if (!isset($fields_array[$customdatatype->getKey()])) { continue; } if ($customdatatype->hasCustomOptions()) { if (isset($fields_array[$customdatatype->getKey()]) && $this->selected_customdatatype[$customdatatype->getKey()] instanceof TBGCustomDatatypeOption) { $selected_option = $this->selected_customdatatype[$customdatatype->getKey()]; $issue->setCustomField($customdatatype->getKey(), $selected_option->getID()); } } else { $issue->setCustomField($customdatatype->getKey(), $this->selected_customdatatype[$customdatatype->getKey()]); } } // FIXME: If we set the issue assignee during report issue, this needs to be set INSTEAD of this if ($this->selected_project->canAutoassign()) { if (isset($fields_array['component']) && $this->selected_component instanceof TBGComponent && $this->selected_component->hasLeader()) { $issue->setAssignee($this->selected_component->getLeader()); } elseif (isset($fields_array['edition']) && $this->selected_edition instanceof TBGEdition && $this->selected_edition->hasLeader()) { $issue->setAssignee($this->selected_edition->getLeader()); } elseif ($this->selected_project->hasLeader()) { $issue->setAssignee($this->selected_project->getLeader()); } } $issue->save(); if (isset($this->parent_issue)) { $issue->addParentIssue($this->parent_issue); } if (isset($fields_array['edition']) && $this->selected_edition instanceof TBGEdition) { $issue->addAffectedEdition($this->selected_edition); } if (isset($fields_array['build']) && $this->selected_build instanceof TBGBuild) { $issue->addAffectedBuild($this->selected_build); } if (isset($fields_array['component']) && $this->selected_component instanceof TBGComponent) { $issue->addAffectedComponent($this->selected_component); } return $issue; }