X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_ldap.inc;h=4b578a8f9f910fde6e4bc0d93a31ba7f1958e103;hb=0a68aa232f4d9317a90c34912577d2ef7b3c1440;hp=faa963ae6c8a63657a849e2de14a447a4e64414c;hpb=dcc27b0a5daeac6f38a777dfd376c49bb746204a;p=gosa.git diff --git a/gosa-core/include/class_ldap.inc b/gosa-core/include/class_ldap.inc index faa963ae6..4b578a8f9 100644 --- a/gosa-core/include/class_ldap.inc +++ b/gosa-core/include/class_ldap.inc @@ -120,10 +120,8 @@ class LDAP{ requests. I.e. member=.... */ static function prepare4filter($dn) { - $str = normalizeLdap(str_replace('\\\\', '\\\\\\', LDAP::fix($dn))); - /* Special-case '\,' for filters */ - $str = str_replace('\\,', '\\5C2C', $str); - return $str; + $fixed= normalizeLdap(str_replace('\\\\', '\\\\\\', LDAP::fix($dn))); + return str_replace('\\,', '\\\\,', $fixed); } @@ -420,7 +418,23 @@ class LDAP{ if ($dn == "") $dn = $this->basedn; - $r = @ldap_mod_del($this->cid, LDAP::fix($dn), $attrs); + $r = ldap_mod_del($this->cid, LDAP::fix($dn), $attrs); + $this->error = @ldap_error($this->cid); + return($r); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function mod_add($attrs = "", $dn = "") + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + if ($dn == "") + $dn = $this->basedn; + + $r = @ldap_mod_add($this->cid, LDAP::fix($dn), $attrs); $this->error = @ldap_error($this->cid); return($r); }else{ @@ -552,6 +566,12 @@ 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.= " objectClass: ".$attrs['objectClass'][$oc].""; + } + } return($r ? $r : 0); }else{ $this->error = "Could not connect to LDAP server"; @@ -565,6 +585,12 @@ 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.= " objectClass: ".$attrs['objectClass'][$oc].""; + } + } return($r ? $r : 0); }else{ $this->error = "Could not connect to LDAP server"; @@ -737,6 +763,7 @@ class LDAP{ } } + function get_attribute($dn, $name,$r_array=0) { $data= ""; @@ -752,12 +779,11 @@ class LDAP{ } } } - if($r_array==0) - return ($data); - else - return ($info); - - + if($r_array==0) { + return ($data); + } else { + return ($info); + } }