From 0af0e9edbe9e466fb90bc5142912e2cd0e504e9d Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 04 Mar 2009 05:36:26 -0500 Subject: [PATCH] Removed document root input field from interface. --- interface/web/mail/mail_user_edit.php | 145 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 114 insertions(+), 31 deletions(-) diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index d611e23..fd11f66 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -41,11 +41,8 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); -// Checking module permissions -if(!stristr($_SESSION["s"]["user"]["modules"],$_SESSION["s"]["module"]["name"])) { - header("Location: ../index.php"); - exit; -} +//* Check permissions for module +$app->auth->check_module_permissions('mail'); // Loading classes $app->uses('tpl,tform,tform_actions'); @@ -89,14 +86,32 @@ $domain_select = ''; if(is_array($domains)) { foreach( $domains as $domain) { - $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; + $selected = ($domain["domain"] == @$email_parts[1])?'SELECTED':''; $domain_select .= "<option value='$domain[domain]' $selected>$domain[domain]</option>\r\n"; } } $app->tpl->setVar("email_domain",$domain_select); + unset($domains); + unset($domain_select); + + // Get the spamfilter policys for the user + $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = '".$this->dataRecord["email"]."'"); + $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r'); + $policys = $app->db->queryAllRecords($sql); + $policy_select = "<option value='0'>".$app->tform->wordbook["no_policy"]."</option>"; + if(is_array($policys)) { + foreach( $policys as $p) { + $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; + $policy_select .= "<option value='$p[id]' $selected>$p[policy_name]</option>\r\n"; + } + } + $app->tpl->setVar("policy",$policy_select); + unset($policys); + unset($policy_select); + unset($tmp_user); // Convert quota from Bytes to MB - $app->tpl->setVar("quota",$this->dataRecord["quota"] / 1024); + $app->tpl->setVar("quota",$this->dataRecord["quota"] / 1024 / 1024); parent::onShowEnd(); } @@ -105,8 +120,10 @@ global $app, $conf; // Check if Domain belongs to user - $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); - if($domain["domain"] != $_POST["email_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + if(isset($_POST["email_domain"])) { + $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); + if($domain["domain"] != $_POST["email_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + } // if its an insert, check that the password is not empty @@ -114,7 +131,7 @@ $app->tform->errorMessage .= $app->tform->wordbook["error_no_pwd"]."<br>"; } - // Ccheck the client limits, if user is not the admin + // Check the client limits, if user is not the admin if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin // Get the limits of the client $client_group_id = $_SESSION["s"]["user"]["default_group"]; @@ -133,7 +150,7 @@ // Check the quota and adjust if($client["limit_mailquota"] >= 0) { $tmp = $app->db->queryOneRecord("SELECT sum(quota) as mailquota FROM mail_user WHERE mailuser_id != ".intval($this->id)." AND sys_groupid = $client_group_id"); - $mailquota = $tmp["mailquota"] / 1024; + $mailquota = $tmp["mailquota"] / 1024 / 1024; $new_mailbox_quota = intval($this->dataRecord["quota"]); if($mailquota + $new_mailbox_quota > $client["limit_mailquota"]) { $max_free_quota = $client["limit_mailquota"] - $mailquota; @@ -148,25 +165,28 @@ // compose the email field - $this->dataRecord["email"] = $_POST["email_local_part"]."@".$_POST["email_domain"]; - // Set the server id of the mailbox = server ID of mail domain. - $this->dataRecord["server_id"] = $domain["server_id"]; + if(isset($_POST["email_local_part"]) && isset($_POST["email_domain"])) { + $this->dataRecord["email"] = $_POST["email_local_part"]."@".$_POST["email_domain"]; - unset($this->dataRecord["email_local_part"]); - unset($this->dataRecord["email_domain"]); + // Set the server id of the mailbox = server ID of mail domain. + $this->dataRecord["server_id"] = $domain["server_id"]; - // Convert quota from MB to Bytes - $this->dataRecord["quota"] = $this->dataRecord["quota"] * 1024; + unset($this->dataRecord["email_local_part"]); + unset($this->dataRecord["email_domain"]); - // setting Maildir, Homedir, UID and GID - $app->uses('getconf'); - $mail_config = $app->getconf->get_server_config($domain["server_id"],'mail'); - $maildir = str_replace("[domain]",$domain["domain"],$mail_config["maildir_path"]); - $maildir = str_replace("[localpart]",$_POST["email_local_part"],$maildir); - $this->dataRecord["maildir"] = $maildir; - $this->dataRecord["homedir"] = $mail_config["homedir_path"]; - $this->dataRecord["uid"] = $mail_config["mailuser_uid"]; - $this->dataRecord["gid"] = $mail_config["mailuser_gid"]; + // Convert quota from MB to Bytes + $this->dataRecord["quota"] = $this->dataRecord["quota"] * 1024 * 1024; + + // setting Maildir, Homedir, UID and GID + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($domain["server_id"],'mail'); + $maildir = str_replace("[domain]",$domain["domain"],$mail_config["maildir_path"]); + $maildir = str_replace("[localpart]",$_POST["email_local_part"],$maildir); + $this->dataRecord["maildir"] = $maildir; + $this->dataRecord["homedir"] = $mail_config["homedir_path"]; + $this->dataRecord["uid"] = $mail_config["mailuser_uid"]; + $this->dataRecord["gid"] = $mail_config["mailuser_gid"]; + } parent::onSubmit(); @@ -176,16 +196,79 @@ global $app, $conf; // Set the domain owner as mailbox owner - $domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); + $domain = $app->db->queryOneRecord("SELECT sys_groupid, server_id FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); $app->db->query("UPDATE mail_user SET sys_groupid = ".$domain["sys_groupid"]." WHERE mailuser_id = ".$this->id); + + // send a welcome email to create the mailbox +// mail($this->dataRecord["email"],$app->tform->wordbook["welcome_mail_subject"],$app->tform->wordbook["welcome_mail_message"]); + + // tries to detect current charset, and encode subject-header and body from it to ISO-8859-1. + $fromCharset = mb_detect_encoding($app->tform->wordbook["welcome_mail_subject"]); + $iconvPreferences = array("input-charset" => $fromCharset, + "output-charset" => "ISO-8859-1", + "line-length" => 76, + "line-break-chars" => "\n", + "scheme" => "Q"); + + $welcomeFromName = $app->tform->wordbook["welcome_mail_fromname_txt"]; + $welcomeFromEmail = $app->tform->wordbook["welcome_mail_fromemail_txt"]; + $mailHeaders = "MIME-Version: 1.0" . "\n"; + $mailHeaders .= "Content-type: text/plain; charset=iso-8859-1" . "\n"; + $mailHeaders .= "From: $welcomeFromName <$welcomeFromEmail>" . "\n"; + $mailHeaders .= "Reply-To: <$welcomeFromEmail>" . "\n"; + $mailTarget = $this->dataRecord["email"]; + $mailSubject = iconv_mime_encode("trimoff", $app->tform->wordbook["welcome_mail_subject"], $iconvPreferences); + $mailSubject = str_replace("trimoff: ", "", $mailSubject); + $mailBody = iconv ($fromCharset, "ISO-8859-1", $app->tform->wordbook["welcome_mail_message"]); + + mail($mailTarget, $mailSubject, $mailBody, $mailHeaders); + + // Spamfilter policy + $policy_id = intval($this->dataRecord["policy"]); + if($policy_id > 0) { + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '".mysql_real_escape_string($this->dataRecord["email"])."'"); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + $app->db->datalogUpdate('spamfilter_users', "policy_id = $ploicy_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 (".$_SESSION["s"]["user"]["userid"].", ".$domain["sys_groupid"].", 'riud', 'riud', '', ".$domain["server_id"].", 1, ".$policy_id.", '".mysql_real_escape_string($this->dataRecord["email"])."', '".mysql_real_escape_string($this->dataRecord["email"])."', 'Y')"; + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + } + } // endif spamfilter policy + } function onAfterUpdate() { global $app, $conf; // Set the domain owner as mailbox owner - $domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); - $app->db->query("UPDATE mail_user SET sys_groupid = ".$domain["sys_groupid"]." WHERE mailuser_id = ".$this->id); + if(isset($_POST["email_domain"])) { + $domain = $app->db->queryOneRecord("SELECT sys_groupid, server_id FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); + $app->db->query("UPDATE mail_user SET sys_groupid = ".$domain["sys_groupid"]." WHERE mailuser_id = ".$this->id); + + // Spamfilter policy + $policy_id = intval($this->dataRecord["policy"]); + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '".mysql_real_escape_string($this->dataRecord["email"])."'"); + 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 = $ploicy_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 (".$_SESSION["s"]["user"]["userid"].", ".$domain["sys_groupid"].", 'riud', 'riud', '', ".$domain["server_id"].", 1, ".$policy_id.", '".mysql_real_escape_string($this->dataRecord["email"])."', '".mysql_real_escape_string($this->dataRecord["email"])."', 'Y')"; + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + } + }else { + if($tmp_user["id"] > 0) { + // There is already a record but the user shall have no policy, so we delete it + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]); + } + } // endif spamfilter policy + } + } } @@ -193,4 +276,4 @@ $app->tform_actions = new page_action; $app->tform_actions->onLoad(); -?> \ No newline at end of file +?> -- Gitblit v1.9.1