Index: trunk/kernel/include/advsearch.php =================================================================== diff -u -r35 -r80 --- trunk/kernel/include/advsearch.php (.../advsearch.php) (revision 35) +++ trunk/kernel/include/advsearch.php (.../advsearch.php) (revision 80) @@ -116,6 +116,7 @@ $FieldItem["weight"] = $FieldConfig->Get("Priority"); } $this->FieldList[] = $FieldItem; + unset($FieldItem); } } @@ -126,9 +127,10 @@ { $where = ""; foreach($this->FieldList as $f) - { $where .= " (".$f["where"].") ".$f["conjuction"]; - } + + $cut_length = substr($where, -2) == 'OR' ? 2 : substr($where, -3) == 'AND' ? 3 : 0; + $where = substr($where, 0, strlen($where) - $cut_length); return $where; } @@ -156,12 +158,14 @@ { $SelectSQL .= " WHERE ".$WhereClause; } - $SelectSQL .= "GROUP BY $idField "; + $SelectSQL .= " GROUP BY $idField "; $this->adodbConnection->Execute("DROP TABLE ".$this->ResultTable); $full_sql = "CREATE TABLE ".$this->ResultTable." ".$indexSQL.$SelectSQL; $this->adodbConnection->Execute($full_sql); - //echo "
$full_sql
"; + // if advanced seaech used, then delete simple search keywords + $objSession->SetVariable('Search_Keywords', ''); + //print_pre($full_sql); } function BuildIndexes() Index: trunk/kernel/include/parseditem.php =================================================================== diff -u -r29 -r80 --- trunk/kernel/include/parseditem.php (.../parseditem.php) (revision 29) +++ trunk/kernel/include/parseditem.php (.../parseditem.php) (revision 80) @@ -2695,11 +2695,13 @@ function LoadSearchItems($attribs = array()) { global $CountVal, $objSession; - + //echo "Loading ".get_class($this)." Search Items
"; $sql = $this->SqlSearchItems($attribs); + //echo "$sql
"; $this->Query_Item($sql); $Keywords = GetKeywords($objSession->GetVariable("Search_Keywords")); - for($i=0;$i<$this->NumItems(); $i++) + //echo "SQL Loaded ItemCount (".get_class($this).'): '.$this->NumItems().'
'; + for($i = 0; $i < $this->NumItems(); $i++) { $this->Items[$i]->Keywords = $Keywords; } Index: trunk/kernel/parser.php =================================================================== diff -u -r29 -r80 --- trunk/kernel/parser.php (.../parser.php) (revision 29) +++ trunk/kernel/parser.php (.../parser.php) (revision 80) @@ -1762,7 +1762,7 @@ if(!is_object($objSearchCats)) { $objSearchCats = new clsCatList(); - $objSearchCats->SourceTable="ses_".$objSession->GetSessionKey()."_Search"; + $objSearchCats->SourceTable = $objSession->GetSessionTable('Search'); //"ses_".$objSession->GetSessionKey()."_Search" $objSearchCats->Clear(); } $objSearchCats->PerPageVar = "Perpage_Category"; @@ -1772,12 +1772,15 @@ $m_var_list["p"] = 1; $objSearchCats->PerPageVar = "Perpage_Category_Short"; } + + $keywords = $objSession->GetVariable("Search_Keywords"); // for using in all this func branches + if($objSearchCats->NumItems()==0) { LoadCatSearchResults($attribs); //echo "Cat count: ". $objSearchCats->QueryItemCount; $ret = 0; - if ($_POST['keywords']) { + if ($keywords) { foreach ($objSearchCats->Items as $cat) { if (strstr(strip_tags(strtolower($cat->Data['Name'])), strtolower($_POST['keywords'])) || strstr(strip_tags(strtolower($cat->Data['Description'])), strtolower($_POST['keywords']))) { @@ -1850,14 +1853,10 @@ //echo "
"; print_r($objSearchCats->Items); echo "
"; foreach($objSearchCats->Items as $cat) { - $cat->Keywords = GetKeywords($objSession->GetVariable("Search_Keywords")); - $keywords = $objSession->GetVariable("Search_Keywords"); - - //echo "
"; print_r($objSession->GetVariable("Search_Keywords")); echo "
"; - //echo $_POST['keywords']."
"; - //echo $cat->Data['Name']."
"; - - if (strstr(strip_tags(strtolower($cat->Data['Name'])), strtolower($keywords)) || strstr(strip_tags(strtolower($cat->Data['Description'])), strtolower($keywords))) { + //$cat->Keywords = GetKeywords($objSession->GetVariable("Search_Keywords")); + $keywords_found = strstr( strip_tags(strtolower($cat->Data['Name'])), strtolower($keywords)) || strstr(strip_tags(strtolower($cat->Data['Description'])), strtolower($keywords)); + if(!$keywords) $keywords_found = true; + if ($keywords_found) { if($row==0 && strlen($attribs["_firstitemtemplate"])) { $o.= $cat->ParseTemplate($attribs["_firstitemtemplate"]); @@ -3253,7 +3252,6 @@ { global $objItemTypes, $objCatList, $objSession, $CountVal, $objSearchCats; - if(!is_object($objSearchCats)) { $objSearchCats = new clsCatList(); @@ -3262,9 +3260,9 @@ } LoadCatSearchResults($attribs); - //echo "
"; print_r($objSearchCats->Items); echo "
"; + //echo "
"; print_r($objSearchCats->Items); echo "
"; $ret = 0; - $keywords = $objSession->GetVariable("Search_Keywords"); + $keywords = $objSession->GetVariable("Search_Keywords"); if ($keywords) { foreach ($objSearchCats->Items as $cat) { Index: trunk/kernel/include/searchconfig.php =================================================================== diff -u -r13 -r80 --- trunk/kernel/include/searchconfig.php (.../searchconfig.php) (revision 13) +++ trunk/kernel/include/searchconfig.php (.../searchconfig.php) (revision 80) @@ -59,15 +59,15 @@ $where = str_replace("{Value}",$value,$this->Get("IsWhere")); } else - $where = $field." = ".$value; + $where = $field." = '".$value."'"; break; case "isnot": if(strlen($this->Get("IsNotWhere"))) { $where = str_replace("{Value}",$value,$this->Get("IsNotWhere")); } else - $where = $field." != ".$value; + $where = $field." != '".$value."'"; break; case "contains": if(strlen($this->Get("ContainsWhere"))) @@ -204,13 +204,12 @@ case "andor_radio": $name = $this->Get("FieldName"); $Field = "andor[$name]"; - if($FormValues[$Field]=="1") - $checked=" checked"; - $ret = "".language("lu_and"); - $checked = ""; - if($FormValues[$Field]=="2") - $checked=" checked"; - $ret .= "".language("lu_or"); + $checked = Array(1 => '', 2 => ''); + $checked[ $FormValues[$Field] ] = ' checked'; + if(!$FormValues[$Field]) $checked[1] = ' checked'; + print_pre($checked); + $ret = "".language("lu_and"); + $ret .= "".language("lu_or"); return $ret; } Index: trunk/kernel/frontaction.php =================================================================== diff -u -r35 -r80 --- trunk/kernel/frontaction.php (.../frontaction.php) (revision 35) +++ trunk/kernel/frontaction.php (.../frontaction.php) (revision 80) @@ -750,6 +750,7 @@ switch($_GET["type"]) { case 1: /* category */ + //echo "Searching for categories
"; $objAdvSearch = new clsAdvancedSearchResults("Category","clsCategory"); foreach($objSearchConfig->Items as $field) { @@ -781,7 +782,10 @@ break; } if(strlen($Verb)>0 && $Verb!="any") + { + echo "Adding CAT SearchField: [".$field->Get("TableName")."]; [".$field->Get("FieldName")."]; [$Verb]; [$Value]; [$Conjuction]
"; $objAdvSearch->AddAdvancedField($field->Get("TableName"),$field->Get("FieldName"),$Verb,$Value,$Conjuction); + } } $objAdvSearch->PerformSearch(1,NULL,TRUE);