X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_filter.inc;h=6e256f8158e824db66468b71d939e56e0ecbedc9;hb=4b3498ae8e78a11c7c99663d45bab6a0a14df052;hp=7b1867c7926adde5ccc49082dd57c0017d871e43;hpb=168850b75e9a103c904a177fe904dcc28347a2b8;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 7b1867c79..6e256f815
--- a/gosa-core/include/class_filter.inc
+++ b/gosa-core/include/class_filter.inc
@@ -1,4 +1,24 @@
load($filename)) {
die("Cannot parse $filename!");
}
}
+
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['filter'])) {
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["filter"];
- // 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;
- }
+ // 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);
- // Save search
- if (isset($xmlData->search)) {
- $this->search = $xmlData->search;
}
return true;
@@ -113,21 +141,31 @@ class filter {
function getTextfield($element)
{
- $tag= (string)$element->tag;
- $result= "";
- if (isset($element->autocomplete)) {
+ $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= (string)$element->autocomplete->frequency;
+ if (isset($element['autocomplete']['frequency'])) {
+ $frequency= $element['autocomplete']['frequency'];
}
- if (isset($element->autocomplete->characters)) {
- $characters= (string)$element->autocomplete->characters;
+ if (isset($element['autocomplete']['characters'])) {
+ $characters= $element['autocomplete']['characters'];
}
$result.= "
".
"";
+
+ $this->autocompleters[$tag]= $element['autocomplete'];
}
return $result;
}
@@ -135,7 +173,7 @@ class filter {
function getCheckbox($element)
{
- $tag= (string)$element->tag;
+ $tag= $element['tag'];
$checked= "";
if ($this->elementValues[$tag] == "true") {
$checked= " checked";
@@ -148,14 +186,31 @@ class filter {
function getCombobox($element)
{
- $result= "