Skip to content
Snippets Groups Projects
Commit ea0dffc7 authored by Kevin Ditscheid's avatar Kevin Ditscheid
Browse files

[TASK] Respect the sys_language_uid when fetching jobs

parent f29c74a1
No related branches found
No related tags found
No related merge requests found
...@@ -48,9 +48,10 @@ class SitemapSignalSlot { ...@@ -48,9 +48,10 @@ class SitemapSignalSlot {
* Before the sitemap is generated * Before the sitemap is generated
* *
* @param array $pageList * @param array $pageList
* @param int $sysLanguageUid
* @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException * @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
*/ */
public function beforeSitemapGeneration(array &$pageList) { public function beforeSitemapGeneration(array &$pageList, int $sysLanguageUid) {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class); $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$request = $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class); $request = $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class);
$request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL')); $request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
...@@ -65,13 +66,24 @@ class SitemapSignalSlot { ...@@ -65,13 +66,24 @@ class SitemapSignalSlot {
$this->uriBuilder->injectConfigurationManager($configurationManager); $this->uriBuilder->injectConfigurationManager($configurationManager);
// find sites where job detail plugin is added // find sites where job detail plugin is added
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages'); $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('pid', 'pages') $databaseResource = $queryBuilder->select('pid', 'pages')
->from('tt_content') ->from('tt_content')
->where( ->where(
$queryBuilder->expr()->andX( $queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('list')), $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('list')),
$queryBuilder->expr()->eq('list_type', $queryBuilder->createNamedParameter(self::PLUGIN_NAME)) $queryBuilder->expr()->eq(
'list_type',
$queryBuilder->createNamedParameter(self::PLUGIN_NAME)
),
$queryBuilder->expr()->orX(
$queryBuilder->expr()->eq('sys_language_uid', -1),
$queryBuilder->expr()->eq(
'sys_language_uid',
$queryBuilder->createNamedParameter($sysLanguageUid, \PDO::PARAM_INT)
)
)
) )
) )
->execute(); ->execute();
...@@ -79,7 +91,7 @@ class SitemapSignalSlot { ...@@ -79,7 +91,7 @@ class SitemapSignalSlot {
$rows = $databaseResource->fetchAll(); $rows = $databaseResource->fetchAll();
foreach ($rows as $row) { foreach ($rows as $row) {
$jobs = $this->getJobsByPid($row['pages']); $jobs = $this->getJobsByPid($row['pages'], $sysLanguageUid);
foreach ($jobs as $job) { foreach ($jobs as $job) {
$url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments( $url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments(
...@@ -98,13 +110,26 @@ class SitemapSignalSlot { ...@@ -98,13 +110,26 @@ class SitemapSignalSlot {
* Get all jobs stored on specific page ids * Get all jobs stored on specific page ids
* *
* @param string $pageList * @param string $pageList
* @param int $sysLanguageUid
* @return array|null * @return array|null
*/ */
private function getJobsByPid($pageList) { private function getJobsByPid(string $pageList, int $sysLanguageUid) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages'); $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('*') $databaseResource = $queryBuilder->select('*')
->from('tx_sgjobs_domain_model_job') ->from('tx_sgjobs_domain_model_job')
->where($queryBuilder->expr()->in('pid', $queryBuilder->createNamedParameter($pageList))) ->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->in('pid', $queryBuilder->createNamedParameter($pageList)),
$queryBuilder->expr()->orX(
$queryBuilder->expr()->eq('sys_language_uid', -1),
$queryBuilder->expr()->eq(
'sys_language_uid',
$queryBuilder->createNamedParameter($sysLanguageUid, \PDO::PARAM_INT)
)
)
)
)
->execute(); ->execute();
return $databaseResource->fetchAll(); return $databaseResource->fetchAll();
......
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