defineLegacyConstants(); $this->bootstrap = Bootstrap::getInstance() ->initializeClassLoader($classLoader) ->setRequestType(TYPO3_REQUESTTYPE_BE | (!empty($_GET['ajaxID']) ? TYPO3_REQUESTTYPE_AJAX : 0)) ->baseSetup($this->entryPointLevel); // Redirect to install tool if base configuration is not found if (!$this->bootstrap->checkIfEssentialConfigurationExists()) { $this->bootstrap->redirectToInstallTool($this->entryPointLevel); } foreach ($this->availableRequestHandlers as $requestHandler) { $this->bootstrap->registerRequestHandlerImplementation($requestHandler); } $this->bootstrap->configure(); } /** * Set up the application and shut it down afterwards * * @param callable $execute */ public function run(callable $execute = null) { $this->request = \TYPO3\CMS\Core\Http\ServerRequestFactory::fromGlobals(); // see below when this option is set and Bootstrap::defineTypo3RequestTypes() for more details if (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_AJAX) { $this->request = $this->request->withAttribute('isAjaxRequest', true); } elseif (isset($this->request->getQueryParams()['M'])) { $this->request = $this->request->withAttribute('isModuleRequest', true); } $this->bootstrap->handleRequest($this->request); if ($execute !== null) { call_user_func($execute); } $this->bootstrap->shutdown(); } /** * Define constants and variables */ protected function defineLegacyConstants() { define('TYPO3_MODE', 'BE'); } }