Code

Removed duplicated save_object
[gosa.git] / plugins / admin / fai / class_faiPartitionTable.inc
index 50a9bb1cd63dfab112d54238721f30477a33f066..efc90856b669f60b3235cec13dc789bc13935d77 100644 (file)
@@ -338,20 +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();
-    show_ldap_error($ldap->get_error());
   
     /* Sort entries, because we must delete entries with status="delete" first */
     $order = array();
@@ -374,15 +371,23 @@ $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();
@@ -390,7 +395,7 @@ $ldap->modify ($this->attrs);
         $ldap->cd($disk_dn);
         $this->cleanup();
         $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']);
@@ -399,13 +404,12 @@ $ldap->modify ($this->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);
-      show_ldap_error($ldap->get_error());
 
       if($disk['status']!="delete")
       /* Add all partitions */
@@ -428,7 +432,7 @@ $ldap->modify ($this->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";
           }
@@ -438,9 +442,17 @@ $ldap->modify ($this->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']);
@@ -449,19 +461,18 @@ $ldap->modify ($this->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);
-        show_ldap_error($ldap->get_error());
       }
     }
     $this->handle_post_events("add");