[~TASK] Reverted previous "[~TASK] Extbase: Reimplemented BE module support. Still...
authorJochen Rau <j.rau@web.de>
Tue, 16 Nov 2010 10:31:03 +0000 (10:31 +0000)
committerJochen Rau <j.rau@web.de>
Tue, 16 Nov 2010 10:31:03 +0000 (10:31 +0000)
This reverts commit fa24749433846a6fd5860df94ad0e9e04ef375db.

typo3/sysext/extbase/Classes/Configuration/AbstractConfigurationManager.php
typo3/sysext/extbase/Classes/Configuration/BackendConfigurationManager.php
typo3/sysext/extbase/Classes/Configuration/ConfigurationManager.php
typo3/sysext/extbase/Classes/Configuration/FrontendConfigurationManager.php
typo3/sysext/extbase/Classes/Core/Bootstrap.php
typo3/sysext/extbase/ext_tables.php

index 3efdda0..e8c5e84 100644 (file)
@@ -53,6 +53,18 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
        protected $objectManager;
 
        /**
+        * name of the extension this Configuration Manager instance belongs to
+        * @var string
+        */
+       protected $extensionName;
+
+       /**
+        * name of the plugin this Configuration Manager instance belongs to
+        * @var string
+        */
+       protected $pluginName;
+
+       /**
         * 1st level configuration cache
         *
         * @var array
@@ -92,37 +104,135 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
        public function setConfiguration(array $configuration = array()) {
                // reset 1st level cache
                $this->configurationCache = array();
-               $this->configuration = $configuration;
+
+               $this->extensionName = $configuration['extensionName'];
+               $this->pluginName = $configuration['pluginName'];
+               $this->configuration = Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($configuration);
        }
 
+       /**
+        * Loads the Extbase Framework configuration.
+        *
+        * The Extbase framework configuration HAS TO be retrieved using this method, as they are come from different places than the normal settings.
+        * Framework configuration is, in contrast to normal settings, needed for the Extbase framework to operate correctly.
+        *
+        * @param string $extensionName if specified, the configuration for the given extension will be returned (plugin.tx_extensionname)
+        * @param string $pluginName if specified, the configuration for the given plugin will be returned (plugin.tx_extensionname_pluginname)
+        * @return array the Extbase framework configuration
+        */
+       public function getConfiguration($extensionName = NULL, $pluginName = NULL) {
+               // 1st level cache
+               if ($extensionName !== NULL) {
+                       if ($pluginName === NULL) {
+                               throw new Tx_Extbase_Configuration_Exception('You\'ll have to specify either both, extensionName and pluginName, or neither.', 1289852422);
+                       }
+                       $configurationCacheKey = strtolower($extensionName . '_' . $pluginName);
+               } else {
+                       $configurationCacheKey = strtolower($this->extensionName . '_' . $this->pluginName);
+               }
+               if (isset($this->configurationCache[$configurationCacheKey])) {
+                       return $this->configurationCache[$configurationCacheKey];
+               }
+
+               $frameworkConfiguration = $this->getExtbaseConfiguration();
+               if (!isset($frameworkConfiguration['persistence']['storagePid'])) {
+                       $frameworkConfiguration['persistence']['storagePid'] = self::DEFAULT_BACKEND_STORAGE_PID;
+               }
+
+               if ($extensionName !== NULL) {
+                       $pluginConfiguration = $this->getPluginConfiguration($extensionName, $pluginName);
+                       $pluginConfiguration['controllerConfiguration'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName][$pluginName]['controllers'];
+               } else {
+                       $pluginConfiguration = $this->getPluginConfiguration($this->extensionName, $this->pluginName);
+                       $pluginConfiguration = t3lib_div::array_merge_recursive_overrule($pluginConfiguration, $this->configuration);
+                       $pluginConfiguration['controllerConfiguration'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$this->extensionName][$this->pluginName]['controllers'];
+                       if (isset($this->configuration['switchableControllerActions'])) {
+                               $this->overrideSwitchableControllerActions($pluginConfiguration, $this->configuration['switchableControllerActions']);
+                       }
+               }
+               $frameworkConfiguration = t3lib_div::array_merge_recursive_overrule($frameworkConfiguration, $pluginConfiguration);
+
+               // only load context specific configuration when retrieving configuration of the current plugin
+               if ($extensionName === NULL || ($extensionName === $this->extensionName && $pluginName === $this->pluginName)) {
+                       $frameworkConfiguration = $this->getContextSpecificFrameworkConfiguration($frameworkConfiguration);
+               }
+
+               // 1st level cache
+               $this->configurationCache[$configurationCacheKey] = $frameworkConfiguration;
+               return $frameworkConfiguration;
+       }
 
        /**
-        * Returns TypoScript Setup array from current Environment.
+        * Returns the TypoScript configuration found in config.tx_extbase
         *
-        * @return array the TypoScript setup
+        * @return array
         */
