-
Notifications
You must be signed in to change notification settings - Fork 20
/
EidUtility.php
84 lines (70 loc) · 2.48 KB
/
EidUtility.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
namespace KoninklijkeCollective\MyRedirects\Utility;
use TYPO3\CMS\Core\TypoScript\TemplateService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
use TYPO3\CMS\Frontend\Page\PageRepository;
/**
* Utility: Initialize objects inside EID usage
*/
class EidUtility
{
/**
* Initialize TSFE based on given page id
*
* @param integer $pageId
* @return void
* @throws \Exception
*/
public static function initializeTypoScriptFrontendController($pageId = 0)
{
global $TYPO3_CONF_VARS;
$controller = &$GLOBALS['TSFE'];
if (!($controller instanceof TypoScriptFrontendController)) {
$controller = GeneralUtility::makeInstance(
TypoScriptFrontendController::class,
$TYPO3_CONF_VARS,
$pageId,
0
);
static::invokeMethod(\TYPO3\CMS\Core\Core\Bootstrap::getInstance(), 'loadBaseTca');
static::invokeMethod(\TYPO3\CMS\Core\Core\Bootstrap::getInstance(), 'loadExtTables');
}
if (!($controller->fe_user instanceof FrontendUserAuthentication)) {
static::invokeMethod($controller, 'initFEuser');
}
if (!($controller->sys_page instanceof PageRepository)) {
static::invokeMethod($controller, 'determineId');
}
if (!($controller->tmpl instanceof TemplateService)) {
static::invokeMethod($controller, 'initTemplate');
static::invokeMethod($controller, 'getFromCache');
static::invokeMethod($controller, 'getConfigArray');
}
if (empty($controller->rootLine)) {
$controller->rootLine = $controller->sys_page->getRootLine($controller->id, $controller->MP);
}
if (empty($controller->page)) {
$controller->page = $controller->sys_page->getPage($controller->id);
}
if (!($controller->cObj instanceof ContentObjectRenderer)) {
$controller->newCObj();
}
}
/**
* @param object $object
* @param string $method
* @return void
*/
protected static function invokeMethod($object, $method)
{
try {
if (is_callable([$object, $method])) {
$object->{$method}();
}
} catch (\Exception $e) {
}
}
}