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 2010-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:  * @copyright 2010-2014 Horde LLC
  9:  * @category  Horde
 10:  * @license   http://www.horde.org/licenses/gpl GPL
 11:  * @package   IMP
 12:  */
 13: 
 14: /**
 15:  * Data structure for a search query.
 16:  *
 17:  * @author    Michael Slusarz <slusarz@horde.org>
 18:  * @category  Horde
 19:  * @copyright 2010-2014 Horde LLC
 20:  * @license   http://www.horde.org/licenses/gpl GPL
 21:  * @package   IMP
 22:  *
 23:  * @property boolean $all  Does this query search all mailboxes?
 24:  * @property boolean $canEdit  Can this query be edited?
 25:  * @property string $formid  The mailbox ID to use in forms.
 26:  * @property string $id  The query ID.
 27:  * @property string $label  The query label.
 28:  * @property array $mboxes  The list of mailboxes to query. This list
 29:  *                          automatically expands subfolder searches.
 30:  * @property array $mbox_list  The list of individual mailboxes to query (no
 31:  *                             subfolder mailboxes).
 32:  * @property IMP_Mailbox $mbox_ob  The IMP_Mailbox object for this query.
 33:  * @property string $mid  The query ID with the search mailbox prefix.
 34:  * @property array $query  The list of IMAP queries that comprise this search.
 35:  *                         Keys are mailbox names, values are
 36:  *                         Horde_Imap_Client_Search_Query objects.
 37:  * @property string $querytext  The textual representation of the query.
 38:  * @property array $subfolder_list  The list of mailboxes to do subfolder
 39:  *                                  queries for. The subfolders are not
 40:  *                                  expanded.
 41:  */
 42: class IMP_Search_Query implements Serializable
 43: {
 44:     /* Serialized version. */
 45:     const VERSION = 1;
 46: 
 47:     /* Prefix indicating subfolder search. */
 48:     const SUBFOLDER = "sub\0";
 49: 
 50:     /* Mailbox value indicating a search all mailboxes search. */
 51:     const ALLSEARCH = "all\0";
 52: 
 53:     /**
 54:      * Is this query enabled?
 55:      *
 56:      * @var boolean
 57:      */
 58:     public $enabled = true;
 59: 
 60:     /**
 61:      * Cache results.
 62:      *
 63:      * @var array
 64:      */
 65:     protected $_cache = array();
 66: 
 67:     /**
 68:      * Can this query be edited?
 69:      *
 70:      * @var boolean
 71:      */
 72:     protected $_canEdit = true;
 73: 
 74:     /**
 75:      * The search criteria (IMP_Search_Element objects).
 76:      *
 77:      * @var array
 78:      */
 79:     protected $_criteria = array();
 80: 
 81:     /**
 82:      * The search ID.
 83:      *
 84:      * @var string
 85:      */
 86:     protected $_id;
 87: 
 88:     /**
 89:      * The virtual folder label.
 90:      *
 91:      * @var string
 92:      */
 93:     protected $_label;
 94: 
 95:     /**
 96:      * The mailbox list.
 97:      *
 98:      * @var array
 99:      */
100:     protected $_mboxes = array();
101: 
102:     /**
103:      * List of serialize entries not to save.
104:      *
105:      * @var array
106:      */
107:     protected $_nosave = array();
108: 
109:     /**
110:      * Constructor.
111:      *
112:      * @var array $opts  Options:
113:      *   - add: (array) A list of criteria to add (Horde_Search_Element
114:      *          objects).
115:      *          DEFAULT: No criteria explicitly added.
116:      *   - all: (boolean) Search all mailboxes? If set, ignores 'mboxes' and
117:      *          'subfolders' options.
118:      *          DEFAULT: false
119:      *   - disable: (boolean) Disable this query?
120:      *              DEFAULT: false
121:      *   - id: (string) Use this ID.
122:      *         DEFAULT: ID automatically generated.
123:      *   - label: (string) The label for this query.
124:      *            DEFAULT: Search Results
125:      *   - mboxes: (array) The list of mailboxes to search.
126:      *             DEFAULT: None
127:      *   - subfolders: (array) The list of mailboxes to do subfolder searches
128:      *                 for.
129:      *                 DEFAULT: None
130:      */
131:     public function __construct(array $opts = array())
132:     {
133:         $this->enabled = empty($opts['disable']);
134:         if (isset($opts['add'])) {
135:             $this->replace($opts['add']);
136:         }
137: 
138:         $this->_id = isset($opts['id'])
139:             ? $opts['id']
140:             : strval(new Horde_Support_Randomid());
141: 
142:         $this->_label = isset($opts['label'])
143:             ? $opts['label']
144:             : _("Search Results");
145: 
146:         if (!empty($opts['all'])) {
147:             $this->_mboxes = array(self::ALLSEARCH);
148:         } else {
149:             if (isset($opts['mboxes'])) {
150:                 $this->_mboxes = $opts['mboxes'];
151:             }
152: 
153:             if (isset($opts['subfolders'])) {
154:                 foreach ($opts['subfolders'] as $val) {
155:                     $this->_mboxes[] = self::SUBFOLDER . $val;
156:                 }
157:             }
158: 
159:             natsort($this->_mboxes);
160:         }
161:     }
162: 
163:     /**
164:      */
165:     public function __get($name)
166:     {
167:         global $injector;
168: 
169:         switch ($name) {
170:         case 'all':
171:             return in_array(self::ALLSEARCH, $this->_mboxes);
172: 
173:         case 'canEdit':
174:             return $this->_canEdit;
175: 
176:         case 'criteria':
177:             $out = array();
178:             foreach ($this->_criteria as $elt) {
179:                 $out[] = array(
180:                     'criteria' => $elt->getCriteria(),
181:                     'element' => get_class($elt)
182:                 );
183:             }
184:             return $out;
185: 
186:         case 'formid':
187:             return $this->mbox_ob->form_to;
188: 
189:         case 'id':
190:             return $this->_id;
191: 
192:         case 'label':
193:             return $this->_label;
194: 
195:         case 'mboxes':
196:             if (!isset($this->_cache['mboxes'])) {
197:                 $out = $this->mbox_list;
198: 
199:                 if (!$this->all &&
200:                     ($s_list = $this->subfolder_list)) {
201:                     foreach ($s_list as $val) {
202:                         $out = array_merge($out, $val->subfolders);
203:                     }
204:                 }
205: 
206:                 $this->_cache['mboxes'] = array_unique($out, SORT_REGULAR);
207:             }
208: 
209:             return $this->_cache['mboxes'];
210: 
211:         case 'mbox_list':
212:         case 'subfolder_list':
213:             if (!isset($this->_cache['mbox_list'])) {
214:                 $mbox = $subfolder = array();
215: 
216:                 if ($this->all) {
217:                     $mbox = array();
218:                     $iterator = new IMP_Ftree_IteratorFilter(
219:                         $injector->getInstance('IMP_Ftree')
220:                     );
221:                     $iterator->add(array(
222:                         $iterator::CONTAINERS,
223:                         $iterator::NONIMAP
224:                     ));
225: 
226:                     foreach ($iterator as $val) {
227:                         $mbox[] = $val->mbox_ob;
228:                     }
229:                 } else {
230:                     foreach ($this->_mboxes as $val) {
231:                         if (strpos($val, self::SUBFOLDER) === 0) {
232:                             $subfolder[] = IMP_Mailbox::get(substr($val, strlen(self::SUBFOLDER)));
233:                         } else {
234:                             $mbox[] = IMP_Mailbox::get($val);
235:                         }
236:                     }
237:                 }
238: 
239:                 $this->_cache['mbox_list'] = $mbox;
240:                 $this->_cache['subfolder_list'] = $subfolder;
241:             }
242: 
243:             return $this->_cache[$name];
244: 
245:         case 'mbox_ob':
246:             return IMP_Mailbox::get($this->mid);
247: 
248:         case 'mid':
249:             return IMP_Search::MBOX_PREFIX . $this->_id;
250: 
251:         case 'query':
252:             $qout = array();
253: 
254:             foreach ($this->mboxes as $mbox) {
255:                 $query = new Horde_Imap_Client_Search_Query();
256:                 foreach ($this->_criteria as $elt) {
257:                     $query = $elt->createQuery($mbox, $query);
258:                 }
259:                 $qout[strval($mbox)] = $query;
260:             }
261: 
262:             return $qout;
263: 
264:         case 'querytext':
265:             $text = array();
266: 
267:             foreach ($this->_criteria as $elt) {
268:                 if ($elt instanceof IMP_Search_Element_Or) {
269:                     array_pop($text);
270:                     $text[] = $elt->queryText();
271:                 } else {
272:                     $text[] = $elt->queryText();
273:                     $text[] = _("and");
274:                 }
275:             }
276:             array_pop($text);
277: 
278:             $mbox_display = array();
279: 
280:             if ($this->all) {
281:                 $mbox_display[] = _("All Mailboxes");
282:             } else {
283:                 foreach ($this->mboxes as $val) {
284:                     $mbox_display[] = $val->display;
285:                 }
286:             }
287: 
288:             return sprintf(_("Search %s in %s"), implode(' ', $text), '[' . implode(', ', $mbox_display) . ']');
289:         }
290:     }
291: 
292:     /**
293:      * String representation of this object: the mailbox ID.
294:      *
295:      * @return string  Mailbox ID.
296:      */
297:     public function __toString()
298:     {
299:         return $this->mid;
300:     }
301: 
302:     /**
303:      * Add a search query element.
304:      *
305:      * @param IMP_Search_Element $elt  The search element to add.
306:      */
307:     public function add(IMP_Search_Element $elt)
308:     {
309:         $this->_criteria[] = $elt;
310:     }
311: 
312:     /**
313:      * Replace the search query with the given query.
314:      *
315:      * @param array $criteria  A list of criteria to add (Horde_Search_Element
316:      *                         objects).
317:      */
318:     public function replace(array $criteria = array())
319:     {
320:         $this->_criteria = array();
321: 
322:         foreach ($criteria as $val) {
323:             $this->add($val);
324:         }
325:     }
326: 
327:     /* Serializable methods. */
328: 
329:     /**
330:      * Serialization.
331:      *
332:      * @return string  Serialized data.
333:      */
334:     public function serialize()
335:     {
336:         $data = array_filter(array(
337:             'c' => $this->_criteria,
338:             'e' => intval($this->enabled),
339:             'i' => $this->_id,
340:             'l' => $this->_label,
341:             'm' => $this->_mboxes,
342:             'v' => self::VERSION
343:         ));
344: 
345:         foreach ($this->_nosave as $val) {
346:             unset($data[$val]);
347:         }
348: 
349:         return serialize($data);
350:     }
351: 
352:     /**
353:      * Unserialization.
354:      *
355:      * @param string $data  Serialized data.
356:      *
357:      * @throws Exception
358:      */
359:     public function unserialize($data)
360:     {
361:         $data = unserialize($data);
362:         if (!is_array($data) ||
363:             !isset($data['v']) ||
364:             ($data['v'] != self::VERSION)) {
365:             throw new Exception('Cache version change');
366:         }
367: 
368:         if (isset($data['c'])) {
369:             $this->_criteria = $data['c'];
370:         }
371:         $this->enabled = !empty($data['e']);
372:         if (isset($data['i'])) {
373:             $this->_id = $data['i'];
374:         }
375:         if (isset($data['l'])) {
376:             $this->_label = $data['l'];
377:         }
378:         if (isset($data['m'])) {
379:             $this->_mboxes = $data['m'];
380:         }
381:     }
382: 
383: }
384: 
API documentation generated by ApiGen