From eea5cff24c965684882e88632095d725e2d14637 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Sun, 13 Jul 2008 13:12:10 -0400
Subject: [PATCH] The user email filters were now written to the custom mail rules field.
---
interface/web/mail/mail_user_filter_edit.php | 92 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 90 insertions(+), 2 deletions(-)
diff --git a/interface/web/mail/mail_user_filter_edit.php b/interface/web/mail/mail_user_filter_edit.php
index 17da1fd..a419988 100644
--- a/interface/web/mail/mail_user_filter_edit.php
+++ b/interface/web/mail/mail_user_filter_edit.php
@@ -53,17 +53,105 @@
function onSubmit() {
global $app, $conf;
- // Get the parent soa record of the domain
+ // Get the parent mail_user record
$mailuser = $app->db->queryOneRecord("SELECT * FROM mail_user WHERE mailuser_id = '".intval($_REQUEST["mailuser_id"])."' AND ".$app->tform->getAuthSQL('r'));
+
// Check if Domain belongs to user
if($mailuser["mailuser_id"] != $_POST["mailuser_id"]) $app->tform->errorMessage .= $app->tform->wordbook["no_mailuser_perm"];
- // Set the server ID of the rr record to the same server ID as the parent record.
+ // Set the mailuser_id
$this->dataRecord["mailuser_id"] = $mailuser["mailuser_id"];
parent::onSubmit();
}
+ function onAfterInsert() {
+ global $app, $conf;
+
+ $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$this->dataRecord["mailuser_id"]);
+ $rule_content = $mailuser['custom_mailfilter']."\n".$app->db->quote($this->getRule());
+ $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$rule_content'", 'mailuser_id', $this->dataRecord["mailuser_id"]);
+
+ }
+
+ function onAfterUpdate() {
+ global $app, $conf;
+
+ $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$this->dataRecord["mailuser_id"]);
+ $skip = false;
+ $lines = explode("\n",$mailuser['custom_mailfilter']);
+ $out = '';
+ $found = false;
+
+ foreach($lines as $line) {
+ $line = trim($line);
+ if($line == '### BEGIN FILTER_ID:'.$this->id) {
+ $skip = true;
+ $found = true;
+ }
+ if($skip == false && $line != '') $out .= $line ."\n";
+ if($line == '### END FILTER_ID:'.$this->id) {
+ $out .= $this->getRule();
+ $skip = false;
+ }
+ }
+
+ // We did not found our rule, so we add it now.
+ if($found == false) {
+ $out .= $this->getRule();
+ }
+
+ $out = addslashes($out);
+ $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $this->dataRecord["mailuser_id"]);
+
+ }
+
+ function getRule() {
+
+ $content = '';
+ $content .= '### BEGIN FILTER_ID:'.$this->id."\n";
+
+ if($this->dataRecord["action"] == 'move') {
+
+ $content .= "
+`test -e ".'$DEFAULT/'.$this->dataRecord["target"]."`
+if ( ".'$RETURNCODE'." != 0 )
+{
+ `maildirmake -f ".$this->dataRecord["target"].' $DEFAULT'."`
+ `chmod -R 0700 ".'$DEFAULT/'.$this->dataRecord["target"]."`
+}
+";
+ }
+
+ $content .= "if (/^".$this->dataRecord["source"].":";
+
+ if($this->dataRecord["op"] == 'contains') {
+ $content .= ".*".$this->dataRecord["searchterm"]."/:h)\n";
+ } elseif ($this->dataRecord["op"] == 'is') {
+ $content .= $this->dataRecord["searchterm"]."$/:h)\n";
+ } elseif ($this->dataRecord["op"] == 'begins') {
+ $content .= $this->dataRecord["searchterm"]."/:h)\n";
+ } elseif ($this->dataRecord["op"] == 'ends') {
+ $content .= ".*".$this->dataRecord["searchterm"]."$/:h)\n";
+ }
+
+ $content .= "{\n";
+ $content .= "exception {\n";
+
+ if($this->dataRecord["action"] == 'move') {
+ $content .= 'to $DEFAULT/'.$this->dataRecord["target"]."/\n";
+ } else {
+ $content .= "to /dev/null\n";
+ }
+
+ $content .= "}\n";
+ $content .= "}\n";
+
+ $content .= '### END FILTER_ID:'.$this->id."\n";
+
+ return $content;
+ }
+
}
$page = new page_action;
--
Gitblit v1.9.1