Skip to content

Commit

Permalink
Filter rules editor
Browse files Browse the repository at this point in the history
  • Loading branch information
shred committed Oct 28, 2014
1 parent 8efdca1 commit 7920d9a
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 1 deletion.
108 changes: 108 additions & 0 deletions filter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<?php
/**
* Emtea -- MTA Mini Manager
* (C) Richard "Shred" Körber
*
* Edit a filter set.
*
*-----------------------------------------------------------------------
* This software is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id:$
*/

require_once('_base.php');

if(!isset($_REQUEST['id'])) die(tr('filter_noid'));
$id = trim($_REQUEST['id']);

if(isDomAdmin() && $id!==getUser()) die("Forbidden");

$errorMsg = '';

//=== PROCESS ALL CHANGES ===
if(isset($_REQUEST['event'])) {
if(trim($_REQUEST['new_folder'])!='') {
$folder = trim($_REQUEST['new_folder']);
$sender = trim($_REQUEST['new_from']);
$subject = trim($_REQUEST['new_subject']);
$recipient = trim($_REQUEST['new_to']);
if($sender=='' && $subject=='' && $recipient=='') {
$errorMsg = tr('filter_emptyrule');
}else {
mysql_query(sprintf(
"INSERT INTO filter SET mailboxid='%s', sender=%s, subject=%s, recipient=%s, folder='%s'",
addslashes($id),
($sender!='' ? "'".addslashes($sender)."'" : "NULL" ),
($subject!='' ? "'".addslashes($subject)."'" : "NULL" ),
($recipient!='' ? "'".addslashes($recipient)."'" : "NULL" ),
addslashes($folder)
));
}
}

foreach($_REQUEST as $key=>$val) {
$val = trim($val);

if(preg_match('/^r_(\d+)_id$/', $key, $ayMatch)) {
$eid = $ayMatch[1];
$folder = trim($_REQUEST['r_'.$eid.'_folder']);
$sender = trim($_REQUEST['r_'.$eid.'_from']);
$subject = trim($_REQUEST['r_'.$eid.'_subject']);
$recipient = trim($_REQUEST['r_'.$eid.'_to']);
if($folder=='') {
$errorMsg = tr('filter_nofolder');
}elseif($sender=='' && $subject=='' && $recipient=='') {
$errorMsg = tr('filter_emptyrule');
}else {
mysql_query(sprintf(
"UPDATE filter SET sender=%s, subject=%s, recipient=%s, folder='%s' WHERE id=%s",
($sender!='' ? "'".addslashes($sender)."'" : "NULL" ),
($subject!='' ? "'".addslashes($subject)."'" : "NULL" ),
($recipient!='' ? "'".addslashes($recipient)."'" : "NULL" ),
addslashes($folder),
addslashes($eid)
));
}
}

//--- Delete entry ---
if(preg_match('/^del_(\d+)$/', $key, $ayMatch)) {
mysql_query(sprintf(
"DELETE FROM filter WHERE id='%s'",
addslashes($ayMatch[1])
));
}
}
}

//=== COLLECT ALL TEMPLATE DATA ===
$rs = mysql_query(sprintf(
"SELECT id, sender, subject, recipient, folder FROM filter WHERE mailboxid='%s'",
addslashes($id)
));
$ayData = array();
while($ayResult = mysql_fetch_array($rs)) {
$ayData[] = $ayResult;
}

//=== PROCESS TEMPLATE ===
$smarty->assign( 'id' , $id );
$smarty->assign( 'errorMsg' , $errorMsg );
$smarty->assign( 'title' , tr('filter_title') );
$smarty->assign( 'ayData' , $ayData );

