Skip to content
Snippets Groups Projects
Commit 5c3596e1 authored by Torsten Oppermann's avatar Torsten Oppermann
Browse files

[TASK] Fixing an error with sitemap generation via eid method

parent 90ab140f
No related branches found
No related tags found
1 merge request!9Feature entry registration
...@@ -28,8 +28,13 @@ namespace SGalinski\SgJobs\SignalSlot; ...@@ -28,8 +28,13 @@ namespace SGalinski\SgJobs\SignalSlot;
use TYPO3\CMS\Core\Database\DatabaseConnection; use TYPO3\CMS\Core\Database\DatabaseConnection;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
use TYPO3\CMS\Extbase\Object\ObjectManager; use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
use TYPO3\CMS\Frontend\Page\PageGenerator;
use TYPO3\CMS\Frontend\Utility\EidUtility;
/** /**
* Signal functions regarding sg_seo sitemap generation * Signal functions regarding sg_seo sitemap generation
...@@ -47,8 +52,27 @@ class SitemapSignalSlot { ...@@ -47,8 +52,27 @@ class SitemapSignalSlot {
* before the sitemap is generated * before the sitemap is generated
* *
* @param array $pageList * @param array $pageList
* @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
*/ */
public function beforeSitemapGeneration(array &$pageList) { public function beforeSitemapGeneration(array &$pageList) {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$request = $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class);
$request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
$request->setBaseUri(GeneralUtility::getIndpEnv('TYPO3_SITE_URL'));
/** @var ObjectManager $objectManager */
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var ContentObjectRenderer $contentObjectRenderer */
$contentObjectRenderer = $objectManager->get(ContentObjectRenderer::class);
/** @var ConfigurationManager $configurationManager */
$configurationManager = $objectManager->get(ConfigurationManager::class);
$configurationManager->setContentObject($contentObjectRenderer);
$this->uriBuilder = $objectManager->get(UriBuilder::class);
$this->uriBuilder->injectConfigurationManager($configurationManager);
$this->initTSFE();
/** @var $databaseConnection DatabaseConnection */ /** @var $databaseConnection DatabaseConnection */
$databaseConnection = $GLOBALS['TYPO3_DB']; $databaseConnection = $GLOBALS['TYPO3_DB'];
...@@ -62,16 +86,10 @@ class SitemapSignalSlot { ...@@ -62,16 +86,10 @@ class SitemapSignalSlot {
foreach ($rows as $row) { foreach ($rows as $row) {
$jobs = $this->getJobsByPid($row['pages']); $jobs = $this->getJobsByPid($row['pages']);
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$request = $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class);
$request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
$request->setBaseUri(GeneralUtility::getIndpEnv('TYPO3_SITE_URL'));
$this->uriBuilder = $objectManager->get(UriBuilder::class);
foreach ($jobs as $job) { foreach ($jobs as $job) {
$url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments( $url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments(
['tx_sgjobs_jobapplication' => ['jobId' => $job['uid']]] ['tx_sgjobs_jobapplication' => ['jobId' => $job['uid']]]
)->buildFrontendUri(); )->setCreateAbsoluteUri(TRUE)->buildFrontendUri();
$pageList[] = [ $pageList[] = [
'url' => $url, 'url' => $url,
...@@ -81,6 +99,31 @@ class SitemapSignalSlot { ...@@ -81,6 +99,31 @@ class SitemapSignalSlot {
} }
} }
/**
* Initializes TSFE and sets $GLOBALS['TSFE']
*
* @return void
* @throws \RuntimeException
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
*/
private function initTSFE() {
$GLOBALS['TSFE'] = $tsfe = GeneralUtility::makeInstance(
TypoScriptFrontendController::class, $GLOBALS['TYPO3_CONF_VARS'], GeneralUtility::_GP('id'), ''
);
/** @var \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController $tsfe */
$tsfe->connectToDB();
$tsfe->initFEuser();
EidUtility::initTCA();
$tsfe->determineId();
$tsfe->initTemplate();
$tsfe->getConfigArray();
$tsfe->settingLanguage();
// Get linkVars, absRefPrefix, etc
PageGenerator::pagegenInit();
}
/** /**
* get all jobs stored on specific page ids * get all jobs stored on specific page ids
* *
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment