[TASK] Protect info extension
[Packages/TYPO3.CMS.git] / typo3 / sysext / belog / Classes / Module / BackendLogModuleBootstrap.php
1 <?php
2 namespace TYPO3\CMS\Belog\Module;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Core\Utility\GeneralUtility;
18 use TYPO3\CMS\Extbase\Core\Bootstrap;
19
20 /**
21 * This class is a wrapper for WebInfo controller of belog.
22 * It is registered in ext_tables.php with \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction()
23 * and called by the info extension via SCbase functionality.
24 *
25 * Extbase currently provides no way to register a "TBE_MODULES_EXT" module directly,
26 * therefore we need to bootstrap extbase on our own here to jump to the WebInfo controller.
27 */
28 class BackendLogModuleBootstrap
29 {
30 /**
31 * Bootstrap extbase and jump to WebInfo controller
32 *
33 * @return string
34 */
35 public function main()
36 {
37 $configuration = [
38 'extensionName' => 'Belog',
39 'pluginName' => 'system_BelogLog',
40 'vendorName' => 'TYPO3\\CMS',
41 ];
42 // Yeah, this is ugly. But currently, there is no other direct way
43 // in extbase to force a specific controller in backend mode.
44 // Overwriting $_GET was the most simple solution here until extbase
45 // provides a clean way to solve this.
46 $_GET['tx_belog_system_beloglog']['controller'] = 'BackendLog';
47 $_GET['tx_belog_system_beloglog']['pageId'] = GeneralUtility::_GP('id');
48 $_GET['tx_belog_system_beloglog']['layout'] = 'Plain';
49 $extbaseBootstrap = GeneralUtility::makeInstance(Bootstrap::class);
50 return $extbaseBootstrap->run('', $configuration);
51 }
52 }