$smarty->display('filter.tpl');
?>
15 changes: 15 additions & 0 deletions i18n/catalog.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
$lang{'mb_df_spam'} = 'Spam ';
$lang{'mb_df_virus'} = 'Virus ';
$lang{'mb_df_empty'} = 'Empty means';
$lang{'mb_editfilter'} = 'Edit filter rules';
$lang{'mb_imap'} = 'IMAP Access';
$lang{'mb_spamvir'} = 'Spam/Virus check';
$lang{'mb_procmail'} = 'Procmail';
Expand All @@ -95,4 +96,18 @@
$lang{'mb_isdir'} = 'Directory';
$lang{'mb_isfile'} = 'File';

//--- filter.php ---
$lang{'filter_title'} = 'Edit filter rules';
$lang{'filter_mailbox'} = 'Filter rules for mailbox';
$lang{'filter_noid'} = 'No user';
$lang{'filter_error'} = 'Error';
$lang{'filter_submit'} = 'Submit';
$lang{'filter_from'} = 'Sender';
$lang{'filter_subject'} = 'Subject';
$lang{'filter_to'} = 'Recipient';
$lang{'filter_folder'} = 'Folder';
$lang{'filter_delete'} = 'Delete';
$lang{'filter_emptyrule'} = 'Empty filter rule was not accepted';
$lang{'filter_nofolder'} = 'Please specify a folder';

?>
16 changes: 16 additions & 0 deletions i18n/catalog_de.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
$lang{'mb_df_spam'} = 'Spam-';
$lang{'mb_df_virus'} = 'Virus-';
$lang{'mb_df_empty'} = 'Leer =';
$lang{'mb_editfilter'} = 'Filterregeln bearbeiten';
$lang{'mb_imap'} = 'IMAP-Zugriff';
$lang{'mb_spamvir'} = 'Spam/Virus-Check';
$lang{'mb_procmail'} = 'Procmail';
Expand All @@ -95,4 +96,19 @@
$lang{'mb_isdir'} = 'Verzeichnis';
$lang{'mb_isfile'} = 'Datei';

//--- filter.php ---
$lang{'filter_title'} = 'Filter verwalten';
$lang{'filter_mailbox'} = 'Filter für Mailbox';
$lang{'filter_noid'} = 'Kein Benutzer';
$lang{'filter_error'} = 'Fehler';
$lang{'filter_submit'} = 'übernehmen';
$lang{'filter_from'} = 'Absender';
$lang{'filter_subject'} = 'Betreff';
$lang{'filter_to'} = 'Empfänger';
$lang{'filter_folder'} = 'Verzeichnis';
$lang{'filter_delete'} = 'Löschen';
$lang{'filter_emptyrule'} = 'Leere Filterregel wurde nicht übernommen';
$lang{'filter_nofolder'} = 'Ein Zielordner muss angegeben werden';


?>
15 changes: 15 additions & 0 deletions i18n/catalog_it.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
$lang{'mb_df_spam'} = 'Spam-';
$lang{'mb_df_virus'} = 'Virus-';
$lang{'mb_df_empty'} = 'Vuoto =';
$lang{'mb_editfilter'} = 'Pubblichi le regole del filtro';
$lang{'mb_imap'} = 'Accesso IMAP';
$lang{'mb_spamvir'} = 'Controllo Spam/Virus';
$lang{'mb_procmail'} = 'Procmail';
Expand All @@ -95,4 +96,18 @@
$lang{'mb_isdir'} = 'Cartella';
$lang{'mb_isfile'} = 'File';

//--- filter.php ---
$lang{'filter_title'} = 'Pubblichi le regole del filtro';
$lang{'filter_mailbox'} = 'Regole del filtro';
$lang{'filter_noid'} = 'No utente';
$lang{'filter_error'} = 'Errore';
$lang{'filter_submit'} = 'Conferma';
$lang{'filter_from'} = 'Mittente';
$lang{'filter_subject'} = 'Oggetto';
$lang{'filter_to'} = 'Destinatario';
$lang{'filter_folder'} = 'Folder';
$lang{'filter_delete'} = 'Cancellare';
$lang{'filter_emptyrule'} = 'La regola vuota del filtro non è stata accettata';
$lang{'filter_nofolder'} = 'Specifichi prego un dispositivo di piegatura';

