diff --git a/Classes/Domain/Repository/NewsRepository.php b/Classes/Domain/Repository/NewsRepository.php index 7d8011dcaf9a53d148a98e36023c90ed3b50d8f9..6a0b198dd321064b56534de55aaaeb7365ec5a3a 100644 --- a/Classes/Domain/Repository/NewsRepository.php +++ b/Classes/Domain/Repository/NewsRepository.php @@ -536,29 +536,40 @@ class NewsRepository extends AbstractRepository { $constraints[] = $qb->expr()->eq('pid', $news->getPid()); } + if ($limit > 0) { + $qb->setMaxResults($limit); + } + // here we fetch the lastUpdated of the $limit amount of news with newer lastUpdated dates $result = $qb->select('lastUpdated') - ->from('pages') + ->from('pages', 'pages') ->where( $qb->expr()->eq('doktype', $qb->createNamedParameter(News::DOK_TYPE_NEWS, Connection::PARAM_INT)), - $qb->expr()->gt('lastUpdated', $news->getLastUpdated()->getTimestamp()), - $qb->expr()->andX(...$constraints) - ) - ->setMaxResults($limit) + $qb->expr()->gt('lastUpdated', $news->getLastUpdated()->getTimestamp()) + )->andWhere(...$constraints) ->orderBy('lastUpdated', 'desc') ->execute(); $newest = $result->fetchOne(); // Here we fetch the lastUpdated of the $limit amount of news with older lastUpdated dates - $result = $qb->orderBy('lastUpdated', 'asc')->execute(); + $result = $qb->where( + $qb->expr()->eq('doktype', $qb->createNamedParameter(News::DOK_TYPE_NEWS, Connection::PARAM_INT)), + $qb->expr()->lt('lastUpdated', $news->getLastUpdated()->getTimestamp()) + )->andWhere(...$constraints) + ->orderBy('lastUpdated', 'asc') + ->execute(); $oldest = $result->fetchOne(); $query = $this->createQuery(); $query->getQuerySettings()->setRespectStoragePage(FALSE); $query->setOrderings([ - 'crdate' => QueryInterface::ORDER_DESCENDING + 'lastUpdated' => QueryInterface::ORDER_DESCENDING ]); - $constraints = []; + $constraints = [ + $query->logicalNot( + $query->equals('uid', $news->getUid()) + ) + ]; if ($newest) { $constraints[] = $query->lessThanOrEqual('lastUpdated', $newest); } diff --git a/Classes/ViewHelpers/RelatedViewHelper.php b/Classes/ViewHelpers/RelatedViewHelper.php index 6a5ec43565fbde946b20321afd08819e3d957570..b523ff88621ddd79f9a2784f676292368fdc1dce 100644 --- a/Classes/ViewHelpers/RelatedViewHelper.php +++ b/Classes/ViewHelpers/RelatedViewHelper.php @@ -47,7 +47,7 @@ class RelatedViewHelper extends AbstractViewHelper { $templateVariableContainer = $renderingContext->getVariableProvider(); $news = $arguments['news']; $newsRepository = GeneralUtility::makeInstance(NewsRepository::class); - $related = $newsRepository->findRelated($news); + $related = $newsRepository->findRelated($news, (int) $arguments['limit']); if (isset($arguments['iteration'])) { $iterationData = [ 'index' => 0,