public function saveSetting($name, $module, $value, $uid, $scope) { $crit = $this->getCriteria(); $crit->addWhere(self::NAME, $name); $crit->addWhere(self::MODULE, $module); $crit->addWhere(self::UID, $uid); $crit->addWhere(self::SCOPE, $scope); $res = $this->doSelectOne($crit); if ($res instanceof \b2db\Row) { $theID = $res->get(self::ID); $crit2 = new Criteria(); $crit2->addWhere(self::NAME, $name); $crit2->addWhere(self::MODULE, $module); $crit2->addWhere(self::UID, $uid); $crit2->addWhere(self::SCOPE, $scope); $crit2->addWhere(self::ID, $theID, Criteria::DB_NOT_EQUALS); $res2 = $this->doDelete($crit2); $crit = $this->getCriteria(); $crit->addUpdate(self::NAME, $name); $crit->addUpdate(self::MODULE, $module); $crit->addUpdate(self::UID, $uid); $crit->addUpdate(self::VALUE, $value); $crit->addUpdate(self::UPDATED_AT, time()); $this->doUpdateById($crit, $theID); } else { $crit = $this->getCriteria(); $crit->addInsert(self::NAME, $name); $crit->addInsert(self::MODULE, $module); $crit->addInsert(self::VALUE, $value); $crit->addInsert(self::SCOPE, $scope); $crit->addInsert(self::UID, $uid); $crit->addInsert(self::UPDATED_AT, time()); $this->doInsert($crit); } }
/** * Get commit for a given commit id * @param string $id * @param integer $project */ public function getCommitByCommitId($id, $project) { $crit = new Criteria(); $crit->addWhere(self::NEW_REV, $id); $crit->addWhere(self::PROJECT_ID, $project); return $this->selectOne($crit); }
public function getIssuesByProjectID($id) { $crit = new Criteria(); $crit->addWhere(self::DELETED, false); $crit->addWhere(self::PROJECT_ID, $id); $results = $this->doSelect($crit); if (!is_object($results) || count($results) == 0) { return false; } $data = array(); /* Build revision details */ while ($results->next()) { $data[] = TBGContext::factory()->TBGIssue($results->get(TBGIssuesTable::ID)); } return $data; }
public function getOpenIssuesByProjectIDAndIssuetypeID($project_id, $issuetype_id) { $crit = new Criteria(); $crit->addWhere(self::DELETED, false); $crit->addWhere(self::STATE, \thebuggenie\core\entities\Issue::STATE_OPEN); $crit->addWhere(self::PROJECT_ID, $project_id); $crit->addWhere(self::ISSUE_TYPE, $issuetype_id); $issues = $this->select($crit); foreach ($issues as $key => $issue) { if (!$issue->hasAccess()) { unset($issues[$key]); } } return $issues; }
/** * * @param \b2db\Criteria $crit * @param array|\thebuggenie\core\entities\SearchFilter $filters * @param \b2db\Criterion $ctn * @return null */ public function addToCriteria($crit, $filters, $ctn = null) { $filter_key = $this->getFilterKey(); if (in_array($this['operator'], array('=', '!=', '<=', '>=', '<', '>'))) { if ($filter_key == 'text') { if ($this['value'] != '') { $searchterm = mb_strpos($this['value'], '%') !== false ? $this['value'] : "%{$this['value']}%"; $issue_no = Issue::extractIssueNoFromNumber($this['value']); if ($this['operator'] == '=') { if ($ctn === null) { $ctn = $crit->returnCriterion(tables\Issues::TITLE, $searchterm, Criteria::DB_LIKE); } $ctn->addOr(tables\Issues::DESCRIPTION, $searchterm, Criteria::DB_LIKE); $ctn->addOr(tables\Issues::REPRODUCTION_STEPS, $searchterm, Criteria::DB_LIKE); $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $searchterm, Criteria::DB_LIKE); if (is_numeric($issue_no)) { $ctn->addOr(tables\Issues::ISSUE_NO, $issue_no, Criteria::DB_EQUALS); } $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $searchterm, Criteria::DB_LIKE); if (is_numeric($issue_no)) { $ctn->addOr(tables\Issues::ISSUE_NO, $issue_no, Criteria::DB_EQUALS); } // $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $searchterm, Criteria::DB_LIKE); } else { if ($ctn === null) { $ctn = $crit->returnCriterion(tables\Issues::TITLE, $searchterm, Criteria::DB_NOT_LIKE); } $ctn->addWhere(tables\Issues::DESCRIPTION, $searchterm, Criteria::DB_NOT_LIKE); $ctn->addWhere(tables\Issues::REPRODUCTION_STEPS, $searchterm, Criteria::DB_NOT_LIKE); $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $searchterm, Criteria::DB_NOT_LIKE); if (is_numeric($issue_no)) { $ctn->addWhere(tables\Issues::ISSUE_NO, $issue_no, Criteria::DB_EQUALS); } $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $searchterm, Criteria::DB_NOT_LIKE); if (is_numeric($issue_no)) { $ctn->addWhere(tables\Issues::ISSUE_NO, $issue_no, Criteria::DB_EQUALS); } // $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $searchterm, Criteria::DB_NOT_LIKE); } return $ctn; } } elseif (in_array($filter_key, self::getValidSearchFilters())) { if ($filter_key == 'subprojects') { if (framework\Context::isProjectContext()) { if ($ctn === null) { $ctn = $crit->returnCriterion(tables\Issues::PROJECT_ID, framework\Context::getCurrentProject()->getID()); } if ($this->hasValue()) { foreach ($this->getValues() as $value) { switch ($value) { case 'all': $subprojects = Project::getIncludingAllSubprojectsAsArray(framework\Context::getCurrentProject()); foreach ($subprojects as $subproject) { if ($subproject->getID() == framework\Context::getCurrentProject()->getID()) { continue; } $ctn->addOr(tables\Issues::PROJECT_ID, $subproject->getID()); } break; case 'none': case '': break; default: $ctn->addOr(tables\Issues::PROJECT_ID, (int) $value); break; } } } return $ctn; } } elseif (in_array($filter_key, array('build', 'edition', 'component'))) { switch ($filter_key) { case 'component': $tbl = tables\IssueAffectsComponent::getTable(); $fk = tables\IssueAffectsComponent::ISSUE; break; case 'edition': $tbl = tables\IssueAffectsEdition::getTable(); $fk = tables\IssueAffectsEdition::ISSUE; break; case 'build': $tbl = tables\IssueAffectsBuild::getTable(); $fk = tables\IssueAffectsBuild::ISSUE; break; } $crit->addJoin($tbl, $fk, tables\Issues::ID, array(array($tbl->getB2DBAlias() . '.' . $filter_key, $this->getValues())), \b2db\Criteria::DB_INNER_JOIN); return null; } else { if ($filter_key == 'project_id' && in_array('subprojects', $filters)) { return null; } $values = $this->getValues(); $num_values = 0; if ($filter_key == 'status') { if ($this->hasValue('open')) { $c = $crit->returnCriterion(tables\Issues::STATE, Issue::STATE_OPEN); $num_values++; } if ($this->hasValue('closed')) { $num_values++; if (isset($c)) { $c->addWhere(tables\Issues::STATE, Issue::STATE_CLOSED); } else { $c = $crit->returnCriterion(tables\Issues::STATE, Issue::STATE_CLOSED); } } if (isset($c)) { if (count($values) == $num_values) { return $c; } else { $crit->addWhere($c); } } } $dbname = tables\Issues::getTable()->getB2DBName(); foreach ($values as $value) { $operator = $this['operator']; $or = true; if ($filter_key == 'status' && in_array($value, array('open', 'closed'))) { continue; } else { $field = $dbname . '.' . $filter_key; if ($operator == '!=' || in_array($filter_key, array('posted', 'last_updated'))) { $or = false; } } if ($ctn === null) { $ctn = $crit->returnCriterion($field, $value, urldecode($operator)); } elseif ($or) { $ctn->addOr($field, $value, urldecode($operator)); } else { $ctn->addWhere($field, $value, urldecode($operator)); } } return $ctn; } } elseif (CustomDatatype::doesKeyExist($filter_key)) { $customdatatype = CustomDatatype::getByKey($filter_key); if (in_array($this->getFilterType(), CustomDatatype::getInternalChoiceFieldsAsArray())) { $tbl = clone tables\IssueCustomFields::getTable(); $crit->addJoin($tbl, tables\IssueCustomFields::ISSUE_ID, tables\Issues::ID, array(array($tbl->getB2DBAlias() . '.customfields_id', $customdatatype->getID()), array($tbl->getB2DBAlias() . '.customfieldoption_id', $this->getValues())), \b2db\Criteria::DB_INNER_JOIN); return null; } else { foreach ($this->getValues() as $value) { if ($customdatatype->hasCustomOptions()) { if ($ctn === null) { $ctn = $crit->returnCriterion(tables\IssueCustomFields::CUSTOMFIELDS_ID, $customdatatype->getID()); $ctn->addWhere(tables\IssueCustomFields::CUSTOMFIELDOPTION_ID, $value, $this['operator']); } else { $ctn->addOr(tables\IssueCustomFields::CUSTOMFIELDOPTION_ID, $value, $this['operator']); } } else { if ($ctn === null) { $ctn = $crit->returnCriterion(tables\IssueCustomFields::CUSTOMFIELDS_ID, $customdatatype->getID()); $ctn->addWhere(tables\IssueCustomFields::OPTION_VALUE, $value, $this['operator']); } else { $ctn->addOr(tables\IssueCustomFields::OPTION_VALUE, $value, $this['operator']); } } } return $ctn; } } } }
/** * Whether a commit is already processed * @param string $id * @param integer $project */ public function isProjectCommitProcessed($id, $project) { $crit = new Criteria(); $crit->addWhere(self::NEW_REV, $id); $crit->addWhere(self::PROJECT_ID, $project); return (bool) $this->count($crit); }