diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Wallabag/CoreBundle/Controller/EntryController.php | 4 | ||||
-rw-r--r-- | src/Wallabag/CoreBundle/Repository/EntryRepository.php | 33 |
2 files changed, 18 insertions, 19 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index ab50ebdf..dfb5eb54 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php | |||
@@ -251,7 +251,7 @@ class EntryController extends Controller | |||
251 | /** | 251 | /** |
252 | * Shows random entry depending on the given type. | 252 | * Shows random entry depending on the given type. |
253 | * | 253 | * |
254 | * @param Entry $entry | 254 | * @param string $type |
255 | * | 255 | * |
256 | * @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"}) | 256 | * @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"}) |
257 | * | 257 | * |
@@ -267,7 +267,7 @@ class EntryController extends Controller | |||
267 | $bag->clear(); | 267 | $bag->clear(); |
268 | $bag->add('notice', 'flashes.entry.notice.no_random_entry'); | 268 | $bag->add('notice', 'flashes.entry.notice.no_random_entry'); |
269 | 269 | ||
270 | return $this->redirect($this->generateUrl('homepage')); | 270 | return $this->redirect($this->generateUrl($type)); |
271 | } | 271 | } |
272 | 272 | ||
273 | return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); | 273 | return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); |
diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 05563079..879e6671 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php | |||
@@ -435,7 +435,7 @@ class EntryRepository extends EntityRepository | |||
435 | * Returns a random entry, filtering by status. | 435 | * Returns a random entry, filtering by status. |
436 | * | 436 | * |
437 | * @param $userId | 437 | * @param $userId |
438 | * @param string $status can be unread, archive or starred | 438 | * @param string $type can be unread, archive, starred, etc |
439 | * | 439 | * |
440 | * @throws \Doctrine\ORM\NoResultException | 440 | * @throws \Doctrine\ORM\NoResultException |
441 | * @throws \Doctrine\ORM\NonUniqueResultException | 441 | * @throws \Doctrine\ORM\NonUniqueResultException |
@@ -444,26 +444,25 @@ class EntryRepository extends EntityRepository | |||
444 | * | 444 | * |
445 | * @return Entry | 445 | * @return Entry |
446 | */ | 446 | */ |
447 | public function getRandomEntry($userId, $status = '') | 447 | public function getRandomEntry($userId, $type = '') |
448 | { | 448 | { |
449 | $qb = $this->getQueryBuilderByUser($userId) | 449 | $qb = $this->getQueryBuilderByUser($userId) |
450 | ->select('MIN(e.id)', 'MAX(e.id)'); | 450 | ->select('MIN(e.id)', 'MAX(e.id)'); |
451 | 451 | ||
452 | if ('unread' === $status) { | 452 | switch ($type) { |
453 | $qb->andWhere('e.isArchived = false'); | 453 | case 'unread': |
454 | } | 454 | $qb->andWhere('e.isArchived = false'); |
455 | 455 | break; | |
456 | if ('archive' === $status) { | 456 | case 'archive': |
457 | $qb->andWhere('e.isArchived = true'); | 457 | $qb->andWhere('e.isArchived = true'); |
458 | } | 458 | break; |
459 | 459 | case 'starred': | |
460 | if ('starred' === $status) { | 460 | $qb->andWhere('e.isStarred = true'); |
461 | $qb->andWhere('e.isStarred = true'); | 461 | break; |
462 | } | 462 | case 'untagged': |
463 | 463 | $qb->leftJoin('e.tags', 't'); | |
464 | if ('untagged' === $status) { | 464 | $qb->andWhere('t.id is null'); |
465 | $qb->leftJoin('e.tags', 't'); | 465 | break; |
466 | $qb->andWhere('t.id is null'); | ||
467 | } | 466 | } |
468 | 467 | ||
469 | $idLimits = $qb | 468 | $idLimits = $qb |