LSsearch : added predefined filters parameters
[ldapsaisie.git] / public_html / includes / class / class.LSsearch.php
index adf7da2..44dd42e 100644 (file)
@@ -41,6 +41,7 @@ class LSsearch {
     // Search params
     'filter' => NULL,
     'pattern' => NULL,
+    'predefinedFilter' => false,
     'basedn' => NULL,
     'subDn' => NULL,
     'scope' => NULL,
@@ -437,6 +438,28 @@ class LSsearch {
         $OK=false;
       }
     }
+
+    // predefinedFilter
+    if (isset($params['predefinedFilter'])) {
+      if (is_string($params['predefinedFilter'])) {
+        if (empty($params['predefinedFilter'])) {
+          $this->params['predefinedFilter']=false;
+        }
+        elseif(is_array($this -> config['predefinedFilters'])) {
+          if(isset($this->config['predefinedFilters'][$params['predefinedFilter']])) {
+            $this -> params['predefinedFilter'] = $params['predefinedFilter'];
+          }
+          else {
+            LSerror :: addErrorCode('LSsearch_03','predefinedFilter');
+            $OK=false;
+          }
+        }
+      }
+      else {
+        LSerror :: addErrorCode('LSsearch_03','predefinedFilter');
+        $OK=false;
+      }
+    }
     
     // Display Format
     if (is_string($params['displayFormat'])) {
@@ -648,6 +671,19 @@ class LSsearch {
       }
     }
     
+    // predefinedFilter
+    if (is_string($this -> params['predefinedFilter'])) {
+      if (!is_null($retval['filter'])) {
+        $filter=LSldap::combineFilters('and',array($this -> params['predefinedFilter'],$retval['filter']));
+        if ($filter) {
+          $retval['filter']=$filter;
+        }
+      }
+      else {
+        $retval['filter']=$this -> params['predefinedFilter'];
+      }
+    }
+    
     // Filter
     $objFilter=LSldapObject::getObjectFilter($this -> LSobject);
     if ($objFilter) {
@@ -662,7 +698,6 @@ class LSsearch {
       }
     }
     
-    
     // Recursive
     if (is_null($retval['basedn'])) {
       if (!is_null($this -> params['subDn'])) {
@@ -925,6 +960,9 @@ class LSsearch {
       $this -> _canCopy = LSsession :: canCreate($this -> LSobject);
       return $this -> _canCopy;
     }
+    elseif ($key=='predefinedFilters') {
+      return ((is_array($this -> config['predefinedFilters']))?$this -> config['predefinedFilters']:array());
+    }
     else {
       throw new Exception('Incorrect property !');
     }