Code

Switched log call
[gosa.git] / plugins / admin / systems / class_goImapServer.inc
index 8ad0d12dacf1c381b97b36cbdfef7d87c27ca084..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,14 +37,16 @@ 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 = _("IMAP/POP3 service");
 
@@ -58,17 +60,35 @@ 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);
@@ -78,75 +98,13 @@ class goImapServer extends plugin{
 
   function getListEntry()
   {
-    $flag = $this->StatusFlag;
-    $fields['Status']     = $this->$flag;
-    $fields['Message']    = _("Cyrus service");
-    $fields['AllowStart'] = true;
-    $fields['AllowStop']  = true;
-    $fields['AllowRestart'] = 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;
-    if(!$this->initially_was_account) return;
-    $ldap = $this->config->get_ldap_link();
-    $ldap->cd($this->dn);
-    $ldap->cat($this->dn,array("objectClass"));
-    if($ldap->count()){
-
-      $tmp = $ldap->fetch();
-      for($i = 0; $i < $tmp['objectClass']['count']; $i ++){
-        $attrs['objectClass'][] = $tmp['objectClass'][$i];
-      }
-      $flag = $this->StatusFlag;
-      $attrs[$flag] = $value;
-      $this->$flag = $value;
-      $ldap->modify($attrs);
-      show_ldap_error($ldap->get_error());
-      $this->action_hook();
-    }
-  }
-
-
   function check()
   { 
     $message = plugin::check();
@@ -182,44 +140,48 @@ 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;
+          }
         }
       }
     }
   }
 
-   function action_hook($add_attrs= array())
+
+  /* Return plugin informations for acl handling */
+  function plInfo()
   {
-    /* Find postcreate entries for this class */
-    $command= search_config($this->config->data['MENU'], get_class($this), "ACTION_HOOK");
-    if ($command == "" && isset($this->config->data['TABS'])){
-      $command= search_config($this->config->data['TABS'], get_class($this), "ACTION_HOOK");
-    }
-    if ($command != ""){
-      /* Walk through attribute list */
-      foreach ($this->attributes as $attr){
-        if (!is_array($this->$attr)){
-          $command= preg_replace("/%$attr/", $this->$attr, $command);
-        }
-      }
-      $command= preg_replace("/%dn/", $this->dn, $command);
-      /* Additional attributes */
-      foreach ($add_attrs as $name => $value){
-        $command= preg_replace("/%$name/", $value, $command);
-      }
-      if (check_command($command)){
-        @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__,
-            $command, "Execute");
-
-        exec($command);
-      } else {
-        $message= sprintf(_("Command '%s', specified as ACTION_HOOK for plugin '%s' doesn't seem to exist."), $command, get_class($this));
-        print_red ($message);
-      }
-    }
+    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"))
+          ));
   }
 
 }