Commit 4c26bee857a5aec95c1c95ddbff1e59cba0ac3c1

Authored by conradverm
1 parent ac17bf26

KTS-1627

"Can move a folder onto itself."
Fixed.

KTS-1687
"Double quote to single quote conversion"
Fixed.

Reviewed by: Kevin Fourie



git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@6254 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 61 additions and 44 deletions
lib/browse/PartialQuery.inc.php
... ... @@ -33,16 +33,16 @@
33 33  
34 34 // FIXME API how to handle indicating which other rows need joining
35 35  
36   -require_once(KT_LIB_DIR . "/util/ktutil.inc");
37   -require_once(KT_LIB_DIR . "/database/dbutil.inc");
38   -require_once(KT_LIB_DIR . "/search/searchutil.inc.php");
  36 +require_once(KT_LIB_DIR . '/util/ktutil.inc');
  37 +require_once(KT_LIB_DIR . '/database/dbutil.inc');
  38 +require_once(KT_LIB_DIR . '/search/searchutil.inc.php');
39 39  
40 40 define('XXX_HARDCODE_SIMPLE_FOLDER_SEARCH', true);
41 41  
42 42 // Abstract base class.
43 43 class PartialQuery {
44   - var $sPermissionName = "ktcore.permissions.read";
45   - var $sFolderPermissionName = "ktcore.permissions.folder_details";
  44 + var $sPermissionName = 'ktcore.permissions.read';
  45 + var $sFolderPermissionName = 'ktcore.permissions.folder_details';
46 46  
47 47 // initialise here (pass whatever this needs)
48 48 function PartialQuery() { ; }
... ... @@ -81,6 +81,7 @@ class PartialQuery {
81 81 class BrowseQuery extends PartialQuery{
82 82 // FIXME cache permission lookups, etc.
83 83 var $folder_id = -1;
  84 + var $exclude_folders=array();
84 85  
85 86 function BrowseQuery($iFolderId, $oUser = null, $aOptions = null) {
86 87 $this->folder_id = $iFolderId;
... ... @@ -107,26 +108,26 @@ class BrowseQuery extends PartialQuery{
107 108 if (empty($sWhere)) {
108 109 continue;
109 110 }
110   - if ($sWhere == "()") {
  111 + if ($sWhere == '()') {
111 112 continue;
112 113 }
113 114 $aWhere[] = $sWhere;
114 115 }
115   - $sWhere = "";
  116 + $sWhere = '';
116 117 if ($aWhere) {
117   - $sWhere = "\tWHERE " . join(" AND ", $aWhere);
  118 + $sWhere = "\tWHERE " . join(' AND ', $aWhere);
118 119 }
119 120  
120 121 $sSelect = KTUtil::arrayGet($aOptions, 'select', 'D.id');
121 122  
122   - $sQuery = sprintf("SELECT %s FROM %s AS D
  123 + $sQuery = sprintf('SELECT %s FROM %s AS D
123 124 LEFT JOIN %s AS DM ON D.metadata_version_id = DM.id
124 125 LEFT JOIN %s AS DC ON DM.content_version_id = DC.id
125 126 %s
126   - %s %s",
127   - $sSelect, KTUtil::getTableName("documents"),
128   - KTUtil::getTableName("document_metadata_version"),
129   - KTUtil::getTableName("document_content_version"),
  127 + %s %s',
  128 + $sSelect, KTUtil::getTableName('documents'),
  129 + KTUtil::getTableName('document_metadata_version'),
  130 + KTUtil::getTableName('document_content_version'),
130 131 $this->sDocumentJoinClause, $sPermissionJoin, $sWhere);
131 132 $aParams = array();
132 133 $aParams = kt_array_merge($aParams, $this->aDocumentJoinParams);
... ... @@ -136,7 +137,7 @@ class BrowseQuery extends PartialQuery{
136 137 }
137 138  
138 139 function _getFolderQuery($aOptions = null) {
139   - $res = KTSearchUtil::permissionToSQL($this->oUser, $this->sFolderPermissionName, "F");
  140 + $res = KTSearchUtil::permissionToSQL($this->oUser, $this->sFolderPermissionName, 'F');
140 141 if (PEAR::isError($res)) {
141 142 return $res;
142 143 }
... ... @@ -148,19 +149,34 @@ class BrowseQuery extends PartialQuery{
148 149 if (empty($sWhere)) {
149 150 continue;
150 151 }
151   - if ($sWhere == "()") {
  152 + if ($sWhere == '()') {
152 153 continue;
153 154 }
154 155 $aWhere[] = $sWhere;
155 156 }
156   - $sWhere = "";
  157 + $sWhere = '';
157 158 if ($aWhere) {
158   - $sWhere = "\tWHERE " . join(" AND ", $aWhere);
  159 + $sWhere = "\tWHERE " . join(' AND ', $aWhere);
159 160 }
160 161  
  162 + if (count($this->exclude_folders) > 0)
  163 + {
  164 + if (strpos($sWhere,'WHERE') == 0)
  165 + {
  166 + $sWhere .= ' WHERE ';
  167 + }
  168 + else
  169 + $sWhere .= ' AND ';
  170 +
  171 + $sWhere .= 'F.id NOT IN (' . implode(',',$this->exclude_folders) . ')';
  172 + // print $sWhere;
  173 + }
  174 +
  175 +
  176 +
161 177 $sSelect = KTUtil::arrayGet($aOptions, 'select', 'F.id');
162 178  
163   - $sQuery = "SELECT $sSelect FROM " . KTUtil::getTableName("folders") . " AS F $sPermissionJoin $sWhere ";
  179 + $sQuery = "SELECT $sSelect FROM " . KTUtil::getTableName('folders') . " AS F $sPermissionJoin $sWhere ";
164 180 $aParams = array();
165 181 $aParams = kt_array_merge($aParams, $aPermissionParams);
166 182 $aParams[] = $this->folder_id;
... ... @@ -173,6 +189,7 @@ class BrowseQuery extends PartialQuery{
173 189 );
174 190 $aQuery = $this->_getFolderQuery($aOptions);
175 191 if (PEAR::isError($aQuery)) { return 0; }
  192 +
176 193 $iRet = DBUtil::getOneResultKey($aQuery, 'cnt');
177 194 return $iRet;
178 195 }
... ... @@ -191,9 +208,9 @@ class BrowseQuery extends PartialQuery{
191 208 $res = $this->_getFolderQuery();
192 209 if (PEAR::isError($res)) { return array(); }
193 210 list($sQuery, $aParams) = $res;
194   - $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " ";
  211 + $sQuery .= ' ORDER BY ' . $sSortColumn . ' ' . $sSortOrder . ' ';
195 212  
196   - $sQuery .= " LIMIT ?, ?";
  213 + $sQuery .= ' LIMIT ?, ?';
197 214 $aParams[] = $iBatchStart;
198 215 $aParams[] = $iBatchSize;
199 216  
... ... @@ -210,9 +227,9 @@ class BrowseQuery extends PartialQuery{
210 227 $res = $this->_getDocumentQuery();
211 228 if (PEAR::isError($res)) { return array(); } // no permissions
212 229 list($sQuery, $aParams) = $res;
213   - $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " ";
  230 + $sQuery .= ' ORDER BY ' . $sSortColumn . ' ' . $sSortOrder . ' ';
214 231  
215   - $sQuery .= " LIMIT ?, ?";
  232 + $sQuery .= ' LIMIT ?, ?';
216 233 $aParams[] = $iBatchStart;
217 234 $aParams[] = $iBatchSize;
218 235  
... ... @@ -233,9 +250,9 @@ class TestQuery extends PartialQuery{
233 250 var $testfolders;
234 251  
235 252 function TestQuery() {
236   - $this->testdocs = array(array("id" => 2), array("id" => 3),
  253 + $this->testdocs = array(array('id' => 2), array('id' => 3),
237 254 );
238   - $this->testfolders = array(array("id" => 3),);
  255 + $this->testfolders = array(array('id' => 3),);
239 256 }
240 257  
241 258 function getFolderCount() { count($this->testfolders); }
... ... @@ -259,7 +276,7 @@ class SimpleSearchQuery extends PartialQuery {
259 276  
260 277 function _getFolderQuery($aOptions = null) {
261 278 $oUser = User::get($_SESSION['userID']);
262   - $res = KTSearchUtil::permissionToSQL($oUser, $this->sFolderPermissionName, "F");
  279 + $res = KTSearchUtil::permissionToSQL($oUser, $this->sFolderPermissionName, 'F');
263 280 if (PEAR::isError($res)) {
264 281 return $res;
265 282 }
... ... @@ -271,20 +288,20 @@ class SimpleSearchQuery extends PartialQuery {
271 288 if (empty($sWhere)) {
272 289 continue;
273 290 }
274   - if ($sWhere == "()") {
  291 + if ($sWhere == '()') {
275 292 continue;
276 293 }
277 294 $aWhere[] = $sWhere;
278 295 }
279   - $sWhere = "";
  296 + $sWhere = '';
280 297 if ($aWhere) {
281   - $sWhere = "\tWHERE " . join(" AND ", $aWhere);
  298 + $sWhere = "\tWHERE " . join(' AND ', $aWhere);
282 299 }
283 300  
284 301 $sSelect = KTUtil::arrayGet($aOptions, 'select', 'F.id');
285 302  
286   - $sQuery = "SELECT $sSelect FROM " . KTUtil::getTableName("folders") . " AS F
287   - LEFT JOIN " . KTUtil::getTableName("folder_searchable_text") . " AS FST ON (F.id = FST.folder_id)
  303 + $sQuery = "SELECT $sSelect FROM " . KTUtil::getTableName('folders') . ' AS F
  304 + LEFT JOIN ' . KTUtil::getTableName('folder_searchable_text') . " AS FST ON (F.id = FST.folder_id)
288 305 $sPermissionJoin $sWhere ";
289 306 $aParams = array($this->searchable_text);
290 307 $aParams = kt_array_merge($aPermissionParams, $aParams);
... ... @@ -310,9 +327,9 @@ class SimpleSearchQuery extends PartialQuery {
310 327 $res = $this->_getFolderQuery();
311 328 if (PEAR::isError($res)) { return array(); }
312 329 list($sQuery, $aParams) = $res;
313   - $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " ";
  330 + $sQuery .= ' ORDER BY ' . $sSortColumn . ' ' . $sSortOrder . ' ';
314 331  
315   - $sQuery .= " LIMIT ?, ?";
  332 + $sQuery .= ' LIMIT ?, ?';
316 333 $aParams[] = $iBatchStart;
317 334 $aParams[] = $iBatchSize;
318 335  
... ... @@ -364,8 +381,8 @@ class SimpleSearchQuery extends PartialQuery {
364 381 $res = $this->getQuery($aOptions);
365 382 if (PEAR::isError($res)) { return array(); }
366 383 list($sQuery, $aParams) = $res;
367   - $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " ";
368   - $sQuery .= " LIMIT ?, ?";
  384 + $sQuery .= ' ORDER BY ' . $sSortColumn . ' ' . $sSortOrder . ' ';
  385 + $sQuery .= ' LIMIT ?, ?';
369 386  
370 387 $aParams[] = $iBatchStart;
371 388 $aParams[] = $iBatchSize;
... ... @@ -481,8 +498,8 @@ class BooleanSearchQuery extends PartialQuery {
481 498 $res = $this->getQuery($aOptions);
482 499 if (PEAR::isError($res)) { return array(); }
483 500 list($sQuery, $aParams) = $res;
484   - $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " ";
485   - $sQuery .= " LIMIT ?, ?";
  501 + $sQuery .= ' ORDER BY ' . $sSortColumn . ' ' . $sSortOrder . ' ';
  502 + $sQuery .= ' LIMIT ?, ?';
486 503  
487 504 $aParams[] = $iBatchStart;
488 505 $aParams[] = $iBatchSize;
... ... @@ -518,25 +535,25 @@ class ArchivedBrowseQuery extends BrowseQuery {
518 535 if (empty($sWhere)) {
519 536 continue;
520 537 }
521   - if ($sWhere == "()") {
  538 + if ($sWhere == '()') {
522 539 continue;
523 540 }
524 541 $aWhere[] = $sWhere;
525 542 }
526   - $sWhere = "";
  543 + $sWhere = '';
527 544 if ($aWhere) {
528   - $sWhere = "\tWHERE " . join(" AND ", $aWhere);
  545 + $sWhere = "\tWHERE " . join(' AND ', $aWhere);
529 546 }
530 547  
531 548 $sSelect = KTUtil::arrayGet($aOptions, 'select', 'D.id');
532 549  
533   - $sQuery = sprintf("SELECT %s FROM %s AS D
  550 + $sQuery = sprintf('SELECT %s FROM %s AS D
534 551 LEFT JOIN %s AS DM ON D.metadata_version_id = DM.id
535 552 LEFT JOIN %s AS DC ON DM.content_version_id = DC.id
536   - %s %s",
537   - $sSelect, KTUtil::getTableName("documents"),
538   - KTUtil::getTableName("document_metadata_version"),
539   - KTUtil::getTableName("document_content_version"),
  553 + %s %s',
  554 + $sSelect, KTUtil::getTableName('documents'),
  555 + KTUtil::getTableName('document_metadata_version'),
  556 + KTUtil::getTableName('document_content_version'),
540 557 $sPermissionJoin, $sWhere);
541 558 $aParams = array();
542 559 $aParams = kt_array_merge($aParams, $aPermissionParams);
... ...