@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 97 lines 1.8 kB view raw
1<?php 2 3/** 4 * @task format Formatting Query Clauses 5 */ 6abstract 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}