-       abstract protected function getTypoScriptSetup();
+       protected function getExtbaseConfiguration() {
+               $setup = $this->getTypoScriptSetup();
+               $extbaseConfiguration = array();
+               if (isset($setup['config.']['tx_extbase.'])) {
+                       $extbaseConfiguration = Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($setup['config.']['tx_extbase.']);
+               }
+               return $extbaseConfiguration;
+       }
 
        /**
-        * Resolves the TypoScript reference for $pluginConfiguration[$setting].
-        * In case the setting is a string and starts with "<", we know that this is a TypoScript reference which
-        * needs to be resolved separately.
+        * Returns the TypoScript configuration found in plugin.tx_yourextension_yourplugin
+        * merged with the global configuration of your extension from plugin.tx_yourextension
         *
-        * @param array $pluginConfiguration The whole plugin configuration
-        * @param string $setting The key inside the $pluginConfiguration to check
-        * @return array The modified plugin configuration
-        */
-       protected function resolveTyposcriptReference($pluginConfiguration, $setting) {
-               if (is_string($pluginConfiguration[$setting]) && substr($pluginConfiguration[$setting], 0, 1) === '<') {
-                       $key = trim(substr($pluginConfiguration[$setting], 1));
-                       $setup = $this->getTypoScriptSetup();
-                       list(, $newValue) = $this->typoScriptParser->getVal($key, $setup);
-
-                       unset($pluginConfiguration[$setting]);
-                       $pluginConfiguration[$setting . '.'] = $newValue;
+        * @param string $extensionName
+        * @param string $pluginName
+        * @return array
+        */
+       protected function getPluginConfiguration($extensionName, $pluginName) {
+               $setup = $this->getTypoScriptSetup();
+               $pluginConfiguration = array();
+               if (is_array($setup['plugin.']['tx_' . strtolower($extensionName) . '.'])) {
+                       $pluginConfiguration = Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($setup['plugin.']['tx_' . strtolower($extensionName) . '.']);
+               }
+               $pluginSignature = strtolower($extensionName . '_' . $pluginName);
+               if (is_array($setup['plugin.']['tx_' . $pluginSignature . '.'])) {
+                       $pluginConfiguration = t3lib_div::array_merge_recursive_overrule($pluginConfiguration, Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($setup['plugin.']['tx_' . $pluginSignature . '.']));
                }
                return $pluginConfiguration;
        }
 
+       /**
+        * @param array $frameworkConfiguration
+        * @param array $overriddenSwitchableControllerActions in the format array('Controller1' => array('action1', 'action2'), 'Controller2' => ...)
+        * @return void
+        */
+       protected function overrideSwitchableControllerActions(array &$frameworkConfiguration, array $switchableControllerActions) {
+               $overriddenSwitchableControllerActions = array();
+               foreach ($switchableControllerActions as $controllerName => $actions) {
+                       $overriddenSwitchableControllerActions[$controllerName] = array('actions' => $actions);
+                       $nonCacheableActions = $frameworkConfiguration['controllerConfiguration'][$controllerName]['nonCacheableActions'];
+                       $overriddenNonCacheableActions = array_intersect($nonCacheableActions, $actions);
+                       if (!empty($overriddenNonCacheableActions)) {
+                               $overriddenSwitchableControllerActions[$controllerName]['nonCacheableActions'] = $overriddenNonCacheableActions;
+                       }
+               }
+               $frameworkConfiguration['controllerConfiguration'] = $overriddenSwitchableControllerActions;
+       }
+
+       /**
+        * The context specific configuration returned by this method
+        * will override the framework configuration which was
+        * obtained from TypoScript. This can be used f.e. to override the storagePid
+        * with the value set inside the Plugin Instance.
+        *
+        * WARNING: Make sure this method ALWAYS returns an array!
+        *
+        * @param array $frameworkConfiguration The framework configuration until now
+        * @return array context specific configuration which will override the configuration obtained by TypoScript
+        */
+       abstract protected function getContextSpecificFrameworkConfiguration(array $frameworkConfiguration);
+
+       /**
+        * Returns TypoScript Setup array from current Environment.
+        *
+        * @return array the TypoScript setup
+        */
+       abstract protected function getTypoScriptSetup();
 }
 ?>
\ No newline at end of file
index 97485d0..d17b855 100644 (file)
@@ -37,182 +37,6 @@ class Tx_Extbase_Configuration_BackendConfigurationManager extends Tx_Extbase_Co
        protected $typoScriptSetupCache = NULL;
 
        /**
-        * Transfers the request to an Extbase backend module, calling
-        * a given controller/action.
-        *
-        * @param string $configurationType The kind of configuration to fetch - must be one of the CONFIGURATION_TYPE_* constants
-        * @param string $extensionName if specified, the configuration for the given extension will be returned (plugin.tx_extensionname)
-        * @param string $pluginName if specified, the configuration for the given plugin will be returned (plugin.tx_extensionname_pluginname)
-        * @return string The module rendered view
-        */
-       public function getConfiguration($configurationType, $extensionName = NULL, $pluginName = NULL) {
-               $frameworkConfiguration = array();
-               $frameworkConfiguration['persistence']['storagePid'] = self::DEFAULT_BACKEND_STORAGE_PID;
-               $controllerAction = $this->resolveControllerAction($this->configuration['name']);
-               $setup = $this->getTypoScriptSetup();
-               $frameworkConfiguration = array(
-                       'pluginName' => $this->configuration['name'],
-                       'extensionName' => $this->configuration['extensionName'],
-                       'controller' => $controllerAction['controllerName'],
-                       'action' => $controllerAction['actionName'],
-                       'switchableControllerActions' => array(),
-                       'settings' => $this->resolveTyposcriptReference($setup, 'settings'),
-                       'persistence' => $this->resolveTyposcriptReference($setup, 'persistence'),
-                       'view' => $this->resolveTyposcriptReference($setup, 'view'),
-                       '_LOCAL_LANG' => $this->resolveTyposcriptReference($setup, '_LOCAL_LANG'),
-               );
-
-               foreach ($this->configuration['controllerActions'] as $controller => $actions) {
-                       // Add an "extObj" action for the default controller to handle external
-                       // SCbase modules which add function menu entries
-                       $actions .= ',extObj';
-                       $frameworkConfiguration['switchableControllerActions'][$i++] = array(
-                               'controller' => $controller,
-                               'actions' => $actions,
-                       );
-               }
-
-               $extbaseConfiguration = $setup['config.']['tx_extbase.'];
-               if (is_array($extbaseConfiguration)) {
-                       $extbaseConfiguration = Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($extbaseConfiguration);
-                       $frameworkConfiguration = t3lib_div::array_merge_recursive_overrule($frameworkConfiguration, $extbaseConfiguration);
-               }
-
-               return $frameworkConfiguration;
-       }
-
-       /**
-        * Resolves the controller and action to use for current call.
-        * This takes into account any function menu that has being called.
-        *
-        * @param string $module The name of the module
-        * @return array The controller/action pair to use for current call
-        */
-       protected function resolveControllerAction($module) {
-               $configuration = $GLOBALS['TBE_MODULES']['_configuration'][$module];
-               $fallbackControllerAction = $this->getFallbackControllerAction($configuration);
-
-                       // Extract dispatcher settings from request
-               $argumentPrefix = strtolower('tx_' . $configuration['extensionName'] . '_' . $configuration['name']);
-               $dispatcherParameters = t3lib_div::_GPmerged($argumentPrefix);
-               $dispatcherControllerAction = $this->getDispatcherControllerAction($configuration, $dispatcherParameters);
-
-                       // Extract module function settings from request
-               $moduleFunctionControllerAction = $this->getModuleFunctionControllerAction($module, $fallbackControllerAction['controllerName']);
-
-                       // Dispatcher controller/action has precedence over default controller/action
-               $controllerAction = t3lib_div::array_merge_recursive_overrule($fallbackControllerAction, $dispatcherControllerAction, FALSE, FALSE);
-                       // Module function controller/action has precedence
-               $controllerAction = t3lib_div::array_merge_recursive_overrule($controllerAction, $moduleFunctionControllerAction, FALSE, FALSE);
-
-               return $controllerAction;
-       }
-
-       /**
-        * Returns the fallback controller/action pair to be used when request does not contain
-        * any controller/action to be used or the provided parameters are not valid.
-        *
-        * @param array $configuration The module configuration
-        * @return array The controller/action pair
-        */
-       protected function getFallbackControllerAction($configuration) {
-                       // Extract module settings from its registration in ext_tables.php
-               $controllers = array_keys($configuration['controllerActions']);
-               $defaultController = array_shift($controllers);
-               $actions = t3lib_div::trimExplode(',', $configuration['controllerActions'][$defaultController], TRUE);
-               $defaultAction = $actions[0];
-
-               return array(
-                       'controllerName' => $defaultController,
-                       'actionName' => $defaultAction,
-               );
-       }
-
-       /**
-        * Returns the controller/action pair that was specified by the request if it is valid,
-        * otherwise, will just return a blank controller/action pair meaning the default
-        * controller/action should be used instead.
-        *
-        * @param array $configuration The module configuration
-        * @param array $dispatcherParameters The dispatcher parameters
-        * @return array The controller/action pair
-        */
-       protected function getDispatcherControllerAction($configuration, $dispatcherParameters) {
-               $controllerAction = array(
-                       'controllerName' => '',
-                       'actionName' => '',
-               );
-
-               if (!isset($dispatcherParameters['controllerName'])) {
-                               // Early return: should use fallback controller/action
-                       return $controllerAction;
-               }
-
-                       // Extract configured controllers from module's registration in ext_tables.php
-               $controllers = array_keys($configuration['controllerActions']);
-
-               $controller = $dispatcherParameters['controllerName'];
-               if (in_array($controller, $controllers)) {
-                               // Update return value as selected controller is valid
-                       $controllerAction['controllerName'] = $controller;
-                       $actions = t3lib_div::trimExplode(',', $configuration['controllerActions'][$controller], TRUE);
-                       if (isset($dispatcherParameters['actionName'])) {
-                                       // Extract configured actions for selected controllers
-                               $action = $dispatcherParameters['actionName'];
-                               if (in_array($action, $actions)) {
-                                               // Requested action is valid for selected controller
-                                       $controllerAction['actionName'] = $action;
-                               } else {
-                                               // Use first action of selected controller as fallback action
-                                       $controllerAction['actionName'] = $actions[0];
-                               }
-                       } else {
-                                       // Use first action of selected controller as fallback action
-                               $controllerAction['actionName'] = $actions[0];
-                       }
-               }
-
-               return $controllerAction;
-       }
-
-       /**
-        * Returns the controller/action pair to use if a module function parameter is found
-        * in the request, otherwise, will just return a blank controller/action pair.
-        *
-        * @param string $module The name of the module
-        * @param string $defaultController The module's default controller
-        * @return array The controller/action pair
-        */
-       protected function getModuleFunctionControllerAction($module, $defaultController) {
-               $controllerAction = array(
-                       'controllerName' => '',
-                       'actionName' => '',
-               );
-
-               $set = t3lib_div::_GP('SET');
-               if (!$set) {
-                               // Early return
-                       return $controllerAction;
-               }
-
-               $moduleFunction = $set['function'];
-               $matches = array();
-               if (preg_match('/^(.*)->(.*)$/', $moduleFunction, $matches)) {
-                       $controllerAction['controllerName'] = $matches[1];
-                       $controllerAction['actionName'] = $matches[2];
-               } else {
-                               // Support for external SCbase module function rendering
-                       $functions = $GLOBALS['TBE_MODULES_EXT']['_configuration'][$module]['MOD_MENU']['function'];
-                       if (isset($functions[$moduleFunction])) {
-                               $controllerAction['controllerName'] = $defaultController;
-                               $controllerAction['actionName'] = 'extObj';
-                       }
-               }
-
-               return $controllerAction;
-       }
-
-       /**
         * Returns TypoScript Setup array from current Environment.
         *
         * @return array the raw TypoScript setup
@@ -263,5 +87,12 @@ class Tx_Extbase_Configuration_BackendConfigurationManager extends Tx_Extbase_Co
                return self::DEFAULT_BACKEND_STORAGE_PID;
        }
 
+       /**
+        * We do not want to override anything in the backend.
+        * @return array
+        */
+       protected function getContextSpecificFrameworkConfiguration(array $frameworkConfiguration) {
+               return $frameworkConfiguration;
+       }
 }
 ?>
