- LSldapObject :
authorBenjamin Renard <brenard@easter-eggs.com>
Sun, 25 Jan 2009 17:43:30 +0000 (17:43 +0000)
committerBenjamin Renard <brenard@easter-eggs.com>
Sun, 25 Jan 2009 17:43:30 +0000 (17:43 +0000)
-> Ajout de paramètres de configuration pour définir les attributs devant
 être utilisés pour passer un pattern recherchés.
-> Ajout de la méthode getPatternFilter()
-> Utilisation de la méthode getPatternFilter() dans getSelectArray()
- view.php & select.php : Utilisation de getPatternFilter()

trunk/conf/LSobjects/config.LSobjects.LSeepeople.php
trunk/includes/class/class.LSldapObject.php
trunk/select.php
trunk/view.php

index 3b0f021..17fae51 100644 (file)
@@ -106,6 +106,16 @@ $GLOBALS['LSobjects']['LSeepeople'] = array (
     ) // fin Layout
   ), // fin LSform
   
+  'LSsearch' => array (
+    'attrs' => array (
+      'givenName',
+      'sn',
+      'cn',
+      'uid',
+      'mail'
+    )
+  ),
+  
   // Attributes
   'attrs' => array (
   
index 50665a9..7c85f06 100644 (file)
@@ -629,6 +629,43 @@ class LSldapObject {
   }
   
   /**
+   * Retourne le filtre correpondants au pattern passé
+   * 
+   * @author Benjamin Renard <brenard@easter-eggs.com>
+   * 
+   * @param[in] $pattern string Le mot clé recherché
+   * @param[in] $approx booléen Booléen activant ou non la recherche approximative
+   *
+   * @retval string le filtre ldap correspondant
+   */ 
+  function getPatternFilter($pattern=null,$approx=null) {
+    if ($pattern!=NULL) {
+      if (is_array($GLOBALS['LSobjects'][$this -> getType()]['LSsearch']['attrs'])) {
+        $attrs=$GLOBALS['LSobjects'][$this -> getType()]['LSsearch']['attrs'];
+      }
+      else {
+        $attrs=array($GLOBALS['LSobjects'][$this -> getType()]['rdn']);
+      }
+      $pfilter='(|';
+      if ($approx) {
+        foreach ($attrs as $attr_name) {
+          $pfilter.='('.$attr_name.'~='.$pattern.')';
+        }
+      }
+      else {
+        foreach ($attrs as $attr_name) {
+          $pfilter.='('.$attr_name.'=*'.$pattern.'*)';
+        }
+      }
+      $pfilter.=')';
+      return $pfilter;
+    }
+    else {
+      return NULL;
+    }
+  }
+  
+  /**
    * Retourne une liste d'objet du même type.
    *
    * Effectue une recherche en fonction des paramètres passé et retourne un
@@ -961,23 +998,7 @@ class LSldapObject {
    * @retval array('dn' => 'display')
    */
   function getSelectArray($pattern=NULL,$topDn=NULL,$displayFormat=NULL,$approx=false) {
-    if ($pattern!=NULL) {
-      $filter='(|';
-      if ($approx) {
-        foreach ($this -> attrs as $attr_name => $attr_val) {
-          $filter.='('.$attr_name.'~='.$pattern.')';
-        }
-      }
-      else {
-        foreach ($this -> attrs as $attr_name => $attr_val) {
-          $filter.='('.$attr_name.'=*'.$pattern.'*)';
-        }
-      }
-      $filter.=')';
-    }
-    else {
-      $filter=NULL;
-    }
+    $filter=$this -> getPatternFilter($pattern,$approx);
     return $this -> listObjectsName($filter,$topDn,array(),$displayFormat);
   }
 
index 1ae6fba..b9ba112 100644 (file)
@@ -79,18 +79,7 @@ if(LSsession :: startLSsession()) {
         $approx = (isset($_REQUEST['LSview_approx']));
         
         if ($pattern && $pattern!='') {
-          $filter='(|';
-          if ($approx) {
-            foreach ($object -> attrs as $attr_name => $attr_val) {
-              $filter.='('.$attr_name.'~='.$pattern.')';
-            }
-          }
-          else {
-            foreach ($object -> attrs as $attr_name => $attr_val) {
-              $filter.='('.$attr_name.'=*'.$pattern.'*)';
-            }
-          }
-          $filter.=')';
+          $filter=$object -> getPatternFilter($pattern,$approx);
         }
         else {
           $filter = NULL;
index 72cbd49..ef269bb 100644 (file)
@@ -210,18 +210,7 @@ if(LSsession :: startLSsession()) {
             $approx = (isset($_REQUEST['LSview_approx']));
             
             if ($pattern && $pattern!='') {
-              $filter='(|';
-              if ($approx) {
-                foreach ($object -> attrs as $attr_name => $attr_val) {
-                  $filter.='('.$attr_name.'~='.$pattern.')';
-                }
-              }
-              else {
-                foreach ($object -> attrs as $attr_name => $attr_val) {
-                  $filter.='('.$attr_name.'=*'.$pattern.'*)';
-                }
-              }
-              $filter.=')';
+              $filter=$object -> getPatternFilter($pattern,$approx);
             }
             else {
               $filter = NULL;