Index: trunk/kernel/include/advsearch.php =================================================================== diff -u -N -r271 -r979 --- trunk/kernel/include/advsearch.php (.../advsearch.php) (revision 271) +++ trunk/kernel/include/advsearch.php (.../advsearch.php) (revision 979) @@ -17,7 +17,7 @@ var $PctPop; var $PctRating; - function clsAdvancedSearchResults($SearchSource,$DataClass) + function clsAdvancedSearchResults($SearchSource,$DataClass, $ItemType = 0) { global $objConfig, $objSearchConfig; @@ -38,7 +38,14 @@ if(!is_object($objSearchConfig)) $objSearchConfig = new clsSearchConfigList(); $objSearchConfig->Clear(); - $objSearchConfig->Query_Item("SELECT * FROM ".$objSearchConfig->SourceTable." WHERE TableName='$SearchSource' AND AdvancedSearch=1 ORDER BY DisplayOrder"); + + if ($ItemType == 0) { + $objSearchConfig->Query_Item("SELECT * FROM ".$objSearchConfig->SourceTable." WHERE TableName='$SearchSource' AND AdvancedSearch=1 ORDER BY DisplayOrder"); + } + else { + $sql = "SELECT sc.* FROM ".$objSearchConfig->SourceTable." AS sc LEFT JOIN ".GetTablePrefix()."CustomField AS cf ON sc.CustomFieldId = cf.CustomFieldId WHERE TableName='$table' OR (TableName='CustomField' AND cf.Type = $ItemType) AND AdvancedSearch=1 ORDER BY sc.DisplayOrder"; + $objSearchConfig->Query_Item($sql); + } } function SetResultTable($SearchSource,$DataClass) @@ -98,7 +105,8 @@ $join = $FieldConfig->Get("JoinClause"); $join = str_replace("{ForeignTable}",$Table,$join); $join = str_replace("{LocalTable}",AddTablePrefix($TableName),$join); - $this->AddRlationship($Table,$join); + $join = str_replace("{Table}", $this->SourceTable, $join); + $this->AddRelationship($Table,$join); $FieldItem["where"] = $FieldConfig->GetWhereClause($Verb,$Value); $FieldItem["Field"] = $FieldConfig->Get("ForeignField"); @@ -146,7 +154,7 @@ $PopField = $ctype->Get("PopField"); $RateField = $ctype->Get("RateField"); $typestr = str_pad($ItemType,2,"0",STR_PAD_LEFT); - $SelectSQL = "SELECT ".$this->SourceTable.".".$idField." as ItemId, ". $this->SourceTable.".Priority as Relevance, ResourceId, CONCAT($typestr) as ItemType, EditorsPick as EdPick FROM ".$this->SourceTable." "; + $SelectSQL = "SELECT ".$this->SourceTable.".".$idField." as ItemId, ". $this->SourceTable.".Priority as Relevance, ".$this->SourceTable.".ResourceId, CONCAT($typestr) as ItemType, EditorsPick as EdPick FROM ".$this->SourceTable." "; foreach($this->Relationships as $JoinTable=>$OnClause) { @@ -159,9 +167,9 @@ $SelectSQL .= " WHERE ".$WhereClause; } $SelectSQL .= " GROUP BY $idField "; + //echo $SelectSQL; $this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$this->ResultTable); - $full_sql = "CREATE TABLE ".$this->ResultTable." ".$indexSQL.$SelectSQL; - + $full_sql = "CREATE TABLE ".$this->ResultTable." ".$indexSQL.$SelectSQL; $this->adodbConnection->Execute($full_sql); // if advanced seaech used, then delete simple search keywords $objSession->SetVariable('Search_Keywords', '');