コード例 #1
0
 /**
  * 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'));
 }