index 9d4d9384e81ada3a402ad0fa91573df6a4e5cfa4..6e256f8158e824db66468b71d939e56e0ecbedc9 100644 (file)
<?php
<?php
+/*
+ * This code is part of GOsa (http://www.gosa-project.org)
+ * Copyright (C) 2003-2008 GONICUS GmbH
+ *
+ * ID: $$Id$$
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
class filter {
class filter {
var $autocompleter= array();
var $category= "";
var $objectStorage= array();
var $autocompleter= array();
var $category= "";
var $objectStorage= array();
- var $objectBase= "";
var $base= "";
var $base= "";
- var $bases= array();
var $scope= "";
var $query;
var $initial= false;
var $scope= "";
var $query;
var $initial= false;
- var $baseMode= false;
var $scopeMode= "auto";
var $alphabet= null;
function filter($filename)
{
var $scopeMode= "auto";
var $alphabet= null;
function filter($filename)
{
+ global $config;
+
+ // Load eventually passed filename
if (!$this->load($filename)) {
die("Cannot parse $filename!");
}
if (!$this->load($filename)) {
die("Cannot parse $filename!");
}
// Move information
$entry= $this->xmlData['search'];
// Move information
$entry= $this->xmlData['search'];
- $this->baseMode= $entry['base'];
$this->scopeMode= $entry['scope'];
$this->scopeMode= $entry['scope'];
+ if ($entry['scope'] == "auto") {
+ $this->scope= "one";
+ } else {
+ $this->scope= $entry['scope'];
+ }
$this->query= $entry['query'];
} else {
return false;
$this->query= $entry['query'];
} else {
return false;
$this->alphabetElements[]= $tag;
}
}
$this->alphabetElements[]= $tag;
}
}
+
+ // 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);
+
}
return true;
}
return true;
function getTextfield($element)
{
$tag= $element['tag'];
function getTextfield($element)
{
$tag= $element['tag'];
- $result= "<input class='filter_textfield' id='$tag' name='$tag' type='text' size='30' maxlength='30' value='".$this->elementValues[$tag]."'>";
+ $size= 30;
+ if (isset($element['size'])){
+ $size= $element['size'];
+ }
+ $maxlength= 30;
+ if (isset($element['maxlength'])){
+ $maxlength= $element['maxlength'];
+ }
+ $result= "<input class='filter_textfield' id='$tag' name='$tag' type='text' size='$size' maxlength='maxlength' value='".$this->elementValues[$tag]."'>";
if (isset($element['autocomplete'])) {
$frequency= "0.5";
$characters= "1";
if (isset($element['autocomplete'])) {
$frequency= "0.5";
$characters= "1";
}
// Handle translations
}
// Handle translations
- if (is_array($value['set'])) {
- $result.= "<option value='".$value['key']."'$selected>".xml::getLocalizedAttribute($value['set'], $GLOBALS['t_language'])."</option>";
- } else {
- $result.= "<option value='".$value['key']."'$selected>".$value['set']."</option>";
- }
+ $result.= "<option value='".$value['key']."'$selected>"._($value['label'])."</option>";
}
// Use autocompleter for additional data
}
// Use autocompleter for additional data
}
}
- function setBases($bases) {
- $this->bases= $bases;
- }
-
-
function setObjectStorage($storage) {
$this->objectStorage= $storage;
}
function setObjectStorage($storage) {
$this->objectStorage= $storage;
}
- function setObjectBase($base) {
- $this->objectBase= $base;
- }
-
-
- function setCurrentBase($base) {
+ function setBase($base) {
$this->base= $base;
}
$this->base= $base;
}
}
}
- function renderBase()
- {
- $result= "<select name='currentMainBase' onChange='mainform.submit()' size='1'>";
-
- foreach ($this->bases as $key=>$value) {
- $selected= "";
- if ($key == $this->base) {
- $selected= " selected";
- }
- $result.= "<option value='".$key."'$selected>".$value."</option>";
- }
- $result.= "</select>";
-
- return $result;
- }
-
-
function renderAlphabet($columns= 10)
{
// Return pre-rendered alphabet if available
function renderAlphabet($columns= 10)
{
// Return pre-rendered alphabet if available
$smarty->assign("ALPHABET", $this->renderAlphabet());
$smarty->assign("APPLY", $this->renderApply());
$smarty->assign("SCOPE", $this->renderScope());
$smarty->assign("ALPHABET", $this->renderAlphabet());
$smarty->assign("APPLY", $this->renderApply());
$smarty->assign("SCOPE", $this->renderScope());
- $smarty->assign("BASE", $this->renderBase());
// Load template and replace elementsHtml[]
foreach ($this->elements as $tag => $element) {
// Load template and replace elementsHtml[]
foreach ($this->elements as $tag => $element) {
}
$result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
}
$result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
- $this->category, $this->objectStorage, $this->objectBase));
+ $this->category, $this->objectStorage));
}
}
$this->elementValues[$tag]= "";
}
}
$this->elementValues[$tag]= "";
}
}
- }
- // Save base
- if (isset($_POST['BASE']) && $this->baseMode == "true") {
- $base= validate($_POST['BASE']);
- if (isset($this->bases[$base])) {
- $this->base= $base;
+ // Save scope if needed
+ if ($this->scopeMode == "auto") {
+ $this->scope= isset($_POST['SCOPE'])?"sub":"one";
}
}
}
}
- // Save scope if needed
- if ($this->scopeMode == "auto") {
- $this->scope= isset($_POST['SCOPE'])?"sub":"one";
- }
}
}
// Make filter
$filter= preg_replace("/\\$$tag/", normalizeLDAP($value), $filter);
// Make filter
$filter= preg_replace("/\\$$tag/", normalizeLDAP($value), $filter);
- if (isset($config['base']) && isset($config['scope'])
- && isset($config['category']) && isset($config['objectbase']) ) {
+ if (isset($config['base']) && isset($config['scope']) && isset($config['category'])) {
$result= call_user_func(array($backend, 'query'), $config['base'], $config['scope'], $filter, $attributes,
$result= call_user_func(array($backend, 'query'), $config['base'], $config['scope'], $filter, $attributes,
- $config["category"], $config["objectbase"]);
+ $config["category"], $config["objectStorage"]);
} else {
$result= call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
} else {
$result= call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
- $this->category, $this->objectStorage, $this->objectBase);
+ $this->category, $this->objectStorage);
}
foreach ($result as $entry) {
}
foreach ($result as $entry) {
global $class_mapping;
$result= array();
global $class_mapping;
$result= array();
+ // Introduce maximum number of entries
+ $max= 25;
+
foreach ($this->autocompleters as $tag => $config) {
if(isset($_POST[$tag])){
$result= $this->getCompletitionList($config, $tag, $_POST[$tag]);
foreach ($this->autocompleters as $tag => $config) {
if(isset($_POST[$tag])){
$result= $this->getCompletitionList($config, $tag, $_POST[$tag]);
+ $result= array_unique($result);
+ asort($result);
echo '<ul>';
foreach ($result as $entry) {
echo '<li>'.$entry.'</li>';
echo '<ul>';
foreach ($result as $entry) {
echo '<li>'.$entry.'</li>';
+ if ($max-- == 0) {
+ break;
+ }
}
echo '</ul>';
}
}
echo '</ul>';
}
-
}
}
}
}
+
}
?>
}
?>