Code

Switched log call
[gosa.git] / plugins / admin / systems / class_goImapServer.inc
index ebf9fbb4c8860e959c5dbb66d543facaeafa6293..3fb4fe9578ce7508936bed77f5800e94d8f30e0b 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 
-class goImapServer extends plugin{
+require_once ("class_goService.inc");
+
+class goImapServer extends goService {
        
   var $cli_summary      = "This pluign is used within the ServerService Pluign \nand indicates that this server supports mailqueue listings and so on.";
   var $cli_description  = "Some longer text\nfor help";
@@ -10,17 +12,15 @@ class goImapServer extends plugin{
   var $objectclasses    = array("goImapServer");
   
   /* This class can't be assigned twice so it conflicts with itsself */
-  var $conflicts        = array("goImapServer");
 
   var $DisplayName      = "";
   var $dn               = NULL;
   var $StatusFlag       = "goImapServerStatus";
-  var $attributes       = array("goImapServerStatus",
-                                "goImapName","goImapConnect","goImapAdmin","goImapPassword",
+  var $attributes       = array("goImapName","goImapConnect","goImapAdmin","goImapPassword",
                                 "goImapSieveServer","goImapSievePort",
                                 "cyrusImap","cyrusImapSSL","cyrusPop3","cyrusPop3SSL");
 
-  var $cn;
+  var $cn                   = "";
 
   var $goImapName           = "";
   var $goImapConnect        = "";
@@ -37,20 +37,22 @@ class goImapServer extends plugin{
   var $cyrusPop3            = false;
   var $cyrusPop3SSL         = false;
   var $is_account           = false;
+  var $view_logged  =FALSE;
 
   var $acl; 
 
-  var $Actions              = array();
+  var $Actions              = array();  
+  var $conflicts            = array("goImapServer","kolab");
  
   function goImapServer($config,$dn)
   {
-    plugin::plugin($config,$dn);
+    goService::goService($config,$dn);
   
-    $this->DisplayName = _("Cyrus service");
+    $this->DisplayName = _("IMAP/POP3 service");
 
     $this->Actions = array( SERVICE_STOPPED=>SERVICE_STOPPED,
                             SERVICE_STARTED => SERVICE_STARTED,
-                            SERVICE_RESETTED=>SERVICE_RESETTED,
+                            SERVICE_RESTARTED=>SERVICE_RESTARTED,
                             "repair_database"=>_("Repair database"));
     
   }
@@ -58,110 +60,51 @@ class goImapServer extends plugin{
   function execute()
   { 
     $smarty = get_smarty();
-  
+    if($this->is_account && !$this->view_logged){
+      $this->view_logged = TRUE;
+      new log("view","server/".get_class($this),$this->dn);
+    }
     /* set new status */
     if(isset($_POST['ExecAction'])){
       if(isset($this->Actions[$_POST['action']])){
-        $this->setStatus($_POST['action']);
+
+        $tmp = $this->plInfo();
+        foreach($tmp['plProvidedAcls'] as $name => $translation) {
+          if(preg_match("/^".$_POST['action']."$/i",$name)){
+            if($this->acl_is_writeable($name)){
+              $this->setStatus($_POST['action']);
+            }
+          }
+        }
+
       }
     }
 
     foreach($this->attributes as $attr){
       $smarty->assign($attr,$this->$attr);  
-      $smarty->assign($attr."ACL",chkacl($this->acl,$attr));  
+    }
+
+    $tmp = $this->plInfo();
+    foreach($tmp['plProvidedAcls'] as $name => $translation){
+      $smarty->assign($name."ACL",$this->getacl($name));
     }
     $smarty->assign("Actions",$this->Actions);
     $smarty->assign("is_new",$this->dn);
+    $smarty->assign("is_acc",$this->initially_was_account);
     return($smarty->fetch(get_template_path("goImapServer.tpl",TRUE,dirname(__FILE__))));
   }
 
   function getListEntry()
   {
-    $flag = $this->StatusFlag;
-    $fields['Status']     = $this->$flag;
-    $fields['Message']    = _("Cyrus service");
-    $fields['AllowStart'] = true;
-    $fields['AllowStop']  = true;
-    $fields['AllowReset'] = true;
+    $fields               = goService::getListEntry();
+    $fields['Message']    = _("IMAP/POP3 (Cyrus) service");
     $fields['AllowRemove']= true;
     $fields['AllowEdit']  = true;
     return($fields);
   }
 
-  function remove_from_parent()
-  {
-    plugin::remove_from_parent();
-    /* Check if this is a new entry ... add/modify */
-    $ldap = $this->config->get_ldap_link();
-    $ldap->cat($this->dn,array("objectClass"));
-    if($ldap->count()){
-      $ldap->cd($this->dn);
-      $ldap->modify($this->attrs);
-    }else{
-      $ldap->cd($this->dn);
-      $ldap->add($this->attrs);
-    }
-    show_ldap_error($ldap->get_error());
-  }
-
-  function save()
-  {
-    $this->goImapSieveServer = $this->cn;
-    plugin::save();
-    /* Check if this is a new entry ... add/modify */
-    $ldap = $this->config->get_ldap_link();
-    $ldap->cat($this->dn,array("objectClass"));
-    if($ldap->count()){
-      $ldap->cd($this->dn);
-      $ldap->modify($this->attrs);
-    }else{
-      $ldap->cd($this->dn);
-      $ldap->add($this->attrs);
-    }
-    show_ldap_error($ldap->get_error());
-  }
-
-
-   /* Directly save new status flag */
-  function setStatus($value)
-  {
-    if($value == "none") return;
-    $ldap = $this->config->get_ldap_link();
-    $ldap->cd($this->dn);
-    $ldap->cat($this->dn,array("objectClass","goImapName","goImapConnect","goImapAdmin","goImapPassword"));
-
-    if($ldap->count()){
-
-      $attrs =array();
-      foreach(array("goImapName","goImapConnect","goImapAdmin","goImapPassword") as $required){
-        if(!isset($attrs[$required])){
-          if(empty($this->$required)){
-            print_red(_("Can't set new status while there are blank option within generic configuration part."));
-            return;
-          }else{
-            $attrs[$required] = $this->$required;
-          }
-        }else{
-          $attrs[$required] = $attrs[$required][0];
-        }
-      }
-
-      $tmp = $ldap->fetch();
-      for($i = 0; $i < $tmp['objectClass']['count']; $i ++){
-        $attrs['objectClass'][] = $tmp['objectClass'][$i];
-      }
-      if(!in_array("goImapServer",$attrs['objectClass'])){
-        $attrs['objectClass'][] = "goImapServer";
-      }
-      $flag = $this->StatusFlag;
-      $attrs[$flag] = $value;
-      $this->$flag = $value;
-      $ldap->modify($attrs);
-      show_ldap_error($ldap->get_error());
-    }
-  }
-
-
   function check()
   { 
     $message = plugin::check();
@@ -197,14 +140,50 @@ class goImapServer extends plugin{
       plugin::save_object(); 
 
       foreach(array("cyrusImap","cyrusImapSSL","cyrusPop3","cyrusPop3SSL") as $checkbox) { 
-        if(!isset($_POST[$checkbox])){
-          $this->$checkbox = false;
-        }else{
-          $this->$checkbox = true;
+
+        if($this->acl_is_writeable($checkbox)){
+          if(!isset($_POST[$checkbox])){
+            $this->$checkbox = false;
+          }else{
+            $this->$checkbox = true;
+          }
         }
       }
     }
   }
+
+
+  /* Return plugin informations for acl handling */
+  function plInfo()
+  {
+    return (array(
+          "plShortName"   => _("IMAP/POP3"),
+          "plDescription" => _("IMAP/POP3")." ("._("Services").")",
+          "plSelfModify"  => FALSE,
+          "plDepends"     => array(),
+          "plPriority"    => 94,
+          "plSection"     => array("administration"),
+          "plCategory"    => array("server"),
+
+          "plProvidedAcls"=> array(
+
+            "start"           => _("Start"),
+            "stop"            => _("Stop"),
+            "restart"         => _("Restart"),
+            "repair_database" => _("Repair database"),
+
+            "goImapName"        =>_("Server identifier"),
+            "goImapConnect"     =>_("Connect URL"),
+            "goImapAdmin"       =>_("Admin user"),
+            "goImapPassword"    =>_("Admin password"),
+            "goImapSievePort"   =>_("Sieve port"),
+            "cyrusImap"         =>_("Start IMAP service"),
+            "cyrusImapSSL"      =>_("Start IMAP SSL service"),
+            "cyrusPop3"         =>_("Start POP3 service"),
+            "cyrusPop3SSL"      =>_("Start POP3 SSL service"))
+          ));
+  }
+
 }
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>