LSldapObject : Add except_current_object option on attribute validation test

This commit is contained in:
Benjamin Renard 2015-08-10 10:16:32 +02:00
parent 5ec0f7d210
commit f313b2e1d3
2 changed files with 23 additions and 2 deletions

View file

@ -23,7 +23,8 @@
'object_type' => '[Type d'LSobject recherché]', 'object_type' => '[Type d'LSobject recherché]',
'basedn' => '[BaseDn de la recherche]', 'basedn' => '[BaseDn de la recherche]',
'scope' => '[Scope 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 @@
</listitem> </listitem>
</varlistentry> </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> </variablelist>
</sect4> </sect4>

View file

@ -494,7 +494,18 @@ class LSldapObject {
$sfilter=$sfilter_user; $sfilter=$sfilter_user;
} }
$sbasedn=(isset($test['basedn']))?getFData($test['basedn'],$this,'getValue'):NULL; $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($test['result']==0) {
if($ret!=0) { if($ret!=0) {
if ($LSform) $LSform -> setElementError($attr,$msg_error); if ($LSform) $LSform -> setElementError($attr,$msg_error);