Commit 4c26bee857a5aec95c1c95ddbff1e59cba0ac3c1
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); | ... | ... |