/** * Database altering method * @return true - All went well. * @return false - Something went wrong. */ protected function _updateDataBase() { $dbAdapter = Zend_Db_Table::getDefaultAdapter(); if ($this->_storeVersion) { $select = $dbAdapter->select()->from('shopping_config', array('value'))->where('name = ?', 'version'); $dbVersion = $dbAdapter->fetchRow($select); $storeAlters = $this->_getFileContent($this->_newToasterPath . '_install/store-alters.sql', '-- version: ' . $dbVersion['value']); $revertStoreAlters = $this->_getFileContent($this->_newToasterPath . '_install/revert-store-alters.sql', '-- version: ' . $dbVersion['value']); } $select = $dbAdapter->select()->from('config', array('value'))->where('name = ?', 'version'); $dbVersion = $dbAdapter->fetchRow($select); $alters = $this->_getFileContent($this->_newToasterPath . '_install/alters.sql', '-- version: ' . $dbVersion['value']); $revertAlters = $this->_getFileContent($this->_newToasterPath . '_install/revert-alters.sql', '-- version: ' . $dbVersion['value']); if (!empty($storeAlters)) { $alters = $alters . ' ' . $storeAlters; } if (!empty($revertStoreAlters)) { $revertAlters = $revertAlters . ' ' . $revertStoreAlters; } $sqlAlters = Tools_System_SqlSplitter::split($alters); $revertSqlAlters = Tools_System_SqlSplitter::split($revertAlters); $cnt = 0; try { foreach ($sqlAlters as $alter) { $dbAdapter->query($alter); $cnt++; } return true; } catch (Exception $ex) { for ($i = 0; $i < $cnt; $i++) { $dbAdapter->query($revertSqlAlters[$i]); } error_log($ex->getMessage()); return false; } return false; }
public function deleteAction() { if ($this->getRequest()->isPost()) { $plugin = Tools_Plugins_Tools::findPluginByName($this->getRequest()->getParam('id')); $plugin->registerObserver(new Tools_Plugins_GarbageCollector(array('action' => Tools_System_GarbageCollector::CLEAN_ONDELETE))); $miscData = Zend_Registry::get('misc'); $sqlFilePath = $this->_helper->website->getPath() . $miscData['pluginsPath'] . $plugin->getName() . '/system/' . Application_Model_Models_Plugin::UNINSTALL_FILE_NAME; if (file_exists($sqlFilePath)) { $sqlFileContent = Tools_Filesystem_Tools::getFile($sqlFilePath); if (strlen($sqlFileContent)) { $queries = Tools_System_SqlSplitter::split($sqlFileContent); } } $delete = Tools_Filesystem_Tools::deleteDir($this->_helper->website->getPath() . 'plugins/' . $plugin->getName()); if (!$delete) { $this->_helper->response->fail('Can\'t remove plugin\'s directory (not enough permissions). Plugin was uninstalled.'); exit; } if (is_array($queries) && !empty($queries)) { $dbAdapter = Zend_Registry::get('dbAdapter'); try { array_walk($queries, function ($query, $key, $adapter) { if (strlen(trim($query))) { $adapter->query($query); } }, $dbAdapter); Application_Model_Mappers_PluginMapper::getInstance()->delete($plugin); } catch (Exception $e) { error_log($e->getMessage()); $this->_helper->response->fail($e->getMessage()); } } $this->_helper->cache->clean(null, null, array('plugins')); $this->_helper->cache->clean('admin_addmenu', $this->_helper->session->getCurrentUser()->getRoleId()); $this->_helper->response->success('Removed'); } }