?>
72 changes: 72 additions & 0 deletions templates/filter.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{*
* Emtea -- MTA Mini Manager
* (C) Richard "Shred" Körber
*
* This template lists all filters which are related to a mailbox.
*
*-----------------------------------------------------------------------
* This software is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id:$
*}

{include file="header.tpl"}
<h1>{$tr.filter_mailbox}: {$id|escape}</h1>

{if $errorMsg ne ''}<b>{$tr.filter_error|upper}:</b> {$errorMsg}<br>{/if}

<form action="{$smarty.server.PHP_SELF}" method="post">
<input type="hidden" name="id" value="{$id|escape}">
<input type="hidden" name="event" value="1">
<table class="grid">
<tr>
<th>{$tr.filter_from}</th>
<th>{$tr.filter_subject}</th>
<th>{$tr.filter_to}</th>
<th>{$tr.filter_folder}</th>
<th>{$tr.filter_delete}</th>
</tr>
{foreach from=$ayData item=entry}
<tr valign="top">
{* --- From Address --- *}
<td><input type="hidden" name="r_{$entry.id}_id" value="1"><input type="text" name="r_{$entry.id}_from" value="{$entry.sender|escape}" size="15" maxlength="127"></td>
{* --- Subject --- *}
<td><input type="text" name="r_{$entry.id}_subject" value="{$entry.subject|escape}" size="15" maxlength="127"></td>
{* --- To Address --- *}
<td><input type="text" name="r_{$entry.id}_to" value="{$entry.recipient|escape}" size="15" maxlength="127"></td>
{* --- Folder --- *}
<td><input type="text" name="r_{$entry.id}_folder" value="{$entry.folder|escape}" size="15" maxlength="127"></td>
{* --- Delete --- *}
<td><input type="checkbox" name="del_{$entry.id}" value="1"></td>
</tr>
{/foreach}
<tr valign="top">
{* --- From Address --- *}
<td><input type="text" name="new_from" size="15" maxlength="127"></td>
{* --- Subject --- *}
<td><input type="text" name="new_subject" size="15" maxlength="127"></td>
{* --- To Address --- *}
<td><input type="text" name="new_to" size="15" maxlength="127"></td>
{* --- Folder --- *}
<td><input type="text" name="new_folder" size="15" maxlength="127"></td>
{* --- Delete --- *}
<td>&nbsp;</td>
</tr>
</table>
<input type="submit" value="- {$tr.filter_submit|upper} -"><br>
</form>

{include file="footer.tpl"}

4 changes: 4 additions & 0 deletions templates/mailbox.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@
<td class="label">{$tr.mb_df_virus}{$tr.mb_isdir}</td>
<td><input type="text" name="virusdir" value="{$data.virusdir|escape}" size="50" maxlength="127"><br><small>{$tr.mb_df_empty} {$tr.mb_df_mail}{$tr.mb_isdir}</small></td>
</tr>
<tr>
<td class="label">&nbsp;</td>
<td><a href="filter.php?id={$id|escape}">{$tr.mb_editfilter}</a></td>
</tr>
<tr>
<td class="label">{$tr.mb_imap}</td>
<td><select name="imapok" size="1">
Expand Down
2 changes: 1 addition & 1 deletion templates/toc.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
{if (!$domadmin) || ($box.id==$user)}
<a name="{$box.id|escape}"></a>
{if $domadmin}
<span style="font-size:120%">{$box.id|escape}</span>
<a href="filter.php?id={$box.id|escape}" target="index" style="font-size:120%">{$box.id|escape}</a>
{else}
<a href="mailbox.php?id={$box.id|escape}" target="index" style="font-size:120%">{$box.id|escape}</a>
{/if}
Expand Down

0 comments on commit 7920d9a

Please sign in to comment.