/** * test reset account capabilities */ public function testResetAccountCapabilities() { $capabilities = $this->_controller->updateCapabilities($this->_account); $account = clone $this->_account; $account->host = 'unittest.org'; $account->type = Felamimail_Model_Account::TYPE_USER; $this->_controller->update($account); $this->assertFalse(array_key_exists($this->_account->getId(), Felamimail_Session::getSessionNamespace()->account), print_r(Felamimail_Session::getSessionNamespace()->account, TRUE)); }
/** * get imap server capabilities and save delimiter / personal namespace in account * * @param Felamimail_Model_Account $_account * @return array capabilities */ public function updateCapabilities(Felamimail_Model_Account $_account, Felamimail_Backend_ImapProxy $_imapBackend = NULL) { try { $felamimailSession = Felamimail_Session::getSessionNamespace(); if (isset($felamimailSession->account) && is_array($felamimailSession->account) && array_key_exists($_account->getId(), $felamimailSession->account)) { if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Getting capabilities of account ' . $_account->name . ' from SESSION.'); } return $felamimailSession->account[$_account->getId()]; } } catch (Zend_Session_Exception $zse) { // nothing to do } $imapBackend = $_imapBackend !== NULL ? $_imapBackend : $this->_getIMAPBackend($_account, TRUE); if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Getting capabilities of account ' . $_account->name); } // get imap server capabilities and save delimiter / personal namespace in account $capabilities = $imapBackend->getCapabilityAndNamespace(); if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($capabilities, TRUE)); } $this->_updateNamespacesAndDelimiter($_account, $capabilities); // check if server has 'CHILDREN' support $_account->has_children_support = in_array('CHILDREN', $capabilities['capabilities']) ? 1 : 0; try { if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) { Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Updating capabilities for account: ' . $_account->name); } $this->_backend->update($_account); } catch (Zend_Db_Statement_Exception $zdse) { Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not update account: ' . $zdse->getMessage()); if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $zdse->getTraceAsString()); } } // save capabilities in SESSION $felamimailSession->account[$_account->getId()] = $capabilities; return $capabilities; }