folder_id = $iFolderId; } function getFolderCount() { // FIXME add permission checks here $sQuery = "SELECT count(id) AS c FROM " . KTUtil::getTableName("folders") . " WHERE parent_id = ? "; $aParams = array($this->folder_id); return DBUtil::getOneResultKey(array($sQuery, $aParams), 'c'); } function getDocumentCount() { // FIXME add permission checks here $sQuery = "SELECT count(id) AS c FROM " . KTUtil::getTableName("documents") . " AS D WHERE D.folder_id = ? AND D.status_id = 1 "; $aParams = array($this->folder_id); return DBUtil::getOneResultKey(array($sQuery, $aParams), 'c'); // FIXME is this right? } function getFolders($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null) { // FIXME add permission checks here $aParams = array(); $aJoinParams = array($aJoinParams); $sQuery = "SELECT id FROM " . KTUtil::getTableName("folders") . " AS F WHERE parent_id = ? "; $aParams[] = $this->folder_id; if ($sJoinClause !== null) { $sQuery .= $sJoinClause; foreach ($aJoinParams as $param) { $aParams[] = $param; } // FIXME use merge... } $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " "; $sQuery .= " LIMIT ?, ?"; $aParams[] = $iBatchStart; $aParams[] = $iBatchSize; $q = array($sQuery, $aParams); $res = DBUtil::getResultArray($q); return $res; } function getDocuments($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null) { // FIXME add permission checks here $aParams = array(); // main parameter array. $aJoinParams = array($aJoinParams); $sQuery = "SELECT id FROM " . KTUtil::getTableName("documents") . " AS D WHERE D.folder_id = ? AND D.status_id = 1 "; $aParams = array($this->folder_id); if ($sJoinClause !== null) { $sQuery .= $sJoinClause; foreach ($aJoinParams as $param) { $aParams[] = $param; } // FIXME use merge... } $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " "; $sQuery .= " LIMIT ?, ?"; $aParams[] = $iBatchStart; $aParams[] = $iBatchSize; $q = array($sQuery, $aParams); $res = DBUtil::getResultArray($q); return $res; } } // testing class - puts docs/folders into testdocs, testfolders. class TestQuery extends PartialQuery{ var $testdocs; var $testfolders; function TestQuery() { $this->testdocs = array(array("id" => 2), array("id" => 3), ); $this->testfolders = array(array("id" => 3),); } function getFolderCount() { count($this->testfolders); } function getDocumentCount() { count($this->testdocs); } // with batching. function getFolders($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder) { return array_slice($this->testfolders, $iBatchStart, $iBatchSize); } function getDocuments($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder) { return array_slice($this->testdocs, $iBatchStart, $iBatchSize); } } class SimpleSearchQuery extends PartialQuery { // FIXME cache permission lookups, etc. var $searchable_text; function SimpleSearchQuery($sSearchableText) { $this->searchable_text = $sSearchableText; } function getFolderCount() { // never any folders, given the current fulltext environ. return 0; } function getFolders($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null) { return array(); } function getQuery($aOptions = null) { $aSubgroup = array( 'values' => array( array('type' => '-12', 'data' => array('bmd_12' => $this->searchable_text)), ), 'join' => 'AND', ); $aCriteriaSet = array( 'subgroup' => array($aSubgroup), 'join' => 'AND', ); $oUser = User::get($_SESSION['userID']); return KTSearchUtil::criteriaToQuery($aCriteriaSet, $oUser, 'ktcore.permissions.read', $aOptions); } function getDocumentCount() { $aOptions = array( 'select' => 'count(D.id) AS cnt', ); $aQuery = $this->getQuery($aOptions); $iRet = DBUtil::getOneResultKey($aQuery, 'cnt'); return $iRet; } // search needs some special stuff... this should probably get folded into a more complex criteria-driven thing // later. // // we also leak like ---- here, since getting the score is ... fiddly. and expensive. function getDocuments($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null) { $aOptions = array( 'select' => 'D.id AS id', ); list($sQuery, $aParams) = $this->getQuery($aOptions); $sQuery .= " ORDER BY " . $sSortColumn . " " . $sSortOrder . " "; $sQuery .= " LIMIT ?, ?"; $aParams[] = $iBatchStart; $aParams[] = $iBatchSize; $q = array($sQuery, $aParams); $res = DBUtil::getResultArray($q); return $res; } } class FolderBrowseQuery extends BrowseQuery { function getDocumentCount() { return 0; } function getDocuments() { return array(); } } ?>