public static function loadFixtures(\thebuggenie\core\entities\Scope $scope) { $staff_members = new \thebuggenie\core\entities\Team(); $staff_members->setName('Staff members'); $staff_members->save(); $developers = new \thebuggenie\core\entities\Team(); $developers->setName('Developers'); $developers->save(); $team_leaders = new \thebuggenie\core\entities\Team(); $team_leaders->setName('Team leaders'); $team_leaders->save(); $testers = new \thebuggenie\core\entities\Team(); $testers->setName('Testers'); $testers->save(); $translators = new \thebuggenie\core\entities\Team(); $translators->setName('Translators'); $translators->save(); }
public function perform(\thebuggenie\core\entities\Issue $issue, $request = null) { switch ($this->_action_type) { case self::ACTION_ASSIGN_ISSUE_SELF: $issue->setAssignee(framework\Context::getUser()); break; case self::ACTION_SET_STATUS: if ($this->getTargetValue()) { $issue->setStatus(Status::getB2DBTable()->selectById((int) $this->getTargetValue())); } else { $issue->setStatus($request['status_id']); } break; case self::ACTION_CLEAR_MILESTONE: $issue->setMilestone(null); break; case self::ACTION_SET_MILESTONE: if ($this->getTargetValue()) { $issue->setMilestone(Milestone::getB2DBTable()->selectById((int) $this->getTargetValue())); } else { $issue->setMilestone($request['milestone_id']); } break; case self::ACTION_CLEAR_PRIORITY: $issue->setPriority(null); break; case self::ACTION_SET_PRIORITY: if ($this->getTargetValue()) { $issue->setPriority(Priority::getB2DBTable()->selectById((int) $this->getTargetValue())); } else { $issue->setPriority($request['priority_id']); } break; case self::ACTION_CLEAR_PERCENT: $issue->setPercentCompleted(0); break; case self::ACTION_SET_PERCENT: if ($this->getTargetValue()) { $issue->setPercentCompleted((int) $this->getTargetValue()); } else { $issue->setPercentCompleted((int) $request['percent_complete_id']); } break; case self::ACTION_CLEAR_DUPLICATE: $issue->setDuplicateOf(null); break; case self::ACTION_SET_DUPLICATE: $issue->setDuplicateOf($request['duplicate_issue_id']); break; case self::ACTION_CLEAR_RESOLUTION: $issue->setResolution(null); break; case self::ACTION_SET_RESOLUTION: if ($this->getTargetValue()) { $issue->setResolution(Resolution::getB2DBTable()->selectById((int) $this->getTargetValue())); } else { $issue->setResolution($request['resolution_id']); } break; case self::ACTION_CLEAR_REPRODUCABILITY: $issue->setReproducability(null); break; case self::ACTION_SET_REPRODUCABILITY: if ($this->getTargetValue()) { $issue->setReproducability(Reproducability::getB2DBTable()->selectById((int) $this->getTargetValue())); } else { $issue->setReproducability($request['reproducability_id']); } break; case self::ACTION_CLEAR_ASSIGNEE: $issue->clearAssignee(); break; case self::ACTION_ASSIGN_ISSUE: if ($this->getTargetValue()) { $target_details = explode('_', $this->_target_value); if ($target_details[0] == 'user') { $assignee = \thebuggenie\core\entities\User::getB2DBTable()->selectById((int) $target_details[1]); } else { $assignee = Team::getB2DBTable()->selectById((int) $target_details[1]); } $issue->setAssignee($assignee); } else { $assignee = null; switch ($request['assignee_type']) { case 'user': $assignee = \thebuggenie\core\entities\User::getB2DBTable()->selectById((int) $request['assignee_id']); break; case 'team': $assignee = Team::getB2DBTable()->selectById((int) $request['assignee_id']); break; } if ((bool) $request->getParameter('assignee_teamup', false) && $assignee instanceof \thebuggenie\core\entities\User && $assignee->getID() != framework\Context::getUser()->getID()) { $team = new \thebuggenie\core\entities\Team(); $team->setName($assignee->getBuddyname() . ' & ' . framework\Context::getUser()->getBuddyname()); $team->setOndemand(true); $team->save(); $team->addMember($assignee); $team->addMember(framework\Context::getUser()); $assignee = $team; } $issue->setAssignee($assignee); } break; case self::ACTION_USER_START_WORKING: $issue->clearUserWorkingOnIssue(); if ($issue->getAssignee() instanceof \thebuggenie\core\entities\Team && $issue->getAssignee()->isOndemand()) { $members = $issue->getAssignee()->getMembers(); $issue->startWorkingOnIssue(array_shift($members)); } elseif ($issue->getAssignee() instanceof \thebuggenie\core\entities\User) { $issue->startWorkingOnIssue($issue->getAssignee()); } break; case self::ACTION_USER_STOP_WORKING: if ($request->getParameter('did', 'nothing') == 'nothing') { $issue->clearUserWorkingOnIssue(); } elseif ($request->getParameter('did', 'nothing') == 'this') { $times = array(); if ($request['timespent_manual']) { $times = Issue::convertFancyStringToTime($request['timespent_manual']); } elseif ($request['timespent_specified_type']) { $times = array('points' => 0, 'hours' => 0, 'days' => 0, 'weeks' => 0, 'months' => 0); $times[$request['timespent_specified_type']] = $request['timespent_specified_value']; } if (array_sum($times) > 0) { $times['hours'] *= 100; $spenttime = new \thebuggenie\core\entities\IssueSpentTime(); $spenttime->setIssue($issue); $spenttime->setUser(framework\Context::getUser()); $spenttime->setSpentPoints($times['points']); $spenttime->setSpentHours($times['hours']); $spenttime->setSpentDays($times['days']); $spenttime->setSpentWeeks($times['weeks']); $spenttime->setSpentMonths($times['months']); $spenttime->setActivityType($request['timespent_activitytype']); $spenttime->setComment($request['timespent_comment']); $spenttime->save(); } $issue->clearUserWorkingOnIssue(); } else { $issue->stopWorkingOnIssue(); } break; default: if (strpos($this->_action_type, self::CUSTOMFIELD_CLEAR_PREFIX) === 0) { $customkey = substr($this->_action_type, strlen(self::CUSTOMFIELD_CLEAR_PREFIX)); $issue->setCustomField($customkey, null); } elseif (strpos($this->_action_type, self::CUSTOMFIELD_SET_PREFIX) === 0) { $customkey = substr($this->_action_type, strlen(self::CUSTOMFIELD_SET_PREFIX)); if ($this->getTargetValue()) { $issue->setCustomField($customkey, $this->getTargetValue()); } else { $issue->setCustomField($customkey, $request[$customkey . '_id']); } } else { $event = new \thebuggenie\core\framework\Event('core', 'WorkflowTransitionAction::perform', $issue, array('request' => $request)); $event->triggerUntilProcessed(); } } }