<?php declare(strict_types = 1); namespace TYPO3\CMS\Feedit\Middleware; /* * This file is part of the TYPO3 CMS project. * * It is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License, either version 2 * of the License, or any later version. * * For the full copyright and license information, please read the * LICENSE.txt file that was distributed with this source code. * * The TYPO3 project - inspiring people to share! */ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; use TYPO3\CMS\Backend\FrontendBackendUserAuthentication; use TYPO3\CMS\Core\FrontendEditing\FrontendEditingController; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController; /** * PSR-15 middleware initializing frontend editing */ class FrontendEditInitiator implements MiddlewareInterface { /** * Process an incoming server request and return a response, optionally delegating * response creation to a handler. * * @param ServerRequestInterface $request * @param RequestHandlerInterface $handler * @return ResponseInterface */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { if (isset($GLOBALS['BE_USER']) && $GLOBALS['BE_USER'] instanceof FrontendBackendUserAuthentication) { $config = $GLOBALS['BE_USER']->getTSConfig()['admPanel.'] ?? []; $active = (int)$GLOBALS['TSFE']->displayEditIcons === 1 || (int)$GLOBALS['TSFE']->displayFieldEditIcons === 1; if ($active && isset($config['enable.'])) { foreach ($config['enable.'] as $value) { if ($value) { if ($GLOBALS['TSFE'] instanceof TypoScriptFrontendController) { // Grab the Page TSConfig property that determines which controller to use. $pageTSConfig = $GLOBALS['TSFE']->getPagesTSconfig(); $controllerKey = $pageTSConfig['TSFE.']['frontendEditingController'] ?? 'default'; } else { $controllerKey = 'default'; } $controllerClass = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['frontendEditingController'][$controllerKey]; if ($controllerClass) { $GLOBALS['BE_USER']->frontendEdit = GeneralUtility::makeInstance($controllerClass); if ($controllerClass instanceof FrontendEditingController) { $GLOBALS['BE_USER']->frontendEdit->initConfigOptions(); } } break; } } } } return $handler->handle($request); } }