Code

Removed duplicated save_object
[gosa.git] / plugins / admin / fai / class_faiPartitionTable.inc
index b5ea44e3bb5a941c4bcb2ff0cc24b659964a3093..efc90856b669f60b3235cec13dc789bc13935d77 100644 (file)
@@ -137,7 +137,14 @@ class faiPartitionTable extends plugin
       $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); 
       $this->dialog->acl = $this->acl;
       $this->dialog->FAIstate = $this->FAIstate;
-      $_SESSION['objectinfo'] = $this->disks[$Udisk]['dn'];
+     
+      /* Set object info string, which will be displayed in plugin info line */ 
+      if(isset($this->disks[$Udisk]['dn'])){
+        $_SESSION['objectinfo'] = $this->disks[$Udisk]['dn'];
+      }else{
+        $_SESSION['objectinfo'] = "";
+      }
+    
       $this->is_dialog = true;
     }
 
@@ -240,7 +247,6 @@ class faiPartitionTable extends plugin
 
     $disks = $this->getDisks();
     $smarty->assign("disks"   ,$disks);
-    $smarty->assign("diskKeys",array_flip($disks));
     $display.= $smarty->fetch(get_template_path('faiPartitionTable.tpl', TRUE));
     return($display);
   }
@@ -307,8 +313,9 @@ class faiPartitionTable extends plugin
   /* Check supplied data */
   function check()
   {
+    /* Call common method to give check the hook */
+    $message= plugin::check();
 
-    $message= array();
     return ($message);
   }
 
@@ -331,17 +338,17 @@ class faiPartitionTable extends plugin
       $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
       $ldap->cd($this->dn);
       $ldap->add($this->attrs);
-      show_ldap_error($ldap->get_error());
     }else{
       /* Add partition table to ldap
        */
       $ldap->cd($this->dn);
       $this->cleanup();
-$ldap->modify ($this->attrs); 
-
-      show_ldap_error($ldap->get_error());
+      $ldap->modify ($this->attrs); 
     }
+    show_ldap_error($ldap->get_error(), _("Saving FAI partition table base failed"));
   
+    /* Do object tagging */
+    $this->handle_object_tagging();
   
     /* Sort entries, because we must delete entries with status="delete" first */
     $order = array();
@@ -364,23 +371,31 @@ $ldap->modify ($this->attrs);
       $disk_attrs['objectClass']  =  array("top","FAIclass","FAIpartitionDisk");
 
       if($disk['status']=="new"){
-        $ldap->cat($disk_dn);
+        $ldap->cat($disk_dn,array("objectClass"));
         if($ldap->count()){
           $disk['status']="edited";
         }
       }
+
+      /* Fix problem with missing objectClass "gosaAdministrativeUnitTag" for disks */
+      $ldap->cat($disk_dn,array("objectClass"));
+      $attrs = $ldap->fetch();
+      if(isset($attrs['objectClass']) && in_array_ics("gosaAdministrativeUnitTag",$attrs['objectClass'])){
+        $disk_attrs['objectClass'][] = "gosaAdministrativeUnitTag";
+      }
  
       if($disk['status'] == "delete"){
         $ldap->cd($disk_dn);
         $ldap->rmdir_recursive($disk_dn);
+        show_ldap_error($ldap->get_error(), _("Removing FAI partition table failed"));
       }elseif($disk['status']== "edited"){
         if(empty($disk_attrs['description'])){
           $disk_attrs['description']=array();
         }
         $ldap->cd($disk_dn);
         $this->cleanup();
-$ldap->modify ($disk_attrs); 
-
+        $ldap->modify ($disk_attrs); 
+        show_ldap_error($ldap->get_error(), _("Saving FAI partition table failed"));
       }elseif($disk['status']== "new"){
         if(empty($disk_attrs['description'])){
           unset($disk_attrs['description']);
@@ -389,11 +404,13 @@ $ldap->modify ($disk_attrs);
         $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $disk_dn));
         $ldap->cd($disk_dn);
         $ldap->add($disk_attrs);
+        show_ldap_error($ldap->get_error(), _("Saving FAI partition table failed"));
       }else{
         print_red("unknown status while saving disks");
       }
 
-      show_ldap_error($ldap->get_error());
+      $this->handle_object_tagging($disk_dn, $this->gosaUnitTag);
+
       if($disk['status']!="delete")
       /* Add all partitions */
       foreach($disk['partitions'] as $key => $partition){
@@ -415,7 +432,7 @@ $ldap->modify ($disk_attrs);
         unset($partition_attrs['old_cn']);
 
         if($partition['status']=="new"){
-          $ldap->cat($partition_dn);
+          $ldap->cat($partition_dn,array("objectClass"));
           if($ldap->count()){
             $partition['status']="edited";
           }
@@ -425,9 +442,17 @@ $ldap->modify ($disk_attrs);
           $partition_attrs['FAImountPoint']="swap";
         }
 
+        /* Fix problem with missing objectClass "gosaAdministrativeUnitTag" for partitions */
+        $ldap->cat($partition_dn,array("objectClass"));
+        $attrs = $ldap->fetch();
+        if(isset($attrs['objectClass']) && in_array_ics("gosaAdministrativeUnitTag",$attrs['objectClass'])){
+          $partition_attrs['objectClass'][] = "gosaAdministrativeUnitTag";
+        }
+
         if(($partition['status'] == "delete")&&($disk['status']!="new")){
           $ldap->cd($partition_dn);
           $ldap->rmdir_recursive($partition_dn);
+          show_ldap_error($ldap->get_error(), _("Removing FAI partition table entry failed"));
         }elseif($partition['status'] == "new"){
           if(empty($partition_attrs['description'])){
             unset($partition_attrs['description']);
@@ -436,16 +461,18 @@ $ldap->modify ($disk_attrs);
           $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $partition_dn));
           $ldap->cd($partition_dn);
           $ldap->add($partition_attrs);
+          show_ldap_error($ldap->get_error(), _("Saving FAI partition table entry failed"));
         }elseif($partition['status'] == "edited"){
           if(empty($partition_attrs['description'])){
             $partition_attrs['description']=array();
           }
           $ldap->cd($partition_dn);
           $this->cleanup();
-$ldap->modify ($partition_attrs); 
-
+          $ldap->modify ($partition_attrs); 
+          show_ldap_error($ldap->get_error(), _("Saving FAI partition table entry failed"));
         } 
-      show_ldap_error($ldap->get_error());
+
+        $this->handle_object_tagging($partition_dn, $this->gosaUnitTag);
       }
     }
     $this->handle_post_events("add");