1: <?php
2: /**
3: * Copyright 2011-2014 Horde LLC (http://www.horde.org/)
4: *
5: * See the enclosed file COPYING for license information (GPL). If you
6: * did not receive this file, see http://www.horde.org/licenses/gpl.
7: *
8: * @category Horde
9: * @copyright 2011-2014 Horde LLC
10: * @license http://www.horde.org/licenses/gpl GPL
11: * @package IMP
12: */
13:
14: /**
15: * Autocreate special mailboxes on login.
16: *
17: * @author Michael Slusarz <slusarz@horde.org>
18: * @category Horde
19: * @copyright 2011-2014 Horde LLC
20: * @license http://www.horde.org/licenses/gpl GPL
21: * @package IMP
22: */
23: class IMP_LoginTasks_Task_Autocreate extends Horde_LoginTasks_Task
24: {
25: /**
26: * The interval at which to run the task.
27: *
28: * @var integer
29: */
30: public $interval = Horde_LoginTasks::EVERY;
31:
32: /**
33: * Display type.
34: *
35: * @var integer
36: */
37: public $display = Horde_LoginTasks::DISPLAY_NONE;
38:
39: /**
40: * Constructor.
41: */
42: public function __construct()
43: {
44: $this->active = $GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->config->autocreate_special;
45: }
46:
47: /**
48: * Autocreate special mailboxes on login.
49: */
50: public function execute()
51: {
52: foreach (IMP_Mailbox::getSpecialMailboxes() as $key => $val) {
53: if (is_null($val)) {
54: continue;
55: }
56:
57: switch ($key) {
58: case IMP_Mailbox::SPECIAL_COMPOSETEMPLATES:
59: $val->create();
60: break;
61:
62: case IMP_Mailbox::SPECIAL_DRAFTS:
63: $val->create(array(
64: 'special_use' => array(Horde_Imap_Client::SPECIALUSE_DRAFTS)
65: ));
66: break;
67:
68: case IMP_Mailbox::SPECIAL_SENT:
69: foreach ($val as $mbox) {
70: $mbox->create(array(
71: 'special_use' => array(Horde_Imap_Client::SPECIALUSE_SENT)
72: ));
73: }
74: break;
75:
76: case IMP_Mailbox::SPECIAL_SPAM:
77: $val->create(array(
78: 'special_use' => array(Horde_Imap_Client::SPECIALUSE_JUNK)
79: ));
80: break;
81:
82: case IMP_Mailbox::SPECIAL_TRASH:
83: $val->create(array(
84: 'special_use' => array(Horde_Imap_Client::SPECIALUSE_TRASH)
85: ));
86: break;
87: }
88: }
89: }
90:
91: }
92: