diff --git a/doc/conf/LSattribute/validation.docbook b/doc/conf/LSattribute/validation.docbook index d3b6cd01..cf1f76ae 100644 --- a/doc/conf/LSattribute/validation.docbook +++ b/doc/conf/LSattribute/validation.docbook @@ -23,7 +23,8 @@ 'object_type' => '[Type d'LSobject recherché]', 'basedn' => '[BaseDn de la recherche]', 'scope' => '[Scope de la recherche]', - 'result' => '[Résultat positif de la recherche]' + 'result' => '[Résultat positif de la recherche]', + 'except_current_object' => '[Exclure l'objet courant]' ), ... ),]]> @@ -86,6 +87,15 @@ + + except_current_object + + Booléen définissant si l'objet courrant doit être exclu du résultat + de la recherche. Ce paramètre n'est évalué quand cas de création (formulaire + create). + + + diff --git a/public_html/includes/class/class.LSldapObject.php b/public_html/includes/class/class.LSldapObject.php index fa1b3427..30952a6b 100644 --- a/public_html/includes/class/class.LSldapObject.php +++ b/public_html/includes/class/class.LSldapObject.php @@ -494,7 +494,18 @@ class LSldapObject { $sfilter=$sfilter_user; } $sbasedn=(isset($test['basedn']))?getFData($test['basedn'],$this,'getValue'):NULL; - $ret=LSldap :: getNumberResult ($sfilter,$sbasedn,$sparams); + if (isset($test['except_current_object']) && (bool)$test['except_current_object'] && !$LSform -> idForm!='create') { + $sret=LSldap :: search ($sfilter,$sbasedn,$sparams); + $dn=$this->getDn(); + $ret=0; + foreach($sret as $obj) { + if ($obj['dn']!=$dn) + $ret++; + } + } + else { + $ret=LSldap :: getNumberResult ($sfilter,$sbasedn,$sparams); + } if($test['result']==0) { if($ret!=0) { if ($LSform) $LSform -> setElementError($attr,$msg_error);