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 1999-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 1999-2014 Horde LLC
 10:  * @license   http://www.horde.org/licenses/gpl GPL
 11:  * @package   IMP
 12:  */
 13: 
 14: /**
 15:  * IMP base class.
 16:  *
 17:  * @author    Chuck Hagenbuch <chuck@horde.org>
 18:  * @author    Jon Parise <jon@horde.org>
 19:  * @author    Michael Slusarz <slusarz@horde.org>
 20:  * @category  Horde
 21:  * @copyright 1999-2014 Horde LLC
 22:  * @license   http://www.horde.org/licenses/gpl GPL
 23:  * @package   IMP
 24:  */
 25: class IMP
 26: {
 27:     /* Encrypt constants. */
 28:     const ENCRYPT_NONE = 'encrypt_none';
 29: 
 30:     /* IMP Mailbox view constants. */
 31:     const MAILBOX_START_FIRSTUNSEEN = 1;
 32:     const MAILBOX_START_LASTUNSEEN = 2;
 33:     const MAILBOX_START_FIRSTPAGE = 3;
 34:     const MAILBOX_START_LASTPAGE = 4;
 35: 
 36:     /* Folder list actions. */
 37:     const NOTEPAD_EDIT = "notepad\0";
 38:     const TASKLIST_EDIT = "tasklist\0";
 39: 
 40:     /* Initial page constants. */
 41:     const INITIAL_FOLDERS = "initial\0folders";
 42: 
 43:     /* Sorting constants. */
 44:     const IMAP_SORT_DATE = 100;
 45: 
 46:     /**
 47:      * Filters a string, if requested.
 48:      *
 49:      * @param string $text  The text to filter.
 50:      *
 51:      * @return string  The filtered text (if requested).
 52:      */
 53:     public static function filterText($text)
 54:     {
 55:         global $injector, $prefs;
 56: 
 57:         if ($prefs->getValue('filtering') && strlen($text)) {
 58:             try {
 59:                 return $injector->getInstance('Horde_Core_Factory_TextFilter')->filter(
 60:                     $text,
 61:                     'words',
 62:                     $injector->getInstance('Horde_Core_Hooks')->callHook('msg_filter', 'imp')
 63:                 );
 64:             } catch (Horde_Exception_HookNotSet $e) {}
 65:         }
 66: 
 67:         return $text;
 68:     }
 69: 
 70:     /**
 71:      *
 72:      * @param integer $size  The byte size of data.
 73:      *
 74:      * @return string  A formatted size string.
 75:      */
 76:     public static function sizeFormat($size)
 77:     {
 78:         return ($size >= 1048576)
 79:             ? sprintf(_("%s MB"), self::numberFormat($size / 1048576, 1))
 80:             : sprintf(_("%s KB"), self::numberFormat($size / 1024, 0));
 81:     }
 82: 
 83:     /**
 84:      * Workaround broken number_format() prior to PHP 5.4.0.
 85:      *
 86:      * @param integer $number    Number to format.
 87:      * @param integer $decimals  Number of decimals to display.
 88:      *
 89:      * @return string  See number_format().
 90:      */
 91:     public static function numberFormat($number, $decimals)
 92:     {
 93:         $localeinfo = Horde_Nls::getLocaleInfo();
 94: 
 95:         return str_replace(
 96:             array('X', 'Y'),
 97:             array($localeinfo['decimal_point'], $localeinfo['thousands_sep']),
 98:             number_format($decimals ? $number : ceil($number), $decimals, 'X', 'Y')
 99:         );
100:     }
101: 
102:     /**
103:      * Wrapper around Horde_Mail_Rfc822#parseAddressList(). Ensures all
104:      * addresses have a default mail domain appended.
105:      *
106:      * @param mixed $in    The address string or an address list object.
107:      * @param array $opts  Options to override the default.
108:      *
109:      * @return Horde_Mail_Rfc822_List  See Horde_Mail_Rfc822#parseAddressList().
110:      *
111:      * @throws Horde_Mail_Exception
112:      */
113:     public static function parseAddressList($in, array $opts = array())
114:     {
115:         $md = $GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->config->maildomain;
116: 
117:         if ($in instanceof Horde_Mail_Rfc822_List) {
118:             $res = clone $in;
119:             foreach ($res->raw_addresses as $val) {
120:                 if (is_null($val->host)) {
121:                     $val->host = $md;
122:                  }
123:             }
124:         } else {
125:             $rfc822 = $GLOBALS['injector']->getInstance('Horde_Mail_Rfc822');
126:             $res = $rfc822->parseAddressList($in, array_merge(array(
127:                 'default_domain' => $md,
128:                 'validate' => false
129:             ), $opts));
130:         }
131: 
132:         $res->setIteratorFilter(Horde_Mail_Rfc822_List::HIDE_GROUPS);
133: 
134:         return $res;
135:     }
136: 
137:     /**
138:      * Returns the initial page for IMP.
139:      *
140:      * @return object  Object with the following properties:
141:      *   - mbox (IMP_Mailbox)
142:      *   - url (Horde_Url)
143:      */
144:     public static function getInitialPage()
145:     {
146:         global $injector, $prefs, $registry;
147: 
148:         $init_url = $prefs->getValue('initial_page');
149:         if (!$init_url ||
150:             !$injector->getInstance('IMP_Factory_Imap')->create()->access(IMP_Imap::ACCESS_FOLDERS)) {
151:             $init_url = 'INBOX';
152:         }
153: 
154:         if ($init_url == IMP::INITIAL_FOLDERS) {
155:             $mbox = null;
156:         } else {
157:             $mbox = IMP_Mailbox::get($init_url);
158:             if (!$mbox->exists) {
159:                 $mbox = IMP_Mailbox::get('INBOX');
160:             }
161:         }
162: 
163:         $result = new stdClass;
164:         $result->mbox = $mbox;
165: 
166:         switch ($registry->getView()) {
167:         case Horde_Registry::VIEW_BASIC:
168:             $result->url = is_null($mbox)
169:                 ? IMP_Basic_Folders::url()
170:                 : $mbox->url('mailbox');
171:             break;
172: 
173:         case Horde_Registry::VIEW_DYNAMIC:
174:             $result->url = IMP_Dynamic_Mailbox::url(array(
175:                 'mailbox' => is_null($mbox) ? 'INBOX' : $mbox
176:             ));
177:             break;
178: 
179:         case Horde_Registry::VIEW_MINIMAL:
180:             $result->url = is_null($mbox)
181:                 ? IMP_Minimal_Folders::url()
182:                 : IMP_Minimal_Mailbox::url(array('mailbox' => $mbox));
183:             break;
184: 
185:         case Horde_Registry::VIEW_SMARTMOBILE:
186:             $result->url = is_null($mbox)
187:                 ? Horde::url('smartmobile.php', true)
188:                 : $mbox->url('mailbox');
189:             break;
190:         }
191: 
192:         return $result;
193:     }
194: 
195: }
196: 
API documentation generated by ApiGen