mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-03 07:59:15 +01:00
Sometimes git does some odd magic on case-insensitive filesystems, try to trick it. Auditors: chad
78 lines
1.7 KiB
PHP
78 lines
1.7 KiB
PHP
<?php
|
|
|
|
class PhabricatorElasticsearchQueryBuilder {
|
|
protected $name;
|
|
protected $clauses = array();
|
|
|
|
|
|
public function getClauses($termkey = null) {
|
|
$clauses = $this->clauses;
|
|
if ($termkey == null) {
|
|
return $clauses;
|
|
}
|
|
if (isset($clauses[$termkey])) {
|
|
return $clauses[$termkey];
|
|
}
|
|
return array();
|
|
}
|
|
|
|
public function getClauseCount($clausekey) {
|
|
if (isset($this->clauses[$clausekey])) {
|
|
return count($this->clauses[$clausekey]);
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
public function addExistsClause($field) {
|
|
return $this->addClause('filter', array(
|
|
'exists' => array(
|
|
'field' => $field,
|
|
),
|
|
));
|
|
}
|
|
|
|
public function addTermsClause($field, $values) {
|
|
return $this->addClause('filter', array(
|
|
'terms' => array(
|
|
$field => array_values($values),
|
|
),
|
|
));
|
|
}
|
|
|
|
public function addMustClause($clause) {
|
|
return $this->addClause('must', $clause);
|
|
}
|
|
|
|
public function addFilterClause($clause) {
|
|
return $this->addClause('filter', $clause);
|
|
}
|
|
|
|
public function addShouldClause($clause) {
|
|
return $this->addClause('should', $clause);
|
|
}
|
|
|
|
public function addMustNotClause($clause) {
|
|
return $this->addClause('must_not', $clause);
|
|
}
|
|
|
|
public function addClause($clause, $terms) {
|
|
$this->clauses[$clause][] = $terms;
|
|
return $this;
|
|
}
|
|
|
|
public function toArray() {
|
|
$clauses = $this->getClauses();
|
|
return $clauses;
|
|
$cleaned = array();
|
|
foreach ($clauses as $clause => $subclauses) {
|
|
if (is_array($subclauses) && count($subclauses) == 1) {
|
|
$cleaned[$clause] = array_shift($subclauses);
|
|
} else {
|
|
$cleaned[$clause] = $subclauses;
|
|
}
|
|
}
|
|
return $cleaned;
|
|
}
|
|
|
|
}
|