Index: trunk/kernel/include/advsearch.php =================================================================== diff -u -r1108 -r1174 --- trunk/kernel/include/advsearch.php (.../advsearch.php) (revision 1108) +++ trunk/kernel/include/advsearch.php (.../advsearch.php) (revision 1174) @@ -92,6 +92,8 @@ { global $objSearchConfig; + static $x = 0; + if(!is_object($objSearchConfig)) $objSearchConfig = new clsSeachConfigList(); @@ -109,19 +111,23 @@ { if(strlen($FieldConfig->Get("ForeignField"))>0) { + $x++; $parts = explode(".",$FieldConfig->Get("ForeignField")); $Table = $parts[0]; + $pseudo = 'c'.$x; $Table = AddTablePrefix($Table); $Field = $parts[1]; $join = $FieldConfig->Get("JoinClause"); - $join = str_replace("{ForeignTable}",$Table,$join); - $join = str_replace("{LocalTable}",AddTablePrefix($TableName),$join); + $join = str_replace($Table, $pseudo, $join); + $join = str_replace("{ForeignTable}", $pseudo, $join); + $join = str_replace("{LocalTable}", $TableName, $join); $join = str_replace("{Table}", AddTablePrefix($this->SourceTable), $join); - $this->AddRelationship($Table,$join); + $join = '('.$join.' AND '.$pseudo.'.CustomFieldId='.$FieldConfig->Get('CustomFieldId').')'; + $this->AddRelationship($Table.' AS '.$pseudo, $join); - $FieldItem["where"] = GetTablePrefix().$FieldConfig->GetWhereClause($Verb,$Value); + $FieldItem["where"] = str_replace('CustomMetaData', $pseudo, $FieldConfig->GetWhereClause($Verb,$Value)); $FieldItem["Field"] = $FieldConfig->Get("ForeignField"); - $FieldItem["Table"] = ""; + $FieldItem["Table"] = $pseudo; $FieldItem["conjuction"] = $conj; $FieldItem["weight"] = $FieldConfig->Get("Priority"); } @@ -130,7 +136,7 @@ $FieldItem = array(); $FieldItem["Table"] = AddTablePrefix($TableName); $FieldItem["Field"] = $FieldName; - $FieldItem["where"] = $FieldConfig->GetWhereClause($Verb,$Value); + $FieldItem["where"] = $FieldItem["Table"].'.'.$FieldConfig->GetWhereClause($Verb,$Value); $FieldItem["conjuction"] = $conj; $FieldItem["weight"] = $FieldConfig->Get("Priority"); }