Overview

Packages

  • IMP

Classes

  • IMP
  • IMP_Ajax_Addresses
  • IMP_Ajax_Application
  • IMP_Ajax_Application_Compose
  • IMP_Ajax_Application_Handler_Common
  • IMP_Ajax_Application_Handler_ComposeAttach
  • IMP_Ajax_Application_Handler_Draft
  • IMP_Ajax_Application_Handler_Dynamic
  • IMP_Ajax_Application_Handler_ImageUnblock
  • IMP_Ajax_Application_Handler_Mboxtoggle
  • IMP_Ajax_Application_Handler_Passphrase
  • IMP_Ajax_Application_Handler_Remote
  • IMP_Ajax_Application_Handler_RemotePrefs
  • IMP_Ajax_Application_Handler_Search
  • IMP_Ajax_Application_Handler_Smartmobile
  • IMP_Ajax_Application_ListMessages
  • IMP_Ajax_Application_ShowMessage
  • IMP_Ajax_Application_Viewport
  • IMP_Ajax_Application_Viewport_Error
  • IMP_Ajax_Imple_ImportEncryptKey
  • IMP_Ajax_Imple_ItipRequest
  • IMP_Ajax_Imple_PassphraseDialog
  • IMP_Ajax_Imple_VcardImport
  • IMP_Ajax_Queue
  • IMP_Api
  • IMP_Application
  • IMP_Auth
  • IMP_Basic_Base
  • IMP_Basic_Compose
  • IMP_Basic_Contacts
  • IMP_Basic_Error
  • IMP_Basic_Folders
  • IMP_Basic_Listinfo
  • IMP_Basic_Mailbox
  • IMP_Basic_Message
  • IMP_Basic_Pgp
  • IMP_Basic_Saveimage
  • IMP_Basic_Search
  • IMP_Basic_Searchbasic
  • IMP_Basic_Smime
  • IMP_Basic_Thread
  • IMP_Block_Newmail
  • IMP_Block_Summary
  • IMP_Compose
  • IMP_Compose_Attachment
  • IMP_Compose_Attachment_Linked_Metadata
  • IMP_Compose_Attachment_Metadata
  • IMP_Compose_Attachment_Storage
  • IMP_Compose_Attachment_Storage_AutoDetermine
  • IMP_Compose_Attachment_Storage_Temp
  • IMP_Compose_Attachment_Storage_VfsLinked
  • IMP_Compose_Exception
  • IMP_Compose_Exception_Address
  • IMP_Compose_HtmlSignature
  • IMP_Compose_Link
  • IMP_Compose_LinkedAttachment
  • IMP_Compose_Ui
  • IMP_Compose_View
  • IMP_Contacts
  • IMP_Contacts_Avatar_Addressbook
  • IMP_Contacts_Avatar_Gravatar
  • IMP_Contacts_Avatar_Unknown
  • IMP_Contacts_Flag_Host
  • IMP_Contacts_Image
  • IMP_Contents
  • IMP_Contents_InlineOutput
  • IMP_Contents_View
  • IMP_Crypt_Pgp
  • IMP_Crypt_Smime
  • IMP_Dynamic_AddressList
  • IMP_Dynamic_Base
  • IMP_Dynamic_Compose
  • IMP_Dynamic_Compose_Common
  • IMP_Dynamic_Helper_Base
  • IMP_Dynamic_Mailbox
  • IMP_Dynamic_Message
  • IMP_Exception
  • IMP_Factory_AuthImap
  • IMP_Factory_Compose
  • IMP_Factory_ComposeAtc
  • IMP_Factory_Contacts
  • IMP_Factory_Contents
  • IMP_Factory_Flags
  • IMP_Factory_Ftree
  • IMP_Factory_Identity
  • IMP_Factory_Imap
  • IMP_Factory_Mail
  • IMP_Factory_MailAutoconfig
  • IMP_Factory_Mailbox
  • IMP_Factory_MailboxCache
  • IMP_Factory_MailboxList
  • IMP_Factory_Maillog
  • IMP_Factory_MimeViewer
  • IMP_Factory_Pgp
  • IMP_Factory_PrefsSort
  • IMP_Factory_Quota
  • IMP_Factory_Search
  • IMP_Factory_Sentmail
  • IMP_Factory_Smime
  • IMP_Factory_Spam
  • IMP_Filter
  • IMP_Flag_Base
  • IMP_Flag_Imap
  • IMP_Flag_Imap_Answered
  • IMP_Flag_Imap_Deleted
  • IMP_Flag_Imap_Draft
  • IMP_Flag_Imap_Flagged
  • IMP_Flag_Imap_Forwarded
  • IMP_Flag_Imap_Junk
  • IMP_Flag_Imap_NotJunk
  • IMP_Flag_Imap_Seen
  • IMP_Flag_System_Attachment
  • IMP_Flag_System_Encrypted
  • IMP_Flag_System_HighPriority
  • IMP_Flag_System_List
  • IMP_Flag_System_LowPriority
  • IMP_Flag_System_Match_Address
  • IMP_Flag_System_Match_Flag
  • IMP_Flag_System_Match_Header
  • IMP_Flag_System_Personal
  • IMP_Flag_System_Signed
  • IMP_Flag_System_Unseen
  • IMP_Flag_User
  • IMP_Flags
  • IMP_Ftree
  • IMP_Ftree_Account
  • IMP_Ftree_Account_Imap
  • IMP_Ftree_Account_Inboxonly
  • IMP_Ftree_Account_Remote
  • IMP_Ftree_Account_Vfolder
  • IMP_Ftree_Element
  • IMP_Ftree_Eltdiff
  • IMP_Ftree_Iterator
  • IMP_Ftree_Iterator_Ancestors
  • IMP_Ftree_IteratorFilter
  • IMP_Ftree_IteratorFilter_Children
  • IMP_Ftree_IteratorFilter_Containers
  • IMP_Ftree_IteratorFilter_Expanded
  • IMP_Ftree_IteratorFilter_Invisible
  • IMP_Ftree_IteratorFilter_Mailboxes
  • IMP_Ftree_IteratorFilter_Nonimap
  • IMP_Ftree_IteratorFilter_Polled
  • IMP_Ftree_IteratorFilter_Remote
  • IMP_Ftree_IteratorFilter_Special
  • IMP_Ftree_IteratorFilter_Subscribed
  • IMP_Ftree_IteratorFilter_Vfolder
  • IMP_Ftree_Prefs
  • IMP_Ftree_Prefs_Expanded
  • IMP_Ftree_Prefs_Poll
  • IMP_Ftree_Select
  • IMP_Images
  • IMP_Imap
  • IMP_Imap_Acl
  • IMP_Imap_Cache_Wrapper
  • IMP_Imap_Config
  • IMP_Imap_Exception
  • IMP_Imap_Password
  • IMP_Imap_PermanentFlags
  • IMP_Imap_Remote
  • IMP_Indices
  • IMP_Indices_Mailbox
  • IMP_LoginTasks_SystemTask_GarbageCollection
  • IMP_LoginTasks_SystemTask_Upgrade
  • IMP_LoginTasks_SystemTask_UpgradeAuth
  • IMP_LoginTasks_Task_Autocreate
  • IMP_LoginTasks_Task_DeleteAttachmentsMonthly
  • IMP_LoginTasks_Task_DeleteSentmailMonthly
  • IMP_LoginTasks_Task_FilterOnLogin
  • IMP_LoginTasks_Task_PurgeSentmail
  • IMP_LoginTasks_Task_PurgeSpam
  • IMP_LoginTasks_Task_PurgeTrash
  • IMP_LoginTasks_Task_RecoverDraft
  • IMP_LoginTasks_Task_RenameSentmailMonthly
  • IMP_Mailbox
  • IMP_Mailbox_List
  • IMP_Mailbox_List_Pop3
  • IMP_Mailbox_List_Thread
  • IMP_Mailbox_List_Virtual
  • IMP_Mailbox_SessionCache
  • IMP_Mailbox_Ui
  • IMP_Maillog
  • IMP_Maillog_Log_Base
  • IMP_Maillog_Log_Forward
  • IMP_Maillog_Log_Mdn
  • IMP_Maillog_Log_Redirect
  • IMP_Maillog_Log_Reply
  • IMP_Maillog_Log_Replyall
  • IMP_Maillog_Log_Replylist
  • IMP_Maillog_Message
  • IMP_Maillog_Storage_Base
  • IMP_Maillog_Storage_Composite
  • IMP_Maillog_Storage_History
  • IMP_Maillog_Storage_Mdnsent
  • IMP_Maillog_Storage_Null
  • IMP_Mbox_Generate
  • IMP_Mbox_Import
  • IMP_Mbox_Size
  • IMP_Message
  • IMP_Message_Date
  • IMP_Message_Ui
  • IMP_Mime_Headers
  • IMP_Mime_Status
  • IMP_Mime_Status_RenderIssue
  • IMP_Mime_Status_RenderIssue_Display
  • IMP_Mime_Viewer_Alternative
  • IMP_Mime_Viewer_Appledouble
  • IMP_Mime_Viewer_Audio
  • IMP_Mime_Viewer_Enriched
  • IMP_Mime_Viewer_Externalbody
  • IMP_Mime_Viewer_Html
  • IMP_Mime_Viewer_Images
  • IMP_Mime_Viewer_Itip
  • IMP_Mime_Viewer_Mdn
  • IMP_Mime_Viewer_Partial
  • IMP_Mime_Viewer_Pdf
  • IMP_Mime_Viewer_Pgp
  • IMP_Mime_Viewer_Plain
  • IMP_Mime_Viewer_Related
  • IMP_Mime_Viewer_Rfc822
  • IMP_Mime_Viewer_Smil
  • IMP_Mime_Viewer_Smime
  • IMP_Mime_Viewer_Status
  • IMP_Mime_Viewer_Vcard
  • IMP_Mime_Viewer_Video
  • IMP_Mime_Viewer_Zip
  • IMP_Minimal_Base
  • IMP_Minimal_Compose
  • IMP_Minimal_Error
  • IMP_Minimal_Folders
  • IMP_Minimal_Mailbox
  • IMP_Minimal_Message
  • IMP_Minimal_Messagepart
  • IMP_Minimal_Search
  • IMP_Notification_Event_Status
  • IMP_Notification_Handler_Decorator_ImapAlerts
  • IMP_Notification_Handler_Decorator_NewmailNotify
  • IMP_Perms
  • IMP_Prefs_AttribText
  • IMP_Prefs_Identity
  • IMP_Prefs_Sort
  • IMP_Prefs_Sort_FixedDate
  • IMP_Prefs_Sort_None
  • IMP_Prefs_Sort_Sortpref
  • IMP_Prefs_Sort_Sortpref_Locked
  • IMP_Prefs_Special_Acl
  • IMP_Prefs_Special_ComposeTemplates
  • IMP_Prefs_Special_Drafts
  • IMP_Prefs_Special_Encrypt
  • IMP_Prefs_Special_Flag
  • IMP_Prefs_Special_HtmlSignature
  • IMP_Prefs_Special_ImageReplacement
  • IMP_Prefs_Special_InitialPage
  • IMP_Prefs_Special_Mailto
  • IMP_Prefs_Special_NewmailSound
  • IMP_Prefs_Special_PgpPrivateKey
  • IMP_Prefs_Special_PgpPublicKey
  • IMP_Prefs_Special_Remote
  • IMP_Prefs_Special_Searches
  • IMP_Prefs_Special_Sentmail
  • IMP_Prefs_Special_SmimePrivateKey
  • IMP_Prefs_Special_SmimePublicKey
  • IMP_Prefs_Special_Sourceselect
  • IMP_Prefs_Special_Spam
  • IMP_Prefs_Special_SpecialMboxes
  • IMP_Prefs_Special_Trash
  • IMP_Quota
  • IMP_Quota_Hook
  • IMP_Quota_Imap
  • IMP_Quota_Null
  • IMP_Quota_Ui
  • IMP_Remote
  • IMP_Remote_Account
  • IMP_Script_Package_Autocomplete
  • IMP_Script_Package_ComposeBase
  • IMP_Script_Package_DynamicBase
  • IMP_Script_Package_Editor
  • IMP_Script_Package_Imp
  • IMP_Search
  • IMP_Search_Element
  • IMP_Search_Element_Attachment
  • IMP_Search_Element_Autogenerated
  • IMP_Search_Element_Bulk
  • IMP_Search_Element_Contacts
  • IMP_Search_Element_Daterange
  • IMP_Search_Element_Flag
  • IMP_Search_Element_Header
  • IMP_Search_Element_Mailinglist
  • IMP_Search_Element_Or
  • IMP_Search_Element_Personal
  • IMP_Search_Element_Recipient
  • IMP_Search_Element_Size
  • IMP_Search_Element_Text
  • IMP_Search_Element_Within
  • IMP_Search_Filter
  • IMP_Search_Filter_Attachment
  • IMP_Search_Filter_Autogenerated
  • IMP_Search_Filter_Builtin
  • IMP_Search_Filter_Bulk
  • IMP_Search_Filter_Contacts
  • IMP_Search_Filter_Mailinglist
  • IMP_Search_Filter_Personal
  • IMP_Search_IteratorFilter
  • IMP_Search_Query
  • IMP_Search_Ui
  • IMP_Search_Vfolder
  • IMP_Search_Vfolder_Builtin
  • IMP_Search_Vfolder_Vinbox
  • IMP_Search_Vfolder_Vtrash
  • IMP_Sentmail
  • IMP_Sentmail_Mongo
  • IMP_Sentmail_Null
  • IMP_Sentmail_Sql
  • IMP_Smartmobile
  • IMP_Spam
  • IMP_Spam_Email
  • IMP_Spam_Null
  • IMP_Spam_Program
  • IMP_Test
  • IMP_Tree_Flist
  • IMP_Tree_Jquerymobile
  • IMP_Tree_Simplehtml
  • IMP_View_Subinfo

