Skip to content
Snippets Groups Projects
Commit 22e7f9de authored by tbrehm's avatar tbrehm
Browse files

updated mail module

parent 76a1008a
Branches
Tags
No related merge requests found
......@@ -170,6 +170,9 @@ class app {
$this->tpl->setVar('app_title',$conf["app_title"]);
$this->tpl->setVar('delete_confirmation',$this->lng('delete_confirmation'));
$this->tpl->setVar('app_module',$_SESSION["s"]["module"]["name"]);
if($_SESSION["s"]["user"]["typ"] == 'admin') {
$this->tpl->setVar('is_admin',1);
}
}
......
......@@ -97,6 +97,8 @@ class tform_actions {
function onUpdate() {
global $app, $conf;
$this->onBeforeUpdate();
$ext_where = '';
$sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'UPDATE',$this->id,$ext_where);
if($app->tform->errorMessage == '') {
......@@ -154,6 +156,8 @@ class tform_actions {
function onInsert() {
global $app, $conf;
$this->onBeforeInsert();
$ext_where = '';
$sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'INSERT',$this->id,$ext_where);
if($app->tform->errorMessage == '') {
......@@ -199,6 +203,14 @@ class tform_actions {
}
}
function onBeforeUpdate() {
global $app, $conf;
}
function onBeforeInsert() {
global $app, $conf;
}
function onAfterUpdate() {
global $app, $conf;
}
......@@ -480,7 +492,8 @@ class tform_actions {
}
if(!$record = $app->db->queryOneRecord($sql)) $app->error($app->lng('error_no_view_permission'));
} else {
$record = $app->tform->encode($_POST,$this->active_tab);
// $record = $app->tform->encode($_POST,$this->active_tab);
$record = $app->tform->encode($this->dataRecord,$this->active_tab);
}
$this->dataRecord = $record;
......
......@@ -100,7 +100,9 @@ class page_action extends tform_actions {
// password changed
if($this->dataRecord["password"] != '') {
$password = addslashes($this->dataRecord["password"]);
$client_id = $this->id;
$sql = "UPDATE sys_user SET passwort = md5('$password') WHERE client_id = $client_id";
$app->db->query($sql);
}
......
......@@ -8,5 +8,6 @@ $wb["btn_cancel_txt"] = 'Cancel';
$wb["domain_error_empty"] = 'Domain is empty.';
$wb["domain_error_unique"] = 'Duplicate Domain.';
$wb["domain_error_regex"] = 'Invalid domain name.';
$wb["client_txt"] = 'Client';
?>
\ No newline at end of file
......@@ -17,4 +17,6 @@ $wb["password_txt"] = 'password';
$wb["maildir_txt"] = 'maildir';
$wb["postfix_txt"] = 'Enable Receiving';
$wb["access_txt"] = 'Enable Access';
$wb["limit_mailbox_txt"] = 'The max. number of mailboxes for your account is reached.';
$wb["limit_mailquota_txt"] = 'The max space for mailboxes is reached. The max. available space in MB is';
?>
\ No newline at end of file
......@@ -49,8 +49,56 @@ if(!stristr($_SESSION["s"]["user"]["modules"],$_SESSION["s"]["module"]["name"]))
// Loading classes
$app->uses('tpl,tform,tform_actions');
$app->load('tform_actions');
// let tform_actions handle the page
$app->tform_actions->onLoad();
class page_action extends tform_actions {
function onShowEnd() {
global $app, $conf;
if($_SESSION["s"]["user"]["typ"] == 'admin') {
// Getting Domains of the user
$sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0";
$clients = $app->db->queryAllRecords($sql);
$client_select = "<option value='0'></option>";
if(is_array($clients)) {
foreach( $clients as $client) {
$selected = ($client["groupid"] == $this->dataRecord["sys_groupid"])?'SELECTED':'';
$client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
}
}
$app->tpl->setVar("client_group_id",$client_select);
}
parent::onShowEnd();
}
function onSubmit() {
if($_SESSION["s"]["user"]["typ"] != 'admin') unset($this->dataRecord["client_group_id"]);
parent::onSubmit();
}
function onAfterInsert() {
global $app, $conf;
if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
$app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id WHERE domain_id = ".$this->id);
}
}
function onAfterUpdate() {
global $app, $conf;
if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
$app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id WHERE domain_id = ".$this->id);
}
}
}
$page = new page_action;
$page->onLoad();
?>
\ No newline at end of file
......@@ -53,6 +53,29 @@ $app->load('tform_actions');
class page_action extends tform_actions {
function onShowNew() {
global $app, $conf;
// we will check only users, not admins
if($_SESSION["s"]["user"]["typ"] == 'user') {
// Get the limits of the client
$client_group_id = $_SESSION["s"]["user"]["default_group"];
$client = $app->db->queryOneRecord("SELECT limit_mailbox FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
// Check if the user may add another mailbox.
if($client["limit_mailbox"] >= 0) {
$tmp = $app->db->queryOneRecord("SELECT count(mailuser_id) as number FROM mail_user WHERE sys_groupid = $client_group_id");
if($tmp["number"] >= $client["limit_mailbox"]) {
$app->error($app->tform->wordbook["limit_mailbox_txt"]);
}
}
}
parent::onShowNew();
}
function onShowEnd() {
global $app, $conf;
......@@ -75,22 +98,54 @@ class page_action extends tform_actions {
// Convert quota from Bytes to MB
$app->tpl->setVar("quota",$this->dataRecord["quota"] / 1024);
parent::onShowEnd();
}
function onSubmit() {
global $app, $conf;
// Get the limits of the client
$client_group_id = $_SESSION["s"]["user"]["default_group"];
$client = $app->db->queryOneRecord("SELECT limit_mailbox, limit_mailquota FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
// 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 its an insert, check for password
if($this->id == 0 and $_POST["password"] == '') {
// if its an insert
if($this->id == 0) {
// check for password
if($_POST["password"] == '') {
$app->tform->errorMessage .= $app->tform->wordbook["error_no_pwd"]."<br>";
}
// Check if the user may add another mailbox.
if($client["limit_mailbox"] >= 0) {
$tmp = $app->db->queryOneRecord("SELECT count(mailuser_id) as number FROM mail_user WHERE sys_groupid = $client_group_id");
if($tmp["number"] >= $client["limit_mailbox"]) {
$app->tform->errorMessage .= $app->tform->wordbook["limit_mailbox_txt"]."<br>";
}
unset($tmp);
}
} // end if insert
// 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;
$new_mailbox_quota = intval($this->dataRecord["quota"]);
if($mailquota + $new_mailbox_quota > $client["limit_mailquota"]) {
$max_free_quota = $client["limit_mailquota"] - $mailquota;
$app->tform->errorMessage .= $app->tform->wordbook["limit_mailquota_txt"].": ".$max_free_quota."<br>";
// Set the quota field to the max free space
$this->dataRecord["quota"] = $max_free_quota;
}
unset($tmp);
unset($tmp_quota);
}
// 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.
......@@ -112,9 +167,26 @@ class page_action extends tform_actions {
$this->dataRecord["uid"] = $mail_config["mailuser_uid"];
$this->dataRecord["gid"] = $mail_config["mailuser_gid"];
parent::onSubmit();
}
function onAfterInsert() {
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);
}
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);
}
}
$app->tform_actions = new page_action;
......
<table width="500" border="0" cellspacing="0" cellpadding="2">
<tmpl_if name="is_admin">
<tr>
<td class="frmText11">{tmpl_var name='server_id_txt'}:</td>
<td class="frmText11">
......@@ -7,6 +8,15 @@
</select>
</td>
</tr>
<tr>
<td class="frmText11">{tmpl_var name='client_txt'}:</td>
<td class="frmText11">
<select name="client_group_id" class="text">
{tmpl_var name='client_group_id'}
</select>
</td>
</tr>
</tmpl_if>
<tr>
<td class="frmText11">{tmpl_var name='domain_txt'}:</td>
<td class="frmText11"><input name="domain" type="text" class="text" value="{tmpl_var name='domain'}" size="30" maxlength="255"></td>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment