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 2013-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 2013-2014 Horde LLC
 10:  * @license   http://www.horde.org/licenses/gpl GPL
 11:  * @package   IMP
 12:  */
 13: 
 14: /**
 15:  * The configuration for a IMP backend.
 16:  *
 17:  * @author    Michael Slusarz <slusarz@horde.org>
 18:  * @category  Horde
 19:  * @copyright 2013-2014 Horde LLC
 20:  * @license   http://www.horde.org/licenses/gpl GPL
 21:  * @package   IMP
 22:  *
 23:  * @property boolean $acl  Enable ACLs?
 24:  * @property array $admin  Admin configuration.
 25:  * @property array $autocreate_special  Autocreate the special mailboxes?
 26:  * @property mixed $cache  The cache configuration from backends.php.
 27:  * @property string $cache_lifetime  Cache lifetime.
 28:  * @property-read array $cache_params  The cache configuration.
 29:  * @property array $capability_ignore  The list of capabilities to ignore.
 30:  * @property string $comparator  The non-default comparator to use.
 31:  * @property string $debug  The debug handler.
 32:  * @property boolean $debug_raw  Do raw debugging?
 33:  * @property mixed $hordeauth  Type of horde authentication to use.
 34:  * @property string $hostspec  Hostspec of the backend.
 35:  * @property array $id  List of ID information to send via the ID command.
 36:  * @property-read integer $import_limit  The maximum number of messages
 37:  *                                       allowed to be imported.
 38:  * @property-read array $innocent_params  Innocent reporting parameters.
 39:  * @property array $lang  The list of langauges used to display messages on
 40:  *                        the IMAP server.
 41:  * @property string $maildomain  The maildomain to use for outgoing mail.
 42:  * @property string $name  Label for the backend.
 43:  * @property array $namespace  Namespace overrides.
 44:  * @property integer $port  Port number of the backend.
 45:  * @property-write mixed $preferred  The preferred server(s).
 46:  * @property-read array $preferred  The preferred servers list.
 47:  * @property string $protocol  Either 'imap' or 'pop'.
 48:  * @property array $quota  Quota paramters.
 49:  * @property mixed $secure  The security layer to use.
 50:  * @property array $smtp  SMTP configuration.
 51:  * @property boolean $sort_force  Force sorting on the web server?
 52:  * @property array $spam  Spam configuration.
 53:  * @property-read array $spam_params  Spam reporting parameters.
 54:  * @property array $special_mboxes  List of special mailboxes overrides.
 55:  * @property-read array $user_special_mboxes  List of user special mailboxes.
 56:  * @property string $thread  The preferred thread sort algorithm.
 57:  * @property string $timeout  The connection timeout (in seconds).
 58:  */
 59: class IMP_Imap_Config implements Serializable
 60: {
 61:     /* Passwords session storage key. */
 62:     const PASSWORDS_KEY = 'imap_config_pass';
 63: 
 64:     /**
 65:      * Array options.
 66:      *
 67:      * @var array
 68:      */
 69:     private $_aoptions = array(
 70:         'admin', 'cache_params', 'capability_ignore', 'id', 'lang',
 71:         'namespace', 'preferred', 'quota', 'smtp', 'spam', 'special_mboxes'
 72:     );
 73: 
 74:     /**
 75:      * Boolean options.
 76:      *
 77:      * @var array
 78:      */
 79:     private $_boptions = array(
 80:         'acl', 'autocreate_special', 'debug_raw', 'sort_force'
 81:     );
 82: 
 83:     /**
 84:      * Config data.
 85:      *
 86:      * @var array
 87:      */
 88:     private $_config = array();
 89: 
 90:     /**
 91:      * Mixed options.
 92:      *
 93:      * @var array
 94:      */
 95:     private $_moptions = array(
 96:         'cache', 'hordeauth', 'secure'
 97:     );
 98: 
 99:     /**
100:      * Passwords.
101:      *
102:      * @var array
103:      */
104:     private $_passwords = array();
105: 
106:     /**
107:      * Password storage options (must be an array option).
108:      *
109:      * @var array
110:      */
111:     private $_poptions = array(
112:         'admin', 'quota'
113:     );
114: 
115:     /**
116:      * String options.
117:      *
118:      * @var array
119:      */
120:     private $_soptions = array(
121:         'cache_lifetime', 'comparator', 'debug', 'hostspec', 'import_limit',
122:         'maildomain', 'name', 'port', 'protocol', 'thread', 'timeout'
123:     );
124: 
125:     /**
126:      * Constructor.
127:      *
128:      * @param array $c  Config array (from backends.php).
129:      */
130:     public function __construct(array $c)
131:     {
132:         foreach ($c as $k => $v) {
133:             $this->$k = $v;
134:         }
135:     }
136: 
137:     /**
138:      */
139:     public function __set($name, $value)
140:     {
141:         if (in_array($name, $this->_poptions) && isset($value['password'])) {
142:             $this->_passwords[$name] = $value['password'];
143:             unset($value['password']);
144:         }
145: 
146:         /* Normalize values. */
147:         switch ($name) {
148:         case 'quota':
149:             $value['params']['interval'] = isset($value['params']['interval'])
150:                 ? intval($value['params']['interval'])
151:                 : 900; // DEFAULT: 15 minutes
152:             break;
153: 
154:         case 'preferred':
155:             if (!is_array($value)) {
156:                 $value = array($value);
157:             }
158:             break;
159: 
160:         case 'protocol':
161:             $value = (strcasecmp($value, 'pop') === 0)
162:                 ? 'pop'
163:                 : 'imap';
164:             break;
165:         }
166: 
167:         if (in_array($name, $this->_aoptions) ||
168:             in_array($name, $this->_moptions)) {
169:             /* Array and/or mixed options. */
170:             $this->_config[$name] = $value;
171:         } elseif (in_array($name, $this->_boptions)) {
172:             /* Boolean options. */
173:             $this->_config[$name] = (bool)$value;
174:         } elseif (in_array($name, $this->_soptions)) {
175:             /* String options. */
176:             $this->_config[$name] = strval($value);
177:         }
178:     }
179: 
180:     /**
181:      */
182:     public function __get($name)
183:     {
184:         global $injector;
185: 
186:         if (in_array($name, $this->_aoptions)) {
187:             /* Array options. */
188:             $out = isset($this->_config[$name])
189:                 ? $this->_config[$name]
190:                 : array();
191: 
192:             if (isset($this->_passwords[$name])) {
193:                 $out['password'] = $this->_passwords[$name];
194:             }
195:         } elseif (in_array($name, $this->_boptions)) {
196:             /* Boolean options. */
197:             $out = !empty($this->_config[$name]);
198:         } elseif (in_array($name, $this->_soptions) ||
199:                   in_array($name, $this->_moptions)) {
200:             /* Mixed and/or string options. */
201:             $out = isset($this->_config[$name])
202:                 ? $this->_config[$name]
203:                 : null;
204:         } else {
205:             $out = null;
206:         }
207: 
208:         switch ($name) {
209:         case 'autocreate_special':
210:             $out = ($out && $injector->getInstance('IMP_Factory_Imap')->create()->access(IMP_Imap::ACCESS_FOLDERS));
211:             break;
212: 
213:         case 'cache_params':
214:             $ob = null;
215:             if ($c = $this->cache) {
216:                 if ($c instanceof Horde_Imap_Client_Cache_Backend) {
217:                     $ob = $c;
218:                 } else {
219:                     switch ($driver = Horde_String::lower($c)) {
220:                     case 'hashtable':
221:                     case 'sql':
222:                         // No-op.
223:                         break;
224: 
225:                     case 'nosql':
226:                         $db = $injector->getInstance('Horde_Nosql_Adapter');
227:                         if (!$db instanceof Horde_Mongo_Client) {
228:                             $driver = null;
229:                             Horde::log(sprintf('IMAP client package does not support %s as a cache driver.', get_class($db)), 'ERR');
230:                         }
231:                         break;
232: 
233:                     case 'cache':
234:                     /* TODO: For IMP 6.x BC, treat everything else as the
235:                      * 'cache' option. */
236:                     default:
237:                         $driver = 'cache';
238:                         break;
239:                     }
240: 
241:                     if (!is_null($driver)) {
242:                         $ob = new IMP_Imap_Cache_Wrapper($driver, $this->cache_lifetime);
243:                     }
244:                 }
245:             }
246: 
247:             if (is_null($ob)) {
248:                 $ob = new Horde_Imap_Client_Cache_Backend_Cache(array(
249:                     'cacheob' => new Horde_Cache(new Horde_Cache_Storage_Mock(), array(
250:                         'compress' => true
251:                     ))
252:                 ));
253:             }
254: 
255:             $out = array('backend' => $ob);
256:             break;
257: 
258:         case 'import_limit':
259:             $out = is_null($out)
260:                 ? 2500
261:                 : intval($out);
262:             break;
263: 
264:         case 'innocent_params':
265:             $p = $this->spam;
266:             $out = isset($p['innocent'])
267:                 ? $p['innocent']
268:                 : array();
269:             break;
270: 
271:         case 'maildomain':
272:             /* Sanity checking - this should be null, not empty string. */
273:             if (!strlen($out)) {
274:                 $out = null;
275:             }
276:             break;
277: 
278:         case 'port':
279:             if (is_null($out)) {
280:                 if ($this->protocol === 'imap') {
281:                     $out = ($this->secure === 'ssl') ? 993 : 143;
282:                 } else {
283:                     $out = ($this->secure === 'ssl') ? 995 : 110;
284:                 }
285:             } else {
286:                 $out = intval($out);
287:             }
288:             break;
289: 
290:         case 'protocol':
291:             if (is_null($out)) {
292:                 $out = 'imap';
293:             }
294:             break;
295: 
296:         case 'smtp':
297:             if (empty($out['horde_auth'])) {
298:                 if (!isset($out['username'])) {
299:                     $out['username'] = $injector->getInstance('IMP_Factory_Imap')->create()->getParam('username');
300:                 }
301:                 if (!isset($out['password'])) {
302:                     $out['password'] = $injector->getInstance('IMP_Factory_Imap')->create()->getParam('password');
303:                 }
304:             }
305:             break;
306: 
307:         case 'spam_params':
308:             $p = $this->spam;
309:             $out = isset($p['spam'])
310:                 ? $p['spam']
311:                 : array();
312:             break;
313: 
314:         case 'thread':
315:             if (is_null($out)) {
316:                 $out = 'REFERENCES';
317:             }
318:             break;
319: 
320:         case 'user_special_mboxes':
321:             $out = (isset($out[IMP_Mailbox::MBOX_USERSPECIAL]) && is_array($out[IMP_Mailbox::MBOX_USERSPECIAL]))
322:                 ? $out[IMP_Mailbox::MBOX_USERSPECIAL]
323:                 : array();
324:             break;
325:         }
326: 
327:         return $out;
328:     }
329: 
330:     /**
331:      */
332:     public function __isset($name)
333:     {
334:         $tmp = $this->$name;
335:         return !empty($tmp);
336:     }
337: 
338:     /**
339:      */
340:     public function __unset($name)
341:     {
342:         unset($this->_config[$name]);
343:     }
344: 
345:     /* Serializable methods. */
346: 
347:     /**
348:      */
349:     public function serialize()
350:     {
351:         global $injector, $session;
352: 
353:         if (!empty($this->_passwords)) {
354:             $session->set('imp', self::PASSWORDS_KEY, $this->_passwords, $session::ENCRYPT);
355:         }
356: 
357:         return $injector->getInstance('Horde_Pack')->pack(
358:             array_filter($this->_config),
359:             array(
360:                 'compression' => false,
361:                 'phpob' => false
362:             )
363:         );
364:     }
365: 
366:     /**
367:      */
368:     public function unserialize($data)
369:     {
370:         global $injector, $session;
371: 
372:         $this->_config = $injector->getInstance('Horde_Pack')->unpack($data);
373: 
374:         $this->_passwords = $session->get('imp', self::PASSWORDS_KEY, $session::TYPE_ARRAY);
375:     }
376: 
377: }
378: 
API documentation generated by ApiGen