load($filename)) { die("Cannot parse $filename!"); } $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE)); } function load($filename) { $contents = file_get_contents($filename); $this->xmlData= xml::xml2array($contents, 1); if (!isset($this->xmlData['filterdef'])) { return false; } $this->xmlData= $this->xmlData["filterdef"]; // Transfer category if (isset($this->xmlData['definition']['category'])){ $this->category= $this->xmlData['definition']['category']; } // Load filter if (isset($this->xmlData['search'])) { // Array conversion if (!is_array($this->xmlData['search'])) { $searches= array($this->xmlData['search']); } else { $searches= $this->xmlData['search']; } // Fix problem with only one defined query. if(isset($this->xmlData['search']['query'])){ $this->xmlData['search'] = array($this->xmlData['search']); } /* Store available searches */ foreach ($this->xmlData['search'] as $search) { /* Do multi conversation */ if (!is_array($search['query'])){ $search['query']= array($search['query']); } /* Store search */ $search['fixed'] = TRUE; $this->searches[$search['tag']]= $search; } $this->reloadUserFilter(); } else { return false; } // Transfer scope $this->scopeMode= $this->xmlData['definition']['scope']; if ($this->scopeMode == "auto") { $this->scope= "one"; } else { $this->scope= $this->scopeMode; } // Transfer initial value if (isset($this->xmlData['definition']['initial']) && $this->xmlData['definition']['initial'] == "true"){ $this->initial= true; } // Set default search mode $this->setSearch($this->xmlData['definition']['default']); return true; } function reloadUserFilter() { // First remove all user filters foreach($this->searches as $k => $s) { if(!$s['fixed']) unset($this->searches[$k]); } // Readd user filter. foreach(userFilter::getFilter(array($this->category)) as $filter){ $tmp = array(); $tmp['tag'] = $filter['name']; $tmp['label'] = $filter['description']; $tmp['query'] = array(); foreach($filter['queries'] as $query){ if(isset($this->searches[$filter['parent']]['query']['attribute'])){ $query['attribute'] = $this->searches[$filter['parent']]['query']['attribute']; }else{ $query['attribute'] = $this->searches[$filter['parent']]['query'][0]['attribute']; } $tmp['query'][] = $query; } $tmp['autocomplete'] = $this->searches[$filter['parent']]['autocomplete']; $tmp['fixed'] = FALSE; $this->searches[$tmp['tag']] = $tmp; } } function setSearch($method) { $patch= null; // Move information if (isset($this->searches[$method])) { $this->query= array_merge($this->searches[$method]['query']); if (!isset($this->query[0])) { $this->query= array($this->query); } $this->search= $method; } else { die ("Invalid search module!"); } } function getTextfield($tag, $value= "", $element= null) { $size= 30; $maxlength= 30; $result= ""; if ($element && isset($element['autocomplete'])) { $frequency= "0.5"; $characters= "1"; if (isset($element['autocomplete']['frequency'])) { $frequency= $element['autocomplete']['frequency']; } if (isset($element['autocomplete']['characters'])) { $characters= $element['autocomplete']['characters']; } $result.= "
". ""; $this->autocompleters[$tag]= $element; } return $result; } function getCurrentBase() { if (isset($this->search->base) && (string)$this->search->scope != "auto") { return false; } return $this->base; } function getCurrentScope() { if (isset($this->search->scope) && (string)$this->search->scope != "auto") { return (string)$this->search->scope; } return $this->scope; } function setConverter($hook) { $this->converter= $hook; } function setObjectStorage($storage) { $this->objectStorage= $storage; } function setBase($base) { $this->base= $base; } function setCurrentScope($scope) { $this->scope= $scope; } function render() { $this->reloadUserFilter(); $content= "".$this->renderFilterMenu()." | ";
$content.= " ".$this->getTextfield('search_filter', $this->value, $this->searches[$this->search])." ".
" |