Beispiel #1
0
 protected function _postIssue(framework\Request $request)
 {
     $fields_array = $this->selected_project->getReportableFieldsArray($this->issuetype_id);
     $issue = new entities\Issue();
     $issue->setTitle($this->title);
     $issue->setIssuetype($this->issuetype_id);
     $issue->setProject($this->selected_project);
     if (isset($fields_array['shortname'])) {
         $issue->setShortname($this->selected_shortname);
     }
     if (isset($fields_array['description'])) {
         $issue->setDescription($this->selected_description);
         $issue->setDescriptionSyntax($this->selected_description_syntax);
     }
     if (isset($fields_array['reproduction_steps'])) {
         $issue->setReproductionSteps($this->selected_reproduction_steps);
         $issue->setReproductionStepsSyntax($this->selected_reproduction_steps_syntax);
     }
     if (isset($fields_array['category']) && $this->selected_category instanceof entities\Datatype) {
         $issue->setCategory($this->selected_category->getID());
     }
     if (isset($fields_array['status']) && $this->selected_status instanceof entities\Datatype) {
         $issue->setStatus($this->selected_status->getID());
     }
     if (isset($fields_array['reproducability']) && $this->selected_reproducability instanceof entities\Datatype) {
         $issue->setReproducability($this->selected_reproducability->getID());
     }
     if (isset($fields_array['resolution']) && $this->selected_resolution instanceof entities\Datatype) {
         $issue->setResolution($this->selected_resolution->getID());
     }
     if (isset($fields_array['severity']) && $this->selected_severity instanceof entities\Datatype) {
         $issue->setSeverity($this->selected_severity->getID());
     }
     if (isset($fields_array['priority']) && $this->selected_priority instanceof entities\Datatype) {
         $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 (entities\CustomDatatype::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 entities\CustomDatatypeOption) {
                 $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 entities\Component && $this->selected_component->hasLeader()) {
             $issue->setAssignee($this->selected_component->getLeader());
         } elseif (isset($fields_array['edition']) && $this->selected_edition instanceof entities\Edition && $this->selected_edition->hasLeader()) {
             $issue->setAssignee($this->selected_edition->getLeader());
         } elseif ($this->selected_project->hasLeader()) {
             $issue->setAssignee($this->selected_project->getLeader());
         }
     }
     if ($request->hasParameter('custom_issue_access') && $this->selected_project->permissionCheck('canlockandeditlockedissues')) {
         switch ($request->getParameter('issue_access')) {
             case 'public':
             case 'public_category':
                 $issue->setLocked(false);
                 $issue->setLockedCategory($request->hasParameter('public_category'));
                 break;
             case 'restricted':
                 $issue->setLocked();
                 break;
         }
     } else {
         $issue->setLockedFromProject($this->selected_project);
     }
     framework\Event::listen('core', 'thebuggenie\\core\\entities\\Issue::createNew_pre_notifications', array($this, 'listen_issueCreate'));
     $issue->save();
     if (isset($this->parent_issue)) {
         $issue->addParentIssue($this->parent_issue);
     }
     if (isset($fields_array['edition']) && $this->selected_edition instanceof entities\Edition) {
         $issue->addAffectedEdition($this->selected_edition);
     }
     if (isset($fields_array['build']) && $this->selected_build instanceof entities\Build) {
         $issue->addAffectedBuild($this->selected_build);
     }
     if (isset($fields_array['component']) && $this->selected_component instanceof entities\Component) {
         $issue->addAffectedComponent($this->selected_component);
     }
     return $issue;
 }