From 607a06c4465a2a3b4bb4d20ea306937ee4f0c303 Mon Sep 17 00:00:00 2001 From: nbm Date: Thu, 23 Dec 2004 17:05:35 +0000 Subject: [PATCH] Allow criteria to render their own search widgets. --- lib/browse/Criteria.inc | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 89 insertions(+), 6 deletions(-) diff --git a/lib/browse/Criteria.inc b/lib/browse/Criteria.inc index 6eab795..3c51494 100644 --- a/lib/browse/Criteria.inc +++ b/lib/browse/Criteria.inc @@ -2,6 +2,7 @@ require_once("$default->fileSystemRoot/lib/security/Permission.inc"); require_once("$default->fileSystemRoot/lib/users/User.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); +require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentType.inc"); require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); /** * $Id$ @@ -132,6 +133,14 @@ class BrowseCriterion { function setOptions($aOptions) { $this->aOptions = $aOptions; } + + function searchDisplay($aRequest) { + return "" . $this->headerDisplay() . ": " . $this->searchWidget($aRequest) . "\n"; + } + + function searchWidget ($aRequest) { + return ""; + } } class NameCriterion extends BrowseCriterion { @@ -205,6 +214,16 @@ class CreatorCriterion extends BrowseCriterion { function folderDisplay($oFolder) { return $this->documentDisplay($oFolder); } + function searchWidget ($aRequest) { + $sRet = "\n"; + return $sRet; + } } class DateCreatedCriterion extends BrowseCriterion { @@ -237,6 +256,16 @@ class DocumentTypeCriterion extends BrowseCriterion { } return " "; } + function searchWidget ($aRequest) { + $sRet = "\n"; + return $sRet; + } } class GenericMetadataCriterion extends BrowseCriterion { @@ -277,7 +306,7 @@ class GenericMetadataCriterion extends BrowseCriterion { } class Criteria { - function &getCriterionByNumber($iID) { + function &_getBaseCriterionByNumber($iID) { global $default; switch ($iID) { case -1: @@ -298,16 +327,70 @@ class Criteria { case -6: $oCriterion =& new IDCriterion(_("ID"), 'id', 'id'); break; - default: - $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($iID)); /*ok*/ - $sName = DBUtil::getOneResultKey($aQuery, 'name'); - $oCriterion =& new GenericMetadataCriterion($sName, 'id', 'id', $iID); - break; } return $oCriterion; } function initCriteria () { + global $aBaseCriteria; + if (isset($aBaseCriteria)) { + return; + } + $aBaseCriteria = array(); + $aIDs = range(-1, -6); + foreach ($aIDs as $iID) { + $oCriterion =& Criteria::_getBaseCriterionByNumber($iID); + $aBaseCriteria[$iID] =& $oCriterion; + } + } + + function &getBaseCriteria () { + global $aBaseCriteria; + Criteria::initCriteria(); + return $aBaseCriteria; + } + + function &getGenericCriteria () { + global $aGenericCriteria; + global $default; + $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/ + $aIDs = DBUtil::getResultArrayKey($aQuery, 'id'); + foreach ($aIDs as $iID) { + $oCriterion =& Criteria::getCriterionByNumber($iID); + $aGenericCriteria[$iID] =& $oCriterion; + } + return $aGenericCriteria; + } + + function &getAllCriteria () { + global $aAllCriteria; + global $aBaseCriteria; + global $default; + Criteria::initCriteria(); + if (isset($aAllCriteria)) { + return $aAllCriteria; + } + $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/ + $aIDs = DBUtil::getResultArrayKey($aQuery, 'id'); + $aAllCriteriaIDs = array_merge(array_keys($aBaseCriteria), $aIDs); + foreach ($aAllCriteriaIDs as $iID) { + $oCriterion =& Criteria::getCriterionByNumber($iID); + $aAllCriteria[$iID] =& $oCriterion; + } + return $aAllCriteria; + } + + function &getCriterionByNumber($iID) { + global $aBaseCriteria; + global $default; + Criteria::initCriteria(); + if (array_key_exists($iID, $aBaseCriteria)) { + return $aBaseCriteria[$iID]; + } else { + $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($iID)); /*ok*/ + $sName = DBUtil::getOneResultKey($aQuery, 'name'); + return new GenericMetadataCriterion($sName, 'id', 'id', $iID); + } } } -- libgit2 0.21.4