Skip to content

Instantly share code, notes, and snippets.

@smichaelsen
Last active November 27, 2020 08:15
Show Gist options
  • Save smichaelsen/b34ef96cdcb95d70a2a337bd1181642b to your computer and use it in GitHub Desktop.
Save smichaelsen/b34ef96cdcb95d70a2a337bd1181642b to your computer and use it in GitHub Desktop.
===================================================================
--- public/typo3conf/ext/news/Classes/Service/SlugService.php
+++ public/typo3conf/ext/news/Classes/Service/SlugService.php
@@ -221,60 +221,50 @@
$queryBuilder = $connection->createQueryBuilder();
// Get entries to update
+ $execTimeParameter = $queryBuilder->createNamedParameter($GLOBALS['EXEC_TIME'], \PDO::PARAM_INT);
+ $emptyStringParameter = $queryBuilder->createNamedParameter('', \PDO::PARAM_STR);
$statement = $queryBuilder
->selectLiteral(
- 'DISTINCT tx_news_domain_model_news.uid, tx_realurl_uniqalias.value_alias, tx_news_domain_model_news.uid, tx_news_domain_model_news.l10n_parent,tx_news_domain_model_news.sys_language_uid'
+ 'DISTINCT news.uid',
+ 'COALESCE(aliasDirect.value_alias, aliasOverlay.value_alias) as value_alias'
)
- ->from('tx_news_domain_model_news')
+ ->from('tx_news_domain_model_news', 'news')
->join(
- 'tx_news_domain_model_news',
- 'tx_realurl_uniqalias',
+ 'news',
'tx_realurl_uniqalias',
- $queryBuilder->expr()->orX(
- $queryBuilder->expr()->eq(
- 'tx_news_domain_model_news.uid',
- $queryBuilder->quoteIdentifier('tx_realurl_uniqalias.value_id')
- ),
- $queryBuilder->expr()->andX(
- $queryBuilder->expr()->eq(
- 'tx_news_domain_model_news.l10n_parent',
- $queryBuilder->quoteIdentifier('tx_realurl_uniqalias.value_id')
- ),
- $queryBuilder->expr()->eq(
- 'tx_news_domain_model_news.sys_language_uid',
- $queryBuilder->quoteIdentifier('tx_realurl_uniqalias.lang')
- )
+ 'aliasDirect',
+ $queryBuilder->expr()->andX(
+ 'news.uid = aliasDirect.value_id',
+ 'news.sys_language_uid = aliasDirect.lang',
+ 'aliasDirect.tablename = "tx_news_domain_model_news"',
+ $queryBuilder->expr()->orX(
+ 'aliasDirect.expire = 0',
+ 'aliasDirect.expire >= ' . $execTimeParameter
+ )
+ )
+ )
+ ->leftJoin(
+ 'news',
+ 'tx_realurl_uniqalias',
+ 'aliasOverlay',
+ $queryBuilder->expr()->andX(
+ 'news.l10n_parent = aliasDirect.value_id',
+ 'news.sys_language_uid = aliasDirect.lang',
+ 'aliasDirect.tablename = "tx_news_domain_model_news"',
+ $queryBuilder->expr()->orX(
+ 'aliasDirect.expire = 0',
+ 'aliasDirect.expire >= ' . $execTimeParameter
)
)
)
->where(
- $queryBuilder->expr()->andX(
- $queryBuilder->expr()->orX(
- $queryBuilder->expr()->eq(
- 'tx_news_domain_model_news.path_segment',
- $queryBuilder->createNamedParameter('', \PDO::PARAM_STR)
- ),
- $queryBuilder->expr()->isNull('tx_news_domain_model_news.path_segment')
- ),
- $queryBuilder->expr()->eq(
- 'tx_news_domain_model_news.sys_language_uid',
- 'tx_realurl_uniqalias.lang'
- ),
- $queryBuilder->expr()->eq(
- 'tx_realurl_uniqalias.tablename',
- $queryBuilder->createNamedParameter('tx_news_domain_model_news', \PDO::PARAM_STR)
- ),
- $queryBuilder->expr()->orX(
- $queryBuilder->expr()->eq(
- 'tx_realurl_uniqalias.expire',
- $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
- ),
- $queryBuilder->expr()->gte(
- 'tx_realurl_uniqalias.expire',
- $queryBuilder->createNamedParameter($GLOBALS['ACCESS_TIME'], \PDO::PARAM_INT)
- )
- )
- )
+ $queryBuilder->expr()->orX(
+ $queryBuilder->expr()->eq(
+ 'news.path_segment',
+ $emptyStringParameter
+ ),
+ $queryBuilder->expr()->isNull('news.path_segment')
+ ),
)
->execute();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment