type == ''){
$str .= "/user/".$this->module."/search";
}
else{
$str .= "/user/".$this->module."/search/type/".$this->type;
}
$str .= "'>
searchTerm != '')?'value="'.htmlentities($this->searchTerm, ENT_QUOTES).'"':'').">
";
$highlight = array();
if($this->searchTerm != ''){
$str .= "
";
$str .= "
$this->countresult result".(($this->countresult==1)?'':'s')." found
";
$str .="";
foreach($this->getSearchTerms() as $term){
$highlight[] = "$('table').highlight('".$term."');";
$highlight[] = "$('.element .number').highlight('".$term."');";
$highlight[] = "$('.element .title').highlight('".$term."');";
$highlight[] = "$('.element .subtitle').highlight('".$term."');";
$highlight[] = "$('.element .item').highlight('".$term."');";
}
}
$str .= "Display searchfilter
";
$str .= "";
$str .= "";
return $str;
}
public function setModule($m){
$this->module = $m;
}
public function setType($t){
$this->type = $t;
}
public function setSearchTerm($search){
$this->searchTerm = trim($search);
// search for "text"
preg_match_all("!\"(.*?)\"!is",$this->searchTerm,$matches);
$tmpsearch = $this->searchTerm;
for($i=0;$i<=count($matches[0]);$i++){
@$replace = str_replace(" ","<|>",$matches[0][$i]);
@$tmpsearch = str_replace($matches[0][$i],$replace,$tmpsearch);
}
$parts = explode(" ",$tmpsearch);
foreach($parts as $search){
if(stristr($search,":") && preg_match('/^[a-z_A-Z]+$/',$search) >= 0){
$key = substr($search,0,strpos($search,":"));
$value = substr($search,strpos($search,":")+1);
if(stristr($value,'"')){
$value = substr(str_replace('<|>',' ',$value),1,-1);
}
$searcha[$key] = $value;
}
else{
if(stristr($search,'"')){
$search = substr(str_replace('<|>',' ',$search),1,-1);
}
$searchb[] = $search;
}
}
$this->searcha = @$searcha;
$this->searchb = @$searchb;
#print_a($searcha, $searchb);
}
public function getSearchTerm(){
return $this->searchTerm;
}
public function getSearchTerms(){
$beta = $this->searcha;
foreach($this->searchb as $b)
$beta[] = $b;
return $beta;
}
public function search($array){
$this->countall = count($array);
foreach($array as $counter => $cig){
if(is_object($cig)){
$cig = $cig->toArray();
}
foreach($cig as $k => $v){
if(count($this->searcha) > 0){
foreach($this->searcha as $sk => $sv){
if($k == $sk){
if(stristr($v,$sv) || $v == $sv){
$com1[$counter] += 1;
}
}
}
}
if(count($this->searchb) >= 0){
foreach($this->searchb as $sk => $sv){
$comm = stristr($v,$sv);
if($comm != false || $v == $sv){
$com2[$counter] += 1;
}
}
}
}
#print_a($com2[$counter]." >= ".count($this->searchb)." && ".$com1[$counter]." >= ".count($this->searcha));
if($com2[$counter] >= count($this->searchb) && $com1[$counter] >= count($this->searcha)){
// add item in resultlist
$data[] = $counter;
}
}
foreach( $data as $c)
$ges[] = $array[$c];
$this->countresult = count($ges);
return $ges;
}
}