Summary: Depends on D19785. Ref T13217. This converts many of the most common clause construction pathways to the new %Q / %LQ / %LO / %LA / %LJ semantics. Test Plan: Browsed around a bunch, saw fewer warnings and no obvious behavioral errors. The transformations here are generally mechanical (although I did them by hand). Reviewers: amckinley Reviewed By: amckinley Subscribers: hach-que Maniphest Tasks: T13217 Differential Revision: https://secure.phabricator.com/D19789
98 lines
1.8 KiB
PHP
98 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @task format Formatting Query Clauses
|
|
*/
|
|
abstract class PhabricatorQuery extends Phobject {
|
|
|
|
|
|
abstract public function execute();
|
|
|
|
|
|
/* -( Formatting Query Clauses )------------------------------------------- */
|
|
|
|
|
|
/**
|
|
* @task format
|
|
*/
|
|
protected function formatWhereClause(
|
|
AphrontDatabaseConnection $conn,
|
|
array $parts) {
|
|
|
|
$parts = $this->flattenSubclause($parts);
|
|
if (!$parts) {
|
|
return qsprintf($conn, '');
|
|
}
|
|
|
|
return qsprintf($conn, 'WHERE %LA', $parts);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @task format
|
|
*/
|
|
protected function formatSelectClause(
|
|
AphrontDatabaseConnection $conn,
|
|
array $parts) {
|
|
|
|
$parts = $this->flattenSubclause($parts);
|
|
if (!$parts) {
|
|
throw new Exception(pht('Can not build empty SELECT clause!'));
|
|
}
|
|
|
|
return qsprintf($conn, 'SELECT %LQ', $parts);
|
|
}
|
|
|
|
|
|
/**
|
|
* @task format
|
|
*/
|
|
protected function formatJoinClause(
|
|
AphrontDatabaseConnection $conn,
|
|
array $parts) {
|
|
|
|
$parts = $this->flattenSubclause($parts);
|
|
if (!$parts) {
|
|
return qsprintf($conn, '');
|
|
}
|
|
|
|
return qsprintf($conn, '%LJ', $parts);
|
|
}
|
|
|
|
|
|
/**
|
|
* @task format
|
|
*/
|
|
protected function formatHavingClause(
|
|
AphrontDatabaseConnection $conn,
|
|
array $parts) {
|
|
|
|
$parts = $this->flattenSubclause($parts);
|
|
if (!$parts) {
|
|
return qsprintf($conn, '');
|
|
}
|
|
|
|
return qsprintf($conn, 'HAVING %LA', $parts);
|
|
}
|
|
|
|
|
|
/**
|
|
* @task format
|
|
*/
|
|
private function flattenSubclause(array $parts) {
|
|
$result = array();
|
|
foreach ($parts as $part) {
|
|
if (is_array($part)) {
|
|
foreach ($this->flattenSubclause($part) as $subpart) {
|
|
$result[] = $subpart;
|
|
}
|
|
} else if (strlen($part)) {
|
|
$result[] = $part;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
}
|