Marius Burkard
2016-07-01 49441bdd0f3ff75d5092d5b832b97ea722a66363
interface/web/mail/mail_user_edit.php
@@ -207,6 +207,16 @@
      $app->uses('getconf');
      $mail_config = $app->getconf->get_server_config(!empty($domain["server_id"]) ? $domain["server_id"] : '', 'mail');
      // Set Maildir format
      if ($this->id == 0) {
         $this->dataRecord['maildir_format'] = $mail_config['maildir_format'];
      }
      else {
         // restore Maildir format
         $tmp = $app->db->queryOneRecord("SELECT maildir_format FROM mail_user WHERE mailuser_id = ".$app->functions->intval($this->id));
         $this->dataRecord['maildir_format'] = $tmp['maildir_format'];
      }
      //* compose the email field
      if(isset($_POST["email_local_part"]) && isset($_POST["email_domain"])) {
         $this->dataRecord["email"] = strtolower($_POST["email_local_part"]."@".$app->functions->idn_encode($_POST["email_domain"]));
@@ -227,8 +237,13 @@
         $this->dataRecord["homedir"] = $mail_config["homedir_path"];
         
         // Will be overwritten by mail_plugin
         $this->dataRecord['uid'] = -1;
         $this->dataRecord['gid'] = -1;
         if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') {
            $this->dataRecord['uid'] = -1;
            $this->dataRecord['gid'] = -1;
         } else {
            $this->dataRecord['uid'] = intval($mail_config["mailuser_uid"]);
            $this->dataRecord['gid'] = intval($mail_config["mailuser_gid"]);
         }
            
         //* Check if there is no alias or forward with this address
         $tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE active = 'y' AND source = ?", $this->dataRecord["email"]);
@@ -245,9 +260,9 @@
         $this->dataRecord["login"] = isset($this->dataRecord["email"]) ? $this->dataRecord["email"] : '';
      }
      //* if autoresponder checkbox not selected, do not save dates
      if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) {
         $this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_start_date']);
         $this->dataRecord['autoresponder_end_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_end_date']);
      if (!isset($_POST['autoresponder'])) {
         $this->dataRecord['autoresponder_start_date'] = '';
         $this->dataRecord['autoresponder_end_date'] = '';
      }
      parent::onSubmit();
@@ -266,11 +281,22 @@
         $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]);
         if($tmp_user["id"] > 0) {
            // There is already a record that we will update
            $app->db->datalogUpdate('spamfilter_users', "policy_id = $policy_id", 'id', $tmp_user["id"]);
            $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]);
         } else {
            // 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 (".$app->functions->intval($_SESSION["s"]["user"]["userid"]).", ".$app->functions->intval($domain["sys_groupid"]).", 'riud', 'riud', '', ".$app->functions->intval($domain["server_id"]).", 10, ".$app->functions->intval($policy_id).", '".$app->db->quote($this->dataRecord["email"])."', '".$app->db->quote($this->dataRecord["email"])."', 'Y')";
            $insert_data = array(
               "sys_userid" => $_SESSION["s"]["user"]["userid"],
               "sys_groupid" => $domain["sys_groupid"],
               "sys_perm_user" => 'riud',
               "sys_perm_group" => 'riud',
               "sys_perm_other" => '',
               "server_id" => $domain["server_id"],
               "priority" => 10,
               "policy_id" => $policy_id,
               "email" => $this->dataRecord["email"],
               "fullname" => $this->dataRecord["email"],
               "local" => 'Y'
            );
            $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
         }
      }  // endif spamfilter policy
@@ -302,11 +328,22 @@
         if($policy_id > 0) {
            if($tmp_user["id"] > 0) {
               // There is already a record that we will update
               $app->db->datalogUpdate('spamfilter_users', "policy_id = $policy_id", 'id', $tmp_user["id"]);
               $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]);
            } else {
               // 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 (".$app->functions->intval($_SESSION["s"]["user"]["userid"]).", ".$app->functions->intval($domain["sys_groupid"]).", 'riud', 'riud', '', ".$app->functions->intval($domain["server_id"]).", 10, ".$app->functions->intval($policy_id).", '".$app->db->quote($this->dataRecord["email"])."', '".$app->db->quote($this->dataRecord["email"])."', 'Y')";
               $insert_data = array(
                  "sys_userid" => $_SESSION["s"]["user"]["userid"],
                  "sys_groupid" => $domain["sys_groupid"],
                  "sys_perm_user" => 'riud',
                  "sys_perm_group" => 'riud',
                  "sys_perm_other" => '',
                  "server_id" => $domain["server_id"],
                  "priority" => 10,
                  "policy_id" => $policy_id,
                  "email" => $this->dataRecord["email"],
                  "fullname" => $this->dataRecord["email"],
                  "local" => 'Y'
               );
               $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
            }
         }else {
@@ -336,8 +373,8 @@
         $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE destination = ?", $this->oldDataRecord['email']);
         if(is_array($forwardings)) {
            foreach($forwardings as $rec) {
               $destination = $app->db->quote($this->dataRecord['email']);
               $app->db->datalogUpdate('mail_forwarding', "destination = '$destination'", 'forwarding_id', $rec['forwarding_id']);
               $destination = $this->dataRecord['email'];
               $app->db->datalogUpdate('mail_forwarding', array("destination" => $destination), 'forwarding_id', $rec['forwarding_id']);
            }
         }
@@ -345,9 +382,9 @@
      //* Change backup options when user mail backup options have been changed
      if(isset($this->dataRecord['backup_interval']) && ($this->dataRecord['backup_interval'] != $this->oldDataRecord['backup_interval'] || $this->dataRecord['backup_copies'] != $this->oldDataRecord['backup_copies'])) {
         $backup_interval = $app->db->quote($this->dataRecord['backup_interval']);
         $backup_interval = $this->dataRecord['backup_interval'];
         $backup_copies = $app->functions->intval($this->dataRecord['backup_copies']);
         $app->db->datalogUpdate('mail_user', "backup_interval = '$backup_interval', backup_copies = '$backup_copies'", 'mailuser_id', $rec['mailuser_id']);
         $app->db->datalogUpdate('mail_user', array("backup_interval" => $backup_interval, "backup_copies" => $backup_copies), 'mailuser_id', $rec['mailuser_id']);
         unset($backup_copies);
         unset($backup_interval);
      } // end if backup options changed