Interfaces

  • IMP_Compose_Attachment_Linked
  • IMP_Contacts_Avatar_Backend
  • IMP_Contacts_Flag_Backend
  • IMP_Spam_Base
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Copyright 2006-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 2006-2014 Horde LLC
 10:  * @license   http://www.horde.org/licenses/gpl GPL
 11:  * @package   IMP
 12:  */
 13: 
 14: /**
 15:  * Common code dealing with message parsing relating to UI display.
 16:  *
 17:  * @author    Michael Slusarz <slusarz@horde.org>
 18:  * @category  Horde
 19:  * @copyright 2006-2014 Horde LLC
 20:  * @license   http://www.horde.org/licenses/gpl GPL
 21:  * @package   IMP
 22:  */
 23: class IMP_Message_Ui
 24: {
 25:     /**
 26:      * Return a list of "basic" headers w/gettext translations.
 27:      *
 28:      * @return array  Header name -> gettext translation mapping.
 29:      */
 30:     public function basicHeaders()
 31:     {
 32:         return array(
 33:             'date'      =>  _("Date"),
 34:             'from'      =>  _("From"),
 35:             'to'        =>  _("To"),
 36:             'cc'        =>  _("Cc"),
 37:             'bcc'       =>  _("Bcc"),
 38:             'reply-to'  =>  _("Reply-To"),
 39:             'subject'   =>  _("Subject")
 40:         );
 41:     }
 42: 
 43:     /**
 44:      * Get the list of user-defined headers to display.
 45:      *
 46:      * @return array  The list of user-defined headers.
 47:      */
 48:     public function getUserHeaders()
 49:     {
 50:         $user_hdrs = $GLOBALS['prefs']->getValue('mail_hdr');
 51: 
 52:         /* Split the list of headers by new lines and sort the list of headers
 53:          * to make sure there are no duplicates. */
 54:         if (is_array($user_hdrs)) {
 55:             $user_hdrs = implode("\n", $user_hdrs);
 56:         }
 57:         $user_hdrs = trim($user_hdrs);
 58:         if (empty($user_hdrs)) {
 59:             return array();
 60:         }
 61: 
 62:         $user_hdrs = array_filter(array_keys(array_flip(array_map('trim', preg_split("/[\n\r]+/", str_replace(':', '', $user_hdrs))))));
 63:         natcasesort($user_hdrs);
 64: 
 65:         return $user_hdrs;
 66:     }
 67: 
 68:     /**
 69:      * Check if we need to send a MDN, and send if needed.
 70:      *
 71:      * @param IMP_Indices $indices         Indices object of the message.
 72:      * @param Horde_Mime_Headers $headers  The headers of the message.
 73:      * @param boolean $confirmed           Has the MDN request been confirmed?
 74:      *
 75:      * @return boolean  True if the MDN request needs to be confirmed.
 76:      */
 77:     public function MDNCheck(
 78:         IMP_Indices $indices, $headers, $confirmed = false
 79:     )
 80:     {
 81:         global $conf, $injector, $prefs;
 82: 
 83:         $maillog = $injector->getInstance('IMP_Maillog');
 84:         $pref_val = $prefs->getValue('send_mdn');
 85: 
 86:         list($mbox, ) = $indices->getSingle();
 87: 
 88:         if (!$pref_val || $mbox->readonly) {
 89:             return false;
 90:         }
 91: 
 92:         /* Check to see if an MDN has been requested. */
 93:         $mdn = new Horde_Mime_Mdn($headers);
 94:         if (!($return_addr = $mdn->getMdnReturnAddr())) {
 95:             return false;
 96:         }
 97: 
 98:         $log_msg = new IMP_Maillog_Message($indices);
 99:         if (count($maillog->getLog($log_msg, array('forward', 'redirect', 'reply_all', 'reply_list', 'reply')))) {
100:             return false;
101:         }
102: 
103:         /* See if we need to query the user. */
104:         if (!$confirmed &&
105:             ((intval($pref_val) == 1) ||
106:              $mdn->userConfirmationNeeded())) {
107:             try {
108:                 if ($injector->getInstance('Horde_Core_Hooks')->callHook('mdn_check', 'imp', array($headers))) {
109:                     return true;
110:                 }
111:             } catch (Horde_Exception_HookNotSet $e) {
112:                 return true;
113:             }
114:         }
115: 
116:         /* Send out the MDN now. */
117:         $success = false;
118:         try {
119:             $mdn->generate(
120:                 false,
121:                 $confirmed,
122:                 'displayed',
123:                 $conf['server']['name'],
124:                 $injector->getInstance('IMP_Mail'),
125:                 array(
126:                     'charset' => 'UTF-8',
127:                     'from_addr' => $injector->getInstance('Horde_Core_Factory_Identity')->create()->getDefaultFromAddress()
128:                 )
129:             );
130: 
131:             $maillog->log($log_msg, new IMP_Maillog_Log_Mdn());
132: 
133:             $success = true;
134:         } catch (Exception $e) {}
135: 
136:         $injector->getInstance('IMP_Sentmail')->log(
137:             IMP_Sentmail::MDN,
138:             '',
139:             $return_addr,
140:             $success
141:         );
142: 
143:         return false;
144:     }
145: 
146:     /**
147:      * Returns e-mail information for a mailing list.
148:      *
149:      * @param Horde_Mime_Headers $headers  A Horde_Mime_Headers object.
150:      *
151:      * @return array  An array with 2 elements: 'exists' and 'reply_list'.
152:      */
153:     public function getListInformation($headers)
154:     {
155:         $ret = array('exists' => false, 'reply_list' => null);
156: 
157:         if ($headers->listHeadersExist()) {
158:             $ret['exists'] = true;
159: 
160:             /* See if the List-Post header provides an e-mail address for the
161:              * list. */
162:             if ($val = $headers->getValue('list-post')) {
163:                 foreach ($GLOBALS['injector']->getInstance('Horde_ListHeaders')->parse('list-post', $val) as $val2) {
164:                     if ($val2 instanceof Horde_ListHeaders_NoPost) {
165:                         break;
166:                     } elseif (stripos($val2->url, 'mailto:') === 0) {
167:                         $ret['reply_list'] = substr($val2->url, 7);
168:                         break;
169:                     }
170:                 }
171:             }
172:         }
173: 
174:         return $ret;
175:     }
176: 
177:     /**
178:      * Builds a string containing a list of addresses.
179:      *
180:      * @param Horde_Mail_Rfc822_List $addrlist  An address list.
181:      * @param Horde_Url $addURL                 The self URL.
182:      * @param boolean $link                     Link each address to the
183:      *                                          compose screen?
184:      *
185:      * @return string  String containing the formatted address list.
186:      */
187:     public function buildAddressLinks(Horde_Mail_Rfc822_List $addrlist,
188:                                       $addURL = null, $link = true)
189:     {
190:         global $prefs, $registry;
191: 
192:         $add_link = null;
193:         $addr_array = array();
194:         $minimal = ($registry->getView() == Horde_Registry::VIEW_MINIMAL);
195: 
196:         /* Set up the add address icon link if contact manager is
197:          * available. */
198:         if (!is_null($addURL) && $link && $prefs->getValue('add_source')) {
199:             try {
200:                 $add_link = $registry->hasMethod('contacts/import')
201:                     ? $addURL->copy()->add('actionID', 'add_address')
202:                     : null;
203:             } catch (Horde_Exception $e) {}
204:         }
205: 
206:         $addrlist->setIteratorFilter();
207:         foreach ($addrlist->base_addresses as $ob) {
208:             if ($ob instanceof Horde_Mail_Rfc822_Group) {
209:                 $group_array = array();
210:                 foreach ($ob->addresses as $ad) {
211:                     $ret = $minimal
212:                         ? strval($ad)
213:                         : htmlspecialchars(strval($ad));
214: 
215:                     if ($link) {
216:                         $clink = new IMP_Compose_Link(array('to' => strval($ad)));
217:                         $ret = Horde::link($clink->link(), sprintf(_("New Message to %s"), strval($ad))) . htmlspecialchars(strval($ad)) . '</a>';
218:                     }
219: 
220:                     /* Append the add address icon to every address if contact
221:                      * manager is available. */
222:                     if ($add_link) {
223:                         $curr_link = $add_link->copy()->add(array(
224:                             'address' => $ad->bare_address,
225:                             'name' => $ad->personal
226:                         ));
227:                         $ret .= Horde::link($curr_link, sprintf(_("Add %s to my Address Book"), $ad->bare_address)) .
228:                             '<span class="iconImg addrbookaddImg"></span></a>';
229:                     }
230: 
231:                     $group_array[] = $ret;
232:                 }
233: 
234:                 $groupname = $minimal
235:                     ? $ob->groupname
236:                     : htmlspecialchars($ob->groupname);
237: 
238:                 $addr_array[] = $groupname . ':' . (count($group_array) ? ' ' . implode(', ', $group_array) : '');
239:             } else {
240:                 $ret = $minimal
241:                     ? strval($ob)
242:                     : htmlspecialchars(strval($ob));
243: 
244:                 if ($link) {
245:                     $clink = new IMP_Compose_Link(array('to' => strval($ob)));
246:                     $ret = Horde::link($clink->link(), sprintf(_("New Message to %s"), strval($ob))) . htmlspecialchars(strval($ob)) . '</a>';
247:                 }
248: 
249:                 /* Append the add address icon to every address if contact
250:                  * manager is available. */
251:                 if ($add_link) {
252:                     $curr_link = $add_link->copy()->add(array(
253:                         'address' => $ob->bare_address,
254:                         'name' => $ob->personal
255:                     ));
256:                     $ret .= Horde::link($curr_link, sprintf(_("Add %s to my Address Book"), $ob->bare_address)) .
257:                         '<span class="iconImg addrbookaddImg"></span></a>';
258:                 }
259: 
260:                 $addr_array[] = $ret;
261:             }
262:         }
263: 
264:         if ($minimal) {
265:             return implode(', ', $addr_array);
266:         }
267: 
268:         /* If left with an empty address list ($ret), inform the user that the
269:          * recipient list is purposely "undisclosed". */
270:         if (empty($addr_array)) {
271:             $ret = _("Undisclosed Recipients");
272:         } else {
273:             /* Build the address line. */
274:             $addr_count = count($addr_array);
275:             $ret = '<span class="nowrap">' . implode(',</span> <span class="nowrap">', $addr_array) . '</span>';
276:             if ($link && $addr_count > 15) {
277:                 $ret = '<span>' .
278:                     '<span onclick="[ this, this.next(), this.next(1) ].invoke(\'toggle\')" class="widget largeaddrlist">' . sprintf(_("Show Addresses (%d)"), $addr_count) . '</span>' .
279:                     '<span onclick="[ this, this.previous(), this.next() ].invoke(\'toggle\')" class="widget largeaddrlist" style="display:none">' . _("Hide Addresses") . '</span>' .
280:                     '<span style="display:none">' .
281:                     $ret . '</span></span>';
282:             }
283:         }
284: 
285:         return $ret;
286:     }
287: 
288:     /**
289:      * Increment mailbox index after deleting a message?
290:      *
291:      * @param IMP_Mailbox $mailbox  Current mailbox.
292:      *
293:      * @return boolean  If true, increments index.
294:      */
295:     public function moveAfterAction(IMP_Mailbox $mailbox)
296:     {
297:         return (!$mailbox->hideDeletedMsgs() &&
298:                 !$GLOBALS['prefs']->getValue('use_trash'));
299:     }
300: 
301: }
302: 
API documentation generated by ApiGen