Commit 8df55057b768b2b3613a065b2f6e8afe70a03cc4

Authored by Neil Blakey-Milner
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;
... ...