X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=plugins%2Ffilters%2Ffilters.php;h=f10e0646bb267b737e86d4f2399325f71b7c4ecd;hp=09dd04f14f697fb02d1371d63b1299040bb603d7;hb=6e515418431c0a99f10705da21366fe7093f95b6;hpb=202bcbcc2b67c7c153db1b09b608b62beeba0496 diff --git a/plugins/filters/filters.php b/plugins/filters/filters.php index 09dd04f1..f10e0646 100644 --- a/plugins/filters/filters.php +++ b/plugins/filters/filters.php @@ -13,8 +13,8 @@ /** * do not allow to call this file directly */ -if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) || - (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) { +if ((isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) || + (isset($HTTP_SERVER_SERVER['SCRIPT_FILENAME']) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) { header("Location: ../../src/login.php"); die(); } @@ -25,6 +25,12 @@ global $UseSeparateImapConnection, $SpamFilters_DNScache, $SpamFilters_BulkQuery, $SpamFilters_SharedCache, $SpamFilters_CacheTTL; +/** + * load required functions. Plugin depends on IMAP functions and they are not + * loaded in src/webmail.php + */ +include_once (SM_PATH . 'functions/imap.php'); + /** load default config */ if (file_exists(SM_PATH . 'plugins/filters/config_default.php')) { include_once (SM_PATH . 'plugins/filters/config_default.php'); @@ -46,28 +52,6 @@ if (file_exists(SM_PATH . 'config/filters_config.php')) { include_once (SM_PATH . 'plugins/filters/config.php'); } -/** - * Init Hooks - * @access private - */ -function filters_init_hooks () { - global $squirrelmail_plugin_hooks; - - if (! sqgetGlobalVar('mailbox',$mailbox,SQ_FORM)) { - $mailbox = 'INBOX'; - } - - $squirrelmail_plugin_hooks['left_main_before']['filters'] = 'start_filters_hook'; - if (isset($mailbox) && $mailbox == 'INBOX') { - $squirrelmail_plugin_hooks['right_main_after_header']['filters'] = 'start_filters_hook'; - } - $squirrelmail_plugin_hooks['optpage_register_block']['filters'] = 'filters_optpage_register_block_hook'; - $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'; -} - /** * Register option blocks * @access private @@ -95,14 +79,10 @@ function filters_optpage_register_block() { /* 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
";
-    //var_dump($statusarr);
-    //echo "

\n"; + global $filter_inbox_count; + if (empty($filter_inbox_count)) $filter_inbox_count=0; - if ($statusarr['MAILBOX'] == 'INBOX') + if ($statusarr['MAILBOX'] == 'INBOX') { if (!empty($statusarr['MESSAGES'])) $filter_inbox_count=$statusarr['MESSAGES']; } @@ -206,14 +186,23 @@ function filters_bulkquery($filters, $IPs) { /** * Starts the filtering process + * @param array $hook_args (since 1.5.2) do hook arguments. Is used to check + * hook name, array key = 0. * @access private */ -function start_filters() { +function start_filters($hook_args) { global $imapServerAddress, $imapPort, $imap_stream, $imapConnection, - $UseSeparateImapConnection, $AllowSpamFilters, $filter_inbox_count; - - sqgetGlobalVar('username', $username, SQ_SESSION); - sqgetGlobalVar('key', $key, SQ_COOKIE); + $UseSeparateImapConnection, $AllowSpamFilters, $filter_inbox_count, + $username; + + /** + * check hook that calls filtering. If filters are called by right_main_after_header, + * do filtering only when we are in INBOX folder. + */ + if ($hook_args[0]=='right_main_after_header' && + (sqgetGlobalVar('mailbox',$mailbox,SQ_FORM) && $mailbox!='INBOX')) { + return; + } $filters = load_filters(); @@ -239,7 +228,7 @@ function start_filters() { // 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, + $stream = sqimap_login($username, false, $imapServerAddress, $imapPort, 10); $previously_connected = false; } else if (isset($imapConnection)) { @@ -370,7 +359,6 @@ function filter_search_and_delete($imap_stream, $where, $what, $where_to, $user_ /* read data back from IMAP */ $read = sqimap_run_command($imap_stream, $search_str, true, $response, $message, TRUE); } else { - // TODO BADCHARSET $search_str .= ' ' . $where . ' {' . strlen($what) . "}"; $sid = sqimap_session_id(true); fputs ($imap_stream, $sid . ' ' . $search_str . "\r\n"); @@ -403,8 +391,8 @@ function filter_search_and_delete($imap_stream, $where, $what, $where_to, $user_ sqimap_msgs_list_move ($imap_stream, $ids, $where_to, false); } } elseif ($response != 'OK') { + $query = $search_str . "\r\n".$what ."\r\n"; if ($response == 'NO') { - $query = $search_str . "\r\n".$what ."\r\n"; if (strpos($message,'BADCHARSET') !== false || strpos($message,'character') !== false) { sqm_trigger_imap_error('SQM_IMAP_BADCHARSET',$query, $response, $message); @@ -963,5 +951,3 @@ function do_error($string) { echo $string; echo "

\n"; } - -?>