- LSldapObject & LSattribute : Ajout du support des triggers before_create et after_c...
[ldapsaisie.git] / trunk / includes / class / class.LSldapObject.php
index 3bd1c3f..8c8bb95 100644 (file)
@@ -558,6 +558,18 @@ class LSldapObject {
       if($dn) {
         $this -> dn=$dn;
         LSdebug($submitData);
+        if ($new) {
+          if (!$this -> fireEvent('before_create')) {
+            LSerror :: addErrorCode('LSldapObject_20');
+            return;
+          }
+          foreach ($submitData as $attr_name => $attr) {
+            if (!$this -> attrs[$attr_name] -> fireEvent('before_create')) {
+              LSerror :: addErrorCode('LSldapObject_20');
+              return;
+            }
+          }
+        }
         if (!LSldap :: update($this -> getType(),$dn, $submitData)) {
           return;
         }
@@ -566,6 +578,12 @@ class LSldapObject {
             LSerror :: addErrorCode('LSldapObject_21');
             return;
           }
+          foreach ($submitData as $attr_name => $attr) {
+            if (!$this -> attrs[$attr_name] -> fireEvent('after_create')) {
+              LSerror :: addErrorCode('LSldapObject_21');
+              return;
+            }
+          }
         }
         return true;
       }
@@ -929,17 +947,25 @@ class LSldapObject {
  
  
   /**
-   * Recherche un objet à partir de la valeur exact de son RDN
+   * Recherche un objet à partir de la valeur exact de son RDN ou d'un filtre de
+   * recherche LDAP sous la forme d'un LSformat qui sera construit avec la valeur
+   * de $name.
    * 
    * @author Benjamin Renard <brenard@easter-eggs.com>
    * 
-   * @param[in] $name string Valeur de son RDN
+   * @param[in] $name string Valeur de son RDN ou de la valeur pour composer le filtre
    * @param[in] $basedn string Le DN de base de la recherche
+   * @param[in] $filter string Le filtre de recherche de l'objet
    * 
    * @retval array Tableau d'objets correspondant au resultat de la recherche
    */
-  function searchObject($name,$basedn=NULL) {
-    $filter = $this -> config['rdn'].'='.$name; 
+  function searchObject($name,$basedn=NULL,$filter=NULL) {
+    if (!$filter) {
+      $filter = $this -> config['rdn'].'='.$name;
+    }
+    else {
+      $filter = getFData($filter,$name);
+    }
     return $this -> listObjects($filter,$basedn); 
   }
 
@@ -1842,17 +1868,17 @@ LSerror :: defineError('LSldapObject_06',
 _("LSldapObject : The function %{func} to be executed on the object event %{event} doesn't exist.")
 );
 LSerror :: defineError('LSldapObject_07',
-_("LSldapObject : The execution of the function %{func} to be executed on the object event %{event} failed.")
+_("LSldapObject : The %{func} execution on the object event %{event} failed.")
 );
 
 LSerror :: defineError('LSldapObject_08',
-_("LSldapObject : La classe %{class}, dont la méthode %{meth} doit être executée lors de l'évenement %{event} de l'objet, n'existe pas.")
+_("LSldapObject : Class %{class}, which method %{meth} to be executed on the object event %{event}, doesn't exist.")
 );
 LSerror :: defineError('LSldapObject_09',
-_("LSldapObject : La méthode %{meth} de la classe %{class} devant être executée lors de l'évenemt %{event} de l'objet, n'existe pas.")
+_("LSldapObject : Method %{meth} within %{class} class to be executed on object event %{event}, deoesn't exist.")
 );
 LSerror :: defineError('LSldapObject_10',
-_("LSldapObject : Erreur durant l'execution de la méthode %{meth} de la classe %{class} devant être executée lors de l'évenemt %{event} de l'objet.")
+_("LSldapObject : Error while executin %{meth} method within %{class} class, to be executed on object event %{event}.")
 );
 
 LSerror :: defineError('LSldapObject_11',
@@ -1885,8 +1911,9 @@ LSerror :: defineError('LSldapObject_19',
 _("LSldapObject : Error during actions to be executed after deleting the objet.")
 );
 
-// 20 : not used
-
+LSerror :: defineError('LSldapObject_20',
+_("LSldapObject : Error during the actions to be executed before creating the object.")
+);
 LSerror :: defineError('LSldapObject_21',
 _("LSldapObject : Error during the actions to be executed after creating the object. It was created anyway.")
 );
@@ -1905,17 +1932,17 @@ _("LSldapObject : Error during the execution of the function %{func} to be gener
 );
 
 LSerror :: defineError('LSldapObject_26',
-_("LSldapObject : La function %{func}, devant être executée lors de l'évenement %{event} de l'objet, n'existe pas.")
+_("LSldapObject : %{func} function, to be executed on object event %{event}, doesn't exist.")
 );
 LSerror :: defineError('LSldapObject_27',
-_("LSldapObject : Erreur durant l'execution de la function %{func} lors de l'évenement %{event} de l'objet.")
+_("LSldapObject : Error during the execution of %{func} function on object event %{event}.")
 );
 
 LSerror :: defineError('LSldapObject_28',
-_("LSldapObject : La méthode %{meth}, devant être executée lors de l'évenement %{event} de l'objet, n'existe pas.")
+_("LSldapObject : %{meth} method, to be executed on object event %{event}, doesn't exist.")
 );
 LSerror :: defineError('LSldapObject_29',
-_("LSldapObject : Erreur durant l'execution de la méthode %{meth} lors de l'évenement %{event} de l'objet.")
+_("LSldapObject : Error during execution of %{meth} method on object event %{event}.")
 );
 
 ?>