Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/infrastructure/query/PhabricatorQuery.php
12241 views
1
<?php
2
3
/**
4
* @task format Formatting Query Clauses
5
*/
6
abstract class PhabricatorQuery extends Phobject {
7
8
9
abstract public function execute();
10
11
12
/* -( Formatting Query Clauses )------------------------------------------- */
13
14
15
/**
16
* @task format
17
*/
18
protected function formatWhereClause(
19
AphrontDatabaseConnection $conn,
20
array $parts) {
21
22
$parts = $this->flattenSubclause($parts);
23
if (!$parts) {
24
return qsprintf($conn, '');
25
}
26
27
return qsprintf($conn, 'WHERE %LA', $parts);
28
}
29
30
31
32
/**
33
* @task format
34
*/
35
protected function formatSelectClause(
36
AphrontDatabaseConnection $conn,
37
array $parts) {
38
39
$parts = $this->flattenSubclause($parts);
40
if (!$parts) {
41
throw new Exception(pht('Can not build empty SELECT clause!'));
42
}
43
44
return qsprintf($conn, 'SELECT %LQ', $parts);
45
}
46
47
48
/**
49
* @task format
50
*/
51
protected function formatJoinClause(
52
AphrontDatabaseConnection $conn,
53
array $parts) {
54
55
$parts = $this->flattenSubclause($parts);
56
if (!$parts) {
57
return qsprintf($conn, '');
58
}
59
60
return qsprintf($conn, '%LJ', $parts);
61
}
62
63
64
/**
65
* @task format
66
*/
67
protected function formatHavingClause(
68
AphrontDatabaseConnection $conn,
69
array $parts) {
70
71
$parts = $this->flattenSubclause($parts);
72
if (!$parts) {
73
return qsprintf($conn, '');
74
}
75
76
return qsprintf($conn, 'HAVING %LA', $parts);
77
}
78
79
80
/**
81
* @task format
82
*/
83
private function flattenSubclause(array $parts) {
84
$result = array();
85
foreach ($parts as $part) {
86
if (is_array($part)) {
87
foreach ($this->flattenSubclause($part) as $subpart) {
88
$result[] = $subpart;
89
}
90
} else if (($part !== null) && strlen($part)) {
91
$result[] = $part;
92
}
93
}
94
return $result;
95
}
96
97
}
98
99