Redirect to the current view instead of homepage

This commit is contained in:
Jeremy Benoist 2018-10-12 22:13:33 +02:00
parent 90a0d086a8
commit 9a57653aec
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
2 changed files with 18 additions and 19 deletions

View file

@ -251,7 +251,7 @@ class EntryController extends Controller
/** /**
* Shows random entry depending on the given type. * Shows random entry depending on the given type.
* *
* @param Entry $entry * @param string $type
* *
* @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"}) * @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"})
* *
@ -267,7 +267,7 @@ class EntryController extends Controller
$bag->clear(); $bag->clear();
$bag->add('notice', 'flashes.entry.notice.no_random_entry'); $bag->add('notice', 'flashes.entry.notice.no_random_entry');
return $this->redirect($this->generateUrl('homepage')); return $this->redirect($this->generateUrl($type));
} }
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));

View file

@ -435,7 +435,7 @@ class EntryRepository extends EntityRepository
* Returns a random entry, filtering by status. * Returns a random entry, filtering by status.
* *
* @param $userId * @param $userId
* @param string $status can be unread, archive or starred * @param string $type can be unread, archive, starred, etc
* *
* @throws \Doctrine\ORM\NoResultException * @throws \Doctrine\ORM\NoResultException
* @throws \Doctrine\ORM\NonUniqueResultException * @throws \Doctrine\ORM\NonUniqueResultException
@ -444,26 +444,25 @@ class EntryRepository extends EntityRepository
* *
* @return Entry * @return Entry
*/ */
public function getRandomEntry($userId, $status = '') public function getRandomEntry($userId, $type = '')
{ {
$qb = $this->getQueryBuilderByUser($userId) $qb = $this->getQueryBuilderByUser($userId)
->select('MIN(e.id)', 'MAX(e.id)'); ->select('MIN(e.id)', 'MAX(e.id)');
if ('unread' === $status) { switch ($type) {
$qb->andWhere('e.isArchived = false'); case 'unread':
} $qb->andWhere('e.isArchived = false');
break;
if ('archive' === $status) { case 'archive':
$qb->andWhere('e.isArchived = true'); $qb->andWhere('e.isArchived = true');
} break;
case 'starred':
if ('starred' === $status) { $qb->andWhere('e.isStarred = true');
$qb->andWhere('e.isStarred = true'); break;
} case 'untagged':
$qb->leftJoin('e.tags', 't');
if ('untagged' === $status) { $qb->andWhere('t.id is null');
$qb->leftJoin('e.tags', 't'); break;
$qb->andWhere('t.id is null');
} }
$idLimits = $qb $idLimits = $qb