Code

Fixed wrong existance check
[gosa.git] / gosa-plugins / systems / admin / systems / class_serverService.inc
index 668bd945f65a2be4a36ad8c2b5138cc320f74d30..4bd58ed1894d29ca7ff73227e0b95b6f0595615e 100644 (file)
@@ -79,7 +79,7 @@ class ServerService extends plugin
           }
         }
       }else{
-        trigger_error("Service class missing: ".$plug['CLASS']);
+        #trigger_error("Service class missing: ".$plug['CLASS']);
       }
     }
     $this->divList = new divListSystemService($config,$this);
@@ -192,9 +192,11 @@ class ServerService extends plugin
     /* Edit a service and make a backup from all attributes, 
        to be able to restore old values after aborting dialog */ 
     if($s_action == "EditSingleService"){
-      $this->backup   = get_object_vars($this->plugins[$s_entry]);
-      $this->dialog   = $this->plugins[$s_entry];
-      $this->current  = $s_entry;
+      if($this->plugins[$s_entry]->acl_is_readable("")){
+        $this->backup   = get_object_vars($this->plugins[$s_entry]);
+        $this->dialog   = $this->plugins[$s_entry];
+        $this->current  = $s_entry;
+      }
     }
 
    
@@ -210,7 +212,7 @@ class ServerService extends plugin
        Restore vars with values before editing */
     if(isset($_POST['CancelService']) && !empty($this->current)){
       if($this->backup == NULL){
-        $this->plugins[$this->current] = new $this->current($this->config,$this->dn);
+        $this->plugins[$this->current] = new $this->current($this->config,$this->dn,$this);
         $this->plugins[$this->current]-> set_acl_base($this->acl_base);
         $this->plugins[$this->current]-> set_acl_category(preg_replace("/\/$/","",$this->acl_category));
 
@@ -258,7 +260,7 @@ class ServerService extends plugin
     /* There is currently a subdialog open, display this dialog */
     if(is_object($this->dialog)){
       $add ="";
-      if(isset($this->dialog->krb_host_key) && $this->dialog->krb_host_key instanceof krb_host_keys){
+      if(isset($this->dialog->krb_host_key) && $this->dialog->krb_host_key instanceof krbHostKeys){
         $add = $this->dialog->krb_host_key->save_object_by_prefix($this->dialog->krb_service_prefix);
         $add = $this->dialog->krb_host_key->execute_by_prefix($this->dialog->krb_service_prefix,TRUE);
       }
@@ -380,7 +382,7 @@ class ServerService extends plugin
         $tmp = $this->plugins[$name]->getListEntry();
 
         /* Check if given action is allowed for this service */
-        if($tmp[$map[$action]]){
+        if($tmp[$map[$action]] && !empty($this->plugins[$name]->StatusFlag)){
           if($this->plugins[$name]->initially_was_account && $this->plugins[$name]->is_account){
             $this->plugins[$name]->setStatus($action);
           }
@@ -426,8 +428,8 @@ class ServerService extends plugin
         }
       }
       if($this->plugins[$name]->initially_was_account){
-        if(isset($this->plugins[$name]->krb_host_key) && $this->plugins[$name]->krb_host_key instanceof krb_host_keys){
-          $this->plugins[$name]->krb_host_key->remove_from_parent_by_prefix($this->plugins[$name]->krb_host_key);
+        if(isset($this->plugins[$name]->krb_host_key) && $this->plugins[$name]->krb_host_key instanceof krbHostKeys){
+          $this->plugins[$name]->krb_host_key->remove_from_parent_by_prefix($this->plugins[$name]->krb_service_prefix);
         }
         $this->plugins[$name]->remove_from_parent();
       }