index 4d8260fc457e7b37938a64a68fa968b1dd79ad78..3a9e38d75856c25e3fa1bb45c3019d840dfa3fc5 100644 (file)
var $scopeMode= "auto";
var $alphabet= null;
var $converter= array();
+ var $pid;
function filter($filename)
if (!$this->load($filename)) {
die("Cannot parse $filename!");
}
+
+ $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE));
}
$contents = file_get_contents($filename);
$this->xmlData= xml::xml2array($contents, 1);
- if (!isset($this->xmlData['filter'])) {
+ if (!isset($this->xmlData['filterdef'])) {
return false;
}
- $this->xmlData= $this->xmlData["filter"];
+ $this->xmlData= $this->xmlData["filterdef"];
// Load filter
if (isset($this->xmlData['search'])) {
}
}
- // 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);
}
// Load template
- return ("<input type='hidden' name='FILTER_LOADED' value='1'>".$smarty->fetch(get_template_path($this->xmlData['definition']['template'], true)));
+ return ("<input type='hidden' name='FILTER_PID' value='".$this->pid."'>".$smarty->fetch(get_template_path($this->xmlData['definition']['template'], true)));
}
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']) || !isset($query['attribute'])) {
}
}
- 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) {
foreach ($attributes as $attribute) {
if (is_array($entry[$attribute])) {
for ($i= 0; $i<$entry[$attribute]['count']; $i++) {
- $res[]= $entry[$attribute][$i];
+ if (mb_stristr($entry[$attribute][$i], $value)) {
+ $res[]= $entry[$attribute][$i];
+ }
}
} else {
$res[]= $entry[$attribute];
}
+ 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);
+}
+
?>