diff -u --recursive movespam-vanilla/config.inc.php.dist movespam/config.inc.php.dist --- movespam-vanilla/config.inc.php.dist 2014-10-18 09:38:13.193908022 -0400 +++ movespam/config.inc.php.dist 2014-10-18 09:38:20.699924299 -0400 @@ -1,7 +1,10 @@ load_config(); - $this->spam_mbox = $rcmail->config->get('junk_mbox', null); - $this->spam_text = $rcmail->config->get('movespam_subject', null); - $this->move_seen = $rcmail->config->get('movespam_seen', null); + $this->spam_mbox = $rcmail->config->get('junk_mbox', null); + $this->spam_key = $rcmail->config->get('movespam_key', null); + $this->spam_value = $rcmail->config->get('movespam_value', null); + $this->move_seen = $rcmail->config->get('movespam_seen', null); if($rcmail->task == 'mail') { + $this->add_hook('storage_init', array($this, 'fetch_headers')); $this->add_hook('messages_list', array($this, 'check_headers')); } } + + function fetch_headers($fields) + { + $key = strtolower($this->spam_key); + if(!stripos($fields['fetch_headers'], $key)){ + array_push($fields, $key); + $fields['fetch_headers'] = trim($fields['fetch_headers'] . ' ' . strtoupper($key)); + } + return $fields; + } function check_headers($mlist) { @@ -35,9 +48,9 @@ $this->open_mbox = $imap->get_folder(); if(is_array($mlist['messages']) && $this->open_mbox != $this->spam_mbox){ - foreach($mlist['messages'] as $message){ - if (strpos($message->subject, $this->spam_text) === 0){ + $value = $message->get($this->spam_key); + if (strpos($value, $this->spam_value) === 0){ if (!$message->seen || $this->move_seen){ $spam_uids[] = $message->uid; } @@ -47,7 +60,7 @@ if (count($spam_uids)){ $spam_uids_str = implode(',', $spam_uids); $imap->move_message($spam_uids_str, $this->spam_mbox, $this->open_mbox); - $unseen_count = $imap->messagecount($this->spam_mbox, 'UNSEEN'); + $unseen_count = $imap->count($this->spam_mbox, 'UNSEEN'); $rcmail->output->command('set_unread_count', $this->spam_mbox, $unseen_count, false); $this->api->output->command('list_mailbox'); $this->api->output->send();