\ No newline at end of file
index f4a851e..aac52d6 100644 (file)
@@ -104,10 +104,10 @@ class Tx_Extbase_Configuration_ConfigurationManager implements Tx_Extbase_Config
        public function getConfiguration($configurationType, $extensionName = NULL, $pluginName = NULL) {
                switch ($configurationType) {
                        case self::CONFIGURATION_TYPE_SETTINGS :
-                               $configuration = $this->concreteConfigurationManager->getConfiguration($configurationType, $extensionName, $pluginName);
+                               $configuration = $this->concreteConfigurationManager->getConfiguration($extensionName, $pluginName);
                                return $configuration['settings'];
                        case self::CONFIGURATION_TYPE_FRAMEWORK :
-                               return $this->concreteConfigurationManager->getConfiguration($configurationType, $extensionName, $pluginName);
+                               return $this->concreteConfigurationManager->getConfiguration($extensionName, $pluginName);
                        case self::CONFIGURATION_TYPE_FULL_TYPOSCRIPT :
                                return $this->concreteConfigurationManager->getTypoScriptSetup();
                        default :
index 7bd69d2..fb7cda8 100644 (file)
 class Tx_Extbase_Configuration_FrontendConfigurationManager extends Tx_Extbase_Configuration_AbstractConfigurationManager {
 
        /**
-        * Loads the Extbase Framework configuration.
-        *
-        * The Extbase framework configuration HAS TO be retrieved using this method, as they are come from different places than the normal settings.
-        * Framework configuration is, in contrast to normal settings, needed for the Extbase framework to operate correctly.
-        *
-        * @param string $configurationType The kind of configuration to fetch - must be one of the CONFIGURATION_TYPE_* constants
-        * @param string $extensionName if specified, the configuration for the given extension will be returned (plugin.tx_extensionname)
-        * @param string $pluginName if specified, the configuration for the given plugin will be returned (plugin.tx_extensionname_pluginname)
-        * @return array the Extbase framework configuration
-        */
-       public function getConfiguration($configurationType, $extensionName = NULL, $pluginName = NULL) {
-               // 1st level cache
-               if ($extensionName !== NULL) {
-                       $configurationCacheKey = strtolower($extensionName);
-                       if ($pluginName !== NULL) {
-                               $configurationCacheKey .= '_' . strtolower($pluginName);
-                       }
-               } else {
-                       $configurationCacheKey = strtolower($this->extensionName . '_' . $this->pluginName);
-               }
-               if (isset($this->configurationCache[$configurationCacheKey])) {
-                       return $this->configurationCache[$configurationCacheKey];
-               }
-
-               $frameworkConfiguration = array();
-               $frameworkConfiguration['persistence']['storagePid'] = self::DEFAULT_BACKEND_STORAGE_PID;
-
-               $setup = $this->getTypoScriptSetup();
-               if ($extensionName !== NULL) {
-                       $pluginConfiguration = $setup['plugin.']['tx_' . strtolower($extensionName) . '.'];
-                       if ($pluginName !== NULL) {
-                               $pluginSignature = strtolower($extensionName . '_' . $pluginName);
-                               if (is_array($setup['plugin.']['tx_' . $pluginSignature . '.'])) {
-                                       $pluginConfiguration = t3lib_div::array_merge_recursive_overrule($pluginConfiguration, $setup['plugin.']['tx_' . $pluginSignature . '.']);
-                               }
-                       }
-               } else {
-                       $pluginConfiguration = $this->configuration;
-               }
-               $extbaseConfiguration = $setup['config.']['tx_extbase.'];
-               if (is_array($extbaseConfiguration)) {
-                       $extbaseConfiguration = Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($extbaseConfiguration);
-                       $frameworkConfiguration = t3lib_div::array_merge_recursive_overrule($frameworkConfiguration, $extbaseConfiguration);
-               }
-
-               if (isset($pluginConfiguration['settings'])) {
-                       $pluginConfiguration = $this->resolveTyposcriptReference($pluginConfiguration, 'settings');
-               }
-               if (!is_array($pluginConfiguration['settings.'])) $pluginConfiguration['settings.'] = array(); // We expect that the settings are arrays on various places
-               if (isset($pluginConfiguration['persistence'])) {
-                       $pluginConfiguration = $this->resolveTyposcriptReference($pluginConfiguration, 'persistence');
-               }
-               if (isset($pluginConfiguration['view'])) {
-                       $pluginConfiguration = $this->resolveTyposcriptReference($pluginConfiguration, 'view');
-               }
-               if (isset($pluginConfiguration['_LOCAL_LANG'])) {
-                       $pluginConfiguration = $this->resolveTyposcriptReference($pluginConfiguration, '_LOCAL_LANG');
-               }
-               $frameworkConfiguration = t3lib_div::array_merge_recursive_overrule($frameworkConfiguration, Tx_Extbase_Utility_TypoScript::convertTypoScriptArrayToPlainArray($pluginConfiguration));
-
-               // only load context specific configuration when retrieving configuration of the current plugin
-               if ($extensionName === NULL || ($extensionName === $this->extensionName && $pluginName === $this->pluginName)) {
-                       $frameworkConfiguration = $this->getContextSpecificFrameworkConfiguration($frameworkConfiguration);
-               }
-
-               // 1st level cache
-               $this->configurationCache[$configurationCacheKey] = $frameworkConfiguration;
-               return $frameworkConfiguration;
-       }
-
-       /**
         * Returns TypoScript Setup array from current Environment.
         *
         * @return array the raw TypoScript setup
index e7fbb6b..709f0ff 100644 (file)
@@ -273,14 +273,12 @@ class Tx_Extbase_Core_Bootstrap {
          * @see run()
          **/
        public function callModule($moduleName) {
-               if (!isset($GLOBALS['TBE_MODULES']['_configuration'][$moduleName])) return FALSE;
-               $configuration = $GLOBALS['TBE_MODULES']['_configuration'][$moduleName];
 
                // Check permissions and exit if the user has no permission for entry
-               $GLOBALS['BE_USER']->modAccess($configuration, TRUE);
+               $GLOBALS['BE_USER']->modAccess($config, TRUE);
                if (t3lib_div::_GP('id')) {
                        // Check page access
-                       $id = t3lib_div::_GP('id');
+                       $id = intval(t3lib_div::_GP('id'));
                        $permClause = $GLOBALS['BE_USER']->getPagePermsClause(TRUE);
                        $access = is_array(t3lib_BEfunc::readPageAccess($id, $permClause));
                        if (!$access) {
@@ -288,13 +286,10 @@ class Tx_Extbase_Core_Bootstrap {
                        }
                }
 
-               // BACK_PATH is the path from the typo3/ directory from within the
-               // directory containing the controller file. We are using mod.php dispatcher
-               // and thus we are already within typo3/ because we call typo3/mod.php
-               $GLOBALS['BACK_PATH'] = '';
 
+               $configuration = array();
+               $configuration['module.']['tx_extbase.']['moduleName'] = $moduleName;
                $this->run('', $configuration);
-
                return TRUE;
        }
 }
index 67b0b19..0999c51 100644 (file)
@@ -16,7 +16,7 @@ if (TYPO3_MODE == 'BE') {
 
        }
 
-       $TBE_MODULES['_dispatcher'][] = 'Tx_Extbase_Core_Bootstrap';
+       $TBE_MODULES['_dispatcher'][] = 'Tx_Extbase_Core_Bootstrap->callModule';
        
 }