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

[BUGFIX] Fix fetching of next and previous news

parent 6b59757c
No related branches found
No related tags found
No related merge requests found
......@@ -371,21 +371,29 @@ class NewsRepository extends AbstractRepository {
* @return QueryResult
* @throws \InvalidArgumentException
*/
public function findNextNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResult {
public function findNextNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResultInterface {
$query = $this->createQuery();
$orderBy = 'ORDER BY sorting ASC, lastUpdated DESC, crdate DESC';
$query->getQuerySettings()->setRespectStoragePage(TRUE);
$query->getQuerySettings()->setStoragePageIds([$news->getPid()]);
if ($sortBy === 'date') {
$orderBy = 'ORDER BY lastUpdated DESC, crdate DESC';
}
$statement = 'SELECT * FROM pages WHERE uid =
(SELECT MIN(uid) FROM pages WHERE pid = ' . $news->getPid() . ' AND uid > ' . $news->getUid() .
$this->getEnableFieldsStatement('pages') . ' ' . $orderBy . ')' .
$this->getEnableFieldsStatement('pages');
/** @noinspection PhpUndefinedMethodInspection */
return $query->statement($statement)->execute();
$query->setOrderings([
'lastUpdated' => QueryInterface::ORDER_DESCENDING,
'crdate' => QueryInterface::ORDER_DESCENDING
]);
return $query->matching(
$query->lessThan('lastUpdated', $news->getLastUpdated())
)->execute();
}
$query->setOrderings([
'sorting' => QueryInterface::ORDER_ASCENDING,
'lastUpdated' => QueryInterface::ORDER_DESCENDING,
'crdate' => QueryInterface::ORDER_DESCENDING
]);
return $query->matching(
$query->lessThan('sorting', $news->getSorting())
)->execute();
}
/**
......@@ -396,21 +404,29 @@ class NewsRepository extends AbstractRepository {
* @return QueryResult
* @throws \InvalidArgumentException
*/
public function findPreviousNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResult {
public function findPreviousNewsEntryFromCurrentNews(News $news, $sortBy = 'date'): QueryResultInterface {
$query = $this->createQuery();
$orderBy = 'ORDER BY sorting ASC, lastUpdated DESC, crdate DESC';
$query->getQuerySettings()->setRespectStoragePage(TRUE);
$query->getQuerySettings()->setStoragePageIds([$news->getPid()]);
if ($sortBy === 'date') {
$orderBy = 'ORDER BY lastUpdated DESC, crdate DESC';
}
$statement = 'SELECT * FROM pages WHERE uid =
(SELECT MAX(uid) FROM pages WHERE pid = ' . $news->getPid() . ' AND uid < ' . $news->getUid() .
$this->getEnableFieldsStatement('pages') . ' ' . $orderBy . ')' .
$this->getEnableFieldsStatement('pages');
/** @noinspection PhpUndefinedMethodInspection */
return $query->statement($statement)->execute();
$query->setOrderings([
'lastUpdated' => QueryInterface::ORDER_ASCENDING,
'crdate' => QueryInterface::ORDER_ASCENDING
]);
return $query->matching(
$query->greaterThan('lastUpdated', $news->getLastUpdated())
)->execute();
}
$query->setOrderings([
'sorting' => QueryInterface::ORDER_DESCENDING,
'lastUpdated' => QueryInterface::ORDER_ASCENDING,
'crdate' => QueryInterface::ORDER_ASCENDING
]);
return $query->matching(
$query->greaterThan('sorting', $news->getSorting())
)->execute();
}
/**
......
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