From 13da19a5a70f78e1b0ce4c12eff60829becc45d8 Mon Sep 17 00:00:00 2001
From: Stefan Galinski <stefan@sgalinski.de>
Date: Sat, 24 Nov 2018 19:53:46 +0100
Subject: [PATCH] [BUGFIX] Fix and extremly simplify the sitemap link
 generation

---
 Classes/SignalSlot/SitemapSignalSlot.php | 40 +++++++-----------------
 1 file changed, 12 insertions(+), 28 deletions(-)

diff --git a/Classes/SignalSlot/SitemapSignalSlot.php b/Classes/SignalSlot/SitemapSignalSlot.php
index 424e56ea..3d11e737 100644
--- a/Classes/SignalSlot/SitemapSignalSlot.php
+++ b/Classes/SignalSlot/SitemapSignalSlot.php
@@ -28,10 +28,6 @@ namespace SGalinski\SgJobs\SignalSlot;
 
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
-use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
-use TYPO3\CMS\Extbase\Object\ObjectManager;
-use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
 
 /**
  * Signal functions regarding sg_seo sitemap generation
@@ -39,11 +35,6 @@ use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
 class SitemapSignalSlot {
 	const PLUGIN_NAME = 'sgjobs_jobapplication';
 
-	/**
-	 * @var UriBuilder
-	 */
-	protected $uriBuilder;
-
 	/**
 	 * Before the sitemap is generated
 	 *
@@ -51,22 +42,9 @@ class SitemapSignalSlot {
 	 * @param int $sysLanguageUid
 	 */
 	public function beforeSitemapGeneration(array &$pageList, int $sysLanguageUid) {
-		$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'));
-
-		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
-		$contentObjectRenderer = $objectManager->get(ContentObjectRenderer::class);
-
-		$configurationManager = $objectManager->get(ConfigurationManager::class);
-		$configurationManager->setContentObject($contentObjectRenderer);
-		$this->uriBuilder = $objectManager->get(UriBuilder::class);
-		$this->uriBuilder->injectConfigurationManager($configurationManager);
-
 		// find sites where job detail plugin is added
 		$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-			->getQueryBuilderForTable('pages');
+			->getQueryBuilderForTable('tt_content');
 		$databaseResource = $queryBuilder->select('pid', 'pages')
 			->from('tt_content')
 			->where(
@@ -88,17 +66,23 @@ class SitemapSignalSlot {
 			->execute();
 
 		$rows = $databaseResource->fetchAll();
-
 		foreach ($rows as $row) {
 			$jobs = $this->getJobsByPid($row['pages'], $sysLanguageUid);
 
 			foreach ($jobs as $job) {
-				$url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments(
-					['tx_sgjobs_jobapplication' => ['jobId' => $job['uid']]]
-				)->setCreateAbsoluteUri(TRUE)->buildFrontendUri();
+				$url = $GLOBALS['TSFE']->cObj->typoLink_URL(
+					[
+						'parameter' => $row['pid'],
+						'linkAccessRestrictedPages' => 1,
+						'forceAbsoluteUrl' => 1,
+						'additionalParams' => GeneralUtility::implodeArrayForUrl(
+							NULL, ['tx_sgjobs_jobapplication[jobId]' => $job['uid']]
+						),
+					]
+				);
 
 				$pageList[] = [
-					'url' => $url,
+					'url' => htmlspecialchars($url),
 					'title' => ''
 				];
 			}
-- 
GitLab