summaryrefslogblamecommitdiffstats
path: root/library/Pbs/Search.php
blob: 709651a639aeea85187e17a85786408c4814fad3 (plain) (tree)
1
2
3
4
5
6
7
8
9


                        



                                 
                        
        
                                     
                                                                                           
                                                                                                                                        
                                                                                                    









                                                                                                                                        
                                                                       


                                                 
                                                   
                                        




                                                                                                  
                            
                                   


                                  


                                      
                                                        
                                                  
                




                                                                                                                                     





                                                        


                                          


                                         







                                             
                                                    


                                                       
                                                  

                                                                              







                                                                                   
                                                                                                                                 






                                                                           

                                                                
                 
                                                

                                      
                                                

                                      
                                                                            
                                                             
                 
                                            




                                            
<?php

class Pbs_Search{	

	private $searchTerm = '';
	private $searcha;
	private $searchb;
	private $module;
	
	public function searchForm(){
		$str = "<form  style='float:left;' action='/user/".$this->module."/search'>
			<input type='text' id='search' name='search' ".(($this->searchTerm != '')?'value="'.$this->searchTerm.'"':'').">
			<button type='submit' class='searchbutton' value='search'> Search</button>";
		$highlight = array();
		if($this->searchTerm != ''){
			$str .= "<a href='/user/client/'><img src='/media/img/delete.png' alt='Delete Client'/></a>
			<script type='text/javascript' src='/media/js/jquery.highlight-3.js'></script>";				
			foreach($this->getSearchTerms() as $term){
				$highlight[] = "$('table').highlight('".$term."');";
			}
		
		}
		$str .= "<script>
					$(document).ready(function(){";
		$str .= implode("\n",$highlight);
		$str .= "$('#search')
		.focus(function() {
			$('table th .code').show();
		}).focusout(function() {
			$('table th .code').hide();			
		});
		$('table th').click(function(){
			$('#search').val($('#search').val()+' '+$(this).find('.code').text()+':');
		});";		
		$str .= "});
			</script>";
		$str .= "</form>";
		return $str;
	}	
	public function setModule($m){
		$this->module = $m;
	}
	public function setSearchTerm($search){		
		$this->searchTerm = trim($search);
		
		$parts = explode(" ",$this->searchTerm);
		foreach($parts as $this->searchTerm){				
			if(stristr($this->searchTerm,":") && ctype_alpha(substr($this->searchTerm,0,strpos($this->searchTerm,":")))){
				$key = substr($this->searchTerm,0,strpos($this->searchTerm,":"));
				$value = substr($this->searchTerm,strpos($this->searchTerm,":")+1);	
				$searcha[$key] = $value;
			}
			else{
				$searchb[] = $search;
			}
		}
		$this->searcha = $searcha;
		$this->searchb = $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){
		
		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)){
								$com1[] = $counter;
							}
						}
					}
				}
				if(count($searchb) >= 0){
					foreach($this->searchb as $sk => $sv){							 
						 $comm = stristr($v,$sv);
						 if($comm != false){
						 	$com2[] = $counter;
						 	break;
						 }
					}
				}
			}
								
		}
		if (count($this->searcha) == 0){
			$data = $com2;
		}
		if (count($this->searchb) == 0){
			$data = $com1;
		}
		if (count($this->searcha) > 0 && count($this->searchb) > 0){
			$data = array_intersect($com1,$com2);
		}
		$data = array_unique($data);
		foreach( $data as $c)
			$ges[] = $array[$c];
		return $ges;
	}
}