/** * Handles any commandline request * * @param InputInterface $input * @return void */ public function handleRequest(InputInterface $input) { $output = new ConsoleOutput(); $this->bootstrap->loadExtensionTables(); // Check if the command to run needs a backend user to be loaded $command = $this->getCommandToRun($input); foreach ($this->availableCommands as $data) { if ($data['command'] !== $command) { continue; } if (isset($data['user'])) { $this->initializeBackendUser($data['user']); } } // Make sure output is not buffered, so command-line output and interaction can take place $this->bootstrap->endOutputBufferingAndCleanPreviousOutput(); if (!$command) { $cliKeys = array_keys($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys']); $output->writeln('Old entrypoint keys available:'); asort($cliKeys); foreach ($cliKeys as $key => $value) { $output->writeln(' ' . $value); } $output->writeln(''); $output->writeln('TYPO3 Console Commands:'); } $exitCode = $this->application->run($input, $output); exit($exitCode); }
/** * Handles a frontend request based on the _GP "eID" variable. * * @return void */ public function handleRequest() { // Timetracking started $configuredCookieName = trim($GLOBALS['TYPO3_CONF_VARS']['BE']['cookieName']); if (empty($configuredCookieName)) { $configuredCookieName = 'be_typo_user'; } if ($_COOKIE[$configuredCookieName]) { $GLOBALS['TT'] = new TimeTracker(); } else { $GLOBALS['TT'] = new NullTimeTracker(); } $GLOBALS['TT']->start(); // 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); } // Remove any output produced until now $this->bootstrap->endOutputBufferingAndCleanPreviousOutput(); require EidUtility::getEidScriptPath(); $this->bootstrap->shutdown(); exit; }
/** * Handles a frontend request based on the _GP "eID" variable. * * @param ServerRequestInterface $request * @return NULL|\Psr\Http\Message\ResponseInterface */ public function handleRequest(ServerRequestInterface $request) { // Starting time tracking $configuredCookieName = trim($GLOBALS['TYPO3_CONF_VARS']['BE']['cookieName']) ?: 'be_typo_user'; $GLOBALS['TT'] = new TimeTracker($request->getCookieParams()[$configuredCookieName] ? true : false); $GLOBALS['TT']->start(); // 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); } // Remove any output produced until now $this->bootstrap->endOutputBufferingAndCleanPreviousOutput(); return $this->dispatch($request); }
/** * Handles any commandline request * * @param InputInterface $input * @return void */ public function handleRequest(InputInterface $input) { $output = new ConsoleOutput(); $this->bootstrap->loadExtensionTables(); // Check if the command to run needs a backend user to be loaded $command = $this->getCommandToRun($input); foreach ($this->availableCommands as $data) { if ($data['command'] !== $command) { continue; } if (isset($data['user'])) { $this->initializeBackendUser($data['user']); } } // Make sure output is not buffered, so command-line output and interaction can take place $this->bootstrap->endOutputBufferingAndCleanPreviousOutput(); $exitCode = $this->application->run($input, $output); exit($exitCode); }
/** * 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; }