See Release Notes
Long Term Support Release
<?php /** * Copyright 2011-2017 Horde LLC (http://www.horde.org/) * * See the enclosed file LICENSE for license information (LGPL). If you * did not receive this file, see http://www.horde.org/licenses/lgpl21. * * @category Horde * @copyright 2011-2017 Horde LLC * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1 * @package Imap_Client */ /** * An object that provides a way to switch between UTF7-IMAP and * human-readable representations of a mailbox name. * * @author Michael Slusarz <slusarz@horde.org> * @category Horde * @copyright 2011-2017 Horde LLC * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1 * @package Imap_Client * * @property-read string $list_escape Escapes mailbox for use in LIST * command (UTF-8). * @property-read string $utf7imap Mailbox in UTF7-IMAP. * @property-read string $utf8 Mailbox in UTF-8. */ class Horde_Imap_Client_Mailbox implements Serializable { /** * UTF7-IMAP representation of mailbox. * If boolean true, it is identical to UTF-8 representation. * * @var mixed */ protected $_utf7imap; /** * UTF8 representation of mailbox. * * @var string */ protected $_utf8; /** * Shortcut to obtaining mailbox object. * * @param string $mbox The mailbox name. * @param boolean $utf7imap Is mailbox UTF7-IMAP encoded? Otherwise, * mailbox is assumed to be UTF-8. * * @return Horde_Imap_Client_Mailbox A mailbox object. */ public static function get($mbox, $utf7imap = false) { return ($mbox instanceof Horde_Imap_Client_Mailbox) ? $mbox : new Horde_Imap_Client_Mailbox($mbox, $utf7imap); } /** * Constructor. * * @param string $mbox The mailbox name. * @param boolean $utf7imap Is mailbox UTF7-IMAP encoded (true). * Otherwise, mailbox is assumed to be UTF-8 * encoded. */ public function __construct($mbox, $utf7imap = false) { if (strcasecmp($mbox, 'INBOX') === 0) { $mbox = 'INBOX'; } if ($utf7imap) { $this->_utf7imap = $mbox; } else { $this->_utf8 = $mbox; } } /** */ public function __get($name) { switch ($name) { case 'list_escape': return preg_replace("/\*+/", '%', $this->utf8); case 'utf7imap': if (!isset($this->_utf7imap)) { $n = Horde_Imap_Client_Utf7imap::Utf8ToUtf7Imap($this->_utf8); $this->_utf7imap = ($n == $this->_utf8) ? true : $n; } return ($this->_utf7imap === true) ? $this->_utf8 : $this->_utf7imap; case 'utf8': if (!isset($this->_utf8)) { $this->_utf8 = Horde_Imap_Client_Utf7imap::Utf7ImapToUtf8($this->_utf7imap); if ($this->_utf8 == $this->_utf7imap) { $this->_utf7imap = true; } } return (string)$this->_utf8; } } /** */ public function __toString() { return $this->utf8; } /** * Compares this mailbox to another mailbox string. * * @return boolean True if the items are equal. */ public function equals($mbox) { return ($this->utf8 == $mbox); } /* Serializable methods. */ /** */ public function serialize() {< return json_encode(array($this->_utf7imap, $this->_utf8));> return serialize($this->__serialize());} /** */ public function unserialize($data) {< list($this->_utf7imap, $this->_utf8) = json_decode($data, true);> $data = @unserialize($data); > if (!is_array($data)) { > throw new Exception('Cache value changed.'); > } > $this->__unserialize($data); > } > > /** > * @return array > */ > public function __serialize() > { > return [$this->_utf7imap, $this->_utf8]; > } > > public function __unserialize(array $data) > { > list($this->_utf7imap, $this->_utf8) = $data;} }