index 4a132154ccdc52eed46a0e982dc3dc193604c48e..0b5f1778a9263186bbada5d718d35540cb2ffcd6 100644 (file)
var $initial= false;
var $scopeMode= "auto";
var $alphabet= null;
+ var $converter= array();
function filter($filename)
$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'])) {
}
- function setObjectStorage($storage) {
+ function setConverter($field, $hook)
+ {
+ $this->converter[$field]= $hook;
+ }
+
+
+ function setObjectStorage($storage)
+ {
$this->objectStorage= $storage;
}
- function setBase($base) {
+ function setBase($base)
+ {
$this->base= $base;
}
- function setCurrentScope($scope) {
+ function setCurrentScope($scope)
+ {
$this->scope= $scope;
}
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($element['set']) || !isset($element['unset'])) {
continue;
}
- $e_set= is_array($element['set'])?"":$element['set'];
- $e_unset= is_array($element['unset'])?"":$element['unset'];
+
+ // Handle converters if present
+ if (isset($this->converter[$tag])) {
+ preg_match('/([^:]+)::(.*)$/', $this->converter[$tag], $m);
+ $e_set= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set'])?"":$element['set']));
+ $e_unset= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset'])?"":$element['unset']));
+ } else {
+ $e_set= is_array($element['set'])?"":$element['set'];
+ $e_unset= is_array($element['unset'])?"":$element['unset'];
+ }
if ($this->elementValues[$tag] == "") {
$e_unset= preg_replace('/\$/', normalizeLdap($this->elementValues[$tag]), $e_unset);
}
}
- $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));
}
-
return ($result);
}
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];
$result= array();
// Introduce maximum number of entries
- $max= 10;
+ $max= 25;
foreach ($this->autocompleters as $tag => $config) {
if(isset($_POST[$tag])){