private function getEditorFields($trackerId, $issue) { $fields = array(); $statusDataStore = new \Spit\DataStores\StatusDataStore(); $priorityDataStore = new \Spit\DataStores\PriorityDataStore(); $versionDataStore = new \Spit\DataStores\VersionDataStore(); $userDataStore = new \Spit\DataStores\UserDataStore(); $categoryDataStore = new \Spit\DataStores\CategoryDataStore(); $status = new SelectField("statusId", T_("Status")); $this->fillSelectField($status, $statusDataStore->get(), $issue->statusId); array_push($fields, $status); $priority = new SelectField("priorityId", T_("Priority")); $this->fillSelectField($priority, $priorityDataStore->get(), $issue->priorityId); array_push($fields, $priority); $category = new SelectField("categoryId", T_("Category")); $category->add(null, ""); $this->fillSelectField($category, $categoryDataStore->get(), $issue->categoryId); array_push($fields, $category); $found = new SelectField("foundId", T_("Found")); $found->add(null, ""); $this->fillSelectField($found, $versionDataStore->get(), $issue->foundId); array_push($fields, $found); $target = new SelectField("targetId", T_("Target")); $target->add(null, ""); $this->fillSelectField($target, $versionDataStore->get(), $issue->targetId); array_push($fields, $target); $assignee = new SelectField("assigneeId", T_("Assignee")); $assignee->add(null, ""); $this->fillSelectField($assignee, $userDataStore->getMembers(), $issue->assigneeId); array_push($fields, $assignee); $issueFields = new \Spit\IssueFields($this->app->project->name); foreach ($issueFields->getCustomFieldMap() as $name => $label) { $values = $issueFields->getCustomFieldValues($name); if (count($values) != 0) { $custom = new SelectField($name, $label); $custom->add(null, ""); foreach ($values as $value => $text) { $selected = isset($issue->{$name}) && $issue->{$name} == $value; $custom->add($value, $text, $selected); } } else { $custom = new TextField($name, $label); if (isset($issue->{$name})) { $custom->value = $issue->{$name}; } } array_push($fields, $custom); } return $issueFields->filter($fields, $trackerId, true); }
private function insertCustomValues($context) { $fields = array(); foreach ($context->projects as $project) { $issueFields = new \Spit\IssueFields($project->name); foreach ($issueFields->getCustomFieldMap() as $k => $v) { // only add field names once. if (!in_array($k, $fields)) { array_push($fields, $k); } } } $valueLists = array(); foreach ($context->issues as $issue) { $custom = new \stdClass(); $custom->id = $context->issueIdMap[$issue->importId]; $custom->values = $this->getCustomValues($issue, $fields, $context); if (!$this->isEmpty($custom->values)) { array_push($valueLists, $custom); } } $this->issueDataStore->insertCustomMany($fields, $valueLists); }