1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
16: class IMP_LoginTasks_Task_PurgeSpam extends Horde_LoginTasks_Task
17: {
18: 19: 20:
21: public function __construct()
22: {
23: if ($this->interval = $GLOBALS['prefs']->getValue('purge_spam_interval')) {
24: if ($GLOBALS['prefs']->isLocked('purge_spam_interval')) {
25: $this->display = Horde_LoginTasks::DISPLAY_NONE;
26: }
27: } else {
28: $this->active = false;
29: }
30: }
31:
32: 33: 34: 35: 36:
37: public function execute()
38: {
39:
40: if (!($spam_folder = IMP_Mailbox::getPref('spam_folder')) ||
41: !$spam_folder->exists) {
42: return false;
43: }
44:
45: 46: 47:
48: $del_time = new Horde_Date(time() - ($GLOBALS['prefs']->getValue('purge_spam_keep') * 86400));
49:
50:
51: $query = new Horde_Imap_Client_Search_Query();
52: $query->dateSearch($del_time, Horde_Imap_Client_Search_Query::DATE_BEFORE);
53: $msg_ids = $spam_folder->runSearchQuery($query);
54:
55:
56: if ($GLOBALS['injector']->getInstance('IMP_Message')->delete($msg_ids, array('nuke' => true))) {
57: $msgcount = count($msg_ids);
58: $GLOBALS['notification']->push(sprintf(ngettext("Purging %d message from Spam folder.", "Purging %d messages from Spam folder.", $msgcount), $msgcount), 'horde.message');
59: return true;
60: }
61:
62: return false;
63: }
64:
65: 66: 67: 68: 69: 70:
71: public function describe()
72: {
73: return sprintf(_("All messages in your \"%s\" folder older than %s days will be permanently deleted."),
74: IMP_Mailbox::getPref('spam_folder')->display_html,
75: $GLOBALS['prefs']->getValue('purge_spam_keep'));
76: }
77:
78: }
79: