Path: blob/master/src/infrastructure/query/PhabricatorQuery.php
12241 views
<?php12/**3* @task format Formatting Query Clauses4*/5abstract class PhabricatorQuery extends Phobject {678abstract public function execute();91011/* -( Formatting Query Clauses )------------------------------------------- */121314/**15* @task format16*/17protected function formatWhereClause(18AphrontDatabaseConnection $conn,19array $parts) {2021$parts = $this->flattenSubclause($parts);22if (!$parts) {23return qsprintf($conn, '');24}2526return qsprintf($conn, 'WHERE %LA', $parts);27}28293031/**32* @task format33*/34protected function formatSelectClause(35AphrontDatabaseConnection $conn,36array $parts) {3738$parts = $this->flattenSubclause($parts);39if (!$parts) {40throw new Exception(pht('Can not build empty SELECT clause!'));41}4243return qsprintf($conn, 'SELECT %LQ', $parts);44}454647/**48* @task format49*/50protected function formatJoinClause(51AphrontDatabaseConnection $conn,52array $parts) {5354$parts = $this->flattenSubclause($parts);55if (!$parts) {56return qsprintf($conn, '');57}5859return qsprintf($conn, '%LJ', $parts);60}616263/**64* @task format65*/66protected function formatHavingClause(67AphrontDatabaseConnection $conn,68array $parts) {6970$parts = $this->flattenSubclause($parts);71if (!$parts) {72return qsprintf($conn, '');73}7475return qsprintf($conn, 'HAVING %LA', $parts);76}777879/**80* @task format81*/82private function flattenSubclause(array $parts) {83$result = array();84foreach ($parts as $part) {85if (is_array($part)) {86foreach ($this->flattenSubclause($part) as $subpart) {87$result[] = $subpart;88}89} else if (($part !== null) && strlen($part)) {90$result[] = $part;91}92}93return $result;94}9596}979899