Skip to content
This repository was archived by the owner on Aug 1, 2021. It is now read-only.

Commit cd1bff7

Browse files
author
Uwe Steinmann
committed
fix searching for multi value attributes
1 parent 6be6334 commit cd1bff7

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

SeedDMS_Core/Core/inc.ClassDMS.php

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,9 @@ function makeTimeStamp($hour, $min, $sec, $year, $month, $day) { /* {{{ */
550550
* @param modificationstartdate array search for documents modified after this date
551551
* @param modificationenddate array search for documents modified before this date
552552
* @param categories array list of categories the documents must have assigned
553-
* @param attributes array list of attributes
553+
* @param attributes array list of attributes. The key of this array is the
554+
* attribute definition id. The value of the array is the value of the
555+
* attribute. If the attribute may have multiple values it must be an array.
554556
* @param mode int decide whether to search for documents/folders
555557
* 0x1 = documents only
556558
* 0x2 = folders only
@@ -623,10 +625,13 @@ function search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array
623625
foreach($attributes as $attrdefid=>$attribute) {
624626
if($attribute) {
625627
$attrdef = $this->getAttributeDefinition($attrdefid);
626-
if($attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_folder) {
627-
if($attrdef->getValueSet())
628-
$searchAttributes[] = "`tblFolderAttributes`.`attrdef`=".$attrdefid." AND `tblFolderAttributes`.`value`='".$attribute."'";
629-
else
628+
if($attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_folder || $attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_all) {
629+
if($valueset = $attrdef->getValueSet()) {
630+
if($attrdef->getMultipleValues()) {
631+
$searchAttributes[] = "`tblFolderAttributes`.`attrdef`=".$attrdefid." AND (`tblFolderAttributes`.`value` like '".$valueset[0].implode("%' OR `tblFolderAttributes`.`value` like '".$valueset[0], $attribute)."%')";
632+
} else
633+
$searchAttributes[] = "`tblFolderAttributes`.`attrdef`=".$attrdefid." AND `tblDocumentAttributes`.`value`='".$attribute."'";
634+
} else
630635
$searchAttributes[] = "`tblFolderAttributes`.`attrdef`=".$attrdefid." AND `tblFolderAttributes`.`value` like '%".$attribute."%'";
631636
}
632637
}
@@ -783,10 +788,13 @@ function search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array
783788
foreach($attributes as $attrdefid=>$attribute) {
784789
if($attribute) {
785790
$attrdef = $this->getAttributeDefinition($attrdefid);
786-
if($attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_document) {
787-
if($attrdef->getValueSet())
788-
$searchAttributes[] = "`tblDocumentAttributes`.`attrdef`=".$attrdefid." AND `tblDocumentAttributes`.`value`='".$attribute."'";
789-
else
791+
if($attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_document || $attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_all) {
792+
if($valueset = $attrdef->getValueSet()) {
793+
if($attrdef->getMultipleValues()) {
794+
$searchAttributes[] = "`tblDocumentAttributes`.`attrdef`=".$attrdefid." AND (`tblDocumentAttributes`.`value` like '".$valueset[0].implode("%' OR `tblDocumentAttributes`.`value` like '".$valueset[0], $attribute)."%')";
795+
} else
796+
$searchAttributes[] = "`tblDocumentAttributes`.`attrdef`=".$attrdefid." AND `tblDocumentAttributes`.`value`='".$attribute."'";
797+
} else
790798
$searchAttributes[] = "`tblDocumentAttributes`.`attrdef`=".$attrdefid." AND `tblDocumentAttributes`.`value` like '%".$attribute."%'";
791799
} elseif($attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_documentcontent) {
792800
if($attrdef->getValueSet())

0 commit comments

Comments
 (0)