diff --git a/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php b/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php index 3b0f021e..17fae517 100644 --- a/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php +++ b/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php @@ -106,6 +106,16 @@ $GLOBALS['LSobjects']['LSeepeople'] = array ( ) // fin Layout ), // fin LSform + 'LSsearch' => array ( + 'attrs' => array ( + 'givenName', + 'sn', + 'cn', + 'uid', + 'mail' + ) + ), + // Attributes 'attrs' => array ( diff --git a/trunk/includes/class/class.LSldapObject.php b/trunk/includes/class/class.LSldapObject.php index 50665a93..7c85f061 100644 --- a/trunk/includes/class/class.LSldapObject.php +++ b/trunk/includes/class/class.LSldapObject.php @@ -628,6 +628,43 @@ class LSldapObject { return $filter; } + /** + * Retourne le filtre correpondants au pattern passé + * + * @author Benjamin Renard + * + * @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. * @@ -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); } diff --git a/trunk/select.php b/trunk/select.php index 1ae6fbad..b9ba1120 100644 --- a/trunk/select.php +++ b/trunk/select.php @@ -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; diff --git a/trunk/view.php b/trunk/view.php index 72cbd494..ef269bb8 100644 --- a/trunk/view.php +++ b/trunk/view.php @@ -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;