Code

Updated listing table summary
[gosa.git] / gosa-core / include / class_ldap.inc
index 17acd751de48a23cee5c39ccfc25359b2f49db2b..d75f800b42443a3ffe4c4d92c146aaeeaf5ea445 100644 (file)
@@ -210,7 +210,7 @@ class LDAP{
     } else {
       $basedn = LDAP::convert($basedn);
     }
-    return(ereg_replace("[^,]*[,]*[ ]*(.*)", "\\1", $basedn));
+    return(preg_replace("/[^,]*[,]*[ ]*(.*)/", "$1", $basedn));
   }
 
   
@@ -662,7 +662,8 @@ class LDAP{
 
       } else {
         $type= preg_replace('/^([^=]+)=.*$/', '\\1', $cdn);
-        $param= preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn);
+        $param= LDAP::fix(preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn));
+        $param=preg_replace(array('/\\\\,/','/\\\\"/'),array(',','"'),$param);
 
         $na= array();
 
@@ -672,7 +673,7 @@ class LDAP{
           /* Get name of first matching objectClass */
           $ocname= "";
           foreach($classes as $class){
-            if (isset($class['MUST']) && $class['MUST'] == "$type"){
+            if (isset($class['MUST']) && in_array($type, $class['MUST'])){
 
               /* Look for first classes that is structural... */
               if (isset($class['STRUCTURAL'])){
@@ -708,8 +709,11 @@ class LDAP{
             $na['objectClass'][]= 'locality';
           }
           $na[$type]= $param;
+
+          // Fill in MUST values - but do not overwrite existing ones.
           if (is_array($classes[$ocname]['MUST'])){
             foreach($classes[$ocname]['MUST'] as $attr){
+              if(isset($na[$attr]) && !empty($na[$attr])) continue;
               $na[$attr]= "filled";
             }
           }
@@ -1012,7 +1016,7 @@ class LDAP{
         /* Append lines ... */
         if(!empty($tmp2)) {
           /* check if we need base64_decode for this line */
-          if(ereg("::",$tmp2))
+          if(strstr($tmp2, "::") !== false)
           {
             $encoded = explode("::",$entry);
             $attr  = trim($encoded[0]);
@@ -1294,7 +1298,11 @@ class LDAP{
                     break;
 
           case ')': if ($name != ""){
-                      $objectclasses[$ocname][$name]= $this->value2container($value);
+                      $v = $this->value2container($value);
+                      if(in_array($name, array('MUST', 'MAY')) && !is_array($v)){
+                        $v = array($v);
+                      }
+                      $objectclasses[$ocname][$name]= $v;
                     }
                     $name= "";
                     $value= "";
@@ -1309,7 +1317,11 @@ class LDAP{
           case 'MUST':
           case 'MAY':
                     if ($name != ""){
-                      $objectclasses[$ocname][$name]= $this->value2container($value);
+                      $v = $this->value2container($value);
+                      if(in_array($name, array('MUST', 'MAY')) && !is_array($v)){
+                        $v = array($v);
+                      }
+                      $objectclasses[$ocname][$name]= $v;
                     }
                     $name= $chunk;
                     $value= "";