/** * Perform an action on a module * * @param TBGRequest $request The request object */ public function runModuleAction(TBGRequest $request) { $this->forward403unless($this->access_level == TBGSettings::ACCESS_FULL); try { if ($request->getParameter('mode') == 'install' && file_exists(THEBUGGENIE_MODULES_PATH . $request->getParameter('module_key') . DS . 'module')) { if (TBGModule::installModule($request->getParameter('module_key'))) { TBGContext::setMessage('module_message', TBGContext::getI18n()->__('The module "%module_name%" was installed successfully', array('%module_name%' => $request->getParameter('module_key')))); } else { TBGContext::setMessage('module_error', TBGContext::getI18n()->__('There was an error install the module %module_name%', array('%module_name%' => $request->getParameter('module_key')))); } } else { if ($request->getParameter('mode') == 'upload') { $archive = $request->getUploadedFile('archive'); if ($archive == null || $archive['error'] != UPLOAD_ERR_OK || !preg_match('/application\\/(x-)?zip/i', $archive['type'])) { TBGContext::setMessage('module_error', TBGContext::getI18n()->__('Invalid or empty archive uploaded')); } else { $module_name = TBGModule::uploadModule($archive); TBGContext::setMessage('module_message', TBGContext::getI18n()->__('The module "%module_name%" was uploaded successfully', array('%module_name%' => $module_name))); } } else { $module = TBGContext::getModule($request->getParameter('module_key')); if (!$module->isCore()) { switch ($request->getParameter('mode')) { case 'disable': if ($module->getType() !== TBGModule::MODULE_AUTH) { $module->disable(); } break; case 'enable': if ($module->getType() !== TBGModule::MODULE_AUTH) { $module->enable(); } break; case 'uninstall': $module->uninstall(); TBGContext::setMessage('module_message', TBGContext::getI18n()->__('The module "%module_name%" was uninstalled successfully', array('%module_name%' => $module->getName()))); break; } } } } } catch (Exception $e) { TBGLogging::log('Trying to run action ' . $request->getParameter('mode') . ' on module ' . $request->getParameter('module_key') . ' made an exception: ' . $e->getMessage(), TBGLogging::LEVEL_FATAL); TBGContext::setMessage('module_error', TBGContext::getI18n()->__('This module (%module_name%) does not exist', array('%module_name%' => $request->getParameter('module_key')))); } $this->forward(TBGContext::getRouting()->generate('configure_modules')); }