LSldapObject : Add except_current_object option on attribute validation test
authorBenjamin Renard <brenard@easter-eggs.com>
Mon, 10 Aug 2015 08:16:32 +0000 (10:16 +0200)
committerBenjamin Renard <brenard@easter-eggs.com>
Mon, 10 Aug 2015 08:16:32 +0000 (10:16 +0200)
doc/conf/LSattribute/validation.docbook
public_html/includes/class/class.LSldapObject.php

index d3b6cd0..cf1f76a 100644 (file)
@@ -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]'
   ),
   ...
 ),]]>
   </listitem>
 </varlistentry>
 
+<varlistentry>
+  <term>except_current_object</term>
+  <listitem>
+    <simpara>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
+    <literal>create</literal>).</simpara>
+  </listitem>
+</varlistentry>
+
 </variablelist>
 
 </sect4>
index fa1b342..30952a6 100644 (file)
@@ -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);