1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-07-22 17:18:37 +00:00

Use only one method to randomize

Instead of one per type, one for all is ok.
This commit is contained in:
Jeremy Benoist 2018-10-12 21:41:05 +02:00
parent f85d220c19
commit 0447a75b06
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
4 changed files with 42 additions and 85 deletions

View file

@ -249,73 +249,28 @@ class EntryController extends Controller
}
/**
* Shows random unread entry.
* Shows random entry depending on the given type.
*
* @param Entry $entry
*
* @Route("/unread/random", name="unread_random")
* @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"})
*
* @return \Symfony\Component\HttpFoundation\Response
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function showRandomUnreadEntryAction()
public function redirectRandomEntryAction($type = 'all')
{
return $this->showRandomEntries('unread');
}
try {
$entry = $this->get('wallabag_core.entry_repository')
->getRandomEntry($this->getUser()->getId(), $type);
} catch (NoResultException $e) {
$bag = $this->get('session')->getFlashBag();
$bag->clear();
$bag->add('notice', 'flashes.entry.notice.no_random_entry');
/**
* Shows random favorite entry.
*
* @param Entry $entry
*
* @Route("/starred/random", name="starred_random")
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function showRandomStarredEntryAction()
{
return $this->showRandomEntries('starred');
}
return $this->redirect($this->generateUrl('homepage'));
}
/**
* Shows random archived entry.
*
* @param Entry $entry
*
* @Route("/archive/random", name="archive_random")
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function showRandomArchiveEntryAction()
{
return $this->showRandomEntries('archive');
}
/**
* Shows random all entry.
*
* @param Entry $entry
*
* @Route("/untagged/random", name="untagged_random")
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function showRandomUntaggedEntryAction()
{
return $this->showRandomEntries('untagged');
}
/**
* Shows random all entry.
*
* @param Entry $entry
*
* @Route("/all/random", name="all_random")
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function showRandomAllEntryAction()
{
return $this->showRandomEntries();
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
}
/**
@ -623,30 +578,6 @@ class EntryController extends Controller
);
}
/**
* Global method to retrieve random entries depending on the given type.
*
* @param string $type Entries type: unread, starred, archive or untagged
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
private function showRandomEntries($type)
{
$repository = $this->get('wallabag_core.entry_repository');
try {
$entry = $repository->getRandomEntry($this->getUser()->getId(), $type);
} catch (NoResultException $e) {
$bag = $this->get('session')->getFlashBag();
$bag->clear();
$bag->add('notice', 'flashes.entry.notice.no_random_entry');
return $this->redirect($this->generateUrl('homepage'));
}
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
}
/**
* Fetch content and update entry.
* In case it fails, $entry->getContent will return an error message.