/**
* Message and Spam Filter Plugin - Filtering Functions
*
- * @copyright © 1999-2005 The SquirrelMail Project Team
+ * @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package plugins
if (! defined('SM_PATH')) define('SM_PATH','../../');
/** load globals */
-global $UseSeparateImapConnection,
- $AllowSpamFilters, $SpamFilters_YourHop, $SpamFilters_ShowCommercial,
- $SpamFilters_DNScache, $SpamFilters_BulkQuery, $SpamFilters_SharedCache,
+global $UseSeparateImapConnection,
+ $AllowSpamFilters, $SpamFilters_YourHop, $SpamFilters_ShowCommercial,
+ $SpamFilters_DNScache, $SpamFilters_BulkQuery, $SpamFilters_SharedCache,
$SpamFilters_CacheTTL;
/** load default config */
$squirrelmail_plugin_hooks['special_mailbox']['filters'] = 'filters_special_mailbox';
$squirrelmail_plugin_hooks['rename_or_delete_folder']['filters'] = 'update_for_folder_hook';
$squirrelmail_plugin_hooks['webmail_bottom']['filters'] = 'start_filters_hook';
+ $squirrelmail_plugin_hooks['folder_status']['filters'] = 'filters_folder_status';
}
/**
}
}
+/* Receive the status of the folder and do something with it */
+function filters_folder_status($statusarr) {
+
+ global $filter_inbox_count;
+ if (empty($filter_inbox_count)) $filter_inbox_count=0;
+
+ //echo "GOT HOOK<br><pre>";
+ //var_dump($statusarr);
+ //echo "</pre><br>\n";
+
+ if ($statusarr['MAILBOX'] == 'INBOX')
+ {
+ if (!empty($statusarr['MESSAGES'])) $filter_inbox_count=$statusarr['MESSAGES'];
+ }
+}
+
/**
* Saves the DNS Cache to disk
* @access private
*/
function start_filters() {
global $imapServerAddress, $imapPort, $imap_stream, $imapConnection,
- $UseSeparateImapConnection, $AllowSpamFilters;
+ $UseSeparateImapConnection, $AllowSpamFilters, $filter_inbox_count;
sqgetGlobalVar('username', $username, SQ_SESSION);
sqgetGlobalVar('key', $key, SQ_COOKIE);
+ $filters = load_filters();
+
+ // No point running spam filters if there aren't any to run //
+ if ($AllowSpamFilters) {
+ $spamfilters = load_spam_filters();
+
+ $AllowSpamFilters = false;
+ foreach($spamfilters as $filterskey=>$value) {
+ if ($value['enabled'] == 'yes') {
+ $AllowSpamFilters = true;
+ break;
+ }
+ }
+ }
+
+ if (!$AllowSpamFilters && empty($filters)) {
+ return;
+ }
+
+
// Detect if we have already connected to IMAP or not.
// Also check if we are forced to use a separate IMAP connection
if ((!isset($imap_stream) && !isset($imapConnection)) ||
$UseSeparateImapConnection ) {
- $stream = sqimap_login($username, $key, $imapServerAddress,
- $imapPort, 10);
- $previously_connected = false;
+ $stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 10);
+ $previously_connected = false;
} else if (isset($imapConnection)) {
$stream = $imapConnection;
$previously_connected = true;
$previously_connected = true;
$stream = $imap_stream;
}
- $aStatus = sqimap_status_messages ($stream, 'INBOX', array('MESSAGES'));
- if ($aStatus['MESSAGES']) {
+ if (!isset($filter_inbox_count)) {
+ $aStatus = sqimap_status_messages ($stream, 'INBOX', array('MESSAGES'));
+ if (!empty($aStatus['MESSAGES'])) {
+ $filter_inbox_count=$aStatus['MESSAGES'];
+ } else {
+ $filter_inbox_count=0;
+ }
+ }
+
+ if ($filter_inbox_count > 0) {
sqimap_mailbox_select($stream, 'INBOX');
// Filter spam from inbox before we sort them into folders
if ($AllowSpamFilters) {
echo "</font></p>\n";
}
-?>
\ No newline at end of file
+?>