1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
13:
14: 15: 16: 17: 18: 19: 20: 21: 22:
23: class IMP_LoginTasks_Task_DeleteSentmailMonthly extends Horde_LoginTasks_Task
24: {
25: 26: 27:
28: public function __construct()
29: {
30: if (($this->active = $GLOBALS['prefs']->getValue('delete_sentmail_monthly_keep')) &&
31: $GLOBALS['prefs']->isLocked('delete_sentmail_monthly_keep')) {
32: $this->display = Horde_LoginTasks::DISPLAY_NONE;
33: }
34: }
35:
36: 37: 38: 39: 40:
41: public function execute()
42: {
43: global $injector, $notification, $prefs;
44:
45: $iterator = new IMP_Ftree_IteratorFilter(
46: $injector->getInstance('IMP_Ftree')
47: );
48: $iterator->add($iterator::CONTAINERS);
49: $mbox_list = array();
50:
51: 52: 53:
54: $sent_mail = $injector->getInstance('IMP_Identity')->getAllSentmail();
55:
56: foreach (array_map('strval', $iterator) as $k) {
57: foreach ($sent_mail as $mbox) {
58: if (preg_match('/^' . str_replace('/', '\/', $mbox) . '-([^-]+)-([0-9]{4})$/i', $k, $regs)) {
59: $mbox_list[$k] = is_numeric($regs[1])
60: ? mktime(0, 0, 0, $regs[1], 1, $regs[2])
61: : strtotime("$regs[1] 1, $regs[2]");
62: }
63: }
64: }
65: arsort($mbox_list, SORT_NUMERIC);
66:
67: $return_val = false;
68:
69:
70: $purge = array_slice(array_keys($mbox_list), $prefs->getValue('delete_sentmail_monthly_keep'));
71: if (count($purge)) {
72: $notification->push(_("Old sent-mail mailboxes being purged."), 'horde.message');
73:
74:
75: foreach (IMP_Mailbox::get($purge) as $val) {
76: if ($val->delete()) {
77: $return_val = true;
78: }
79: }
80: }
81:
82: return $return_val;
83: }
84:
85: 86: 87: 88: 89: 90:
91: public function describe()
92: {
93: return sprintf(_("All old sent-mail mailboxes more than %s months old will be deleted."), $GLOBALS['prefs']->getValue('delete_sentmail_monthly_keep'));
94: }
95:
96: }
97: