Falko Timme
2014-04-05 ca4b71c1db5981433efc68f7c032b8dac588b6d5
interface/web/mail/mail_domain_edit.php
@@ -38,14 +38,14 @@
* End Form configuration
******************************************/
require_once('../../lib/config.inc.php');
require_once('../../lib/app.inc.php');
require_once '../../lib/config.inc.php';
require_once '../../lib/app.inc.php';
//* Check permissions for module
$app->auth->check_module_permissions('mail');
// Loading classes
$app->uses('tpl,tform,tform_actions');
$app->uses('tpl,tform,tform_actions,tools_sites');
$app->load('tform_actions');
class page_action extends tform_actions {
@@ -71,8 +71,8 @@
      if($_SESSION["s"]["user"]["typ"] == 'admin') {
         // Getting Clients of the user
         $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(client.company_name,' :: ',client.contact_name) as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY sys_group.name";
         $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
         $clients = $app->db->queryAllRecords($sql);
         $client_select = '';
         if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
@@ -80,35 +80,35 @@
         if(is_array($clients)) {
            foreach( $clients as $client) {
               $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
               $client_select .= "<option value='$client[groupid]' $selected>$client[name] :: $client[contactname]</option>\r\n";
               $client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
            }
         }
         $app->tpl->setVar("client_group_id",$client_select);
         $app->tpl->setVar("client_group_id", $client_select);
      } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
         // Get the limits of the client
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, client.default_mailserver, CONCAT(client.company_name,' :: ',client.contact_name) as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id order by client.contact_name");
         $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, client.default_mailserver, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id order by client.contact_name");
         // Set the mailserver to the default server of the client
         $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = $client[default_mailserver]");
         $app->tpl->setVar("server_id","<option value='$client[default_mailserver]'>$tmp[server_name]</option>");
         $app->tpl->setVar("server_id", "<option value='$client[default_mailserver]'>$tmp[server_name]</option>");
         unset($tmp);
         // Fill the client select field
         $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(client.company_name,' :: ',client.contact_name) as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY sys_group.name";
         $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$app->functions->intval($client['client_id'])." ORDER BY client.company_name, client.contact_name, sys_group.name";
         $clients = $app->db->queryAllRecords($sql);
         $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
         $client_select = '<option value="'.$tmp['groupid'].'">'.$client['name'].' :: '.$client['contactname'].'</option>';
         $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
         $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
         //$tmp_data_record = $app->tform->getDataRecord($this->id);
         if(is_array($clients)) {
            foreach( $clients as $client) {
               $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
               $client_select .= "<option value='$client[groupid]' $selected>$client[name] :: $client[contactname]</option>\r\n";
               $client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
            }
         }
         $app->tpl->setVar("client_group_id",$client_select);
         $app->tpl->setVar("client_group_id", $client_select);
      }
@@ -122,16 +122,7 @@
         /*
          * The domain-module is in use.
         */
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         /*
          * The admin can select ALL domains, the user only the domains assigned to him
          */
         $sql = "SELECT domain_id, domain FROM domain ";
         if ($_SESSION["s"]["user"]["typ"] != 'admin') {
            $sql .= "WHERE sys_groupid =" . $client_group_id;
         }
         $sql .= " ORDER BY domain";
         $domains = $app->db->queryAllRecords($sql);
         $domains = $app->tools_sites->getDomainModuleDomains();
         $domain_select = '';
         if(is_array($domains) && sizeof($domains) > 0) {
            /* We have domains in the list, so create the drop-down-list */
@@ -140,7 +131,7 @@
               if ($domain['domain'] == $this->dataRecord["domain"]) {
                  $domain_select .= " selected";
               }
               $domain_select .= ">" . $domain['domain'] . "</option>\r\n";
               $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "</option>\r\n";
            }
         }
         else {
@@ -151,13 +142,13 @@
            */
            $domain_select .= "<option value=''></option>\r\n";
         }
         $app->tpl->setVar("domain_option",$domain_select);
         $app->tpl->setVar("domain_option", $domain_select);
      }
      // Get the spamfilter policys for the user
      $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = '@".$this->dataRecord["domain"]."'");
      $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r');
      $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = '@".$app->db->quote($this->dataRecord["domain"])."'");
      $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r')." ORDER BY policy_name";
      $policys = $app->db->queryAllRecords($sql);
      $policy_select = "<option value='0'>".$app->tform->wordbook["no_policy"]."</option>";
      if(is_array($policys)) {
@@ -166,7 +157,7 @@
            $policy_select .= "<option value='$p[id]' $selected>$p[policy_name]</option>\r\n";
         }
      }
      $app->tpl->setVar("policy",$policy_select);
      $app->tpl->setVar("policy", $policy_select);
      unset($policys);
      unset($policy_select);
      unset($tmp_user);
@@ -184,30 +175,24 @@
   function onSubmit() {
      global $app, $conf;
        /* check if the domain module is used - and check if the selected domain can be used! */
      /* check if the domain module is used - and check if the selected domain can be used! */
      $app->uses('ini_parser,getconf');
      $settings = $app->getconf->get_global_config('domains');
      if ($settings['use_domain_module'] == 'y') {
         $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
            $sql = "SELECT domain_id, domain FROM domain WHERE domain_id = " . $app->functions->intval($this->dataRecord['domain']);
         if ($_SESSION["s"]["user"]["typ"] != 'admin') {
            $sql .= " AND sys_groupid =" . $client_group_id;
         $domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['domain']);
         if(!$domain_check) {
            // invalid domain selected
            $app->tform->errorMessage .= $app->tform->lng("domain_error_empty")."<br />";
         } else {
            $this->dataRecord['domain'] = $domain_check;
         }
         $domain_check = $app->db->queryOneRecord($sql);
            if(!$domain_check) {
                // invalid domain selected
                $app->tform->errorMessage .= $app->tform->lng("domain_error_empty")."<br />";
            } else {
                $this->dataRecord['domain'] = $domain_check['domain'];
            }
        }
        if($_SESSION["s"]["user"]["typ"] != 'admin') {
      }
      if($_SESSION["s"]["user"]["typ"] != 'admin') {
         // Get the limits of the client
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
         $client = $app->db->queryOneRecord("SELECT limit_maildomain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         // When the record is updated
@@ -266,7 +251,7 @@
            $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
            // We create a new record
            $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
                    VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$this->dataRecord["server_id"].", 5, ".$policy_id.", '@".mysql_real_escape_string($this->dataRecord["domain"])."', '@".mysql_real_escape_string($this->dataRecord["domain"])."', 'Y')";
                    VALUES (".$_SESSION["s"]["user"]["userid"].", ".$app->functions->intval($tmp_domain["sys_groupid"]).", 'riud', 'riud', '', ".$app->functions->intval($this->dataRecord["server_id"]).", 5, ".$app->functions->intval($policy_id).", '@".$app->db->quote($this->dataRecord["domain"])."', '@".$app->db->quote($this->dataRecord["domain"])."', 'Y')";
            $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
            unset($tmp_domain);
         }
@@ -290,7 +275,7 @@
      } else {
         //* We do not allow users to change a domain which has been created by the admin
         $rec = $app->db->queryOneRecord("SELECT domain from mail_domain WHERE domain_id = ".$this->id);
         if($rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id,'u')) {
         if($rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id, 'u')) {
            //* Add a error message and switch back to old server
            $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.');
            $this->dataRecord["domain"] = $rec['domain'];
@@ -330,7 +315,7 @@
            $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
            // We create a new record
            $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
                    VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$this->dataRecord["server_id"].", 5, ".$policy_id.", '@".mysql_real_escape_string($this->dataRecord["domain"])."', '@".mysql_real_escape_string($this->dataRecord["domain"])."', 'Y')";
                    VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$app->functions->intval($this->dataRecord["server_id"]).", 5, ".$app->functions->intval($policy_id).", '@".$app->db->quote($this->dataRecord["domain"])."', '@".$app->db->quote($this->dataRecord["domain"])."', 'Y')";
            $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
            unset($tmp_domain);
         }
@@ -343,19 +328,19 @@
      //** If the domain name or owner has been changed, change the domain and owner in all mailbox records
      if($this->oldDataRecord['domain'] != $this->dataRecord['domain'] || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) {
         $app->uses('getconf');
         $mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"],'mail');
         $mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"], 'mail');
         //* Update the mailboxes
         $mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like '%@".$app->db->quote($this->oldDataRecord['domain'])."'");
         $sys_groupid = (isset($this->dataRecord['client_group_id']))?$this->dataRecord['client_group_id']:$this->oldDataRecord['sys_groupid'];
         $sys_groupid = $app->functions->intval((isset($this->dataRecord['client_group_id']))?$this->dataRecord['client_group_id']:$this->oldDataRecord['sys_groupid']);
         $tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
         $client_user_id = ($tmp['userid'] > 0)?$tmp['userid']:1;
         $client_user_id = $app->functions->intval(($tmp['userid'] > 0)?$tmp['userid']:1);
         if(is_array($mailusers)) {
            foreach($mailusers as $rec) {
               // setting Maildir, Homedir, UID and GID
               $mail_parts = explode("@",$rec['email']);
               $maildir = str_replace("[domain]",$this->dataRecord['domain'],$mail_config["maildir_path"]);
               $maildir = str_replace("[localpart]",$mail_parts[0],$maildir);
               $mail_parts = explode("@", $rec['email']);
               $maildir = str_replace("[domain]", $this->dataRecord['domain'], $mail_config["maildir_path"]);
               $maildir = str_replace("[localpart]", $mail_parts[0], $maildir);
               $maildir = $app->db->quote($maildir);
               $email = $app->db->quote($mail_parts[0].'@'.$this->dataRecord['domain']);
               $app->db->datalogUpdate('mail_user', "maildir = '$maildir', email = '$email', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'mailuser_id', $rec['mailuser_id']);
@@ -363,15 +348,15 @@
         }
         //* Update the aliases
         $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like '%@".$app->db->quote($this->oldDataRecord['domain'])."' OR destination like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
         $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like '%@".$app->db->quote($this->oldDataRecord['domain'])."' OR destination like '%@".$app->db->quote($this->oldDataRecord['domain'])."'");
         if(is_array($forwardings)) {
            foreach($forwardings as $rec) {
               $destination = $app->db->quote(str_replace($this->oldDataRecord['domain'],$this->dataRecord['domain'],$rec['destination']));
               $source = $app->db->quote(str_replace($this->oldDataRecord['domain'],$this->dataRecord['domain'],$rec['source']));
               $destination = $app->db->quote(str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['destination']));
               $source = $app->db->quote(str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['source']));
               $app->db->datalogUpdate('mail_forwarding', "source = '$source', destination = '$destination', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'forwarding_id', $rec['forwarding_id']);
            }
         }
         //* Update the mailinglist
         $app->db->query("UPDATE mail_mailinglist SET sys_userid = $client_user_id, sys_groupid = $sys_groupid WHERE domain = '".$app->db->quote($this->oldDataRecord['domain'])."'");
@@ -389,4 +374,4 @@
$page = new page_action;
$page->onLoad();
?>
?>