1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
14: class Ingo_Script_Imap_Live extends Ingo_Script_Imap_Api
15: {
16: 17:
18: public function deleteMessages($indices)
19: {
20: return $GLOBALS['registry']->hasMethod('mail/deleteMessages')
21: ? $GLOBALS['registry']->call('mail/deleteMessages', array($this->_params['mailbox'], $indices))
22: : false;
23: }
24:
25: 26:
27: public function moveMessages($indices, $folder)
28: {
29: return $GLOBALS['registry']->hasMethod('mail/moveMessages')
30: ? $GLOBALS['registry']->call('mail/moveMessages', array($this->_params['mailbox'], $indices, $folder))
31: : false;
32: }
33:
34: 35:
36: public function copyMessages($indices, $folder)
37: {
38: return $GLOBALS['registry']->hasMethod('mail/copyMessages')
39: ? $GLOBALS['registry']->call('mail/copyMessages', array($this->_params['mailbox'], $indices, $folder))
40: : false;
41: }
42:
43: 44:
45: public function setMessageFlags($indices, $flags)
46: {
47: return $GLOBALS['registry']->hasMethod('mail/flagMessages')
48: ? $GLOBALS['registry']->call('mail/flagMessages', array($this->_params['mailbox'], $indices, $flags, true))
49: : false;
50: }
51:
52: 53:
54: public function fetchEnvelope($indices)
55: {
56: if ($GLOBALS['registry']->hasMethod('mail/imapOb')) {
57: $query = new Horde_Imap_Client_Fetch_Query();
58: $query->envelope();
59: $query->uid();
60:
61: try {
62: return $GLOBALS['registry']->call('mail/imapOb')->fetch($this->_params['mailbox'], $query, array('ids' => new Horde_Imap_Client_Ids($indices)));
63: } catch (Horde_Imap_Client_Exception $e) {}
64: }
65:
66: return false;
67: }
68:
69: 70:
71: public function search($query)
72: {
73: return $GLOBALS['registry']->hasMethod('mail/searchMailbox')
74: ? $GLOBALS['registry']->call('mail/searchMailbox', array($this->_params['mailbox'], $query))
75: : false;
76: }
77:
78: 79:
80: public function getCache()
81: {
82: if ($cache = $GLOBALS['session']->get('ingo', 'imapcache/' . $this->_params['mailbox'])) {
83: return false;
84: }
85:
86: return ($this->_cacheId() != $cache['id'])
87: ? false
88: : $cache['ts'];
89: }
90:
91: 92:
93: public function storeCache($timestamp)
94: {
95: $GLOBALS['session']->set('ingo', 'imapcache/' . $this->_params['mailbox'], array(
96: 'id' => $this->_cacheId(),
97: 'ts' => $timestamp
98: ));
99: }
100:
101: 102:
103: protected function _cacheId()
104: {
105: if ($GLOBALS['registry']->hasMethod('mail/imapOb')) {
106: $ob = $GLOBALS['registry']->call('mail/imapOb');
107: try {
108: return $ob->getCacheId($this->_params['mailbox']);
109: } catch (Horde_Imap_Client_Exception $e) {}
110: }
111:
112: return time();
113: }
114:
115: }
116: