[TASK] Streamline phpdoc annotations in EXT:extbase
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / Classes / Utility / FrontendSimulatorUtility.php
1 <?php
2 namespace TYPO3\CMS\Extbase\Utility;
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 /**
18 * Utilities to simulate a frontend in backend context.
19 *
20 * @internal ONLY USED INTERNALLY, MIGHT CHANGE WITHOUT NOTICE!
21 */
22 class FrontendSimulatorUtility
23 {
24 /**
25 * @var mixed
26 */
27 protected static $tsfeBackup;
28
29 /**
30 * Sets the $TSFE->cObjectDepthCounter in Backend mode
31 * This somewhat hacky work around is currently needed because the cObjGetSingle() function of \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer relies on this setting
32 *
33 * @param \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer|null $cObj
34 */
35 public static function simulateFrontendEnvironment(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj = null)
36 {
37 self::$tsfeBackup = $GLOBALS['TSFE'] ?? null;
38 $GLOBALS['TSFE'] = new \stdClass();
39 $GLOBALS['TSFE']->cObjectDepthCounter = 100;
40 $GLOBALS['TSFE']->cObj = $cObj ?? \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::class);
41 }
42
43 /**
44 * Resets $GLOBALS['TSFE'] if it was previously changed by simulateFrontendEnvironment()
45 *
46 * @see simulateFrontendEnvironment()
47 */
48 public static function resetFrontendEnvironment()
49 {
50 if (!empty(self::$tsfeBackup)) {
51 $GLOBALS['TSFE'] = self::$tsfeBackup;
52 }
53 }
54 }