/**
  * 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;
 }