* Tyler Akins
* Brent Bice
* (c) 2000 (GNU GPL - see ../../COPYING)
*
* This plugin filters your inbox into different folders based upon given
* criteria. It is most useful for people who are subscibed to mailing lists
* to help organize their messages. The argument stands that filtering is
* not the place of the client, which is why this has been made a plugin for
* SquirrelMail. You may be better off using products such as Sieve or
* Procmail to do your filtering so it happens even when SquirrelMail isn't
* running.
*
* If you need help with this, or see improvements that can be made, please
* email me directly at the address above. I definately welcome suggestions
* and comments. This plugin, as is the case with all SquirrelMail plugins,
* is not directly supported by the developers. Please come to me off the
* mailing list if you have trouble with it.
*
* Also view plugins/README.plugins for more information.
*
*/
chdir('..');
require_once('../src/validate.php');
require_once('../functions/page_header.php');
require_once('../functions/imap.php');
require_once('../src/load_prefs.php');
global $AllowSpamFilters;
displayPageHeader($color, 'None');
if (isset($filter_submit)) {
if (!isset($theid)) $theid = 0;
$filter_what = str_replace(',', ' ', $filter_what);
$filter_what = str_replace("\\\\", "\\", $filter_what);
$filter_what = str_replace("\\\"", "\"", $filter_what);
$filter_what = str_replace("\"", """, $filter_what);
setPref($data_dir, $username, 'filter'.$theid, $filter_where.','.$filter_what.','.$filter_folder);
$filters[$theid]['where'] = $filter_where;
$filters[$theid]['what'] = $filter_what;
$filters[$theid]['folder'] = $filter_folder;
} elseif (isset($spam_submit) && $AllowSpamFilters) {
$spam_filters = load_spam_filters();
setPref($data_dir, $username, 'filters_spam_folder', $filters_spam_folder_set);
setPref($data_dir, $username, 'filters_spam_scan', $filters_spam_scan_set);
foreach ($spam_filters as $Key => $Value)
{
$input = $spam_filters[$Key]['prefname'] . '_set';
setPref($data_dir, $username, $spam_filters[$Key]['prefname'],
$$input);
}
} elseif (isset($action) && $action == 'delete') {
remove_filter($theid);
} elseif (isset($action) && $action == 'move_up') {
filter_swap($theid, $theid - 1);
} elseif (isset($action) && $action == 'move_down') {
filter_swap($theid, $theid + 1);
}
if ($AllowSpamFilters) {
$filters_spam_folder = getPref($data_dir, $username, 'filters_spam_folder');
$filters_spam_scan = getPref($data_dir, $username, 'filters_spam_scan');
}
$filters = load_filters();
echo '
' .
'
'.
"".
'' . _("Options") . ' - ' . _("Message Filtering") . ''.
' |
'.
'
[' . _("New") .
'] - [' . _("Done") . ']
' .
'';
for ($i=0; $i < count($filters); $i++) {
if ($i % 2 == 0) {
$clr = $color[0];
} else {
$clr = $color[9];
}
$fdr = ($folder_prefix)?str_replace($folder_prefix, "", $filters[$i]["folder"]):$filters[$i]["folder"];
echo "".
"[" . _("Edit") . ']'.
' | '.
"[" . _("Delete") . ']'.
' | [';
if (isset($filters[$i + 1])) {
echo "" . _("Down") . '';
if ($i > 0) {
echo ' | ';
}
}
if ($i > 0) {
echo "" . _("Up") . '';
}
echo '] | - ';
printf( _("If %s contains %s then move to %s"), _($filters[$i]['where']), $filters[$i]['what'], $fdr );
echo ' |
';
}
echo '
'.
'';
if ($AllowSpamFilters) {
echo "".
'' . _("Spam Filtering") . ' |
'.
'
';
if (! isset($action) || $action != 'spam') {
echo '[' . _("Edit") . ']
';
printf( _("Spam is sent to %s"), ($filters_spam_folder?$filters_spam_folder:_("[not set yet]") ) );
echo '
';
printf( _("Spam scan is limited to %s"), (($filters_spam_scan == 'new')?_("New Messages Only"):_("All Messages") ) );
echo '
'.
"';
}
}
if (isset($action) && ($action == 'add' || $action == 'edit')) {
$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
$boxes = sqimap_mailbox_list($imapConnection);
sqimap_logout($imapConnection);
if ( !isset($theid) ) {
$theid = count($filters);
}
echo ''.
''.
'';
} else if (isset($action) && $action == 'spam' && $AllowSpamFilters) {
$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
$boxes = sqimap_mailbox_list($imapConnection);
sqimap_logout($imapConnection);
for ($i = 0; $i < count($boxes) && $filters_spam_folder == ''; $i++) {
if ($boxes[$i]['flags'][0] != 'noselect' &&
$boxes[$i]['flags'][1] != 'noselect' &&
$boxes[$i]['flags'][2] != 'noselect') {
$filters_spam_folder = $boxes[$i]['unformatted'];
}
}
echo '';
sqimap_logout($imapConnection);
}
?>