Commit ed5751d27325832e53ba3d55a22244afdd60f4fa
1 parent
26d2eb4c
Add BooleanSearchQuery, a document collections partial query that
responds to a boolean search or a saved search. git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4253 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
53 additions
and
0 deletions
lib/browse/PartialQuery.inc.php
| @@ -252,6 +252,59 @@ class SimpleSearchQuery extends PartialQuery { | @@ -252,6 +252,59 @@ class SimpleSearchQuery extends PartialQuery { | ||
| 252 | } | 252 | } |
| 253 | } | 253 | } |
| 254 | 254 | ||
| 255 | +class BooleanSearchQuery extends PartialQuery { | ||
| 256 | + // FIXME cache permission lookups, etc. | ||
| 257 | + var $datavars; | ||
| 258 | + | ||
| 259 | + function BooleanSearchQuery($datavars) { $this->datavars = $datavars; } | ||
| 260 | + | ||
| 261 | + function getFolderCount() { | ||
| 262 | + // never any folders, given the current fulltext environ. | ||
| 263 | + return 0; | ||
| 264 | + } | ||
| 265 | + | ||
| 266 | + function getFolders($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null) { | ||
| 267 | + return array(); | ||
| 268 | + } | ||
| 269 | + | ||
| 270 | + function getQuery($aOptions = null) { | ||
| 271 | + $oUser = User::get($_SESSION['userID']); | ||
| 272 | + return KTSearchUtil::criteriaToQuery($this->datavars, $oUser, 'ktcore.permissions.read', $aOptions); | ||
| 273 | + } | ||
| 274 | + | ||
| 275 | + function getDocumentCount() { | ||
| 276 | + $aOptions = array( | ||
| 277 | + 'select' => 'count(D.id) AS cnt', | ||
| 278 | + ); | ||
| 279 | + $aQuery = $this->getQuery($aOptions); | ||
| 280 | + $iRet = DBUtil::getOneResultKey($aQuery, 'cnt'); | ||
| 281 | + return $iRet; | ||
| 282 | + } | ||
| 283 | + | ||
| 284 | + | ||
| 285 | + // search needs some special stuff... this should probably get folded into a more complex criteria-driven thing | ||
| 286 | + // later. | ||
| 287 | + // | ||
| 288 | + // we also leak like ---- here, since getting the score is ... fiddly. and expensive. | ||
| 289 | + function getDocuments($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null) { | ||
| 290 | + $aOptions = array( | ||
| 291 | + 'select' => 'D.id AS id', | ||
| 292 | + ); | ||
| 293 | + list($sQuery, $aParams) = $this->getQuery($aOptions); | ||
| 294 | + | ||
| 295 | + $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " "; | ||
| 296 | + $sQuery .= " LIMIT ?, ?"; | ||
| 297 | + | ||
| 298 | + $aParams[] = $iBatchStart; | ||
| 299 | + $aParams[] = $iBatchSize; | ||
| 300 | + | ||
| 301 | + $q = array($sQuery, $aParams); | ||
| 302 | + $res = DBUtil::getResultArray($q); | ||
| 303 | + | ||
| 304 | + return $res; | ||
| 305 | + } | ||
| 306 | +} | ||
| 307 | + | ||
| 255 | class FolderBrowseQuery extends BrowseQuery { | 308 | class FolderBrowseQuery extends BrowseQuery { |
| 256 | function getDocumentCount() { | 309 | function getDocumentCount() { |
| 257 | return 0; | 310 | return 0; |