Commit 607a06c4465a2a3b4bb4d20ea306937ee4f0c303
1 parent
e2adcb3e
Allow criteria to render their own search widgets.
Make it easy to get all the base metadata and all the generic document fields. git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3083 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
89 additions
and
6 deletions
lib/browse/Criteria.inc
| ... | ... | @@ -2,6 +2,7 @@ |
| 2 | 2 | require_once("$default->fileSystemRoot/lib/security/Permission.inc"); |
| 3 | 3 | require_once("$default->fileSystemRoot/lib/users/User.inc"); |
| 4 | 4 | require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); |
| 5 | +require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentType.inc"); | |
| 5 | 6 | require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); |
| 6 | 7 | /** |
| 7 | 8 | * $Id$ |
| ... | ... | @@ -132,6 +133,14 @@ class BrowseCriterion { |
| 132 | 133 | function setOptions($aOptions) { |
| 133 | 134 | $this->aOptions = $aOptions; |
| 134 | 135 | } |
| 136 | + | |
| 137 | + function searchDisplay($aRequest) { | |
| 138 | + return "<tr><td>" . $this->headerDisplay() . ": </td><td>" . $this->searchWidget($aRequest) . "</td></tr>\n"; | |
| 139 | + } | |
| 140 | + | |
| 141 | + function searchWidget ($aRequest) { | |
| 142 | + return "<input type=\"text\" size=\"50\" name=\"bmd$k\" />"; | |
| 143 | + } | |
| 135 | 144 | } |
| 136 | 145 | |
| 137 | 146 | class NameCriterion extends BrowseCriterion { |
| ... | ... | @@ -205,6 +214,16 @@ class CreatorCriterion extends BrowseCriterion { |
| 205 | 214 | function folderDisplay($oFolder) { |
| 206 | 215 | return $this->documentDisplay($oFolder); |
| 207 | 216 | } |
| 217 | + function searchWidget ($aRequest) { | |
| 218 | + $sRet = "<select size=\"1\" name=\"bmd$k\">\n"; | |
| 219 | + $aUsers = User::getList(); | |
| 220 | + $sRet .= "<option value=\"-1\">None</option>\n"; | |
| 221 | + foreach ($aUsers as $oUser) { | |
| 222 | + $sRet .= "<option value=\"" . $oUser->getID() . "\">" . $oUser->getName() . "</option>\n"; | |
| 223 | + } | |
| 224 | + $sRet .= "</select>\n"; | |
| 225 | + return $sRet; | |
| 226 | + } | |
| 208 | 227 | } |
| 209 | 228 | |
| 210 | 229 | class DateCreatedCriterion extends BrowseCriterion { |
| ... | ... | @@ -237,6 +256,16 @@ class DocumentTypeCriterion extends BrowseCriterion { |
| 237 | 256 | } |
| 238 | 257 | return " "; |
| 239 | 258 | } |
| 259 | + function searchWidget ($aRequest) { | |
| 260 | + $sRet = "<select size=\"1\" name=\"bmd$k\">\n"; | |
| 261 | + $aUsers = DocumentType::getList(); | |
| 262 | + $sRet .= "<option value=\"-1\">None</option>\n"; | |
| 263 | + foreach ($aUsers as $oUser) { | |
| 264 | + $sRet .= "<option value=\"" . $oUser->getID() . "\">" . $oUser->getName() . "</option>\n"; | |
| 265 | + } | |
| 266 | + $sRet .= "</select>\n"; | |
| 267 | + return $sRet; | |
| 268 | + } | |
| 240 | 269 | } |
| 241 | 270 | |
| 242 | 271 | class GenericMetadataCriterion extends BrowseCriterion { |
| ... | ... | @@ -277,7 +306,7 @@ class GenericMetadataCriterion extends BrowseCriterion { |
| 277 | 306 | } |
| 278 | 307 | |
| 279 | 308 | class Criteria { |
| 280 | - function &getCriterionByNumber($iID) { | |
| 309 | + function &_getBaseCriterionByNumber($iID) { | |
| 281 | 310 | global $default; |
| 282 | 311 | switch ($iID) { |
| 283 | 312 | case -1: |
| ... | ... | @@ -298,16 +327,70 @@ class Criteria { |
| 298 | 327 | case -6: |
| 299 | 328 | $oCriterion =& new IDCriterion(_("ID"), 'id', 'id'); |
| 300 | 329 | break; |
| 301 | - default: | |
| 302 | - $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($iID)); /*ok*/ | |
| 303 | - $sName = DBUtil::getOneResultKey($aQuery, 'name'); | |
| 304 | - $oCriterion =& new GenericMetadataCriterion($sName, 'id', 'id', $iID); | |
| 305 | - break; | |
| 306 | 330 | } |
| 307 | 331 | return $oCriterion; |
| 308 | 332 | } |
| 309 | 333 | |
| 310 | 334 | function initCriteria () { |
| 335 | + global $aBaseCriteria; | |
| 336 | + if (isset($aBaseCriteria)) { | |
| 337 | + return; | |
| 338 | + } | |
| 339 | + $aBaseCriteria = array(); | |
| 340 | + $aIDs = range(-1, -6); | |
| 341 | + foreach ($aIDs as $iID) { | |
| 342 | + $oCriterion =& Criteria::_getBaseCriterionByNumber($iID); | |
| 343 | + $aBaseCriteria[$iID] =& $oCriterion; | |
| 344 | + } | |
| 345 | + } | |
| 346 | + | |
| 347 | + function &getBaseCriteria () { | |
| 348 | + global $aBaseCriteria; | |
| 349 | + Criteria::initCriteria(); | |
| 350 | + return $aBaseCriteria; | |
| 351 | + } | |
| 352 | + | |
| 353 | + function &getGenericCriteria () { | |
| 354 | + global $aGenericCriteria; | |
| 355 | + global $default; | |
| 356 | + $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/ | |
| 357 | + $aIDs = DBUtil::getResultArrayKey($aQuery, 'id'); | |
| 358 | + foreach ($aIDs as $iID) { | |
| 359 | + $oCriterion =& Criteria::getCriterionByNumber($iID); | |
| 360 | + $aGenericCriteria[$iID] =& $oCriterion; | |
| 361 | + } | |
| 362 | + return $aGenericCriteria; | |
| 363 | + } | |
| 364 | + | |
| 365 | + function &getAllCriteria () { | |
| 366 | + global $aAllCriteria; | |
| 367 | + global $aBaseCriteria; | |
| 368 | + global $default; | |
| 369 | + Criteria::initCriteria(); | |
| 370 | + if (isset($aAllCriteria)) { | |
| 371 | + return $aAllCriteria; | |
| 372 | + } | |
| 373 | + $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/ | |
| 374 | + $aIDs = DBUtil::getResultArrayKey($aQuery, 'id'); | |
| 375 | + $aAllCriteriaIDs = array_merge(array_keys($aBaseCriteria), $aIDs); | |
| 376 | + foreach ($aAllCriteriaIDs as $iID) { | |
| 377 | + $oCriterion =& Criteria::getCriterionByNumber($iID); | |
| 378 | + $aAllCriteria[$iID] =& $oCriterion; | |
| 379 | + } | |
| 380 | + return $aAllCriteria; | |
| 381 | + } | |
| 382 | + | |
| 383 | + function &getCriterionByNumber($iID) { | |
| 384 | + global $aBaseCriteria; | |
| 385 | + global $default; | |
| 386 | + Criteria::initCriteria(); | |
| 387 | + if (array_key_exists($iID, $aBaseCriteria)) { | |
| 388 | + return $aBaseCriteria[$iID]; | |
| 389 | + } else { | |
| 390 | + $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($iID)); /*ok*/ | |
| 391 | + $sName = DBUtil::getOneResultKey($aQuery, 'name'); | |
| 392 | + return new GenericMetadataCriterion($sName, 'id', 'id', $iID); | |
| 393 | + } | |
| 311 | 394 | } |
| 312 | 395 | } |
| 313 | 396 | ... | ... |