X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_filter.inc;h=efd72574e18683c237523fd59872278ea2f73ec6;hb=fa919250554e64617662c2e07e569263a53a1ee3;hp=5816218782f1589c9fa1ffa8772b8b92e2d44a7c;hpb=fd9bcd6b8ec0ba9779eee01c58b89a5e2ebfea61;p=gosa.git
diff --git a/gosa-core/include/class_filter.inc b/gosa-core/include/class_filter.inc
old mode 100755
new mode 100644
index 581621878..efd72574e
--- a/gosa-core/include/class_filter.inc
+++ b/gosa-core/include/class_filter.inc
@@ -1,4 +1,24 @@
load($filename)) {
die("Cannot parse $filename!");
}
+
+ $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE));
}
+
function load($filename)
{
- // Load data into array
- $xmlData= simplexml_load_file($filename);
- if ($xmlData === false) {
+ $contents = file_get_contents($filename);
+ $this->xmlData= xml::xml2array($contents, 1);
+
+ if (!isset($this->xmlData['filterdef'])) {
return false;
}
- // Load definition
- if (isset($xmlData->definition)) {
- foreach ($xmlData->definition as $entry) {
- if (!isset($entry->target) || !isset($entry->template)) {
- return false;
- }
+ $this->xmlData= $this->xmlData["filterdef"];
- // Move information
- $this->templatePath= (string)$entry->template;
- $this->target= (string)$entry->target;
+ // Load filter
+ if (isset($this->xmlData['search'])) {
+ if (!isset($this->xmlData['search']['query'][0])){
+ $this->xmlData['search']['query']= array($this->xmlData['search']['query']);
+ }
- // One is enough
- break;
+ // Move information
+ $entry= $this->xmlData['search'];
+ $this->scopeMode= $entry['scope'];
+ if ($entry['scope'] == "auto") {
+ $this->scope= "one";
+ } else {
+ $this->scope= $entry['scope'];
}
+ $this->query= $entry['query'];
+ } else {
+ return false;
}
- // Load filter
- if (isset($xmlData->search)) {
- foreach ($xmlData->search as $entry) {
- if (!isset($entry->query) || !isset($entry->base) || !isset($entry->scope)) {
- return false;
- }
-
- // Move information
- $this->baseMode= (string)$entry->base;
- $this->scopeMode= (string)$entry->scope;
- $this->query= $entry->query;
+ // Transfer initial value
+ if (isset($this->xmlData['definition']['initial']) && $this->xmlData['definition']['initial'] == "true"){
+ $this->initial= true;
+ }
- // One is enough
- break;
- }
+ // Transfer category
+ if (isset($this->xmlData['definition']['category'])){
+ $this->category= $this->xmlData['definition']['category'];
}
// Generate formular data
- if (isset($xmlData->element)) {
- foreach ($xmlData->element as $element) {
+ if (isset($this->xmlData['element'])) {
+ if (!isset($this->xmlData['element'][0])){
+ $this->xmlData['element']= array($this->xmlData['element']);
+ }
+ foreach ($this->xmlData['element'] as $element) {
// Ignore elements without type
- if (!isset($element->type)) {
+ if (!isset($element['type']) || !isset($element['tag'])) {
next;
}
- $tag= (string)$element->tag;
+ $tag= $element['tag'];
+
+ // Fix arrays
+ if (isset($element['value']) && !isset($element['value'][0])) {
+ $element['value']= array($element['value']);
+ }
// Store element for quick access
$this->elements[$tag] = $element;
// Preset elementValues with default values if exist
- if (isset($element->default)) {
- $this->elementValues[$tag] = (string)$element->default;
+ if (isset($element['default']) && !is_array($element['default'])) {
+ $this->elementValues[$tag] = $element['default'];
} else {
$this->elementValues[$tag] = "";
}
// Does this element react on alphabet links?
- if (isset($element->alphabet) && (string)$element->alphabet == "true") {
+ if (isset($element['alphabet']) && $element['alphabet'] == "true") {
$this->alphabetElements[]= $tag;
}
}
- }
- // Save definition
- if (isset($xmlData->definition)) {
- $this->definition = $xmlData->definition;
- }
+ uasort($this->elements, 'strlenSort');
+ $this->elements= array_reverse($this->elements);
- // Save search
- if (isset($xmlData->search)) {
- $this->search = $xmlData->search;
}
return true;
@@ -113,39 +138,94 @@ class filter {
function getTextfield($element)
{
- $result= "";
+ $tag= $element['tag'];
+ $size= 30;
+ if (isset($element['size'])){
+ $size= $element['size'];
+ }
+ $maxlength= 30;
+ if (isset($element['maxlength'])){
+ $maxlength= $element['maxlength'];
+ }
+ $result= "";
+ if (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['autocomplete'];
+ }
return $result;
}
function getCheckbox($element)
{
+ $tag= $element['tag'];
$checked= "";
- if ($this->elementValues[$element] == "true") {
+ if ($this->elementValues[$tag] == "true") {
$checked= " checked";
}
- $result= "";
+ $result= "";
return $result;
}
function getCombobox($element)
{
- $result= "