Code

Added additional filter
[gosa.git] / gosa-core / include / class_ldap.inc
index 9b968fd9d91b79598919fbaa6c8e2a2114be5446..743d15bbb991d7ab08fb8e673959be51bb5bf7dc 100644 (file)
@@ -557,6 +557,27 @@ class LDAP{
     }
   }
 
+  function makeReadableErrors($error,$attrs)
+  { 
+    global $config;
+
+    if($this->success()) return("");
+
+    $str = "";
+    if(preg_match("/^objectClass: value #([0-9]*) invalid per syntax$/", $this->get_additional_error())){
+      $oc = preg_replace("/^objectClass: value #([0-9]*) invalid per syntax$/","\\1", $this->get_additional_error());
+      if(isset($attrs['objectClass'][$oc])){
+        $str.= " - <b>objectClass: ".$attrs['objectClass'][$oc]."</b>";
+      }
+    }
+    if($error == "Undefined attribute type"){
+      $str = " - <b>attribute: ".preg_replace("/:.*$/","",$this->get_additional_error())."</b>";
+    } 
+
+    @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,$attrs,"Erroneous data");
+
+    return($str);
+  }
 
   function modify($attrs)
   {
@@ -567,11 +588,8 @@ class LDAP{
       if ($this->reconnect) $this->connect();
       $r = @ldap_modify($this->cid, LDAP::fix($this->basedn), $attrs);
       $this->error = @ldap_error($this->cid);
-      if(!$this->success() && preg_match("/^objectClass: value #([0-9]*) invalid per syntax$/", $this->get_additional_error())){
-        $oc = preg_replace("/^objectClass: value #([0-9]*) invalid per syntax$/","\\1", $this->get_additional_error());
-        if(isset($attrs['objectClass'][$oc])){
-          $this->error.= " <b>objectClass: ".$attrs['objectClass'][$oc]."</b>"; 
-        }
+      if(!$this->success()){
+        $this->error.= $this->makeReadableErrors($this->error,$attrs);
       }
       return($r ? $r : 0);
     }else{
@@ -586,11 +604,8 @@ class LDAP{
       if ($this->reconnect) $this->connect();
       $r = @ldap_add($this->cid, LDAP::fix($this->basedn), $attrs);
       $this->error = @ldap_error($this->cid);
-      if(!$this->success() && preg_match("/^objectClass: value #([0-9]*) invalid per syntax$/", $this->get_additional_error())){
-        $oc = preg_replace("/^objectClass: value #([0-9]*) invalid per syntax$/","\\1", $this->get_additional_error());
-        if(isset($attrs['objectClass'][$oc])){
-          $this->error.= " <b>objectClass: ".$attrs['objectClass'][$oc]."</b>"; 
-        }
+      if(!$this->success()){
+        $this->error.= $this->makeReadableErrors($this->error,$attrs);
       }
       return($r ? $r : 0);
     }else{