summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9302e6d)
raw | patch | inline | side by side (parent: 9302e6d)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 29 Jul 2010 13:19:45 +0000 (13:19 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 29 Jul 2010 13:19:45 +0000 (13:19 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19243 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-core/include/class_filter.inc | patch | blob | history |
index 04de2dae2c5cb13fce48ef21f3638fe6ce823937..38c4faf4d7e6628979a50cccbc4f628d5f3a9d36 100644 (file)
class filter {
- var $searches= array();
- var $xmlSearches= array();
- var $attributes= array();
- var $search;
- var $defaultSearch;
- var $category= "";
- var $objectStorage= array();
- var $base= "";
- var $scope= "";
- var $query;
- var $value= "";
- var $initial= false;
- var $scopeMode= "auto";
- var $converter= null;
- var $pid;
-
-
- function filter($filename)
- {
- global $config;
-
- // Load eventually passed filename
- if (!$this->load($filename)) {
- die("Cannot parse $filename!");
+ var $searches= array();
+ var $xmlSearches= array();
+ var $attributes= array();
+ var $search;
+ var $defaultSearch;
+ var $category= "";
+ var $objectStorage= array();
+ var $base= "";
+ var $scope= "";
+ var $query;
+ var $value= "";
+ var $initial= false;
+ var $scopeMode= "auto";
+ var $converter= null;
+ var $pid;
+
+
+ function filter($filename)
+ {
+ global $config;
+
+ // Load eventually passed filename
+ if (!$this->load($filename)) {
+ die("Cannot parse $filename!");
+ }
+
+ $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE));
}
- $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE));
- }
+ function load($filename)
+ {
+ $contents = file_get_contents($filename);
+ $xmlData= xml::xml2array($contents, 1);
- function load($filename)
- {
- $contents = file_get_contents($filename);
- $xmlData= xml::xml2array($contents, 1);
+ if (!isset($xmlData['filterdef'])) {
+ return false;
+ }
- if (!isset($xmlData['filterdef'])) {
- return false;
- }
+ $xmlData= $xmlData["filterdef"];
+
+ // Load filter
+ if (isset($xmlData['search'])) {
- $xmlData= $xmlData["filterdef"];
+ // Array conversion
+ if (!isset($xmlData['search'][0])) {
+ $searches= array($xmlData['search']);
+ } else {
+ $searches= $xmlData['search'];
+ }
+
+ /* Store available searches */
+ foreach ($searches as $search) {
+
+ /* Do multi conversation */
+ if (!isset($search['query'][0])){
+ $search['query']= array($search['query']);
+ }
- // Load filter
- if (isset($xmlData['search'])) {
+ /* Store search */
+ $this->xmlSearches[$search['tag']]= $search;
- // Array conversion
- if (!isset($xmlData['search'][0])) {
- $searches= array($xmlData['search']);
- } else {
- $searches= $xmlData['search'];
- }
+ }
+ } else {
+ return false;
+ }
- /* Store available searches */
- foreach ($searches as $search) {
+ // Transfer scope
+ $this->scopeMode= $xmlData['definition']['scope'];
+ if ($this->scopeMode == "auto") {
+ $this->scope= "one";
+ } else {
+ $this->scope= $this->scopeMode;
+ }
- /* Do multi conversation */
- if (!isset($search['query'][0])){
- $search['query']= array($search['query']);
+ // Transfer attributes
+ $this->attributes= $xmlData['definition']['attribute'];
+ if (!is_array($this->attributes)) {
+ $this->attributes= array($this->attributes);
}
- /* Store search */
- $this->xmlSearches[$search['tag']]= $search;
+ // Transfer initial value
+ if (isset($xmlData['definition']['initial']) && $xmlData['definition']['initial'] == "true"){
+ $this->initial= true;
+ }
- }
- } else {
- return false;
- }
+ // Transfer category
+ if (isset($xmlData['definition']['category'])){
+ $this->category= $xmlData['definition']['category'];
+ }
+ if (!is_array($this->category)) {
+ $this->category= array($this->category);
+ }
- // Transfer scope
- $this->scopeMode= $xmlData['definition']['scope'];
- if ($this->scopeMode == "auto") {
- $this->scope= "one";
- } else {
- $this->scope= $this->scopeMode;
- }
+ // Initialize searches and default search mode
+ $this->defaultSearch= $xmlData['definition']['default'];
+ $this->reloadFilters();
+ $this->setSearch($this->defaultSearch);
- // Transfer attributes
- $this->attributes= $xmlData['definition']['attribute'];
- if (!is_array($this->attributes)) {
- $this->attributes= array($this->attributes);
+ return true;
}
- // Transfer initial value
- if (isset($xmlData['definition']['initial']) && $xmlData['definition']['initial'] == "true"){
- $this->initial= true;
- }
- // Transfer category
- if (isset($xmlData['definition']['category'])){
- $this->category= $xmlData['definition']['category'];
- }
- if (!is_array($this->category)) {
- $this->category= array($this->category);
+ function reloadFilters()
+ {
+ $this->searches= array_merge($this->xmlSearches, userFilter::getFilter($this->category));
+ $this->setSearch($this->search);
}
- // Initialize searches and default search mode
- $this->defaultSearch= $xmlData['definition']['default'];
- $this->reloadFilters();
- $this->setSearch($this->defaultSearch);
- return true;
- }
+ function setSearch($method= null)
+ {
+ $patch= null;
+ // Maybe our search method has gone?
+ if (!isset($this->searches[$method])) {
+ $method= $this->defaultSearch;
+ }
- function reloadFilters()
- {
- $this->searches= array_merge($this->xmlSearches, userFilter::getFilter($this->category));
- $this->setSearch($this->search);
- }
+ // Try to use it, but bail out if there's no help...
+ if (isset($this->searches[$method])) {
+ $this->query= $this->searches[$method]['query'];
+ $this->search= $method;
+ } else {
+ die ("Invalid search module!");
+ }
+ }
- function setSearch($method= null)
- {
- $patch= null;
+ function getTextfield($tag, $value= "", $element= null)
+ {
+ $size= 30;
+ $maxlength= 30;
+ $result= "<input class='filter_textfield' placeholder='"._("Search")."...' id='$tag' name='$tag' type='text' size='$size' maxlength='{$maxlength}' value='".$value."'>";
+ 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.= "<div id='autocomplete$tag' class='autocomplete'></div>".
+ "<script type='text/javascript'>".
+ "new Ajax.Autocompleter('$tag', 'autocomplete$tag', 'autocomplete.php', { minChars: $characters, frequency: $frequency });".
+ "</script>";
- // Maybe our search method has gone?
- if (!isset($this->searches[$method])) {
- $method= $this->defaultSearch;
+ $this->autocompleters[$tag]= $element;
+ }
+ return $result;
}
- // Try to use it, but bail out if there's no help...
- if (isset($this->searches[$method])) {
- $this->query= $this->searches[$method]['query'];
- $this->search= $method;
- } else {
- die ("Invalid search module!");
- }
- }
-
-
- function getTextfield($tag, $value= "", $element= null)
- {
- $size= 30;
- $maxlength= 30;
- $result= "<input class='filter_textfield' placeholder='"._("Search")."...' id='$tag' name='$tag' type='text' size='$size' maxlength='{$maxlength}' value='".$value."'>";
- 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.= "<div id='autocomplete$tag' class='autocomplete'></div>".
- "<script type='text/javascript'>".
- "new Ajax.Autocompleter('$tag', 'autocomplete$tag', 'autocomplete.php', { minChars: $characters, frequency: $frequency });".
- "</script>";
-
- $this->autocompleters[$tag]= $element;
+
+ function getCurrentBase()
+ {
+ if (isset($this->search->base) && (string)$this->search->scope != "auto") {
+ return false;
+ }
+
+ return $this->base;
}
- return $result;
- }
- function getCurrentBase()
- {
- if (isset($this->search->base) && (string)$this->search->scope != "auto") {
- return false;
+ function getCurrentScope()
+ {
+ if (isset($this->search->scope) && (string)$this->search->scope != "auto") {
+ return (string)$this->search->scope;
+ }
+
+ return $this->scope;
}
- return $this->base;
- }
+
+ function setConverter($hook)
+ {
+ $this->converter= $hook;
+ }
- function getCurrentScope()
- {
- if (isset($this->search->scope) && (string)$this->search->scope != "auto") {
- return (string)$this->search->scope;
+ function setObjectStorage($storage)
+ {
+ $this->objectStorage= $storage;
}
- return $this->scope;
- }
+ function setBase($base)
+ {
+ $this->base= $base;
+ }
- function setConverter($hook)
- {
- $this->converter= $hook;
- }
+ function setCurrentScope($scope)
+ {
+ $this->scope= $scope;
+ }
- function setObjectStorage($storage)
- {
- $this->objectStorage= $storage;
- }
- function setBase($base)
- {
- $this->base= $base;
- }
+ function render()
+ {
+ $content= "<table class='filter-wrapper' summary='"._("Search filter")."'><tr><td>".$this->renderFilterMenu()."</td><td>";
+ $content.= "<div class='search-filter'>".$this->getTextfield('search_filter', $this->value, $this->searches[$this->search])."</div>".
+ " <button class='search-filter' type='submit' title='"._("Search")."'>".image("images/find.png")."</button></td></tr></table>";
+ // Return meta data
+ return ("<input type='hidden' name='FILTER_PID' value='".$this->pid."'>".$content);
+ }
- function setCurrentScope($scope)
- {
- $this->scope= $scope;
- }
+ function query()
+ {
+ global $class_mapping;
+ $result= array();
+ // Return empty list if initial is not set
+ if (!$this->initial) {
+ $this->initial= true;
+ return $result;
+ }
+ // Go thru all queries and merge results
+ foreach ($this->query as $query) {
+ if (!isset($query['backend']) || !isset($query['filter'])) {
+ die("No backend specified in search config.");
+ }
- function render()
- {
- $content= "<table class='filter-wrapper' summary='"._("Search filter")."'><tr><td>".$this->renderFilterMenu()."</td><td>";
- $content.= "<div class='search-filter'>".$this->getTextfield('search_filter', $this->value, $this->searches[$this->search])."</div>".
- " <button class='search-filter' type='submit' title='"._("Search")."'>".image("images/find.png")."</button></td></tr></table>";
+ // Is backend available?
+ $backend= "filter".$query['backend'];
+ if (!isset($class_mapping["$backend"])) {
+ die("Invalid backend specified in search config.");
+ }
- // Return meta data
- return ("<input type='hidden' name='FILTER_PID' value='".$this->pid."'>".$content);
- }
+ // Load filter and attributes
+ $filter= $query['filter'];
+
+ // Handle converters if present
+ if ($this->converter) {
+ preg_match('/([^:]+)::(.*)$/', $this->converter, $m);
+ if ($this->value == "") {
+ $filter= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', "*", $filter));
+ } else {
+ $filter= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->value, $filter));
+ }
+ }
+ // Do not replace escaped \$ - This is required to be able to search for e.g. windows machines.
+ if ($this->value == "") {
+ $filter= preg_replace("/\\$/", '*', $filter);
+ } else {
+ $filter= preg_replace("/\\$/", "*".normalizeLdap($this->value)."*", $filter);
+ }
- function query()
- {
- global $class_mapping;
- $result= array();
+ $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $this->attributes, $this->category, $this->objectStorage));
+ }
- // Return empty list if initial is not set
- if (!$this->initial) {
- $this->initial= true;
- return $result;
+ return ($result);
}
- // Go thru all queries and merge results
- foreach ($this->query as $query) {
- if (!isset($query['backend']) || !isset($query['filter'])) {
- die("No backend specified in search config.");
- }
-
- // Is backend available?
- $backend= "filter".$query['backend'];
- if (!isset($class_mapping["$backend"])) {
- die("Invalid backend specified in search config.");
- }
-
- // Load filter and attributes
- $filter= $query['filter'];
-
- // Handle converters if present
- if ($this->converter) {
- preg_match('/([^:]+)::(.*)$/', $this->converter, $m);
- if ($this->value == "") {
- $filter= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', "*", $filter));
- } else {
- $filter= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->value, $filter));
- }
- }
- // Do not replace escaped \$ - This is required to be able to search for e.g. windows machines.
- if ($this->value == "") {
- $filter= preg_replace("/\\$/", '*', $filter);
- } else {
- $filter= preg_replace("/\\$/", "*".normalizeLdap($this->value)."*", $filter);
- }
- $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $this->attributes, $this->category, $this->objectStorage));
- }
+ function update()
+ {
+ if (isset($_POST['FILTER_PID']) && $_POST['FILTER_PID'] == $this->pid) {
+ // Save input field
+ if (isset($_POST['search_filter'])) {
+ $this->value= get_post('search_filter');
+ }
+
+ // Save scope if needed
+ if ($this->scopeMode == "auto" && isset($_POST['act']) && $_POST['act'] == "toggle-subtree") {
+ $this->scope= ($this->scope == "one")?"sub":"one";
+ }
- return ($result);
- }
-
-
- function update()
- {
- if (isset($_POST['FILTER_PID']) && $_POST['FILTER_PID'] == $this->pid) {
- // Save input field
- if (isset($_POST['search_filter'])) {
- $this->value= validate($_POST['search_filter']);
- }
-
- // Save scope if needed
- if ($this->scopeMode == "auto" && isset($_POST['act']) && $_POST['act'] == "toggle-subtree") {
- $this->scope= ($this->scope == "one")?"sub":"one";
- }
-
- // Switch filter?
- if (isset($_POST['act'])) {
- foreach ($this->searches as $tag => $cfg) {
- if ($_POST['act'] == "filter-$tag") {
- $this->setSearch($tag);
- break;
- }
+ // Switch filter?
+ if (isset($_POST['act'])) {
+ foreach ($this->searches as $tag => $cfg) {
+ if ($_POST['act'] == "filter-$tag") {
+ $this->setSearch($tag);
+ break;
+ }
+ }
+ }
}
- }
+
}
- }
+ function getCompletitionList($config, $value="*")
+ {
+ global $class_mapping;
+ $res= array();
- function getCompletitionList($config, $value="*")
- {
- global $class_mapping;
- $res= array();
+ // Load result attributes
+ $attributes= $config['autocomplete']['attribute'];
+ if (!is_array($attributes)) {
+ $attributes= array($attributes);
+ }
- // Load result attributes
- $attributes= $config['autocomplete']['attribute'];
- if (!is_array($attributes)) {
- $attributes= array($attributes);
- }
+ // Do the query
+ $result= array();
- // Do the query
- $result= array();
+ // Is backend available?
+# FIXME
+ $queries= $config['query'];
+ if (!isset($queries[0])){
+ $queries= array($queries);
+ }
+ foreach ($queries as $query) {
+ $backend= "filter".$query['backend'];
+ if (!isset($class_mapping["$backend"])) {
+ die("Invalid backend specified in search config.");
+ }
+ $filter= preg_replace("/\\$/", "*".normalizeLdap($value)."*", $query['filter']);
- // Is backend available?
- # FIXME
- $queries= $config['query'];
- if (!isset($queries[0])){
- $queries= array($queries);
- }
- foreach ($queries as $query) {
- $backend= "filter".$query['backend'];
- if (!isset($class_mapping["$backend"])) {
- die("Invalid backend specified in search config.");
- }
- $filter= preg_replace("/\\$/", "*".normalizeLdap($value)."*", $query['filter']);
-
- $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
- $this->category, $this->objectStorage));
- }
+ $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
+ $this->category, $this->objectStorage));
+ }
- foreach ($result as $entry) {
- foreach ($attributes as $attribute) {
- if (is_array($entry[$attribute])) {
- for ($i= 0; $i<$entry[$attribute]['count']; $i++) {
- if (mb_stristr($entry[$attribute][$i], $value)) {
- $res[]= $entry[$attribute][$i];
+ foreach ($result as $entry) {
+ foreach ($attributes as $attribute) {
+ if (is_array($entry[$attribute])) {
+ for ($i= 0; $i<$entry[$attribute]['count']; $i++) {
+ if (mb_stristr($entry[$attribute][$i], $value)) {
+ $res[]= $entry[$attribute][$i];
+ }
+ }
+ } else {
+ $res[]= $entry[$attribute];
+ }
}
- }
- } else {
- $res[]= $entry[$attribute];
}
- }
+
+ return $res;
}
- return $res;
- }
+ function processAutocomplete()
+ {
+ global $class_mapping;
+ $result= array();
- function processAutocomplete()
- {
- global $class_mapping;
- $result= array();
+ // Introduce maximum number of entries
+ $max= 25;
- // Introduce maximum number of entries
- $max= 25;
+ if(isset($this->searches[$this->search]['autocomplete'])){
+ $result= $this->getCompletitionList($this->searches[$this->search], get_post('search_filter'));
+ $result= array_unique($result);
+ asort($result);
- if(isset($this->searches[$this->search]['autocomplete'])){
- $result= $this->getCompletitionList($this->searches[$this->search], $_POST['search_filter']);
- $result= array_unique($result);
- asort($result);
+ echo '<ul>';
+ foreach ($result as $entry) {
+ echo '<li>'.mark(get_post('search_filter'), $entry).'</li>';
+ if ($max-- == 0) {
+ break;
+ }
+ }
- echo '<ul>';
- foreach ($result as $entry) {
- echo '<li>'.mark($_POST['search_filter'], $entry).'</li>';
- if ($max-- == 0) {
- break;
+ echo '</ul>';
}
- }
-
- echo '</ul>';
}
- }
- function getObjectBase($dn)
- {
- global $config;
- $base= "";
+ function getObjectBase($dn)
+ {
+ global $config;
+ $base= "";
- // Try every object storage
- $storage= $this->objectStorage;
- if (!is_array($storage)){
- $storage= array($storage);
- }
- foreach ($storage as $location) {
- $pattern= "/^[^,]+,".preg_quote($location, '/')."/i";
- $base= preg_replace($pattern, '', $dn);
- }
+ // Try every object storage
+ $storage= $this->objectStorage;
+ if (!is_array($storage)){
+ $storage= array($storage);
+ }
+ foreach ($storage as $location) {
+ $pattern= "/^[^,]+,".preg_quote($location, '/')."/i";
+ $base= preg_replace($pattern, '', $dn);
+ }
- /* Set to base, if we're not on a correct subtree */
- if (!isset($config->idepartments[$base])){
- $base= $config->current['BASE'];
- }
+ /* Set to base, if we're not on a correct subtree */
+ if (!isset($config->idepartments[$base])){
+ $base= $config->current['BASE'];
+ }
- return $base;
- }
+ return $base;
+ }
- function renderFilterMenu()
- {
- // Load shortcut
- $result= "<ul class='level1' id='filter-root'><li><a href='#'>".image("images/filter.png").image("images/lists/sort-down.png")."</a>";
+ function renderFilterMenu()
+ {
+ // Load shortcut
+ $result= "<ul class='level1' id='filter-root'><li><a href='#'>".image("images/filter.png").image("images/lists/sort-down.png")."</a>";
- // Build ul/li list
- $separator= " style='border-top:1px solid #AAA' ";
- $result.= "<ul class='level2'>";
+ // Build ul/li list
+ $separator= " style='border-top:1px solid #AAA' ";
+ $result.= "<ul class='level2'>";
- // Build in filters
- foreach ($this->xmlSearches as $tag => $config) {
- $label = htmlentities(_($config['label']),ENT_COMPAT,'UTF-8');
- if ($tag == $this->search) {
- $result.= "<li><a href='#'>".image("images/checked.png")." ".$label."</a></li>";
- } else {
- $result.= "<li><a href='#' onClick='\$(\"act\").value= \"filter-$tag\";\$(\"exec_act\").click();'>".image("images/empty.png")." ".$label."</a></li>";
- }
- }
+ // Build in filters
+ foreach ($this->xmlSearches as $tag => $config) {
+ $label = htmlentities(_($config['label']),ENT_COMPAT,'UTF-8');
+ if ($tag == $this->search) {
+ $result.= "<li><a href='#'>".image("images/checked.png")." ".$label."</a></li>";
+ } else {
+ $result.= "<li><a href='#' onClick='\$(\"act\").value= \"filter-$tag\";\$(\"exec_act\").click();'>".image("images/empty.png")." ".$label."</a></li>";
+ }
+ }
- // User defined filters
- $first= true;
- foreach (userFilter::getFilter($this->category) as $tag => $config) {
- if ($tag == $this->search) {
- $result.= "<li".($first?$separator:"")."><a href='#'>".image("images/checked.png")." "._($config['description'])."</a></li>";
- } else {
- $result.= "<li".($first?$separator:"")."><a href='#' onClick='\$(\"act\").value= \"filter-$tag\";\$(\"exec_act\").click();'>".image("images/empty.png")." "._($config['description'])."</a></li>";
- }
+ // User defined filters
+ $first= true;
+ foreach (userFilter::getFilter($this->category) as $tag => $config) {
+ if ($tag == $this->search) {
+ $result.= "<li".($first?$separator:"")."><a href='#'>".image("images/checked.png")." "._($config['description'])."</a></li>";
+ } else {
+ $result.= "<li".($first?$separator:"")."><a href='#' onClick='\$(\"act\").value= \"filter-$tag\";\$(\"exec_act\").click();'>".image("images/empty.png")." "._($config['description'])."</a></li>";
+ }
- $first= false;
- }
+ $first= false;
+ }
- // Render scope if set to auto
- if ($this->scopeMode == "auto") {
- $result.= "<li$separator><a href='#' onClick='\$(\"act\").value= \"toggle-subtree\";\$(\"exec_act\").click();'>".($this->scope=="one"?image("images/empty.png"):image("images/checked.png"))." "._("Search in subtrees")."</a></li>";
- }
+ // Render scope if set to auto
+ if ($this->scopeMode == "auto") {
+ $result.= "<li$separator><a href='#' onClick='\$(\"act\").value= \"toggle-subtree\";\$(\"exec_act\").click();'>".($this->scope=="one"?image("images/empty.png"):image("images/checked.png"))." "._("Search in subtrees")."</a></li>";
+ }
- // Edit filter menu
- $result.= "<li$separator><a href='#' onClick='\$(\"act\").value= \"config-filter\";\$(\"exec_act\").click();'>".image("images/configure.png")." "._("Edit filters")."...</a></li>";
+ // Edit filter menu
+ $result.= "<li$separator><a href='#' onClick='\$(\"act\").value= \"config-filter\";\$(\"exec_act\").click();'>".image("images/configure.png")." "._("Edit filters")."...</a></li>";
- $result.= "</ul>";
+ $result.= "</ul>";
- $script= '<script type="text/javascript" language="JavaScript">var menu2; menu2= new Menu("filter-root", "menu2", configMenu)</script>';
+ $script= '<script type="text/javascript" language="JavaScript">var menu2; menu2= new Menu("filter-root", "menu2", configMenu)</script>';
- return "<div id='filtermenu'>".$result."</li></ul></div>$script";
- }
+ return "<div id='filtermenu'>".$result."</li></ul></div>$script";
+ }
- function getFixedFilters()
- {
- return array_keys($this->searches);
- }
+ function getFixedFilters()
+ {
+ return array_keys($this->searches);
+ }
}