[FEATURE] Add support for PSR-15 HTTP middlewares
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Classes / Http / Application.php
index a48eb39..5ef0ad1 100644 (file)
@@ -15,7 +15,6 @@ namespace TYPO3\CMS\Backend\Http;
  */
 use TYPO3\CMS\Core\Core\ApplicationInterface;
 use TYPO3\CMS\Core\Core\Bootstrap;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Entry point for the TYPO3 Backend (HTTP requests)
@@ -28,24 +27,20 @@ class Application implements ApplicationInterface
     protected $bootstrap;
 
     /**
-     * @var string
+     * Number of subdirectories where the entry script is located, relative to PATH_site
+     * Usually this is equal to PATH_site = 0
+     * @var int
      */
-    protected $entryPointPath = 'typo3/';
-
-    /**
-     * @var \Psr\Http\Message\ServerRequestInterface
-     */
-    protected $request;
+    protected $entryPointLevel = 1;
 
     /**
      * All available request handlers that can handle backend requests (non-CLI)
      * @var array
      */
-    protected $availableRequestHandlers = array(
+    protected $availableRequestHandlers = [
         \TYPO3\CMS\Backend\Http\RequestHandler::class,
-        \TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::class,
         \TYPO3\CMS\Backend\Http\AjaxRequestHandler::class
-    );
+    ];
 
     /**
      * Constructor setting up legacy constant and register available Request Handlers
@@ -58,12 +53,12 @@ class Application implements ApplicationInterface
 
         $this->bootstrap = Bootstrap::getInstance()
             ->initializeClassLoader($classLoader)
-            ->setRequestType(TYPO3_REQUESTTYPE_BE | (!empty($_GET['ajaxID']) ? TYPO3_REQUESTTYPE_AJAX : 0))
-            ->baseSetup($this->entryPointPath);
+            ->setRequestType(TYPO3_REQUESTTYPE_BE | (isset($_REQUEST['route']) && strpos($_REQUEST['route'], '/ajax/') === 0 ? 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->entryPointPath);
+            $this->bootstrap->redirectToInstallTool($this->entryPointLevel);
         }
 
         foreach ($this->availableRequestHandlers as $requestHandler) {
@@ -77,19 +72,10 @@ class Application implements ApplicationInterface
      * Set up the application and shut it down afterwards
      *
      * @param callable $execute
-     * @return void
      */
     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);
+        $this->bootstrap->handleRequest(\TYPO3\CMS\Core\Http\ServerRequestFactory::fromGlobals(), 'backend');
 
         if ($execute !== null) {
             call_user_func($execute);
@@ -105,5 +91,4 @@ class Application implements ApplicationInterface
     {
         define('TYPO3_MODE', 'BE');
     }
-
 }