protected function _initialize() { parent::_setup(self::B2DBNAME, self::ID); parent::_addForeignKeyColumn(self::ISSUETYPE_SCHEME_ID, IssuetypeSchemes::getTable(), IssuetypeSchemes::ID); parent::_addForeignKeyColumn(self::ISSUETYPE_ID, IssueTypes::getTable(), IssueTypes::ID); parent::_addBoolean(self::REPORTABLE, true); parent::_addBoolean(self::REDIRECT_AFTER_REPORTING, true); }
protected function _initialize() { parent::_setup(self::B2DBNAME, self::ID); parent::_addVarchar(self::FIELD_KEY, 100); parent::_addBoolean(self::REQUIRED); parent::_addBoolean(self::REPORTABLE); parent::_addBoolean(self::ADDITIONAL); parent::_addForeignKeyColumn(self::ISSUETYPE_ID, IssueTypes::getTable(), IssueTypes::ID); parent::_addForeignKeyColumn(self::ISSUETYPE_SCHEME_ID, IssuetypeSchemes::getTable(), IssuetypeSchemes::ID); }
public function loadFixtures(\thebuggenie\core\entities\Scope $scope) { foreach (IssueTypes::getTable()->getAllIDsByScopeID($scope->getID()) as $issuetype_id) { $crit = $this->getCriteria(); $crit->addInsert(self::SCOPE, $scope->getID()); $crit->addInsert(self::WORKFLOW_ID, \thebuggenie\core\framework\Settings::getCoreWorkflow()->getID()); $crit->addInsert(self::WORKFLOW_SCHEME_ID, \thebuggenie\core\framework\Settings::getCoreWorkflowScheme()->getID()); $crit->addInsert(self::ISSUETYPE_ID, $issuetype_id); $this->doInsert($crit); } }
public function setValuesFromRequest(\thebuggenie\core\framework\Request $request) { if ($request->hasParameter('predefined_search')) { $this->setPredefinedVariables($request['predefined_search']); } else { $this->_templatename = $request->hasParameter('template') && self::isTemplateValid($request['template']) ? $request['template'] : 'results_normal'; $this->_templateparameter = $request['template_parameter']; $this->_issues_per_page = $request->getParameter('issues_per_page', 50); $this->_offset = $request->getParameter('offset', 0); if ($request['quicksearch']) { $this->setSortFields(array(tables\Issues::LAST_UPDATED => 'asc')); } $this->_filters = SearchFilter::getFromRequest($request, $this); $this->_applies_to_project = framework\Context::getCurrentProject(); $this->_columns = $request->getParameter('columns'); $this->_sortfields = $request->getParameter('sortfields'); $this->_groupby = $request['groupby']; $this->_grouporder = $request->getParameter('grouporder', 'asc'); if (in_array($this->_templatename, array('results_userpain_singlepainthreshold', 'results_userpain_totalpainthreshold'))) { $this->_searchtitle = framework\Context::getI18n()->__('Showing "bug report" issues sorted by user pain, threshold set at %threshold', array('%threshold' => $this->_templateparameter)); $this->_issues_per_page = 0; $this->_groupby = 'user_pain'; $this->_grouporder = 'desc'; $this->_filters['issuetype'] = SearchFilter::createFilter('issuetype', array('operator' => '=', 'value' => join(',', tables\IssueTypes::getTable()->getBugReportTypeIDs()))); } elseif ($this->_templatename == 'results_votes') { $this->_searchtitle = framework\Context::getI18n()->__('Showing issues ordered by number of votes'); $this->_issues_per_page = $request->getParameter('issues_per_page', 100); $this->_groupby = 'votes'; $this->_grouporder = 'desc'; } } $this->_setupGenericFilters(); }
public function findIssues($filters = array(), $results_per_page = 30, $offset = 0, $groupby = null, $grouporder = null, $sortfields = array(self::LAST_UPDATED => 'asc')) { $crit = $this->getCriteria(); $crit->addWhere(self::DELETED, false); $crit->addWhere(self::SCOPE, framework\Context::getScope()->getID()); if (count($filters) > 0) { $crit->addJoin(IssueCustomFields::getTable(), IssueCustomFields::ISSUE_ID, Issues::ID); $crit->addJoin(IssueAffectsComponent::getTable(), IssueAffectsComponent::ISSUE, self::ID); $crit->addJoin(IssueAffectsEdition::getTable(), IssueAffectsEdition::ISSUE, self::ID); $crit->addJoin(IssueAffectsBuild::getTable(), IssueAffectsBuild::ISSUE, self::ID); $filter_keys = array_keys($filters); foreach ($filters as $filter) { self::parseFilter($crit, $filter, $filter_keys); } } $crit->addSelectionColumn(self::ID); $crit->setDistinct(); if ($offset != 0) { $crit->setOffset($offset); } $crit2 = clone $crit; $count = $this->doCount($crit2); if ($count > 0) { $crit3 = $this->getCriteria(); if ($results_per_page != 0) { $crit->setLimit($results_per_page); } if ($offset != 0) { $crit->setOffset($offset); } if ($groupby !== null) { $grouporder = $grouporder !== null ? $grouporder == 'asc' ? Criteria::SORT_ASC : Criteria::SORT_DESC : Criteria::SORT_ASC; switch ($groupby) { case 'category': $crit->addJoin(ListTypes::getTable(), ListTypes::ID, self::CATEGORY); $crit->addSelectionColumn(ListTypes::NAME); $crit->addOrderBy(ListTypes::NAME, $grouporder); $crit3->addJoin(ListTypes::getTable(), ListTypes::ID, self::CATEGORY); $crit3->addOrderBy(ListTypes::NAME, $grouporder); break; case 'status': $crit->addJoin(ListTypes::getTable(), ListTypes::ID, self::STATUS); $crit->addSelectionColumn(self::STATUS); $crit->addOrderBy(ListTypes::ORDER, Criteria::SORT_DESC); $crit3->addJoin(ListTypes::getTable(), ListTypes::ID, self::STATUS); $crit3->addOrderBy(ListTypes::ORDER, Criteria::SORT_DESC); break; case 'milestone': $crit->addSelectionColumn(self::MILESTONE); $crit->addSelectionColumn(self::PERCENT_COMPLETE); $crit->addOrderBy(self::MILESTONE, $grouporder); $crit->addOrderBy(self::PERCENT_COMPLETE, 'desc'); $crit3->addOrderBy(self::MILESTONE, $grouporder); $crit3->addOrderBy(self::PERCENT_COMPLETE, 'desc'); break; case 'assignee': $crit->addSelectionColumn(self::ASSIGNEE_TEAM); $crit->addSelectionColumn(self::ASSIGNEE_USER); $crit->addOrderBy(self::ASSIGNEE_TEAM); $crit->addOrderBy(self::ASSIGNEE_USER, $grouporder); $crit3->addOrderBy(self::ASSIGNEE_TEAM); $crit3->addOrderBy(self::ASSIGNEE_USER, $grouporder); break; case 'state': $crit->addSelectionColumn(self::STATE); $crit->addOrderBy(self::STATE, $grouporder); $crit3->addOrderBy(self::STATE, $grouporder); break; case 'severity': $crit->addJoin(ListTypes::getTable(), ListTypes::ID, self::SEVERITY); $crit->addSelectionColumn(self::SEVERITY); $crit->addOrderBy(ListTypes::ORDER, $grouporder); $crit3->addJoin(ListTypes::getTable(), ListTypes::ID, self::SEVERITY); $crit3->addOrderBy(ListTypes::ORDER, $grouporder); break; case 'user_pain': $crit->addSelectionColumn(self::USER_PAIN); $crit->addOrderBy(self::USER_PAIN, $grouporder); $crit3->addOrderBy(self::USER_PAIN, $grouporder); break; case 'votes': $crit->addSelectionColumn(self::VOTES_TOTAL); $crit->addOrderBy(self::VOTES_TOTAL, $grouporder); $crit3->addOrderBy(self::VOTES_TOTAL, $grouporder); break; case 'resolution': $crit->addJoin(ListTypes::getTable(), ListTypes::ID, self::RESOLUTION); $crit->addSelectionColumn(self::RESOLUTION); $crit->addOrderBy(ListTypes::ORDER, $grouporder); $crit3->addJoin(ListTypes::getTable(), ListTypes::ID, self::RESOLUTION); $crit3->addOrderBy(ListTypes::ORDER, $grouporder); break; case 'priority': $crit->addJoin(ListTypes::getTable(), ListTypes::ID, self::PRIORITY); $crit->addSelectionColumn(self::PRIORITY); $crit->addOrderBy(ListTypes::ORDER, $grouporder); $crit3->addJoin(ListTypes::getTable(), ListTypes::ID, self::PRIORITY); $crit3->addOrderBy(ListTypes::ORDER, $grouporder); break; case 'issuetype': $crit->addJoin(IssueTypes::getTable(), IssueTypes::ID, self::ISSUE_TYPE); $crit->addSelectionColumn(IssueTypes::NAME); $crit->addOrderBy(IssueTypes::NAME, $grouporder); $crit3->addJoin(IssueTypes::getTable(), IssueTypes::ID, self::ISSUE_TYPE); $crit3->addOrderBy(IssueTypes::NAME, $grouporder); break; case 'edition': $crit->addJoin(IssueAffectsEdition::getTable(), IssueAffectsEdition::ISSUE, self::ID); $crit->addJoin(Editions::getTable(), Editions::ID, IssueAffectsEdition::EDITION, array(), Criteria::DB_LEFT_JOIN, IssueAffectsEdition::getTable()); $crit->addSelectionColumn(Editions::NAME); $crit->addOrderBy(Editions::NAME, $grouporder); $crit3->addJoin(IssueAffectsEdition::getTable(), IssueAffectsEdition::ISSUE, self::ID); $crit3->addJoin(Editions::getTable(), Editions::ID, IssueAffectsEdition::EDITION, array(), Criteria::DB_LEFT_JOIN, IssueAffectsEdition::getTable()); $crit3->addOrderBy(Editions::NAME, $grouporder); break; case 'build': $crit->addJoin(IssueAffectsBuild::getTable(), IssueAffectsBuild::ISSUE, self::ID); $crit->addJoin(Builds::getTable(), Builds::ID, IssueAffectsBuild::BUILD, array(), Criteria::DB_LEFT_JOIN, IssueAffectsBuild::getTable()); $crit->addSelectionColumn(Builds::NAME); $crit->addOrderBy(Builds::NAME, $grouporder); $crit3->addJoin(IssueAffectsBuild::getTable(), IssueAffectsBuild::ISSUE, self::ID); $crit3->addJoin(Builds::getTable(), Builds::ID, IssueAffectsBuild::BUILD, array(), Criteria::DB_LEFT_JOIN, IssueAffectsBuild::getTable()); $crit3->addOrderBy(Builds::NAME, $grouporder); break; case 'component': $crit->addJoin(IssueAffectsComponent::getTable(), IssueAffectsComponent::ISSUE, self::ID); $crit->addJoin(Components::getTable(), Components::ID, IssueAffectsComponent::COMPONENT, array(), Criteria::DB_LEFT_JOIN, IssueAffectsComponent::getTable()); $crit->addSelectionColumn(Components::NAME); $crit->addOrderBy(Components::NAME, $grouporder); $crit3->addJoin(IssueAffectsComponent::getTable(), IssueAffectsComponent::ISSUE, self::ID); $crit3->addJoin(Components::getTable(), Components::ID, IssueAffectsComponent::COMPONENT, array(), Criteria::DB_LEFT_JOIN, IssueAffectsComponent::getTable()); $crit3->addOrderBy(Components::NAME, $grouporder); break; } } foreach ($sortfields as $field => $sortorder) { $crit->addSelectionColumn($field); $crit->addOrderBy($field, $sortorder); } $res = $this->doSelect($crit, 'none'); $ids = array(); if ($res) { while ($row = $res->getNextRow()) { $ids[] = $row->get(self::ID); } $ids = array_reverse($ids); $crit3->addWhere(self::ID, $ids, Criteria::DB_IN); foreach ($sortfields as $field => $sortorder) { $crit3->addOrderBy($field, $sortorder); } $res = $this->doSelect($crit3); $rows = $res->getAllRows(); } else { $rows = array(); } unset($res); return array($rows, $count, $ids); } else { return array(null, 0, array()); } }
protected function _initialize() { parent::_setup(self::B2DBNAME, self::ID); parent::_addForeignKeyColumn(self::ISSUETYPE_ID, IssueTypes::getTable(), IssueTypes::ID); parent::_addForeignKeyColumn(self::PROJECT_ID, Projects::getTable(), Projects::ID); }
public function getLast15IssueCountsByProjectID($project_id) { $retarr = array(); for ($cc = 15; $cc >= 0; $cc--) { $crit = $this->getCriteria(); $joinedtable = $crit->addJoin(Issues::getTable(), Issues::ID, self::TARGET); $crit->addWhere(self::TARGET_TYPE, self::TYPE_ISSUE); $crit->addWhere(self::CHANGE_TYPE, array(self::LOG_ISSUE_CREATED, self::LOG_ISSUE_CLOSE), Criteria::DB_IN); $crit->addWhere(Issues::PROJECT_ID, $project_id); $crit->addWhere(Issues::DELETED, false); $crit->addJoin(IssueTypes::getTable(), IssueTypes::ID, Issues::ISSUE_TYPE, array(), Criteria::DB_LEFT_JOIN, $joinedtable); $crit->addWhere(IssueTypes::ICON, 'bug_report'); $crit->addWhere(self::SCOPE, framework\Context::getScope()->getID()); $ctn = $crit->returnCriterion(self::TIME, NOW - 86400 * ($cc + 1), Criteria::DB_GREATER_THAN_EQUAL); $ctn->addWhere(self::TIME, NOW - 86400 * $cc, Criteria::DB_LESS_THAN_EQUAL); $crit->addWhere($ctn); $crit2 = clone $crit; $crit->addWhere(self::CHANGE_TYPE, self::LOG_ISSUE_CLOSE); $crit2->addWhere(self::CHANGE_TYPE, self::LOG_ISSUE_CREATED); $retarr[0][$cc] = $this->doCount($crit); $retarr[1][$cc] = $this->doCount($crit2); } return $retarr; }