tbrehm
2007-05-23 22e7f9de84d631f97588c9acaf1f05c860eda088
updated mail module
8 files modified
163 ■■■■■ changed files
interface/lib/app.inc.php 3 ●●●●● patch | view | raw | blame | history
interface/lib/classes/tform_actions.inc.php 15 ●●●●● patch | view | raw | blame | history
interface/web/client/client_edit.php 2 ●●●●● patch | view | raw | blame | history
interface/web/mail/lib/lang/en_mail_domain.lng 1 ●●●● patch | view | raw | blame | history
interface/web/mail/lib/lang/en_mail_user.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/mail/mail_domain_edit.php 52 ●●●●● patch | view | raw | blame | history
interface/web/mail/mail_user_edit.php 78 ●●●●● patch | view | raw | blame | history
interface/web/mail/templates/mail_domain_edit.htm 10 ●●●●● patch | view | raw | blame | history
interface/lib/app.inc.php
@@ -170,6 +170,9 @@
                $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);
                }
          }
interface/lib/classes/tform_actions.inc.php
@@ -97,6 +97,8 @@
        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 @@
        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 == '') {
@@ -197,6 +201,14 @@
                } else {
                        $this->onError();
                }
        }
        function onBeforeUpdate() {
            global $app, $conf;
        }
        function onBeforeInsert() {
            global $app, $conf;
        }
                function onAfterUpdate() {
@@ -480,7 +492,8 @@
                        }
                        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;
interface/web/client/client_edit.php
@@ -100,7 +100,9 @@
        // 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);
        }
        
        
interface/web/mail/lib/lang/en_mail_domain.lng
@@ -8,5 +8,6 @@
$wb["domain_error_empty"] = 'Domain is empty.';
$wb["domain_error_unique"] = 'Duplicate Domain.';
$wb["domain_error_regex"] = 'Invalid domain name.';
$wb["client_txt"] = 'Client';
?>
interface/web/mail/lib/lang/en_mail_user.lng
@@ -17,4 +17,6 @@
$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';
?>
interface/web/mail/mail_domain_edit.php
@@ -49,8 +49,56 @@
// 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();
?>
interface/web/mail/mail_user_edit.php
@@ -53,6 +53,29 @@
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,21 +98,53 @@
        // 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"];
@@ -112,9 +167,26 @@
        $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;
interface/web/mail/templates/mail_domain_edit.htm
@@ -1,4 +1,5 @@
<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">
@@ -8,6 +9,15 @@
    </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>
  </tr>