X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_filter.inc;h=9b2fed5458381bcf79bba4e76752ac552e2b6042;hb=ae725dfb9dbf8a8765de0c3854329b2e9edf3512;hp=0b5f1778a9263186bbada5d718d35540cb2ffcd6;hpb=7eada0d8c03ea6bbe6e0bf41a789de38715eba9e;p=gosa.git diff --git a/gosa-core/include/class_filter.inc b/gosa-core/include/class_filter.inc index 0b5f1778a..9b2fed545 100644 --- a/gosa-core/include/class_filter.inc +++ b/gosa-core/include/class_filter.inc @@ -36,6 +36,7 @@ class filter { var $scopeMode= "auto"; var $alphabet= null; var $converter= array(); + var $pid; function filter($filename) @@ -46,6 +47,8 @@ class filter { if (!$this->load($filename)) { die("Cannot parse $filename!"); } + + $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE)); } @@ -124,13 +127,6 @@ class filter { } } - // Sort elements for element length to allow proper replacing later on - function strlenSort($a, $b) { - if (strlen($a['tag']) == strlen($b['tag'])) { - return 0; - } - return (strlen($a['tag']) < strlen($b['tag']) ? -1 : 1); - } uasort($this->elements, 'strlenSort'); $this->elements= array_reverse($this->elements); @@ -180,14 +176,14 @@ class filter { $checked= " checked"; } - $result= ""; + $result= ""; return $result; } function getCombobox($element) { - $result= ""; // Fill with presets foreach ($element['value'] as $value) { @@ -218,6 +214,18 @@ class filter { } + function setComboBoxOptions($tag, $options) + { + if (isset($this->elements[$tag]) && $this->elements[$tag]['type'] == "combobox") { + + $this->elements[$tag]['value']= array(); + foreach ($options as $key => $label) { + $this->elements[$tag]['value'][]= array('label' => $label, 'key' => $key); + } + } + } + + function getCurrentBase() { if (isset($this->search->base) && (string)$this->search->scope != "auto") { @@ -310,7 +318,7 @@ class filter { function renderScope() { $checked= $this->scope == "sub"?" checked":""; - return " "._("Search in subtrees"); + return " "; } @@ -344,7 +352,7 @@ class filter { } // Load template - return ("".$smarty->fetch(get_template_path($this->xmlData['definition']['template'], true))); + return ("".$smarty->fetch(get_template_path($this->xmlData['definition']['template'], true))); } @@ -422,19 +430,15 @@ class filter { function update() { - /* React on alphabet links if needed */ if (isset($_GET['filter'])){ - $s= mb_substr(validate($_GET['filter']), 0, 1, "UTF8")."*"; - if ($s == "**"){ - $s= "*"; - } + $s= mb_substr(validate($_GET['filter']), 0, 1, "UTF8"); foreach ($this->alphabetElements as $tag) { $this->elementValues[$tag]= $s; } } - if (isset($_POST['FILTER_LOADED'])) { + if (isset($_POST['FILTER_PID']) && $_POST['FILTER_PID'] == $this->pid) { // Load post values and adapt filter, base and scope accordingly - but // only if we didn't get a _GET foreach ($this->elements as $tag => $element) { @@ -473,7 +477,7 @@ class filter { } // Make filter - $filter= preg_replace("/\\$$tag/", normalizeLDAP($value), $filter); + $filter= preg_replace("/\\$$tag/", normalizeLdap($value), $filter); if (isset($config['base']) && isset($config['scope']) && isset($config['category'])) { $result= call_user_func(array($backend, 'query'), $config['base'], $config['scope'], $filter, $attributes, $config["category"], $config["objectStorage"]); @@ -528,6 +532,38 @@ class filter { } + 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); + } + + /* Set to base, if we're not on a correct subtree */ + if (!isset($config->idepartments[$base])){ + $base= $config->current['BASE']; + } + + return $base; + } + + } +// Sort elements for element length to allow proper replacing later on +function strlenSort($a, $b) { + if (strlen($a['tag']) == strlen($b['tag'])) { + return 0; + } + return (strlen($a['tag']) < strlen($b['tag']) ? -1 : 1); +} + ?>