Commit 53e99e4500b7eb244b9736c7e61e34fa09c51f30
1 parent
21f1a780
Moved criteria into namespace oriented registry
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5797 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
16 changed files
with
463 additions
and
188 deletions
lib/browse/Criteria.inc
| 1 | <?php | 1 | <?php |
| 2 | -require_once(KT_LIB_DIR . '/security/Permission.inc'); | ||
| 3 | -require_once(KT_LIB_DIR . '/users/User.inc'); | ||
| 4 | -require_once(KT_LIB_DIR . '/documentmanagement/Document.inc'); | ||
| 5 | -require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc'); | ||
| 6 | -require_once(KT_LIB_DIR . '/documentmanagement/DocumentType.inc'); | ||
| 7 | -require_once(KT_LIB_DIR . '/documentmanagement/MetaData.inc'); | ||
| 8 | -require_once(KT_LIB_DIR . '/foldermanagement/Folder.inc'); | ||
| 9 | - | ||
| 10 | -require_once(KT_LIB_DIR . '/workflow/workflowstate.inc.php'); | ||
| 11 | -require_once(KT_LIB_DIR . '/workflow/workflow.inc.php'); | ||
| 12 | - | ||
| 13 | /** | 2 | /** |
| 14 | * $Id$ | 3 | * $Id$ |
| 15 | * | 4 | * |
| @@ -40,6 +29,20 @@ require_once(KT_LIB_DIR . '/workflow/workflow.inc.php'); | @@ -40,6 +29,20 @@ require_once(KT_LIB_DIR . '/workflow/workflow.inc.php'); | ||
| 40 | * @package lib.browse | 29 | * @package lib.browse |
| 41 | */ | 30 | */ |
| 42 | 31 | ||
| 32 | +require_once(KT_LIB_DIR . '/security/Permission.inc'); | ||
| 33 | +require_once(KT_LIB_DIR . '/users/User.inc'); | ||
| 34 | +require_once(KT_LIB_DIR . '/documentmanagement/Document.inc'); | ||
| 35 | +require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc'); | ||
| 36 | +require_once(KT_LIB_DIR . '/documentmanagement/DocumentType.inc'); | ||
| 37 | +require_once(KT_LIB_DIR . '/documentmanagement/MetaData.inc'); | ||
| 38 | +require_once(KT_LIB_DIR . '/foldermanagement/Folder.inc'); | ||
| 39 | + | ||
| 40 | +require_once(KT_LIB_DIR . '/workflow/workflowstate.inc.php'); | ||
| 41 | +require_once(KT_LIB_DIR . '/workflow/workflow.inc.php'); | ||
| 42 | + | ||
| 43 | +require_once(KT_LIB_DIR . '/browse/criteriaregistry.php'); | ||
| 44 | + | ||
| 45 | + | ||
| 43 | $RESTRICTING_SEARCH = true; | 46 | $RESTRICTING_SEARCH = true; |
| 44 | 47 | ||
| 45 | class BrowseCriterion { | 48 | class BrowseCriterion { |
| @@ -56,18 +59,21 @@ class BrowseCriterion { | @@ -56,18 +59,21 @@ class BrowseCriterion { | ||
| 56 | var $bContains = false; | 59 | var $bContains = false; |
| 57 | var $bHandleNot = true; | 60 | var $bHandleNot = true; |
| 58 | 61 | ||
| 59 | - function BrowseCriterion ($sDisplay, $sDocumentField, $sSortField, $iID) { | ||
| 60 | - $this->sDisplay =& $sDisplay; | ||
| 61 | - $this->sDocumentField =& $sDocumentField; | ||
| 62 | - $this->sSortField =& $sSortField; | ||
| 63 | - $this->iID = $iID; | 62 | + var $sDocumentField = null; |
| 63 | + var $sSortField = null; | ||
| 64 | + var $sNamespace = null; | ||
| 65 | + | ||
| 66 | + function BrowseCriterion() { | ||
| 67 | + $this->sDisplay = ''; | ||
| 64 | } | 68 | } |
| 65 | 69 | ||
| 70 | + | ||
| 66 | function headerDisplay () { | 71 | function headerDisplay () { |
| 67 | return $this->sDisplay; | 72 | return $this->sDisplay; |
| 68 | } | 73 | } |
| 69 | 74 | ||
| 70 | - // dummy function | 75 | + |
| 76 | + // for final display | ||
| 71 | function documentDisplay ($oDocument) { | 77 | function documentDisplay ($oDocument) { |
| 72 | return $this->sDisplay; | 78 | return $this->sDisplay; |
| 73 | } | 79 | } |
| @@ -157,6 +163,10 @@ class BrowseCriterion { | @@ -157,6 +163,10 @@ class BrowseCriterion { | ||
| 157 | function getID() { | 163 | function getID() { |
| 158 | return $this->iID; | 164 | return $this->iID; |
| 159 | } | 165 | } |
| 166 | + | ||
| 167 | + function getNameSpace() { | ||
| 168 | + return $this->sNamespace; | ||
| 169 | + } | ||
| 160 | 170 | ||
| 161 | function setOptions($aOptions) { | 171 | function setOptions($aOptions) { |
| 162 | $this->aOptions = $aOptions; | 172 | $this->aOptions = $aOptions; |
| @@ -171,7 +181,10 @@ class BrowseCriterion { | @@ -171,7 +181,10 @@ class BrowseCriterion { | ||
| 171 | // !#@&)*( (*&!@# *(&@NOT (*&!@# | 181 | // !#@&)*( (*&!@# *(&@NOT (*&!@# |
| 172 | $k = array_keys($aPreValue); | 182 | $k = array_keys($aPreValue); |
| 173 | $k = $this->getWidgetBase(); | 183 | $k = $this->getWidgetBase(); |
| 174 | - $preval = $aPreValue[$k]; | 184 | + |
| 185 | + if(array_key_exists($k, $aPreValue)) { | ||
| 186 | + $preval = $aPreValue[$k]; | ||
| 187 | + } | ||
| 175 | return $this->getNotWidget($aPreValue) . "<input type=\"text\" size=\"50\" name=\"" . $this->getWidgetBase() . "\" value=\"" . $preval . "\"/>"; | 188 | return $this->getNotWidget($aPreValue) . "<input type=\"text\" size=\"50\" name=\"" . $this->getWidgetBase() . "\" value=\"" . $preval . "\"/>"; |
| 176 | } else { | 189 | } else { |
| 177 | return $this->getNotWidget($aPreValue) . "<input type=\"text\" size=\"50\" name=\"" . $this->getWidgetBase() . "\" />"; | 190 | return $this->getNotWidget($aPreValue) . "<input type=\"text\" size=\"50\" name=\"" . $this->getWidgetBase() . "\" />"; |
| @@ -188,8 +201,10 @@ class BrowseCriterion { | @@ -188,8 +201,10 @@ class BrowseCriterion { | ||
| 188 | if (is_null($aPreValue)) { | 201 | if (is_null($aPreValue)) { |
| 189 | $is_positive = true; | 202 | $is_positive = true; |
| 190 | } else { | 203 | } else { |
| 191 | - $preval = KTUtil::arrayGet($aPreValue, $form_name, "0"); // by default, use "is" not "is not" | ||
| 192 | - $is_positive = ($preval == "0"); // 0 or empty or similar. | 204 | + if(array_key_exists($form_name, $aPreValue)) { |
| 205 | + $preval = KTUtil::arrayGet($aPreValue, $form_name, "0"); // by default, use "is" not "is not" | ||
| 206 | + } | ||
| 207 | + $is_positive = ($preval == "0"); // 0 or empty or similar. | ||
| 193 | } | 208 | } |
| 194 | if ($is_positive) { | 209 | if ($is_positive) { |
| 195 | $pos_select = ' selected="true"'; | 210 | $pos_select = ' selected="true"'; |
| @@ -208,7 +223,7 @@ class BrowseCriterion { | @@ -208,7 +223,7 @@ class BrowseCriterion { | ||
| 208 | } | 223 | } |
| 209 | 224 | ||
| 210 | function getWidgetBase () { | 225 | function getWidgetBase () { |
| 211 | - return "bmd" . strtr($this->getID(), '-', '_'); | 226 | + return strtr($this->getNamespace(), '-', '_'); |
| 212 | } | 227 | } |
| 213 | 228 | ||
| 214 | function getSearchTable() { | 229 | function getSearchTable() { |
| @@ -242,12 +257,21 @@ class BrowseCriterion { | @@ -242,12 +257,21 @@ class BrowseCriterion { | ||
| 242 | } | 257 | } |
| 243 | } | 258 | } |
| 244 | 259 | ||
| 260 | + | ||
| 245 | class NameCriterion extends BrowseCriterion { | 261 | class NameCriterion extends BrowseCriterion { |
| 246 | var $bFolderCriterion = true; | 262 | var $bFolderCriterion = true; |
| 247 | var $bString = true; | 263 | var $bString = true; |
| 248 | var $sSearchTable = "DC"; | 264 | var $sSearchTable = "DC"; |
| 249 | var $bContains = true; | 265 | var $bContains = true; |
| 250 | 266 | ||
| 267 | + var $sDocumentField = 'filename'; | ||
| 268 | + var $sSortField = 'filename'; | ||
| 269 | + var $sNamespace = 'ktcore.criteria.name'; | ||
| 270 | + | ||
| 271 | + function NameCriterion() { | ||
| 272 | + $this->sDisplay = _kt('Name'); | ||
| 273 | + } | ||
| 274 | + | ||
| 251 | function documentDisplay ($oDocument) { | 275 | function documentDisplay ($oDocument) { |
| 252 | $aOptions = $this->aOptions; | 276 | $aOptions = $this->aOptions; |
| 253 | if (array_key_exists('displayFullPath', $aOptions)) { | 277 | if (array_key_exists('displayFullPath', $aOptions)) { |
| @@ -279,6 +303,13 @@ class NameCriterion extends BrowseCriterion { | @@ -279,6 +303,13 @@ class NameCriterion extends BrowseCriterion { | ||
| 279 | 303 | ||
| 280 | class IDCriterion extends BrowseCriterion { | 304 | class IDCriterion extends BrowseCriterion { |
| 281 | var $bFolderCriterion = true; | 305 | var $bFolderCriterion = true; |
| 306 | + var $sDocumentField = 'id'; | ||
| 307 | + var $sSortField = 'id'; | ||
| 308 | + var $sNamespace = 'ktcore.criteria.id'; | ||
| 309 | + | ||
| 310 | + function IDCriterion() { | ||
| 311 | + $this->sDisplay = _kt('Document ID'); | ||
| 312 | + } | ||
| 282 | function documentDisplay ($oDocument) { | 313 | function documentDisplay ($oDocument) { |
| 283 | return $oDocument->getID(); | 314 | return $oDocument->getID(); |
| 284 | } | 315 | } |
| @@ -292,6 +323,13 @@ class TitleCriterion extends BrowseCriterion { | @@ -292,6 +323,13 @@ class TitleCriterion extends BrowseCriterion { | ||
| 292 | var $bString = true; | 323 | var $bString = true; |
| 293 | var $sSearchTable = "DM"; | 324 | var $sSearchTable = "DM"; |
| 294 | var $bContains = true; | 325 | var $bContains = true; |
| 326 | + var $sDocumentField = 'name'; | ||
| 327 | + var $sSortField = 'name'; | ||
| 328 | + var $sNamespace = 'ktcore.criteria.title'; | ||
| 329 | + | ||
| 330 | + function TitleCriterion() { | ||
| 331 | + $this->sDisplay = _kt('Title'); | ||
| 332 | + } | ||
| 295 | 333 | ||
| 296 | function documentDisplay ($oDocument) { | 334 | function documentDisplay ($oDocument) { |
| 297 | return $oDocument->getName(); | 335 | return $oDocument->getName(); |
| @@ -312,6 +350,13 @@ class CreatorCriterion extends BrowseCriterion { | @@ -312,6 +350,13 @@ class CreatorCriterion extends BrowseCriterion { | ||
| 312 | "table" => "users", | 350 | "table" => "users", |
| 313 | "field" => "name", | 351 | "field" => "name", |
| 314 | ); | 352 | ); |
| 353 | + var $sDocumentField = 'creator_id'; | ||
| 354 | + var $sSortField = 'creator_id'; | ||
| 355 | + var $sNamespace = 'ktcore.criteria.creator'; | ||
| 356 | + | ||
| 357 | + function CreatorCriterion() { | ||
| 358 | + $this->sDisplay = _kt('Creator'); | ||
| 359 | + } | ||
| 315 | 360 | ||
| 316 | function documentDisplay ($oDocument) { | 361 | function documentDisplay ($oDocument) { |
| 317 | $oCreator = User::get($oDocument->getCreatorID()); | 362 | $oCreator = User::get($oDocument->getCreatorID()); |
| @@ -346,6 +391,14 @@ class CreatorCriterion extends BrowseCriterion { | @@ -346,6 +391,14 @@ class CreatorCriterion extends BrowseCriterion { | ||
| 346 | 391 | ||
| 347 | class DateCreatedCriterion extends BrowseCriterion { | 392 | class DateCreatedCriterion extends BrowseCriterion { |
| 348 | var $sSearchTable = "D"; | 393 | var $sSearchTable = "D"; |
| 394 | + var $sDocumentField = 'created'; | ||
| 395 | + var $sSortField = 'created'; | ||
| 396 | + var $sNamespace = 'ktcore.criteria.datecreated'; | ||
| 397 | + | ||
| 398 | + function DateCreatedCriterion() { | ||
| 399 | + $this->sDisplay = _kt('Date Created'); | ||
| 400 | + } | ||
| 401 | + | ||
| 349 | function documentDisplay ($oDocument) { | 402 | function documentDisplay ($oDocument) { |
| 350 | return $oDocument->getCreatedDateTime(); | 403 | return $oDocument->getCreatedDateTime(); |
| 351 | } | 404 | } |
| @@ -419,6 +472,13 @@ class DocumentTypeCriterion extends BrowseCriterion { | @@ -419,6 +472,13 @@ class DocumentTypeCriterion extends BrowseCriterion { | ||
| 419 | "table" => "document_types_lookup", | 472 | "table" => "document_types_lookup", |
| 420 | "field" => "name" | 473 | "field" => "name" |
| 421 | ); | 474 | ); |
| 475 | + var $sDocumentField = 'document_type_id'; | ||
| 476 | + var $sSortField = 'document_type_id'; | ||
| 477 | + var $sNamespace = 'ktcore.criteria.documenttype'; | ||
| 478 | + | ||
| 479 | + function DocumentTypeCriterion() { | ||
| 480 | + $this->sDisplay = _kt('Document Type'); | ||
| 481 | + } | ||
| 422 | 482 | ||
| 423 | function documentDisplay ($oDocument) { | 483 | function documentDisplay ($oDocument) { |
| 424 | $oDocumentType = DocumentType::get($oDocument->getDocumentTypeID()); | 484 | $oDocumentType = DocumentType::get($oDocument->getDocumentTypeID()); |
| @@ -456,15 +516,25 @@ class GenericMetadataCriterion extends BrowseCriterion { | @@ -456,15 +516,25 @@ class GenericMetadataCriterion extends BrowseCriterion { | ||
| 456 | "joinColumn" => "document_id", | 516 | "joinColumn" => "document_id", |
| 457 | ); | 517 | ); |
| 458 | var $bString = true; | 518 | var $bString = true; |
| 519 | + var $sDocumentField = null; | ||
| 520 | + var $sSortField = null; | ||
| 521 | + var $sNamespace = 'ktcore.criteria.generic'; | ||
| 522 | + | ||
| 523 | + function initialize($sDisplay, $sDocumentField, $sSortField, $iID, $sNamespace) { | ||
| 524 | + $this->sDisplay = $sDisplay; | ||
| 525 | + $this->sDocumentField = $sDocumentField; | ||
| 526 | + $this->sSortField = $sSortField; | ||
| 459 | 527 | ||
| 460 | - function GenericMetadataCriterion ($sDisplay, $sDocumentField, $sSortField, $iID) { | ||
| 461 | $this->iID = $iID; | 528 | $this->iID = $iID; |
| 462 | - $this->BrowseCriterion($sDisplay, $sDocumentField, $sSortField, $iID); | ||
| 463 | $this->aLookup['whereClause'] = 'document_field_id = ' . $iID; | 529 | $this->aLookup['whereClause'] = 'document_field_id = ' . $iID; |
| 464 | - $this->oField =& DocumentField::get($iID); | 530 | + $this->oField = DocumentField::get($iID); |
| 531 | + $this->sNamespace = $sNamespace; | ||
| 465 | $this->sSearchTable = "DFL" . $iID; | 532 | $this->sSearchTable = "DFL" . $iID; |
| 466 | } | 533 | } |
| 467 | 534 | ||
| 535 | + function getID() { | ||
| 536 | + return $this->iID; | ||
| 537 | + } | ||
| 468 | function documentDisplay ($oDocument) { | 538 | function documentDisplay ($oDocument) { |
| 469 | global $default; | 539 | global $default; |
| 470 | $sQuery = "SELECT DFL.value as value " . | 540 | $sQuery = "SELECT DFL.value as value " . |
| @@ -499,6 +569,7 @@ class GenericMetadataCriterion extends BrowseCriterion { | @@ -499,6 +569,7 @@ class GenericMetadataCriterion extends BrowseCriterion { | ||
| 499 | $k = $this->getWidgetBase(); | 569 | $k = $this->getWidgetBase(); |
| 500 | $preval = $aPreValue[$k]; | 570 | $preval = $aPreValue[$k]; |
| 501 | } | 571 | } |
| 572 | + | ||
| 502 | // If there's no lookup, just use the standard text input | 573 | // If there's no lookup, just use the standard text input |
| 503 | if ($this->oField->getHasLookup() == false) { | 574 | if ($this->oField->getHasLookup() == false) { |
| 504 | $this->bContains = true; // contains | 575 | $this->bContains = true; // contains |
| @@ -542,24 +613,38 @@ class GenericMetadataCriterion extends BrowseCriterion { | @@ -542,24 +613,38 @@ class GenericMetadataCriterion extends BrowseCriterion { | ||
| 542 | } | 613 | } |
| 543 | 614 | ||
| 544 | class DateModifiedCriterion extends DateCreatedCriterion { | 615 | class DateModifiedCriterion extends DateCreatedCriterion { |
| 545 | - function documentDisplay ($oDocument) { | ||
| 546 | - return $oDocument->getLastModifiedDate(); | 616 | + var $sDocumentField = 'modified'; |
| 617 | + var $sSortField = 'modified'; | ||
| 618 | + var $sNamespace = 'ktcore.criteria.datemodified'; | ||
| 619 | + | ||
| 620 | + function DateModifiedCriterion() { | ||
| 621 | + $this->sDisplay = _kt('Date Modified'); | ||
| 547 | } | 622 | } |
| 623 | + | ||
| 548 | function getName() { | 624 | function getName() { |
| 549 | - return "datemodified"; | 625 | + return 'datemodified'; |
| 626 | + } | ||
| 627 | + | ||
| 628 | + function documentDisplay ($oDocument) { | ||
| 629 | + return $oDocument->getLastModifiedDate(); | ||
| 550 | } | 630 | } |
| 551 | } | 631 | } |
| 552 | 632 | ||
| 553 | class SizeCriterion extends BrowseCriterion { | 633 | class SizeCriterion extends BrowseCriterion { |
| 554 | var $sSearchTable = "DC"; | 634 | var $sSearchTable = "DC"; |
| 555 | var $bVisible = false; | 635 | var $bVisible = false; |
| 636 | + var $sDocumentField = 'size'; | ||
| 637 | + var $sSortField = 'size'; | ||
| 638 | + var $sNamespace = 'ktcore.criteria.size'; | ||
| 639 | + | ||
| 640 | + function SizeCriterion() { | ||
| 641 | + $this->sDisplay = _kt('File Size'); | ||
| 642 | + } | ||
| 556 | 643 | ||
| 557 | function documentDisplay ($oDocument) { | 644 | function documentDisplay ($oDocument) { |
| 558 | return $oDocument->getFileSize(); | 645 | return $oDocument->getFileSize(); |
| 559 | } | 646 | } |
| 560 | - function getName() { | ||
| 561 | - return "size"; | ||
| 562 | - } | 647 | + |
| 563 | function searchDisplay($aRequest) { | 648 | function searchDisplay($aRequest) { |
| 564 | return ""; | 649 | return ""; |
| 565 | } | 650 | } |
| @@ -570,7 +655,13 @@ class ContentCriterion extends BrowseCriterion { | @@ -570,7 +655,13 @@ class ContentCriterion extends BrowseCriterion { | ||
| 570 | var $bHandleNot = false; | 655 | var $bHandleNot = false; |
| 571 | var $bString = true; | 656 | var $bString = true; |
| 572 | var $sSearchTable = "DT"; | 657 | var $sSearchTable = "DT"; |
| 573 | - var $sDocumentField = "document_text"; | 658 | + var $sDocumentField = 'document_text'; |
| 659 | + var $sSortField = 'content'; | ||
| 660 | + var $sNamespace = 'ktcore.criteria.content'; | ||
| 661 | + | ||
| 662 | + function ContentCriterion() { | ||
| 663 | + $this->sDisplay = _kt('Document Text'); | ||
| 664 | + } | ||
| 574 | 665 | ||
| 575 | function documentDisplay ($oDocument) { | 666 | function documentDisplay ($oDocument) { |
| 576 | return "Document Text"; | 667 | return "Document Text"; |
| @@ -635,6 +726,14 @@ class ContentCriterion extends BrowseCriterion { | @@ -635,6 +726,14 @@ class ContentCriterion extends BrowseCriterion { | ||
| 635 | 726 | ||
| 636 | class WorkflowStateCriterion extends BrowseCriterion { | 727 | class WorkflowStateCriterion extends BrowseCriterion { |
| 637 | var $sSearchTable = "DM"; | 728 | var $sSearchTable = "DM"; |
| 729 | + var $sDocumentField = 'state'; | ||
| 730 | + var $sSortField = 'state'; | ||
| 731 | + var $sNamespace = 'ktcore.criteria.workflowstate'; | ||
| 732 | + | ||
| 733 | + function WorkflowStateCriterion() { | ||
| 734 | + $this->sDisplay = _kt('Workflow State'); | ||
| 735 | + } | ||
| 736 | + | ||
| 638 | function documentDisplay ($oDocument) { | 737 | function documentDisplay ($oDocument) { |
| 639 | $oState =& KTWorkflowState::getByDocument($oDocument); | 738 | $oState =& KTWorkflowState::getByDocument($oDocument); |
| 640 | if ($oState) { | 739 | if ($oState) { |
| @@ -689,6 +788,14 @@ class WorkflowStateCriterion extends BrowseCriterion { | @@ -689,6 +788,14 @@ class WorkflowStateCriterion extends BrowseCriterion { | ||
| 689 | class DiscussionTextCriterion extends BrowseCriterion { | 788 | class DiscussionTextCriterion extends BrowseCriterion { |
| 690 | var $bContains = true; | 789 | var $bContains = true; |
| 691 | var $bHandleNot = false; | 790 | var $bHandleNot = false; |
| 791 | + var $sDocumentField = 'discussiontext'; | ||
| 792 | + var $sSortField = 'discussiontext'; | ||
| 793 | + var $sNamespace = 'ktcore.criteria.discussiontext'; | ||
| 794 | + | ||
| 795 | + function DiscussionTextCriterion() { | ||
| 796 | + $this->sDisplay = _kt('Discussion Threads'); | ||
| 797 | + } | ||
| 798 | + | ||
| 692 | 799 | ||
| 693 | function documentDisplay ($oDocument) { | 800 | function documentDisplay ($oDocument) { |
| 694 | return "Discussion Threads"; | 801 | return "Discussion Threads"; |
| @@ -750,6 +857,12 @@ class SearchableTextCriterion extends BrowseCriterion { | @@ -750,6 +857,12 @@ class SearchableTextCriterion extends BrowseCriterion { | ||
| 750 | var $bString = true; | 857 | var $bString = true; |
| 751 | var $sSearchTable = "DST"; | 858 | var $sSearchTable = "DST"; |
| 752 | var $sDocumentField = "document_text"; | 859 | var $sDocumentField = "document_text"; |
| 860 | + var $sSortField = 'searchable_text'; | ||
| 861 | + var $sNamespace = 'ktcore.criteria.searchabletext'; | ||
| 862 | + | ||
| 863 | + function SearchableTextCriterion() { | ||
| 864 | + $this->sDisplay = _kt('Simple Search Text'); | ||
| 865 | + } | ||
| 753 | 866 | ||
| 754 | function documentDisplay ($oDocument) { | 867 | function documentDisplay ($oDocument) { |
| 755 | return "Simple search text"; | 868 | return "Simple search text"; |
| @@ -817,6 +930,13 @@ class SearchableTextCriterion extends BrowseCriterion { | @@ -817,6 +930,13 @@ class SearchableTextCriterion extends BrowseCriterion { | ||
| 817 | class TransactionTextCriterion extends BrowseCriterion { | 930 | class TransactionTextCriterion extends BrowseCriterion { |
| 818 | var $bContains = true; | 931 | var $bContains = true; |
| 819 | var $bHandleNot = false; | 932 | var $bHandleNot = false; |
| 933 | + var $sDocumentField = 'transactiontext'; | ||
| 934 | + var $sSortField = 'transactiontext'; | ||
| 935 | + var $sNamespace = 'ktcore.criteria.transactiontext'; | ||
| 936 | + | ||
| 937 | + function TransactionTextCriterion() { | ||
| 938 | + $this->sDisplay = _kt('Transaction Text'); | ||
| 939 | + } | ||
| 820 | 940 | ||
| 821 | function documentDisplay ($oDocument) { | 941 | function documentDisplay ($oDocument) { |
| 822 | return "Transaction text"; | 942 | return "Transaction text"; |
| @@ -871,121 +991,79 @@ class TransactionTextCriterion extends BrowseCriterion { | @@ -871,121 +991,79 @@ class TransactionTextCriterion extends BrowseCriterion { | ||
| 871 | } | 991 | } |
| 872 | } | 992 | } |
| 873 | 993 | ||
| 874 | -class Criteria { | 994 | + |
| 995 | + | ||
| 996 | +class DateCreatedDeltaCriterion extends DateCreatedCriterion { | ||
| 997 | + var $sDocumentField = 'created'; | ||
| 998 | + var $sSortField = 'created'; | ||
| 999 | + var $aTypes = array('MINUTE'=>'Minutes', | ||
| 1000 | + 'HOUR'=>'Hours', | ||
| 1001 | + 'DAY'=>'Days', | ||
| 1002 | + 'MONTH'=>'Months', | ||
| 1003 | + 'YEAR'=>'Years'); | ||
| 1004 | + var $sNamespace = 'ktcore.criteria.datecreateddelta'; | ||
| 1005 | + | ||
| 1006 | + function DateCreatedDeltaCriterion() { | ||
| 1007 | + $this->sDisplay = _kt('Date Created Delta'); | ||
| 1008 | + } | ||
| 875 | 1009 | ||
| 876 | - function &_getBaseCriterionByNumber($iID) { | ||
| 877 | - global $default; | ||
| 878 | - switch ($iID) { | ||
| 879 | - case -1: | ||
| 880 | - $oCriterion =& new NameCriterion(_kt("Name"), 'filename', 'filename', -1); | ||
| 881 | - break; | ||
| 882 | - case -2: | ||
| 883 | - $oCriterion =& new TitleCriterion(_kt("Title"), 'name', 'name', -2); | ||
| 884 | - break; | ||
| 885 | - case -3: | ||
| 886 | - $oCriterion =& new CreatorCriterion(_kt("Creator"), 'creator_id', 'creator_id', -3); | ||
| 887 | - break; | ||
| 888 | - case -4: | ||
| 889 | - $oCriterion =& new DateCreatedCriterion(_kt("Date Created"), 'created', 'created', -4); | ||
| 890 | - break; | ||
| 891 | - case -5: | ||
| 892 | - $oCriterion =& new DocumentTypeCriterion(_kt("Document Type"), 'document_type_id', 'document_type_id', -5); | ||
| 893 | - break; | ||
| 894 | - case -6: | ||
| 895 | - $oCriterion =& new IDCriterion(_kt("Document ID"), 'id', 'id', -6); | ||
| 896 | - break; | ||
| 897 | - case -7: | ||
| 898 | - $oCriterion =& new DateModifiedCriterion(_kt("Date Modified"), 'modified', 'modified', -7); | ||
| 899 | - break; | ||
| 900 | - case -8: | ||
| 901 | - $oCriterion =& new SizeCriterion(_kt("File Size"), 'size', 'size', -8); | ||
| 902 | - break; | ||
| 903 | - case -9: | ||
| 904 | - $oCriterion =& new ContentCriterion(_kt("Document Text"), 'content', 'content', -9); | ||
| 905 | - break; | ||
| 906 | - case -10: | ||
| 907 | - $oCriterion =& new WorkflowStateCriterion(_kt("Workflow state"), 'state', 'state', -10); | ||
| 908 | - break; | ||
| 909 | - case -11: | ||
| 910 | - $oCriterion =& new TransactionTextCriterion(_kt("Transaction Text"), 'transactiontext', 'transactiontext', -11); | ||
| 911 | - break; | ||
| 912 | - case -12: | ||
| 913 | - $oCriterion =& new SearchableTextCriterion(_kt("Simple Search Text"), 'searchabletext', 'searchabletext', -12); | ||
| 914 | - break; | ||
| 915 | - case -13: | ||
| 916 | - $oCriterion =& new DiscussionTextCriterion(_kt("Discussion Threads"), 'discussiontext', 'discussiontext', -13); | ||
| 917 | - break; | ||
| 918 | - } | ||
| 919 | - return $oCriterion; | ||
| 920 | - } | ||
| 921 | - | ||
| 922 | - function initCriteria () { | ||
| 923 | - global $aBaseCriteria; | ||
| 924 | - if (isset($aBaseCriteria)) { | ||
| 925 | - return; | ||
| 926 | - } | ||
| 927 | - $aBaseCriteria = array(); | ||
| 928 | - $aIDs = range(-1, -13); | ||
| 929 | - foreach ($aIDs as $iID) { | ||
| 930 | - $oCriterion =& Criteria::_getBaseCriterionByNumber($iID); | ||
| 931 | - $aBaseCriteria[$iID] =& $oCriterion; | ||
| 932 | - } | ||
| 933 | - } | ||
| 934 | - | ||
| 935 | - function &getBaseCriteria () { | ||
| 936 | - global $aBaseCriteria; | ||
| 937 | - Criteria::initCriteria(); | ||
| 938 | - return $aBaseCriteria; | ||
| 939 | - } | ||
| 940 | - | ||
| 941 | - function &getGenericCriteria () { | ||
| 942 | - global $aGenericCriteria; | ||
| 943 | - global $default; | ||
| 944 | - $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/ | ||
| 945 | - $aIDs = DBUtil::getResultArrayKey($aQuery, 'id'); | ||
| 946 | - foreach ($aIDs as $iID) { | ||
| 947 | - $oCriterion =& Criteria::getCriterionByNumber($iID); | ||
| 948 | - $aGenericCriteria[$iID] =& $oCriterion; | ||
| 949 | - } | ||
| 950 | - return $aGenericCriteria; | 1010 | + function searchWidget ($aRequest, $aPreValue = null) { |
| 1011 | + $sNumWidget = $this->getWidgetBase() . '_num'; | ||
| 1012 | + $sTypeWidget = $this->getWidgetBase() . '_type'; | ||
| 1013 | + | ||
| 1014 | + // build type selection widget | ||
| 1015 | + $sSelect = '<select name="'.$sTypeWidget.'">'; | ||
| 1016 | + foreach($this->aTypes as $k=>$v) { | ||
| 1017 | + $sSelect .= '<option value="'.$k.'"'; | ||
| 1018 | + $t = KTUtil::arrayGet($aPreValue, $sTypeWidget, 'DAY'); | ||
| 1019 | + if($k==$t) $sSelect .= ' selected="selected"'; | ||
| 1020 | + $sSelect .= '>'.$v.'</option>'; | ||
| 1021 | + } | ||
| 1022 | + $sSelect .= '</select>'; | ||
| 1023 | + | ||
| 1024 | + $sToRender = $this->getNotWidget($aPreValue); | ||
| 1025 | + | ||
| 1026 | + $sToRender .= '<input name="'.$sNumWidget.'" value="'.$aPreValue[$sNumWidget].'"/>'.$sSelect.' ago'; | ||
| 1027 | + return $sToRender; | ||
| 951 | } | 1028 | } |
| 952 | 1029 | ||
| 953 | - function &getAllCriteria () { | ||
| 954 | - global $aAllCriteria; | ||
| 955 | - global $aBaseCriteria; | ||
| 956 | - global $default; | ||
| 957 | - Criteria::initCriteria(); | ||
| 958 | - if (isset($aAllCriteria)) { | ||
| 959 | - return $aAllCriteria; | ||
| 960 | - } | ||
| 961 | - $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/ | ||
| 962 | - $aIDs = DBUtil::getResultArrayKey($aQuery, 'id'); | ||
| 963 | - $aAllCriteriaIDs = array_merge(array_keys($aBaseCriteria), $aIDs); | ||
| 964 | - foreach ($aAllCriteriaIDs as $iID) { | ||
| 965 | - $oCriterion =& Criteria::getCriterionByNumber($iID); | ||
| 966 | - $aAllCriteria[$iID] =& $oCriterion; | 1030 | + function searchSQL ($aRequest) { |
| 1031 | + $sNum = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_num'); | ||
| 1032 | + $sType = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_type'); | ||
| 1033 | + | ||
| 1034 | + $val = array($this->getSearchTable() . "." . $this->getSearchField() . " > SUBDATE(NOW(), INTERVAL ? {$sType})", array($sNum)); | ||
| 1035 | + | ||
| 1036 | + $want_invert = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_not'); | ||
| 1037 | + if (is_null($want_invert) || ($want_invert == "0")) { | ||
| 1038 | + return $val; | ||
| 1039 | + } else { | ||
| 1040 | + $val[0] = '(NOT (' . $val[0] . '))'; | ||
| 967 | } | 1041 | } |
| 968 | - return $aAllCriteria; | 1042 | + return $val; |
| 969 | } | 1043 | } |
| 1044 | +} | ||
| 970 | 1045 | ||
| 971 | - function &getCriterionByNumber($iID) { | ||
| 972 | - global $aBaseCriteria; | ||
| 973 | - global $default; | ||
| 974 | - Criteria::initCriteria(); | ||
| 975 | 1046 | ||
| 976 | - // array_key_exists 4.3.2 (at least, tested on RHEL3) returns | ||
| 977 | - // false if '-1' (the string) is the key given, and the real key | ||
| 978 | - // is -1 (the integer). | ||
| 979 | - $iID = (int)$iID; | 1047 | +class DateModifiedDeltaCriterion extends DateCreatedDeltaCriterion { |
| 1048 | + var $sDocumentField = 'modified'; | ||
| 1049 | + var $sSortField = 'modified'; | ||
| 1050 | + var $sNamespace = 'ktcore.criteria.datemodifieddelta'; | ||
| 980 | 1051 | ||
| 981 | - if (array_key_exists($iID, $aBaseCriteria)) { | ||
| 982 | - return $aBaseCriteria[$iID]; | ||
| 983 | - } else { | ||
| 984 | - $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($iID)); /*ok*/ | ||
| 985 | - $sName = DBUtil::getOneResultKey($aQuery, 'name'); | ||
| 986 | - return new GenericMetadataCriterion($sName, 'id', 'id', $iID); | ||
| 987 | - } | 1052 | + function DateModifiedDeltaCriterion() { |
| 1053 | + $this->sDisplay = _kt('Date Modified Delta'); | ||
| 1054 | + } | ||
| 1055 | + | ||
| 1056 | + function documentDisplay ($oDocument) { | ||
| 1057 | + return $oDocument->getLastModifiedDate(); | ||
| 1058 | + } | ||
| 1059 | + function getName() { | ||
| 1060 | + return "datemodified"; | ||
| 988 | } | 1061 | } |
| 989 | } | 1062 | } |
| 990 | 1063 | ||
| 1064 | + | ||
| 1065 | + | ||
| 1066 | + | ||
| 1067 | + | ||
| 1068 | + | ||
| 991 | ?> | 1069 | ?> |
lib/browse/PartialQuery.inc.php
| @@ -326,7 +326,7 @@ class SimpleSearchQuery extends PartialQuery { | @@ -326,7 +326,7 @@ class SimpleSearchQuery extends PartialQuery { | ||
| 326 | function getQuery($aOptions = null) { | 326 | function getQuery($aOptions = null) { |
| 327 | $aSubgroup = array( | 327 | $aSubgroup = array( |
| 328 | 'values' => array( | 328 | 'values' => array( |
| 329 | - array('type' => '-12', 'data' => array('bmd_12' => $this->searchable_text)), | 329 | + array('type' => 'ktcore.criteria.searchabletext', 'data' => array('ktcore.criteria.searchabletext' => $this->searchable_text)), |
| 330 | array('sql' => array('D.status_id = 1')), | 330 | array('sql' => array('D.status_id = 1')), |
| 331 | ), | 331 | ), |
| 332 | 'join' => 'AND', | 332 | 'join' => 'AND', |
| @@ -388,7 +388,7 @@ class TypeBrowseQuery extends SimpleSearchQuery { | @@ -388,7 +388,7 @@ class TypeBrowseQuery extends SimpleSearchQuery { | ||
| 388 | function getQuery($aOptions = null) { | 388 | function getQuery($aOptions = null) { |
| 389 | $aSubgroup = array( | 389 | $aSubgroup = array( |
| 390 | 'values' => array( | 390 | 'values' => array( |
| 391 | - array('type' => '-5', 'data' => array('bmd_5' => $this->iDocType)), | 391 | + array('type' => 'ktcore.criteria.documenttype', 'data' => array('ktcore.criteria.documenttype' => $this->iDocType)), |
| 392 | array('sql' => array('D.status_id = 1')), | 392 | array('sql' => array('D.status_id = 1')), |
| 393 | ), | 393 | ), |
| 394 | 'join' => 'AND', | 394 | 'join' => 'AND', |
| @@ -407,18 +407,18 @@ class TypeBrowseQuery extends SimpleSearchQuery { | @@ -407,18 +407,18 @@ class TypeBrowseQuery extends SimpleSearchQuery { | ||
| 407 | } | 407 | } |
| 408 | 408 | ||
| 409 | class ValueBrowseQuery extends SimpleSearchQuery { | 409 | class ValueBrowseQuery extends SimpleSearchQuery { |
| 410 | - var $iFieldId; | 410 | + var $sFieldNamespace; |
| 411 | var $sValueName; | 411 | var $sValueName; |
| 412 | 412 | ||
| 413 | - function ValueBrowseQuery($oField, $oValue) { | ||
| 414 | - $this->iFieldId = $oField->getId(); | 413 | + function ValueBrowseQuery($oField, $oValue) { |
| 414 | + $this->sFieldNamespace = $oField->getNamespace(); | ||
| 415 | $this->sValueName = $oValue->getName(); | 415 | $this->sValueName = $oValue->getName(); |
| 416 | } | 416 | } |
| 417 | 417 | ||
| 418 | function getQuery($aOptions = null) { | 418 | function getQuery($aOptions = null) { |
| 419 | $aSubgroup = array( | 419 | $aSubgroup = array( |
| 420 | 'values' => array( | 420 | 'values' => array( |
| 421 | - array('type' => $this->iFieldId, 'data' => array('bmd' . $this->iFieldId => $this->sValueName)), | 421 | + array('type' => $this->sFieldNamespace, 'data' => array($this->sFieldNamespace => $this->sValueName)), |
| 422 | array('sql' => array('D.status_id = 1')), | 422 | array('sql' => array('D.status_id = 1')), |
| 423 | ), | 423 | ), |
| 424 | 'join' => 'AND', | 424 | 'join' => 'AND', |
lib/browse/criteriaregistry.php
0 โ 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * $Id: criteriaregistry.php 5492 2006-06-04 20:50:43Z bryndivey $ | ||
| 5 | + * | ||
| 6 | + * Copyright (c) 2006 Jam Warehouse http://www.jamwarehouse.com | ||
| 7 | + * | ||
| 8 | + * This program is free software; you can redistribute it and/or modify | ||
| 9 | + * it under the terms of the GNU General Public License as published by | ||
| 10 | + * the Free Software Foundation; using version 2 of the License. | ||
| 11 | + * | ||
| 12 | + * This program is distributed in the hope that it will be useful, | ||
| 13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | + * GNU General Public License for more details. | ||
| 16 | + * | ||
| 17 | + * You should have received a copy of the GNU General Public License | ||
| 18 | + * along with this program; if not, write to the Free Software | ||
| 19 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | + * | ||
| 21 | + * ------------------------------------------------------------------------- | ||
| 22 | + * | ||
| 23 | + * You can contact the copyright owner regarding licensing via the contact | ||
| 24 | + * details that can be found on the KnowledgeTree web site: | ||
| 25 | + * | ||
| 26 | + * http://www.ktdms.com/ | ||
| 27 | + */ | ||
| 28 | + | ||
| 29 | +class KTCriteriaRegistry { | ||
| 30 | + var $_aCriteria = array(); | ||
| 31 | + var $_aCriteriaDetails = array(); | ||
| 32 | + var $_bGenericRegistered = false; | ||
| 33 | + | ||
| 34 | + function &getSingleton() { | ||
| 35 | + if (!KTUtil::arrayGet($GLOBALS['_KT_CRITERIA'], 'oKTCriteriaRegistry')) { | ||
| 36 | + $GLOBALS['_KT_CRITERIA']['oKTCriteriaRegistry'] = new KTCriteriaRegistry; | ||
| 37 | + // $GLOBALS['_KT_CRITERIA']['oKTCriteriaRegistry']->_buildGenericCriteria(); | ||
| 38 | + } | ||
| 39 | + return $GLOBALS['_KT_CRITERIA']['oKTCriteriaRegistry']; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + function _buildGenericCriteria() { | ||
| 43 | + $aFields =& DocumentField::getList(); | ||
| 44 | + foreach($aFields as $oField) { | ||
| 45 | + $sNamespace = $oField->getNamespace(); | ||
| 46 | + $aInitialize = array($oField->getName(), 'id', 'id', $oField->getId(), $sNamespace); | ||
| 47 | + $this->registerCriterion('GenericMetadataCriterion', $sNamespace, null, $aInitialize); | ||
| 48 | + } | ||
| 49 | + $this->_bGenericRegistered = true; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + function registerCriterion($sClassName, $sNamespace = null, $sFilename = null, $aInitialize = null) { | ||
| 53 | + $this->_aCriteriaDetails[$sNamespace] = array($sClassName, $sNamespace, $sFilename, $aInitialize); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + function &getCriterion($sNamespace) { | ||
| 57 | + if(!$this->_bGenericRegistered) { | ||
| 58 | + $this->_buildGenericCriteria(); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + if (array_key_exists($sNamespace, $this->_aCriteria)) { | ||
| 62 | + return $this->_aCriteria[$sNamespace]; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + $aDetails = KTUtil::arrayGet($this->_aCriteriaDetails, $sNamespace); | ||
| 66 | + if (empty($aDetails)) { | ||
| 67 | + return null; | ||
| 68 | + } | ||
| 69 | + $sFilename = $aDetails[2]; | ||
| 70 | + if (!empty($sFilename)) { | ||
| 71 | + require_once($sFilename); | ||
| 72 | + } | ||
| 73 | + $sClassName = $aDetails[0]; | ||
| 74 | + $oCriterion =& new $sClassName(); | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + if(is_array($aDetails[3])) { | ||
| 78 | + call_user_func_array(array(&$oCriterion, 'initialize'), $aDetails[3]); | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + $this->_aCriteria[$sNamespace] =& $oCriterion; | ||
| 83 | + return $oCriterion; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + function &getCriteria() { | ||
| 87 | + if(!$this->_bGenericRegistered) { | ||
| 88 | + $this->_buildGenericCriteria(); | ||
| 89 | + } | ||
| 90 | + $aRet = array(); | ||
| 91 | + | ||
| 92 | + foreach (array_keys($this->_aCriteriaDetails) as $sCriteriaName) { | ||
| 93 | + $aRet[$sCriteriaName] =& $this->getCriterion($sCriteriaName); | ||
| 94 | + } | ||
| 95 | + return $aRet; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | +} | ||
| 99 | + |
lib/documentmanagement/DocumentField.inc
| @@ -35,21 +35,21 @@ require_once(KT_LIB_DIR . '/documentmanagement/DocumentType.inc'); | @@ -35,21 +35,21 @@ require_once(KT_LIB_DIR . '/documentmanagement/DocumentType.inc'); | ||
| 35 | 35 | ||
| 36 | class DocumentField extends KTEntity { | 36 | class DocumentField extends KTEntity { |
| 37 | 37 | ||
| 38 | - /** primary key value */ | ||
| 39 | - var $iId = -1; | ||
| 40 | - var $sName; | ||
| 41 | - var $sDataType; | ||
| 42 | - var $sDescription; | ||
| 43 | - var $bIsGeneric; | ||
| 44 | - var $bHasLookup; | 38 | + /** primary key value */ |
| 39 | + var $iId = -1; | ||
| 40 | + var $sName; | ||
| 41 | + var $sDataType; | ||
| 42 | + var $sDescription; | ||
| 43 | + var $bIsGeneric; | ||
| 44 | + var $bHasLookup; | ||
| 45 | var $iParentFieldset; | 45 | var $iParentFieldset; |
| 46 | - var $bHasLookupTree; | ||
| 47 | - var $bIsMandatory; | 46 | + var $bHasLookupTree; |
| 47 | + var $bIsMandatory; | ||
| 48 | 48 | ||
| 49 | var $_aFieldToSelect = array( | 49 | var $_aFieldToSelect = array( |
| 50 | 'iId' => 'id', | 50 | 'iId' => 'id', |
| 51 | 'sName' => 'name', | 51 | 'sName' => 'name', |
| 52 | - 'sDescription' => 'description', | 52 | + 'sDescription' => 'description', |
| 53 | 'sDataType' => 'data_type', | 53 | 'sDataType' => 'data_type', |
| 54 | 'bIsGeneric' => 'is_generic', | 54 | 'bIsGeneric' => 'is_generic', |
| 55 | 'bHasLookup' => 'has_lookup', | 55 | 'bHasLookup' => 'has_lookup', |
| @@ -93,7 +93,7 @@ class DocumentField extends KTEntity { | @@ -93,7 +93,7 @@ class DocumentField extends KTEntity { | ||
| 93 | function _fieldValues () { | 93 | function _fieldValues () { |
| 94 | return array( | 94 | return array( |
| 95 | 'name' => $this->sName, | 95 | 'name' => $this->sName, |
| 96 | - 'description' => $this->sDescription, | 96 | + 'description' => $this->sDescription, |
| 97 | 'data_type' => $this->sDataType, | 97 | 'data_type' => $this->sDataType, |
| 98 | 'is_generic' => KTUtil::anyToBool($this->bIsGeneric), | 98 | 'is_generic' => KTUtil::anyToBool($this->bIsGeneric), |
| 99 | 'has_lookup' => KTUtil::anyToBool($this->bHasLookup), | 99 | 'has_lookup' => KTUtil::anyToBool($this->bHasLookup), |
| @@ -108,9 +108,9 @@ class DocumentField extends KTEntity { | @@ -108,9 +108,9 @@ class DocumentField extends KTEntity { | ||
| 108 | return $default->document_fields_table; | 108 | return $default->document_fields_table; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | - function &getList($sWhereClause = null) { | ||
| 112 | - return KTEntityUtil::getList2('DocumentField', $sWhereClause); | ||
| 113 | - } | 111 | + function &getList($sWhereClause = null) { |
| 112 | + return KTEntityUtil::getList2('DocumentField', $sWhereClause); | ||
| 113 | + } | ||
| 114 | 114 | ||
| 115 | function &createFromArray($aOptions) { | 115 | function &createFromArray($aOptions) { |
| 116 | return KTEntityUtil::createFromArray('DocumentField', $aOptions); | 116 | return KTEntityUtil::createFromArray('DocumentField', $aOptions); |
| @@ -206,6 +206,16 @@ class DocumentField extends KTEntity { | @@ -206,6 +206,16 @@ class DocumentField extends KTEntity { | ||
| 206 | 206 | ||
| 207 | return implode(', ', $aDescriptors); | 207 | return implode(', ', $aDescriptors); |
| 208 | } | 208 | } |
| 209 | + | ||
| 210 | + function getNamespace() { | ||
| 211 | + $oFieldset = KTFieldset::get($this->getParentFieldsetId()); | ||
| 212 | + if(PEAR::isError($oFieldset)) { | ||
| 213 | + $sFS = 'nofieldset'; | ||
| 214 | + } else { | ||
| 215 | + $sFS = $oFieldset->getNamespace(); | ||
| 216 | + } | ||
| 217 | + return $sFS . '.' . $this->getName(); | ||
| 218 | + } | ||
| 209 | } | 219 | } |
| 210 | 220 | ||
| 211 | /** | 221 | /** |
lib/plugins/plugin.inc.php
| @@ -54,6 +54,7 @@ class KTPlugin { | @@ -54,6 +54,7 @@ class KTPlugin { | ||
| 54 | var $_aViews = array(); | 54 | var $_aViews = array(); |
| 55 | var $_aNotificationHandlers = array(); | 55 | var $_aNotificationHandlers = array(); |
| 56 | var $_aTemplateLocations = array(); | 56 | var $_aTemplateLocations = array(); |
| 57 | + var $_aCriteria = array(); | ||
| 57 | 58 | ||
| 58 | function KTPlugin($sFilename = null) { | 59 | function KTPlugin($sFilename = null) { |
| 59 | $this->sFilename = $sFilename; | 60 | $this->sFilename = $sFilename; |
| @@ -162,6 +163,11 @@ class KTPlugin { | @@ -162,6 +163,11 @@ class KTPlugin { | ||
| 162 | $this->_aTemplateLocations[$sName] = array($sName, $sPath); | 163 | $this->_aTemplateLocations[$sName] = array($sName, $sPath); |
| 163 | } | 164 | } |
| 164 | 165 | ||
| 166 | + function registerCriterion($sClassName, $sNamespace, $sFilename = null, $aInitialize = null) { | ||
| 167 | + $this->_fixFilename($sFilename); | ||
| 168 | + $this->_aCriteria[$sNamespace] = array($sClassName, $sNamespace, $sFilename, $aInitialize); | ||
| 169 | + } | ||
| 170 | + | ||
| 165 | function _fixFilename($sFilename) { | 171 | function _fixFilename($sFilename) { |
| 166 | if (empty($sFilename)) { | 172 | if (empty($sFilename)) { |
| 167 | $sFilename = $this->sFilename; | 173 | $sFilename = $this->sFilename; |
| @@ -220,6 +226,7 @@ class KTPlugin { | @@ -220,6 +226,7 @@ class KTPlugin { | ||
| 220 | require_once(KT_LIB_DIR . "/help/help.inc.php"); | 226 | require_once(KT_LIB_DIR . "/help/help.inc.php"); |
| 221 | require_once(KT_LIB_DIR . "/workflow/workflowutil.inc.php"); | 227 | require_once(KT_LIB_DIR . "/workflow/workflowutil.inc.php"); |
| 222 | require_once(KT_LIB_DIR . "/browse/columnregistry.inc.php"); | 228 | require_once(KT_LIB_DIR . "/browse/columnregistry.inc.php"); |
| 229 | + require_once(KT_LIB_DIR . "/browse/criteriaregistry.php"); | ||
| 223 | 230 | ||
| 224 | $oPRegistry =& KTPortletRegistry::getSingleton(); | 231 | $oPRegistry =& KTPortletRegistry::getSingleton(); |
| 225 | $oTRegistry =& KTTriggerRegistry::getSingleton(); | 232 | $oTRegistry =& KTTriggerRegistry::getSingleton(); |
| @@ -234,6 +241,7 @@ class KTPlugin { | @@ -234,6 +241,7 @@ class KTPlugin { | ||
| 234 | $oColumnRegistry =& KTColumnRegistry::getSingleton(); | 241 | $oColumnRegistry =& KTColumnRegistry::getSingleton(); |
| 235 | $oNotificationHandlerRegistry =& KTNotificationRegistry::getSingleton(); | 242 | $oNotificationHandlerRegistry =& KTNotificationRegistry::getSingleton(); |
| 236 | $oTemplating =& KTTemplating::getSingleton(); | 243 | $oTemplating =& KTTemplating::getSingleton(); |
| 244 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); | ||
| 237 | 245 | ||
| 238 | foreach ($this->_aPortlets as $k => $v) { | 246 | foreach ($this->_aPortlets as $k => $v) { |
| 239 | call_user_func_array(array(&$oPRegistry, 'registerPortlet'), $v); | 247 | call_user_func_array(array(&$oPRegistry, 'registerPortlet'), $v); |
| @@ -302,6 +310,10 @@ class KTPlugin { | @@ -302,6 +310,10 @@ class KTPlugin { | ||
| 302 | foreach ($this->_aTemplateLocations as $k => $v) { | 310 | foreach ($this->_aTemplateLocations as $k => $v) { |
| 303 | call_user_func_array(array(&$oTemplating, 'addLocation'), $v); | 311 | call_user_func_array(array(&$oTemplating, 'addLocation'), $v); |
| 304 | } | 312 | } |
| 313 | + | ||
| 314 | + foreach ($this->_aCriteria as $k => $v) { | ||
| 315 | + call_user_func_array(array(&$oCriteriaRegistry, 'registerCriterion'), $v); | ||
| 316 | + } | ||
| 305 | } | 317 | } |
| 306 | 318 | ||
| 307 | function setup() { | 319 | function setup() { |
lib/search/searchutil.inc.php
| @@ -51,7 +51,8 @@ class KTSearchUtil { | @@ -51,7 +51,8 @@ class KTSearchUtil { | ||
| 51 | $type = KTUtil::arrayGet($dataset, "type"); | 51 | $type = KTUtil::arrayGet($dataset, "type"); |
| 52 | $sql = KTUtil::arrayGet($dataset, "sql"); | 52 | $sql = KTUtil::arrayGet($dataset, "sql"); |
| 53 | if (!empty($type)) { | 53 | if (!empty($type)) { |
| 54 | - $oCriterion = Criteria::getCriterionByNumber($dataset["type"]); | 54 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); |
| 55 | + $oCriterion = $oCriteriaRegistry->getCriterion($dataset['type']); | ||
| 55 | if (PEAR::isError($oCriterion)) { | 56 | if (PEAR::isError($oCriterion)) { |
| 56 | return PEAR::raiseError('Invalid criteria specified.'); | 57 | return PEAR::raiseError('Invalid criteria specified.'); |
| 57 | } | 58 | } |
lib/upgrades/UpgradeFunctions.inc.php
| @@ -39,6 +39,7 @@ class UpgradeFunctions { | @@ -39,6 +39,7 @@ class UpgradeFunctions { | ||
| 39 | "3.0.3.2" => array("createFolderDetailsPermission"), | 39 | "3.0.3.2" => array("createFolderDetailsPermission"), |
| 40 | "3.0.3.3" => array("generateWorkflowTriggers"), | 40 | "3.0.3.3" => array("generateWorkflowTriggers"), |
| 41 | "3.0.3.7" => array("rebuildAllPermissions"), | 41 | "3.0.3.7" => array("rebuildAllPermissions"), |
| 42 | + "3.1.5" => array("upgradeSavedSearches"), | ||
| 42 | ); | 43 | ); |
| 43 | 44 | ||
| 44 | var $descriptions = array( | 45 | var $descriptions = array( |
| @@ -56,6 +57,7 @@ class UpgradeFunctions { | @@ -56,6 +57,7 @@ class UpgradeFunctions { | ||
| 56 | 'createFolderDetailsPermission' => 'Create the Core: Folder Details permission', | 57 | 'createFolderDetailsPermission' => 'Create the Core: Folder Details permission', |
| 57 | 'generateWorkflowTriggers' => 'Migrate old in-transition guards to triggers', | 58 | 'generateWorkflowTriggers' => 'Migrate old in-transition guards to triggers', |
| 58 | 'rebuildAllPermissions' => 'Rebuild all permissions to ensure correct functioning of permission-definitions.' | 59 | 'rebuildAllPermissions' => 'Rebuild all permissions to ensure correct functioning of permission-definitions.' |
| 60 | + 'upgradeSavedSearches' => 'Upgrade saved searches to use namespaces instead of integer ids', | ||
| 59 | ); | 61 | ); |
| 60 | var $phases = array( | 62 | var $phases = array( |
| 61 | "setPermissionFolder" => 1, | 63 | "setPermissionFolder" => 1, |
| @@ -765,6 +767,57 @@ class UpgradeFunctions { | @@ -765,6 +767,57 @@ class UpgradeFunctions { | ||
| 765 | KTPermissionUtil::updatePermissionLookupRecursive($oRootFolder); | 767 | KTPermissionUtil::updatePermissionLookupRecursive($oRootFolder); |
| 766 | } | 768 | } |
| 767 | 769 | ||
| 770 | + | ||
| 771 | + function _upgradeSavedSearch($aSearch) { | ||
| 772 | + $aMapping = array('-1' => 'ktcore.criteria.name', | ||
| 773 | + '-6' => 'ktcore.criteria.id', | ||
| 774 | + '-2' => 'ktcore.criteria.title', | ||
| 775 | + '-3' => 'ktcore.criteria.creator', | ||
| 776 | + '-4' => 'ktcore.criteria.datecreated', | ||
| 777 | + '-5' => 'ktcore.criteria.documenttype', | ||
| 778 | + '-7' => 'ktcore.criteria.datemodified', | ||
| 779 | + '-8' => 'ktcore.criteria.size', | ||
| 780 | + '-9' => 'ktcore.criteria.content', | ||
| 781 | + '-10' => 'ktcore.criteria.workflowstate', | ||
| 782 | + '-13' => 'ktcore.criteria.discussiontext', | ||
| 783 | + '-12' => 'ktcore.criteria.searchabletext', | ||
| 784 | + '-11' => 'ktcore.criteria.transactiontext'); | ||
| 785 | + | ||
| 786 | + $aFieldsets =& KTFieldset::getList(); | ||
| 787 | + foreach($aFieldsets as $oFieldset) { | ||
| 788 | + $aFields =& DocumentField::getByFieldset($oFieldset); | ||
| 789 | + foreach($aFields as $oField) { | ||
| 790 | + $sNamespace = $oFieldset->getNamespace() . '.' . $oField->getName(); | ||
| 791 | + $sId = (string) $oField->getId(); | ||
| 792 | + $aMapping[$sId] = $sNamespace; | ||
| 793 | + } | ||
| 794 | + } | ||
| 795 | + | ||
| 796 | + foreach(array_keys($aSearch['subgroup']) as $sgkey) { | ||
| 797 | + $sg =& $aSearch['subgroup'][$sgkey]; | ||
| 798 | + foreach(array_keys($sg['values']) as $vkey) { | ||
| 799 | + $item =& $sg['values'][$vkey]; | ||
| 800 | + $type = $item['type']; | ||
| 801 | + $toreplace = 'bmd' . ((int)$type < 0 ? '_' : '') . abs((int)$type); | ||
| 802 | + $item['type'] = $aMapping[$type]; | ||
| 803 | + $nData = array(); | ||
| 804 | + foreach($item['data'] as $k=>$v) { | ||
| 805 | + $k = str_replace($toreplace, $aMapping[$type], $k); | ||
| 806 | + $nData[$k] = $v; | ||
| 807 | + } | ||
| 808 | + $item['data'] = $nData; | ||
| 809 | + } | ||
| 810 | + } | ||
| 811 | + return $aSearch; | ||
| 812 | + } | ||
| 813 | + | ||
| 814 | + function upgradeSavedSearches() { | ||
| 815 | + foreach(KTSavedSearch::getSearches() as $oS) { | ||
| 816 | + $aSearch = $this->_upgradeSavedSearch($oS->getSearch()); | ||
| 817 | + $oS->setSearch($aSearch); | ||
| 818 | + $oS->update(); | ||
| 819 | + } | ||
| 820 | + } | ||
| 768 | } | 821 | } |
| 769 | 822 | ||
| 770 | ?> | 823 | ?> |
plugins/ktcore/KTCorePlugin.php
| @@ -27,7 +27,6 @@ | @@ -27,7 +27,6 @@ | ||
| 27 | require_once(KT_LIB_DIR . '/plugins/pluginregistry.inc.php'); | 27 | require_once(KT_LIB_DIR . '/plugins/pluginregistry.inc.php'); |
| 28 | require_once(KT_LIB_DIR . '/plugins/plugin.inc.php'); | 28 | require_once(KT_LIB_DIR . '/plugins/plugin.inc.php'); |
| 29 | 29 | ||
| 30 | - | ||
| 31 | class KTCorePlugin extends KTPlugin { | 30 | class KTCorePlugin extends KTPlugin { |
| 32 | var $bAlwaysInclude = true; | 31 | var $bAlwaysInclude = true; |
| 33 | var $sNamespace = "ktcore.plugin"; | 32 | var $sNamespace = "ktcore.plugin"; |
| @@ -119,7 +118,23 @@ class KTCorePlugin extends KTPlugin { | @@ -119,7 +118,23 @@ class KTCorePlugin extends KTPlugin { | ||
| 119 | $this->registerWorkflowTrigger('ktcore.workflowtriggers.conditionguard', 'ConditionGuardTrigger', 'KTWorkflowTriggers.inc.php'); | 118 | $this->registerWorkflowTrigger('ktcore.workflowtriggers.conditionguard', 'ConditionGuardTrigger', 'KTWorkflowTriggers.inc.php'); |
| 120 | 119 | ||
| 121 | $this->registerWorkflowTrigger('ktcore.workflowtriggers.copyaction', 'CopyActionTrigger', 'KTWorkflowTriggers.inc.php'); | 120 | $this->registerWorkflowTrigger('ktcore.workflowtriggers.copyaction', 'CopyActionTrigger', 'KTWorkflowTriggers.inc.php'); |
| 122 | - | 121 | + |
| 122 | + // criterion | ||
| 123 | + $this->registerCriterion('NameCriterion', 'ktcore.criteria.name', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 124 | + $this->registerCriterion('IDCriterion', 'ktcore.criteria.id', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 125 | + $this->registerCriterion('TitleCriterion', 'ktcore.criteria.title', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 126 | + $this->registerCriterion('CreatorCriterion', 'ktcore.criteria.creator', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 127 | + $this->registerCriterion('DateCreatedCriterion', 'ktcore.criteria.datecreated', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 128 | + $this->registerCriterion('DocumentTypeCriterion', 'ktcore.criteria.documenttype', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 129 | + $this->registerCriterion('DateModifiedCriterion', 'ktcore.criteria.datemodified', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 130 | + $this->registerCriterion('SizeCriterion', 'ktcore.criteria.size', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 131 | + $this->registerCriterion('ContentCriterion', 'ktcore.criteria.content', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 132 | + $this->registerCriterion('WorkflowStateCriterion', 'ktcore.criteria.workflowstate', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 133 | + $this->registerCriterion('DiscussionTextCriterion', 'ktcore.criteria.discussiontext', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 134 | + $this->registerCriterion('SearchableTextCriterion', 'ktcore.criteria.searchabletext', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 135 | + $this->registerCriterion('TransactionTextCriterion', 'ktcore.criteria.transactiontext', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 136 | + $this->registerCriterion('DateCreatedDeltaCriterion', 'ktcore.criteria.datecreateddelta', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 137 | + $this->registerCriterion('DateModifiedDeltaCriterion', 'ktcore.criteria.datemodifieddelta', KT_LIB_DIR . '/browse/Criteria.inc'); | ||
| 123 | 138 | ||
| 124 | $this->setupAdmin(); | 139 | $this->setupAdmin(); |
| 125 | } | 140 | } |
plugins/ktcore/admin/conditions.php
| @@ -78,7 +78,8 @@ class KTConditionDispatcher extends KTAdminDispatcher { | @@ -78,7 +78,8 @@ class KTConditionDispatcher extends KTAdminDispatcher { | ||
| 78 | $oTemplating =& KTTemplating::getSingleton(); | 78 | $oTemplating =& KTTemplating::getSingleton(); |
| 79 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); | 79 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); |
| 80 | 80 | ||
| 81 | - $aCriteria = Criteria::getAllCriteria(); | 81 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); |
| 82 | + $aCriteria =& $oCriteriaRegistry->getCriteria(); | ||
| 82 | 83 | ||
| 83 | $aTemplateData = array( | 84 | $aTemplateData = array( |
| 84 | "title" => _kt("Create a new condition"), | 85 | "title" => _kt("Create a new condition"), |
| @@ -108,7 +109,8 @@ class KTConditionDispatcher extends KTAdminDispatcher { | @@ -108,7 +109,8 @@ class KTConditionDispatcher extends KTAdminDispatcher { | ||
| 108 | $oTemplating =& KTTemplating::getSingleton(); | 109 | $oTemplating =& KTTemplating::getSingleton(); |
| 109 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search_edit"); | 110 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search_edit"); |
| 110 | 111 | ||
| 111 | - $aCriteria = Criteria::getAllCriteria(); | 112 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); |
| 113 | + $aCriteria =& $oCriteriaRegistry->getCriteria(); | ||
| 112 | 114 | ||
| 113 | // we need to help out here, since it gets unpleasant inside the template. | 115 | // we need to help out here, since it gets unpleasant inside the template. |
| 114 | foreach ($aSearch['subgroup'] as $isg => $as) { | 116 | foreach ($aSearch['subgroup'] as $isg => $as) { |
| @@ -117,8 +119,9 @@ class KTConditionDispatcher extends KTAdminDispatcher { | @@ -117,8 +119,9 @@ class KTConditionDispatcher extends KTAdminDispatcher { | ||
| 117 | if(count($aSubgroup['values'])) { | 119 | if(count($aSubgroup['values'])) { |
| 118 | foreach ($aSubgroup['values'] as $iv => $t) { | 120 | foreach ($aSubgroup['values'] as $iv => $t) { |
| 119 | $datavars =& $aSubgroup['values'][$iv]; | 121 | $datavars =& $aSubgroup['values'][$iv]; |
| 120 | - $datavars['typename'] = $aCriteria[$datavars['type']]->sDisplay; | ||
| 121 | - $datavars['widgetval'] = $aCriteria[$datavars['type']]->searchWidget(null, $datavars['data']); | 122 | + $oCriterion = $oCriteriaRegistry->getCriterion($datavars['type']); |
| 123 | + $datavars['typename'] = $oCriterion->sDisplay; | ||
| 124 | + $datavars['widgetval'] = $oCriterion->searchWidget(null, $datavars['data']); | ||
| 122 | } | 125 | } |
| 123 | } | 126 | } |
| 124 | } | 127 | } |
plugins/ktcore/admin/savedSearch.php
| @@ -55,7 +55,8 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | @@ -55,7 +55,8 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | ||
| 55 | $oTemplating =& KTTemplating::getSingleton(); | 55 | $oTemplating =& KTTemplating::getSingleton(); |
| 56 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); | 56 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); |
| 57 | 57 | ||
| 58 | - $aCriteria = Criteria::getAllCriteria(); | 58 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); |
| 59 | + $aCriteria =& $oCriteriaRegistry->getCriteria(); | ||
| 59 | 60 | ||
| 60 | $aTemplateData = array( | 61 | $aTemplateData = array( |
| 61 | "title" => _kt("Create a new saved search"), | 62 | "title" => _kt("Create a new saved search"), |
| @@ -105,7 +106,8 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | @@ -105,7 +106,8 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | ||
| 105 | $oTemplating =& KTTemplating::getSingleton(); | 106 | $oTemplating =& KTTemplating::getSingleton(); |
| 106 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search_edit"); | 107 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search_edit"); |
| 107 | 108 | ||
| 108 | - $aCriteria = Criteria::getAllCriteria(); | 109 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); |
| 110 | + $aCriteria =& $oCriteriaRegistry->getCriteria(); | ||
| 109 | 111 | ||
| 110 | // we need to help out here, since it gets unpleasant inside the template. | 112 | // we need to help out here, since it gets unpleasant inside the template. |
| 111 | 113 | ||
| @@ -114,8 +116,9 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | @@ -114,8 +116,9 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | ||
| 114 | if (is_array($aSubgroup['values'])) { | 116 | if (is_array($aSubgroup['values'])) { |
| 115 | foreach ($aSubgroup['values'] as $iv => $t) { | 117 | foreach ($aSubgroup['values'] as $iv => $t) { |
| 116 | $datavars =& $aSubgroup['values'][$iv]; | 118 | $datavars =& $aSubgroup['values'][$iv]; |
| 117 | - $datavars['typename'] = $aCriteria[$datavars['type']]->sDisplay; | ||
| 118 | - $datavars['widgetval'] = $aCriteria[$datavars['type']]->searchWidget(null, $datavars['data']); | 119 | + $oCriterion = $oCriteriaRegistry->getCriterion($datavars['type']); |
| 120 | + $datavars['typename'] = $oCriterion->sDisplay; | ||
| 121 | + $datavars['widgetval'] = $oCriterion->searchWidget(null, $datavars['data']); | ||
| 119 | } | 122 | } |
| 120 | } | 123 | } |
| 121 | } | 124 | } |
| @@ -124,7 +127,7 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | @@ -124,7 +127,7 @@ class KTSavedSearchDispatcher extends KTAdminDispatcher { | ||
| 124 | //$s .= print_r($aSearch, true); | 127 | //$s .= print_r($aSearch, true); |
| 125 | //$s .= '</pre>'; | 128 | //$s .= '</pre>'; |
| 126 | //print $s; | 129 | //print $s; |
| 127 | - | 130 | + |
| 128 | $aTemplateData = array( | 131 | $aTemplateData = array( |
| 129 | "title" => _kt("Edit an existing condition"), | 132 | "title" => _kt("Edit an existing condition"), |
| 130 | "aCriteria" => $aCriteria, | 133 | "aCriteria" => $aCriteria, |
resources/js/constructed_search.js
| @@ -95,6 +95,7 @@ function addNewCriteria(add_button) { | @@ -95,6 +95,7 @@ function addNewCriteria(add_button) { | ||
| 95 | var dest_cell = notify_message.parentNode; | 95 | var dest_cell = notify_message.parentNode; |
| 96 | var baseUrl = getElement('kt-core-baseurl').value; | 96 | var baseUrl = getElement('kt-core-baseurl').value; |
| 97 | var targeturl = baseUrl + '/search/ajaxBooleanSearch.php?action=getNewCriteria&type='+select.value+'&critId='+critId; | 97 | var targeturl = baseUrl + '/search/ajaxBooleanSearch.php?action=getNewCriteria&type='+select.value+'&critId='+critId; |
| 98 | + | ||
| 98 | simpleLog('DEBUG','addNewCriteria initiating request to: '+targeturl); | 99 | simpleLog('DEBUG','addNewCriteria initiating request to: '+targeturl); |
| 99 | 100 | ||
| 100 | var deferred = doSimpleXMLHttpRequest(targeturl); | 101 | var deferred = doSimpleXMLHttpRequest(targeturl); |
search/ajaxBooleanSearch.php
| @@ -31,6 +31,7 @@ require_once(KT_LIB_DIR . "/database/dbutil.inc"); | @@ -31,6 +31,7 @@ require_once(KT_LIB_DIR . "/database/dbutil.inc"); | ||
| 31 | require_once(KT_LIB_DIR . "/util/ktutil.inc"); | 31 | require_once(KT_LIB_DIR . "/util/ktutil.inc"); |
| 32 | require_once(KT_LIB_DIR . "/dispatcher.inc.php"); | 32 | require_once(KT_LIB_DIR . "/dispatcher.inc.php"); |
| 33 | require_once(KT_LIB_DIR . "/browse/Criteria.inc"); | 33 | require_once(KT_LIB_DIR . "/browse/Criteria.inc"); |
| 34 | +require_once(KT_LIB_DIR . "/browse/criteriaregistry.php"); | ||
| 34 | 35 | ||
| 35 | /* | 36 | /* |
| 36 | * example code - tests the frontend behaviour. remember to check ajaxConditional.php | 37 | * example code - tests the frontend behaviour. remember to check ajaxConditional.php |
| @@ -49,7 +50,9 @@ class AjaxBooleanSearchDispatcher extends KTDispatcher { | @@ -49,7 +50,9 @@ class AjaxBooleanSearchDispatcher extends KTDispatcher { | ||
| 49 | if (empty($criteriaType)) { | 50 | if (empty($criteriaType)) { |
| 50 | return 'AJAX Error: no criteria type specified.'; | 51 | return 'AJAX Error: no criteria type specified.'; |
| 51 | } | 52 | } |
| 52 | - $critObj = Criteria::getCriterionByNumber($criteriaType); | 53 | + |
| 54 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); | ||
| 55 | + $critObj = $oCriteriaRegistry->getCriterion($criteriaType); | ||
| 53 | if (PEAR::isError($critObj)) { | 56 | if (PEAR::isError($critObj)) { |
| 54 | return 'AJAX Error: failed to initialise critiria of type "'.$type.'".'; | 57 | return 'AJAX Error: failed to initialise critiria of type "'.$type.'".'; |
| 55 | } | 58 | } |
search/booleanSearch.php
| @@ -56,7 +56,8 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | @@ -56,7 +56,8 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | ||
| 56 | $oTemplating =& KTTemplating::getSingleton(); | 56 | $oTemplating =& KTTemplating::getSingleton(); |
| 57 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); | 57 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); |
| 58 | 58 | ||
| 59 | - $aCriteria = Criteria::getAllCriteria(); | 59 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); |
| 60 | + $aCriteria = $oCriteriaRegistry->getCriteria(); | ||
| 60 | 61 | ||
| 61 | $aTemplateData = array( | 62 | $aTemplateData = array( |
| 62 | "context" => &$this, | 63 | "context" => &$this, |
| @@ -193,8 +194,9 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | @@ -193,8 +194,9 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | ||
| 193 | 194 | ||
| 194 | $oTemplating =& KTTemplating::getSingleton(); | 195 | $oTemplating =& KTTemplating::getSingleton(); |
| 195 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search_change"); | 196 | $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search_change"); |
| 196 | - | ||
| 197 | - $aCriteria = Criteria::getAllCriteria(); | 197 | + |
| 198 | + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); | ||
| 199 | + $aCriteria = $oCriteriaRegistry->getCriteria(); | ||
| 198 | 200 | ||
| 199 | // we need to help out here, since it gets unpleasant inside the template. | 201 | // we need to help out here, since it gets unpleasant inside the template. |
| 200 | 202 | ||
| @@ -203,8 +205,10 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | @@ -203,8 +205,10 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | ||
| 203 | if (is_array($aSubgroup['values'])) { | 205 | if (is_array($aSubgroup['values'])) { |
| 204 | foreach ($aSubgroup['values'] as $iv => $t) { | 206 | foreach ($aSubgroup['values'] as $iv => $t) { |
| 205 | $datavars =& $aSubgroup['values'][$iv]; | 207 | $datavars =& $aSubgroup['values'][$iv]; |
| 206 | - $datavars['typename'] = $aCriteria[$datavars['type']]->sDisplay; | ||
| 207 | - $datavars['widgetval'] = $aCriteria[$datavars['type']]->searchWidget(null, $datavars['data']); | 208 | + |
| 209 | + $oCriterion = $oCriteriaRegistry->getCriterion($datavars['type']); | ||
| 210 | + $datavars['typename'] = $oCriterion->sDisplay; | ||
| 211 | + $datavars['widgetval'] = $oCriterion->searchWidget(null, $datavars['data']); | ||
| 208 | } | 212 | } |
| 209 | } | 213 | } |
| 210 | } | 214 | } |
| @@ -224,7 +228,6 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | @@ -224,7 +228,6 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | ||
| 224 | 228 | ||
| 225 | 229 | ||
| 226 | function handleCriteriaSet($aCriteriaSet, $iStartIndex, $sTitle=null) { | 230 | function handleCriteriaSet($aCriteriaSet, $iStartIndex, $sTitle=null) { |
| 227 | - | ||
| 228 | if ($sTitle == null) { | 231 | if ($sTitle == null) { |
| 229 | $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Advanced Search')); | 232 | $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Advanced Search')); |
| 230 | $sTitle = _kt('Search Results'); | 233 | $sTitle = _kt('Search Results'); |
| @@ -260,7 +263,6 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | @@ -260,7 +263,6 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { | ||
| 260 | $collection->setOptions($aOptions); | 263 | $collection->setOptions($aOptions); |
| 261 | $collection->setQueryObject(new BooleanSearchQuery($aCriteriaSet)); | 264 | $collection->setQueryObject(new BooleanSearchQuery($aCriteriaSet)); |
| 262 | 265 | ||
| 263 | - | ||
| 264 | //$a = new BooleanSearchQuery($aCriteriaSet); | 266 | //$a = new BooleanSearchQuery($aCriteriaSet); |
| 265 | //var_dump($a->getDocumentCount()); exit(0); | 267 | //var_dump($a->getDocumentCount()); exit(0); |
| 266 | 268 |
templates/ktcore/boolean_search.smarty
| 1 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")} | ||
| 2 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")} | ||
| 3 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | ||
| 4 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | ||
| 5 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")} | ||
| 6 | {$context->oPage->requireJSResource("resources/js/taillog.js")} | 1 | {$context->oPage->requireJSResource("resources/js/taillog.js")} |
| 7 | {$context->oPage->requireJSResource("resources/js/constructed_search.js")} | 2 | {$context->oPage->requireJSResource("resources/js/constructed_search.js")} |
| 8 | 3 | ||
| @@ -45,7 +40,7 @@ legend { border: 1px dotted #999;} | @@ -45,7 +40,7 @@ legend { border: 1px dotted #999;} | ||
| 45 | <div style="display: none" id="search-criteria-container"> | 40 | <div style="display: none" id="search-criteria-container"> |
| 46 | <select name="querytype"> | 41 | <select name="querytype"> |
| 47 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} | 42 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} |
| 48 | - <option value="{$oCriteria->getID()}">{$oCriteria->headerDisplay()}</option> | 43 | + <option value="{$oCriteria->getNamespace()}">{$oCriteria->headerDisplay()}</option> |
| 49 | {/if} | 44 | {/if} |
| 50 | {/foreach} | 45 | {/foreach} |
| 51 | </select> | 46 | </select> |
| @@ -86,7 +81,7 @@ legend { border: 1px dotted #999;} | @@ -86,7 +81,7 @@ legend { border: 1px dotted #999;} | ||
| 86 | <tr> | 81 | <tr> |
| 87 | <td><select name="querytype"> | 82 | <td><select name="querytype"> |
| 88 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} | 83 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} |
| 89 | - <option value="{$oCriteria->getID()}">{$oCriteria->headerDisplay()}</option> | 84 | + <option value="{$oCriteria->getNamespace()}">{$oCriteria->headerDisplay()}</option> |
| 90 | {/if} | 85 | {/if} |
| 91 | {/foreach} | 86 | {/foreach} |
| 92 | </select> | 87 | </select> |
templates/ktcore/boolean_search_change.smarty
| @@ -47,7 +47,7 @@ legend { border: 1px dotted #999;} | @@ -47,7 +47,7 @@ legend { border: 1px dotted #999;} | ||
| 47 | <div style="display: none" id="search-criteria-container"> | 47 | <div style="display: none" id="search-criteria-container"> |
| 48 | <select name="querytype"> | 48 | <select name="querytype"> |
| 49 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} | 49 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} |
| 50 | - <option value="{$oCriteria->getID()}">{$oCriteria->headerDisplay()}</option> | 50 | + <option value="{$oCriteria->getNamespace()}">{$oCriteria->headerDisplay()}</option> |
| 51 | {/if} | 51 | {/if} |
| 52 | {/foreach} | 52 | {/foreach} |
| 53 | </select> | 53 | </select> |
| @@ -106,7 +106,7 @@ legend { border: 1px dotted #999;} | @@ -106,7 +106,7 @@ legend { border: 1px dotted #999;} | ||
| 106 | <tr> | 106 | <tr> |
| 107 | <td><select name="querytype"> | 107 | <td><select name="querytype"> |
| 108 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} | 108 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} |
| 109 | - <option value="{$oCriteria->getID()}">{$oCriteria->headerDisplay()}</option> | 109 | + <option value="{$oCriteria->getNamespace()}">{$oCriteria->headerDisplay()}</option> |
| 110 | {/if} | 110 | {/if} |
| 111 | {/foreach} | 111 | {/foreach} |
| 112 | </select> | 112 | </select> |
templates/ktcore/boolean_search_edit.smarty
| @@ -47,7 +47,7 @@ legend { border: 1px dotted #999;} | @@ -47,7 +47,7 @@ legend { border: 1px dotted #999;} | ||
| 47 | <div style="display: none" id="search-criteria-container"> | 47 | <div style="display: none" id="search-criteria-container"> |
| 48 | <select name="querytype"> | 48 | <select name="querytype"> |
| 49 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} | 49 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} |
| 50 | - <option value="{$oCriteria->getID()}">{$oCriteria->headerDisplay()}</option> | 50 | + <option value="{$oCriteria->getNamespace()}">{$oCriteria->headerDisplay()}</option> |
| 51 | {/if} | 51 | {/if} |
| 52 | {/foreach} | 52 | {/foreach} |
| 53 | </select> | 53 | </select> |
| @@ -110,7 +110,7 @@ legend { border: 1px dotted #999;} | @@ -110,7 +110,7 @@ legend { border: 1px dotted #999;} | ||
| 110 | <tr> | 110 | <tr> |
| 111 | <td><select name="querytype"> | 111 | <td><select name="querytype"> |
| 112 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} | 112 | {foreach item=oCriteria from=$aCriteria} {if ($oCriteria->bVisible == true)} |
| 113 | - <option value="{$oCriteria->getID()}">{$oCriteria->headerDisplay()}</option> | 113 | + <option value="{$oCriteria->getNamespace()}">{$oCriteria->headerDisplay()}</option> |
| 114 | {/if} | 114 | {/if} |
| 115 | {/foreach} | 115 | {/foreach} |
| 116 | </select> | 116 | </select> |