/** * Update accountsStorage * * @param array $_data * @return void */ protected function _updateAccountsStorage($_data) { $originalBackend = Tinebase_User::getConfiguredBackend(); $newBackend = $_data['backend']; Tinebase_User::setBackendType($_data['backend']); $config = isset($_data[$_data['backend']]) ? $_data[$_data['backend']] : $_data; Tinebase_User::setBackendConfiguration($config, null, true); Tinebase_User::saveBackendConfiguration(); if ($originalBackend != $newBackend && $this->isInstalled('Addressbook') && $originalBackend == Tinebase_User::SQL) { Setup_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . " Switching from {$originalBackend} to {$newBackend} account storage"); try { $db = Setup_Core::getDb(); $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction($db); $this->_migrateFromSqlAccountsStorage(); Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId); } catch (Exception $e) { Tinebase_TransactionManager::getInstance()->rollBack(); Setup_Core::getLogger()->err(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); Setup_Core::getLogger()->err(__METHOD__ . '::' . __LINE__ . ' ' . $e->getTraceAsString()); Tinebase_User::setBackendType($originalBackend); Tinebase_User::saveBackendConfiguration(); throw $e; } } }