Commit 8df55057b768b2b3613a065b2f6e8afe70a03cc4
1 parent
e426a552
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 | 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 | 308 | class FolderBrowseQuery extends BrowseQuery { |
| 256 | 309 | function getDocumentCount() { |
| 257 | 310 | return 0; | ... | ... |