Code

Some changes repository plugin
[gosa.git] / plugins / admin / fai / class_faiPartitionTable.inc
index db65fed8545ccba3f6e724d4a42bf8a208918ee3..fc35fd188204f1ff3cc2218af40e4c03074100bd 100644 (file)
@@ -11,7 +11,6 @@ class faiPartitionTable extends plugin
   var $ignore_account   = TRUE;
   var $attributes       = array("cn","description");
   var $objectclasses    = array("top","FAIclass","FAIpartitionTable");
-  var $base64_encode    = array("FAImountPoint","FAImountOptions","FAIfsOptions","description");
 
   /* Specific attributes */
   var $cn               = "";       // The class name for this object
@@ -65,21 +64,22 @@ class faiPartitionTable extends plugin
               $partition[$key] = $val[0];
             }
           }
+
           /* Append fetched partitions
            */
           $partition['status']="edited";
-    
-          foreach($this->base64_encode as $attrs){
-            $partition[$attrs] = base64_decode($partition[$attrs]);
-          }
           $this->disks[$name]['partitions'][$partition['FAIpartitionNr']] = $partition; 
         }  
       }
     }
+    ksort($this->disks);
   }
 
   function execute()
   {
+       /* Call parent execute */
+       plugin::execute();
+
     /* Fill templating stuff */
     $smarty= get_smarty();
     $display= "";
@@ -100,6 +100,11 @@ class faiPartitionTable extends plugin
     /* Edit disk.
      * Open dialog which allows us to edit the selected entry 
      */    
+
+    if($this->dn != "new"){
+      $_SESSION['objectinfo']= $this->dn;
+    }
+
     if((isset($_POST['EditDisk']))&&(isset($_POST['disks']))){
       $usedDiskNames =array();
       foreach($this->disks  as $key=>$disk){
@@ -108,6 +113,7 @@ class faiPartitionTable extends plugin
         }
       }
       $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$_POST['disks']]); 
+      $_SESSION['objectinfo'] = $this->disks[$_POST['disks']]['dn'];
       $this->is_dialog = true;
     }
 
@@ -151,6 +157,7 @@ class faiPartitionTable extends plugin
         unset($this->dialog);
         $this->dialog = NULL;
         $this->is_dialog=false;
+        ksort($this->disks);
       }
     }
 
@@ -215,9 +222,17 @@ class faiPartitionTable extends plugin
           }
         }
         if(!empty($disk['description'])){
-          $a_return[$key]=  $disk['cn']." [".$disk['description']."] - "._("Number of Partitions")." :".$cnt;
+          if($cnt == 1){
+            $a_return[$key]=  $disk['cn']." [".$disk['description']."], ".sprintf(_("%s partition"), $cnt);
+          }else{
+            $a_return[$key]=  $disk['cn']." [".$disk['description']."], ".sprintf(_("%s partition(s)"), $cnt);
+          }
         }else{
-          $a_return[$key]=  $disk['cn']." - "._("Number of Partitions")." :".$cnt;
+          if($cnt == 1){
+            $a_return[$key]=  $disk['cn'].", ".sprintf(_("%s partition"), $cnt);
+          }else{
+            $a_return[$key]=  $disk['cn'].", ".sprintf(_("%s partition(s)"), $cnt);
+          }
         }
       }
     }
@@ -256,16 +271,6 @@ class faiPartitionTable extends plugin
   {
 
     $message= array();
-
-    $str = utf8_encode("üöä");
-    if((empty($this->description))||(preg_match("/[^a-z0-9".$str."\.,;:\-_\? ]/i",$this->description))){
-      $message[]=_("Please enter a valid description.");
-    }
-
-    if((empty($this->cn))||(preg_match("/[^a-z0-9]/i",$this->cn))){
-      $message[]=_("Please enter a valid name.");
-    }
-
     return ($message);
   }
 
@@ -284,8 +289,8 @@ class faiPartitionTable extends plugin
     $ldap = $this->config->get_ldap_link();
 
     if($this->new){
-      $ldap->cd($this->dn);
-      $ldap->create_missing_trees($this->dn);
+      $ldap->cd($this->config->current['BASE']);
+      $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
       $ldap->cd($this->dn);
       $ldap->add($this->attrs);
       show_ldap_error($ldap->get_error());
@@ -317,16 +322,29 @@ class faiPartitionTable extends plugin
       $disk_attrs['cn']           =  $disk['cn'];
       $disk_attrs['description']  =  $disk['description']; 
       $disk_attrs['objectClass']  =  array("top","FAIclass","FAIpartitionDisk");
-  
+
+      if($disk['status']=="new"){
+        $ldap->cat($disk_dn);
+        if($ldap->count()){
+          $disk['status']="edited";
+        }
+      }
       if($disk['status'] == "delete"){
         $ldap->cd($disk_dn);
         $ldap->rmdir_recursive($disk_dn);
       }elseif($disk['status']== "edited"){
+        if(empty($disk_attrs['description'])){
+          $disk_attrs['description']=array();
+        }
         $ldap->cd($disk_dn);
         $ldap->modify($disk_attrs);
       }elseif($disk['status']== "new"){
-        $ldap->cd($disk_dn);
-        $ldap->create_missing_trees($disk_dn);
+        if(empty($disk_attrs['description'])){
+          unset($disk_attrs['description']);
+        }
+        $ldap->cd($this->config->current['BASE']);
+        $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $disk_dn));
         $ldap->cd($disk_dn);
         $ldap->add($disk_attrs);
       }else{
@@ -339,10 +357,6 @@ class faiPartitionTable extends plugin
       foreach($disk['partitions'] as $key => $partition){
         $partition_attrs = array();
 
-        foreach($this->base64_encode as $attrs){
-          $partition[$attrs] = base64_encode($partition[$attrs]);          
-        }
-
         foreach($partition as $key => $value){
           if(!empty($value)){
             $partition_attrs[$key]=$value;        
@@ -351,21 +365,39 @@ class faiPartitionTable extends plugin
           }
         }
 
-        $partition_dn                       = "cn=".$partition_attrs['cn'].",".$disk_dn;      
-        $partition_attrs['objectClass']     = array("top","FAIclass","FAIpartitionEntry");
+        $partition_dn= "FAIpartitionNr=".$partition_attrs['FAIpartitionNr'].",".$disk_dn;      
+        $partition_attrs['objectClass']= array("top","FAIclass","FAIpartitionEntry");
+        $partition_attrs['cn']= $partition_attrs['FAIpartitionNr'];
         
         unset($partition_attrs['status']);
         unset($partition_attrs['old_cn']);
-      
+
+        if($partition['status']=="new"){
+          $ldap->cat($partition_dn);
+          if($ldap->count()){
+            $partition['status']="edited";
+          }
+        }
+
+        if((!isset($partition['FAImountPoint']))||(empty($partition['FAImountPoint']))){
+          $partition_attrs['FAImountPoint']="swap";
+        }
+
         if(($partition['status'] == "delete")&&($disk['status']!="new")){
           $ldap->cd($partition_dn);
           $ldap->rmdir_recursive($partition_dn);
         }elseif($partition['status'] == "new"){
-          $ldap->cd($partition_dn);
-          $ldap->create_missing_trees($partition_dn);
+          if(empty($partition_attrs['description'])){
+            unset($partition_attrs['description']);
+          }
+          $ldap->cd($this->config->current['BASE']);
+          $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $partition_dn));
           $ldap->cd($partition_dn);
           $ldap->add($partition_attrs);
         }elseif($partition['status'] == "edited"){
+          if(empty($partition_attrs['description'])){
+            $partition_attrs['description']=array();
+          }
           $ldap->cd($partition_dn);
           $ldap->modify($partition_attrs);
         }