/** * @param $plugin * @param $pluginPageId * @return \ApacheSolrForTypo3\Solr\Plugin\Results\Results * @throws \InvalidArgumentException */ protected function getPluginInstance($plugin, $pluginPageId = 1) { switch ($plugin) { case 'results': $pluginClassName = 'ApacheSolrForTypo3\\Solr\\Plugin\\Results\\Results'; break; case 'search': $pluginClassName = 'ApacheSolrForTypo3\\Solr\\Plugin\\Search\\Search'; break; case 'frequent_search': $pluginClassName = 'ApacheSolrForTypo3\\Solr\\Plugin\\FrequentSearches\\FrequentSearches'; break; default: throw new \InvalidArgumentException('Invalid plugin ' . $plugin); } $fakeTSFE = $this->getConfiguredTSFE(array(), $pluginPageId); $fakeTSFE->newCObj(); $GLOBALS['TSFE'] = $fakeTSFE; PageGenerator::pagegenInit(); PageGenerator::renderContent(); $fakeTSFE->newCObj(); $fakeTSFE->fe_user->id = 'id'; /** @var $plugin \ApacheSolrForTypo3\Solr\Plugin\Results\Results */ $plugin = GeneralUtility::makeInstance($pluginClassName); $plugin->cObj = $fakeTSFE->cObj; return $plugin; }
/** * Initialize full GLOBALS[TSFE] based on given page id * * @param integer $pageId * @return void */ public static function initializeFrontendPage($pageId = 0) { static::initializeTypoScriptFrontendController($pageId); static::initializeFrontendUserAuthentication(); $controller =& $GLOBALS['TSFE']; if (!$controller->sys_page instanceof \TYPO3\CMS\Frontend\Page\PageRepository) { $controller->determineId(); } if (!$controller->tmpl instanceof \TYPO3\CMS\Core\TypoScript\TemplateService) { $controller->initTemplate(); } if (!is_array($controller->config)) { $controller->getConfigArray(); } static::initializeContentObjectRenderer(); if (empty($controller->indexedDocTitle)) { \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); } }
/** * Initializes TSFE and sets $GLOBALS['TSFE'] * * @return void */ protected function initTSFE() { $GLOBALS['TSFE'] = $tsfe = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], GeneralUtility::_GP('id'), ''); /** @var \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController $tsfe */ $tsfe->connectToDB(); $tsfe->initFEuser(); $tsfe->checkAlternativeIdMethods(); $tsfe->determineId(); \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadCachedTca(); $tsfe->initTemplate(); $tsfe->getConfigArray(); // Get linkVars, absRefPrefix, etc \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); }
/** * @param string $fixture * @param array $importPageIds */ protected function indexPageIdsFromFixture($fixture, $importPageIds) { $this->importDataSetFromFixture($fixture); foreach ($importPageIds as $importPageId) { $GLOBALS['TT'] = $this->getMockBuilder(TimeTracker::class)->disableOriginalConstructor()->getMock(); $fakeTSFE = $this->getConfiguredTSFE(array(), $importPageId); $fakeTSFE->newCObj(); $GLOBALS['TSFE'] = $fakeTSFE; PageGenerator::pagegenInit(); PageGenerator::renderContent(); /** @var $pageIndexer \ApacheSolrForTypo3\Solr\Typo3PageIndexer */ $pageIndexer = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Typo3PageIndexer', $fakeTSFE); $pageIndexer->indexPage(); } /** @var $beUser \TYPO3\CMS\Core\Authentication\BackendUserAuthentication */ $beUser = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Authentication\\BackendUserAuthentication'); $GLOBALS['BE_USER'] = $beUser; }
/** * Handles a frontend request * * @param \Psr\Http\Message\ServerRequestInterface $request * @return NULL|\Psr\Http\Message\ResponseInterface */ public function handleRequest(\Psr\Http\Message\ServerRequestInterface $request) { $response = null; $this->request = $request; $this->initializeTimeTracker(); // Hook to preprocess the current request: if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/index_ts.php']['preprocessRequest'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/index_ts.php']['preprocessRequest'] as $hookFunction) { $hookParameters = array(); GeneralUtility::callUserFunction($hookFunction, $hookParameters, $hookParameters); } unset($hookFunction); unset($hookParameters); } $this->initializeController(); if ($GLOBALS['TYPO3_CONF_VARS']['FE']['pageUnavailable_force'] && !GeneralUtility::cmpIP(GeneralUtility::getIndpEnv('REMOTE_ADDR'), $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'])) { $this->controller->pageUnavailableAndExit('This page is temporarily unavailable.'); } $this->controller->connectToDB(); $this->controller->sendRedirect(); // Output compression // Remove any output produced until now $this->bootstrap->endOutputBufferingAndCleanPreviousOutput(); $this->initializeOutputCompression(); // Initializing the Frontend User $this->timeTracker->push('Front End user initialized', ''); $this->controller->initFEuser(); $this->timeTracker->pull(); // Initializing a possible logged-in Backend User /** @var $GLOBALS['BE_USER'] \TYPO3\CMS\Backend\FrontendBackendUserAuthentication */ $GLOBALS['BE_USER'] = $this->controller->initializeBackendUser(); // Process the ID, type and other parameters. // After this point we have an array, $page in TSFE, which is the page-record // of the current page, $id. $this->timeTracker->push('Process ID', ''); // Initialize admin panel since simulation settings are required here: if ($this->controller->isBackendUserLoggedIn()) { $GLOBALS['BE_USER']->initializeAdminPanel(); $this->bootstrap->initializeBackendRouter()->loadExtensionTables(); } else { $this->bootstrap->loadCachedTca(); } $this->controller->checkAlternativeIdMethods(); $this->controller->clear_preview(); $this->controller->determineId(); // Now, if there is a backend user logged in and he has NO access to this page, // then re-evaluate the id shown! _GP('ADMCMD_noBeUser') is placed here because // \TYPO3\CMS\Version\Hook\PreviewHook might need to know if a backend user is logged in. if ($this->controller->isBackendUserLoggedIn() && (!$GLOBALS['BE_USER']->extPageReadAccess($this->controller->page) || GeneralUtility::_GP('ADMCMD_noBeUser'))) { // Remove user unset($GLOBALS['BE_USER']); $this->controller->beUserLogin = false; // Re-evaluate the page-id. $this->controller->checkAlternativeIdMethods(); $this->controller->clear_preview(); $this->controller->determineId(); } $this->controller->makeCacheHash(); $this->timeTracker->pull(); // Admin Panel & Frontend editing if ($this->controller->isBackendUserLoggedIn()) { $GLOBALS['BE_USER']->initializeFrontendEdit(); if ($GLOBALS['BE_USER']->adminPanel instanceof AdminPanelView) { $this->bootstrap->initializeLanguageObject(); } if ($GLOBALS['BE_USER']->frontendEdit instanceof FrontendEditingController) { $GLOBALS['BE_USER']->frontendEdit->initConfigOptions(); } } // Starts the template $this->timeTracker->push('Start Template', ''); $this->controller->initTemplate(); $this->timeTracker->pull(); // Get from cache $this->timeTracker->push('Get Page from cache', ''); $this->controller->getFromCache(); $this->timeTracker->pull(); // Get config if not already gotten // After this, we should have a valid config-array ready $this->controller->getConfigArray(); // Setting language and locale $this->timeTracker->push('Setting language and locale', ''); $this->controller->settingLanguage(); $this->controller->settingLocale(); $this->timeTracker->pull(); // Convert POST data to utf-8 for internal processing if metaCharset is different $this->controller->convPOSTCharset(); $this->controller->initializeRedirectUrlHandlers(); $this->controller->handleDataSubmission(); // Check for shortcut page and redirect $this->controller->checkPageForShortcutRedirect(); $this->controller->checkPageForMountpointRedirect(); // Generate page $this->controller->setUrlIdToken(); $this->timeTracker->push('Page generation', ''); if ($this->controller->isGeneratePage()) { $this->controller->generatePage_preProcessing(); $temp_theScript = $this->controller->generatePage_whichScript(); if ($temp_theScript) { include $temp_theScript; } else { PageGenerator::pagegenInit(); // Global content object $this->controller->newCObj(); // Content generation if (!$this->controller->isINTincScript()) { PageGenerator::renderContent(); $this->controller->setAbsRefPrefix(); } } $this->controller->generatePage_postProcessing(); } elseif ($this->controller->isINTincScript()) { PageGenerator::pagegenInit(); // Global content object $this->controller->newCObj(); } $this->controller->releaseLocks(); $this->timeTracker->pull(); // Render non-cached parts if ($this->controller->isINTincScript()) { $this->timeTracker->push('Non-cached objects', ''); $this->controller->INTincScript(); $this->timeTracker->pull(); } // Output content $sendTSFEContent = false; if ($this->controller->isOutputting()) { $this->timeTracker->push('Print Content', ''); $this->controller->processOutput(); $sendTSFEContent = true; $this->timeTracker->pull(); } // Store session data for fe_users $this->controller->storeSessionData(); // Statistics $GLOBALS['TYPO3_MISC']['microtime_end'] = microtime(true); $this->controller->setParseTime(); if (isset($this->controller->config['config']['debug'])) { $debugParseTime = (bool) $this->controller->config['config']['debug']; } else { $debugParseTime = !empty($this->controller->TYPO3_CONF_VARS['FE']['debug']); } if ($this->controller->isOutputting() && $debugParseTime) { $this->controller->content .= LF . '<!-- Parsetime: ' . $this->controller->scriptParseTime . 'ms -->'; } $this->controller->redirectToExternalUrl(); // Preview info $this->controller->previewInfo(); // Hook for end-of-frontend $this->controller->hook_eofe(); // Finish timetracking $this->timeTracker->pull(); // Check memory usage MonitorUtility::peakMemoryUsage(); // beLoginLinkIPList echo $this->controller->beLoginLinkIPList(); // Admin panel if ($this->controller->isBackendUserLoggedIn() && $GLOBALS['BE_USER'] instanceof FrontendBackendUserAuthentication) { if ($GLOBALS['BE_USER']->extAdmEnabled) { // Style sheet is also used for frontend editing. $this->controller->content = str_ireplace('</head>', $GLOBALS['BE_USER']->adminPanel->getAdminPanelHeaderData() . '</head>', $this->controller->content); } if ($GLOBALS['BE_USER']->isAdminPanelVisible()) { $this->controller->content = str_ireplace('</body>', $GLOBALS['BE_USER']->displayAdminPanel() . '</body>', $this->controller->content); } } if ($sendTSFEContent) { /** @var \TYPO3\CMS\Core\Http\Response $response */ $response = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Http\Response::class); $response->getBody()->write($this->controller->content); } // Debugging Output if (isset($GLOBALS['error']) && is_object($GLOBALS['error']) && @is_callable(array($GLOBALS['error'], 'debugOutput'))) { $GLOBALS['error']->debugOutput(); } if (TYPO3_DLOG) { GeneralUtility::devLog('END of FRONTEND session', 'cms', 0, array('_FLUSH' => true)); } return $response; }
<?php require_once 'Classes/class.tx_odshtml2pdf.php'; // generate original content require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('frontend') . 'Classes/Page/PageGenerator.php'; $GLOBALS['TT']->push('pagegen.php, initialize'); // Initialization of some variables \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); // Global content object... $GLOBALS['TSFE']->newCObj(); $GLOBALS['TT']->pull(); // Content generation // If this is an array, it's a sign that this script is included in order to include certain INT-scripts if (!$GLOBALS['TSFE']->isINTincScript()) { $GLOBALS['TT']->push('pagegen.php, render'); \TYPO3\CMS\Frontend\Page\PageGenerator::renderContent(); $GLOBALS['TSFE']->setAbsRefPrefix(); $GLOBALS['TT']->pull(); } // instead of calling processOutput... //---------------------------- begin ProcessOutput -------------- // substitute fe user $token = trim($GLOBALS['TSFE']->config['config']['USERNAME_substToken']); $token = $token ? $token : '<!--###USERNAME###-->'; if (strpos($GLOBALS['TSFE']->content, $token)) { $GLOBALS['TSFE']->set_no_cache(); if ($GLOBALS['TSFE']->fe_user->user['uid']) { $GLOBALS['TSFE']->content = str_replace($token, $GLOBALS['TSFE']->fe_user->user['uid'], $GLOBALS['TSFE']->content); } } // Substitutes get_URL_ID in case of GET-fallback
/** * Initializes a TypoScript Frontend necessary for using TypoScript and TypoLink functions * * @param int $id * @param int $typeNum * * @return void */ protected function initTSFE($id = 1, $typeNum = 0) { \TYPO3\CMS\Frontend\Utility\EidUtility::initTCA(); if (!is_object($GLOBALS['TT'])) { $GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\NullTimeTracker(); $GLOBALS['TT']->start(); } $GLOBALS['TSFE'] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], $id, $typeNum); $GLOBALS['TSFE']->sys_page = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Page\\PageRepository'); $GLOBALS['TSFE']->sys_page->init(TRUE); $GLOBALS['TSFE']->connectToDB(); $GLOBALS['TSFE']->initFEuser(); $GLOBALS['TSFE']->determineId(); $GLOBALS['TSFE']->initTemplate(); $GLOBALS['TSFE']->rootLine = $GLOBALS['TSFE']->sys_page->getRootLine($id, ''); $GLOBALS['TSFE']->getConfigArray(); \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); }
/** * Handles a frontend request * * @return void */ public function handleRequest() { \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadTypo3LoadedExtAndExtLocalconf(TRUE)->applyAdditionalConfigurationSettings(); // Timetracking started $configuredCookieName = trim($GLOBALS['TYPO3_CONF_VARS']['BE']['cookieName']); if (empty($configuredCookieName)) { $configuredCookieName = 'be_typo_user'; } if ($_COOKIE[$configuredCookieName]) { $GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\TimeTracker(); } else { $GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\NullTimeTracker(); } $GLOBALS['TT']->start(); \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->initializeTypo3DbGlobal(); // Hook to preprocess the current request: if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/index_ts.php']['preprocessRequest'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/index_ts.php']['preprocessRequest'] as $hookFunction) { $hookParameters = array(); \TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction($hookFunction, $hookParameters, $hookParameters); } unset($hookFunction); unset($hookParameters); } // Look for extension ID which will launch alternative output engine if ($temp_extId = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('eID')) { if ($classPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include'][$temp_extId])) { // Remove any output produced until now ob_clean(); require $classPath; } die; } /** @var $GLOBALS['TSFE'] \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController */ $GLOBALS['TSFE'] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('type'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('no_cache'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('cHash'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('jumpurl'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('MP'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('RDCT')); if ($GLOBALS['TYPO3_CONF_VARS']['FE']['pageUnavailable_force'] && !\TYPO3\CMS\Core\Utility\GeneralUtility::cmpIP(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('REMOTE_ADDR'), $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'])) { $GLOBALS['TSFE']->pageUnavailableAndExit('This page is temporarily unavailable.'); } $GLOBALS['TSFE']->connectToDB(); $GLOBALS['TSFE']->sendRedirect(); // Output compression // Remove any output produced until now ob_clean(); if ($GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] && extension_loaded('zlib')) { if (\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'])) { // Prevent errors if ini_set() is unavailable (safe mode) @ini_set('zlib.output_compression_level', $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel']); } ob_start(array(\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Utility\\CompressionUtility'), 'compressionOutputHandler')); } // FE_USER $GLOBALS['TT']->push('Front End user initialized', ''); /** @var $GLOBALS['TSFE'] \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController */ $GLOBALS['TSFE']->initFEuser(); $GLOBALS['TT']->pull(); // BE_USER /** @var $GLOBALS['BE_USER'] \TYPO3\CMS\Backend\FrontendBackendUserAuthentication */ $GLOBALS['BE_USER'] = $GLOBALS['TSFE']->initializeBackendUser(); // Process the ID, type and other parameters. // After this point we have an array, $page in TSFE, which is the page-record // of the current page, $id. $GLOBALS['TT']->push('Process ID', ''); // Initialize admin panel since simulation settings are required here: if ($GLOBALS['TSFE']->isBackendUserLoggedIn()) { $GLOBALS['BE_USER']->initializeAdminPanel(); \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadExtensionTables(TRUE); } else { \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadCachedTca(); } $GLOBALS['TSFE']->checkAlternativeIdMethods(); $GLOBALS['TSFE']->clear_preview(); $GLOBALS['TSFE']->determineId(); // Now, if there is a backend user logged in and he has NO access to this page, // then re-evaluate the id shown! _GP('ADMCMD_noBeUser') is placed here because // \TYPO3\CMS\Version\Hook\PreviewHook might need to know if a backend user is logged in. if ($GLOBALS['TSFE']->isBackendUserLoggedIn() && (!$GLOBALS['BE_USER']->extPageReadAccess($GLOBALS['TSFE']->page) || \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ADMCMD_noBeUser'))) { // Remove user unset($GLOBALS['BE_USER']); $GLOBALS['TSFE']->beUserLogin = FALSE; // Re-evaluate the page-id. $GLOBALS['TSFE']->checkAlternativeIdMethods(); $GLOBALS['TSFE']->clear_preview(); $GLOBALS['TSFE']->determineId(); } $GLOBALS['TSFE']->makeCacheHash(); $GLOBALS['TT']->pull(); // Admin Panel & Frontend editing if ($GLOBALS['TSFE']->isBackendUserLoggedIn()) { $GLOBALS['BE_USER']->initializeFrontendEdit(); if ($GLOBALS['BE_USER']->adminPanel instanceof \TYPO3\CMS\Frontend\View\AdminPanelView) { \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->initializeLanguageObject()->initializeSpriteManager(); } if ($GLOBALS['BE_USER']->frontendEdit instanceof \TYPO3\CMS\Core\FrontendEditing\FrontendEditingController) { $GLOBALS['BE_USER']->frontendEdit->initConfigOptions(); } } // Starts the template $GLOBALS['TT']->push('Start Template', ''); $GLOBALS['TSFE']->initTemplate(); $GLOBALS['TT']->pull(); // Get from cache $GLOBALS['TT']->push('Get Page from cache', ''); $GLOBALS['TSFE']->getFromCache(); $GLOBALS['TT']->pull(); // Get config if not already gotten // After this, we should have a valid config-array ready $GLOBALS['TSFE']->getConfigArray(); // Setting language and locale $GLOBALS['TT']->push('Setting language and locale', ''); $GLOBALS['TSFE']->settingLanguage(); $GLOBALS['TSFE']->settingLocale(); $GLOBALS['TT']->pull(); // Convert POST data to internal "renderCharset" if different from the metaCharset $GLOBALS['TSFE']->convPOSTCharset(); // Check JumpUrl $GLOBALS['TSFE']->setExternalJumpUrl(); $GLOBALS['TSFE']->checkJumpUrlReferer(); $GLOBALS['TSFE']->handleDataSubmission(); // Check for shortcut page and redirect $GLOBALS['TSFE']->checkPageForShortcutRedirect(); $GLOBALS['TSFE']->checkPageForMountpointRedirect(); // Generate page $GLOBALS['TSFE']->setUrlIdToken(); $GLOBALS['TT']->push('Page generation', ''); if ($GLOBALS['TSFE']->isGeneratePage()) { $GLOBALS['TSFE']->generatePage_preProcessing(); $temp_theScript = $GLOBALS['TSFE']->generatePage_whichScript(); if ($temp_theScript) { include $temp_theScript; } else { \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); // Global content object $GLOBALS['TSFE']->newCObj(); // LIBRARY INCLUSION, TypoScript $temp_incFiles = \TYPO3\CMS\Frontend\Page\PageGenerator::getIncFiles(); foreach ($temp_incFiles as $temp_file) { include_once './' . $temp_file; } // Content generation if (!$GLOBALS['TSFE']->isINTincScript()) { \TYPO3\CMS\Frontend\Page\PageGenerator::renderContent(); $GLOBALS['TSFE']->setAbsRefPrefix(); } } $GLOBALS['TSFE']->generatePage_postProcessing(); } elseif ($GLOBALS['TSFE']->isINTincScript()) { \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); // Global content object $GLOBALS['TSFE']->newCObj(); // LIBRARY INCLUSION, TypoScript $temp_incFiles = \TYPO3\CMS\Frontend\Page\PageGenerator::getIncFiles(); foreach ($temp_incFiles as $temp_file) { include_once './' . $temp_file; } } $GLOBALS['TT']->pull(); // $GLOBALS['TSFE']->config['INTincScript'] if ($GLOBALS['TSFE']->isINTincScript()) { $GLOBALS['TT']->push('Non-cached objects', ''); $GLOBALS['TSFE']->INTincScript(); $GLOBALS['TT']->pull(); } // Output content $sendTSFEContent = FALSE; if ($GLOBALS['TSFE']->isOutputting()) { $GLOBALS['TT']->push('Print Content', ''); $GLOBALS['TSFE']->processOutput(); $sendTSFEContent = TRUE; $GLOBALS['TT']->pull(); } // Store session data for fe_users $GLOBALS['TSFE']->storeSessionData(); // Statistics $GLOBALS['TYPO3_MISC']['microtime_end'] = microtime(TRUE); $GLOBALS['TSFE']->setParseTime(); if (isset($GLOBALS['TSFE']->config['config']['debug'])) { $debugParseTime = (bool) $GLOBALS['TSFE']->config['config']['debug']; } else { $debugParseTime = !empty($GLOBALS['TSFE']->TYPO3_CONF_VARS['FE']['debug']); } if ($GLOBALS['TSFE']->isOutputting() && $debugParseTime) { $GLOBALS['TSFE']->content .= LF . '<!-- Parsetime: ' . $GLOBALS['TSFE']->scriptParseTime . 'ms -->'; } // Check JumpUrl $GLOBALS['TSFE']->jumpurl(); // Preview info $GLOBALS['TSFE']->previewInfo(); // Hook for end-of-frontend $GLOBALS['TSFE']->hook_eofe(); // Finish timetracking $GLOBALS['TT']->pull(); // Check memory usage \TYPO3\CMS\Core\Utility\MonitorUtility::peakMemoryUsage(); // beLoginLinkIPList echo $GLOBALS['TSFE']->beLoginLinkIPList(); // Admin panel if ($GLOBALS['TSFE']->isBackendUserLoggedIn() && $GLOBALS['BE_USER'] instanceof \TYPO3\CMS\Backend\FrontendBackendUserAuthentication && $GLOBALS['BE_USER']->isAdminPanelVisible()) { $GLOBALS['TSFE']->content = str_ireplace('</head>', $GLOBALS['BE_USER']->adminPanel->getAdminPanelHeaderData() . '</head>', $GLOBALS['TSFE']->content); $GLOBALS['TSFE']->content = str_ireplace('</body>', $GLOBALS['BE_USER']->displayAdminPanel() . '</body>', $GLOBALS['TSFE']->content); } if ($sendTSFEContent) { echo $GLOBALS['TSFE']->content; } // Debugging Output if (isset($GLOBALS['error']) && is_object($GLOBALS['error']) && @is_callable(array($GLOBALS['error'], 'debugOutput'))) { $GLOBALS['error']->debugOutput(); } if (TYPO3_DLOG) { \TYPO3\CMS\Core\Utility\GeneralUtility::devLog('END of FRONTEND session', 'cms', 0, array('_FLUSH' => TRUE)); } \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->shutdown(); }
/** * Initializes TSFE and sets $GLOBALS['TSFE'] * * @return void */ protected function initTSFE() { $GLOBALS['TSFE'] = $tsfe = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], GeneralUtility::_GP('id'), ''); /** @var \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController $tsfe */ $tsfe->connectToDB(); $tsfe->initFEuser(); \TYPO3\CMS\Frontend\Utility\EidUtility::initTCA(); $tsfe->determineId(); $tsfe->initTemplate(); $tsfe->getConfigArray(); $tsfe->settingLanguage(); // Get linkVars, absRefPrefix, etc \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); }
/** * Initializes TSFE. * * @return void */ protected function initializeTsfe() { /* @var $tsfe \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController */ $tsfe = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id'), \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('type'), true); $GLOBALS['TSFE'] =& $tsfe; $tsfe->initFEuser(); $tsfe->initUserGroups(); $tsfe->checkAlternativeIdMethods(); $tsfe->determineId(); $tsfe->getCompressedTCarray(); $tsfe->sys_page = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Page\\PageRepository'); $tsfe->initTemplate(); $tsfe->getConfigArray(); $tsfe->settingLanguage(); $tsfe->settingLocale(); $tsfe->calculateLinkVars(); $tsfe->newCObj(); \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(); }