/** @example: $imap_mngr = &IMAPManager::singleton(); */ static function &singleton($restoreSettings = true, $initCache = false) { static $object; if (!isset($object)) { $object = new IMAPManager(); if ($restoreSettings) { $object->restoreSettings(CID); } //init imap cache if ($initCache) { $object->cache =& IMAPCache::singleton(); if (!empty($object->user)) { //если доступ был настроен $object->cache->init(); } } } return $object; }
/** * # Получаем статус ящика (_statusCache, imap_status). * @param string $mailbox полное название ящика '{hostname}mailbox'. * @return stdClass объект imap_status() или пустая строка. */ function getStatus($mailbox) { if (!isset($this->_statusCache[$mailbox])) { $imap_manager =& IMAPManager::singleton(); $this->_statusCache[$mailbox] = @imap_status($imap_manager->stream(), $imap_manager->getServerString($mailbox), SA_ALL); if (!$this->_statusCache[$mailbox]) { unset($this->_statusCache[$mailbox]); if ($err = imap_last_error()) { //Horde::logMessage($err, __FILE__, __LINE__, PEAR_LOG_NOTICE); } } } return empty($this->_statusCache[$mailbox]) ? '' : $this->_statusCache[$mailbox]; }