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
Tags 1.6.2
No related merge requests found
......@@ -48,9 +48,10 @@ class SitemapSignalSlot {
* Before the sitemap is generated
*
* @param array $pageList
* @param int $sysLanguageUid
* @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
*/
public function beforeSitemapGeneration(array &$pageList) {
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'));
......@@ -65,13 +66,24 @@ class SitemapSignalSlot {
$this->uriBuilder->injectConfigurationManager($configurationManager);
// 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')
->from('tt_content')
->where(
$queryBuilder->expr()->andX(
$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();
......@@ -79,7 +91,7 @@ class SitemapSignalSlot {
$rows = $databaseResource->fetchAll();
foreach ($rows as $row) {
$jobs = $this->getJobsByPid($row['pages']);
$jobs = $this->getJobsByPid($row['pages'], $sysLanguageUid);
foreach ($jobs as $job) {
$url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments(
......@@ -98,13 +110,26 @@ class SitemapSignalSlot {
* Get all jobs stored on specific page ids
*
* @param string $pageList
* @param int $sysLanguageUid
* @return array|null
*/
private function getJobsByPid($pageList) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
private function getJobsByPid(string $pageList, int $sysLanguageUid) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('*')
->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();
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