Code

Updated config object and convert_department dn.
[gosa.git] / gosa-core / include / class_config.inc
index ebb2e73ec0059154773e8e8e767ba1d5817621b4..e800b61a90e1cb219d30e79d66d781566a7b33a5 100644 (file)
@@ -160,11 +160,13 @@ class config  {
       case 'LOCATION':
                   if ($this->tags[$this->level-2] == 'MAIN'){
                     $name= $attrs['NAME'];
+                    $name = preg_replace("/[<>\"']/","",$name);
+                    $attrs['NAME'] = $name;
                     $this->currentLocation= $name;
 
                     /* Add location elements */
-                      $this->data['LOCATIONS'][$name]= $attrs;
-                    }
+                    $this->data['LOCATIONS'][$name]= $attrs;
+                  }
                   break;
 
                   /* Handle referral tags */
@@ -268,6 +270,7 @@ class config  {
   function set_current($name)
   {
     $this->current= $this->data['LOCATIONS'][$name];
+
     if (!isset($this->current['PEOPLE'])){
       $this->current['PEOPLE']= "ou=people";
     }
@@ -669,31 +672,22 @@ class config  {
         }
       }
 
-      /* remove base from dn */
-      $val2 = str_replace($base,"",$val);
-
-      /* Get every single ou */
-      $str = preg_replace("/ou=/","|ou=",$val2);       
-      $elements = array_reverse(split("\|",$str));             
-
-      /* Save last array position */
-      $last = &$arr;
-
-      /* Get array depth  */
-      $cnt = count($elements);
+      /* Split dn into single department pieces.
+       */
+      $elements = array_reverse(split(",",preg_replace("/".normalizePreg($base)."$/","",$val)));               
 
       /* Add last ou element of current dn to our array */
+      $last = &$arr;
       foreach($elements as $key => $ele){
 
-        /* skip enpty */
+        /* skip empty */
         if(empty($ele)) continue;
 
         /* Extract department name */          
-        $elestr = preg_replace("/^ou=/","", $ele);
-        $elestr = preg_replace("/,$/","",$elestr);     
+        $elestr = trim(preg_replace("/^[^=]*+=/","", $ele),",");
 
         /* Add to array */     
-        if($key == ($cnt-2)){
+        if($key == (count($elements)-1)){
           $last[$elestr]['ENTRY'] = $val;
         }
 
@@ -705,13 +699,13 @@ class config  {
     /* Add base entry */
     $ret["/"]["ENTRY"]         = $base;
     $ret["/"]["SUB"]   = $arr;
-
     $this->idepartments= $this->generateDepartmentArray($ret,-1,$max_size);
   }
 
 
   /* Creates display friendly output from make_idepartments */
-  function generateDepartmentArray($arr,$depth = -1,$max_size){
+  function generateDepartmentArray($arr,$depth = -1,$max_size)
+  {
     $ret = array();
     $depth ++;