mirror of
https://github.com/wallabag/wallabag.git
synced 2025-02-20 04:26:16 +00:00
Fix tests
This commit is contained in:
parent
09ef25c3c3
commit
f85d220c19
2 changed files with 94 additions and 99 deletions
|
@ -233,6 +233,21 @@ class EntryController extends Controller
|
||||||
return $this->showEntries('starred', $request, $page);
|
return $this->showEntries('starred', $request, $page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows untagged articles for current user.
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $page
|
||||||
|
*
|
||||||
|
* @Route("/untagged/list/{page}", name="untagged", defaults={"page" = "1"})
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
*/
|
||||||
|
public function showUntaggedEntriesAction(Request $request, $page)
|
||||||
|
{
|
||||||
|
return $this->showEntries('untagged', $request, $page);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows random unread entry.
|
* Shows random unread entry.
|
||||||
*
|
*
|
||||||
|
@ -244,19 +259,7 @@ class EntryController extends Controller
|
||||||
*/
|
*/
|
||||||
public function showRandomUnreadEntryAction()
|
public function showRandomUnreadEntryAction()
|
||||||
{
|
{
|
||||||
$repository = $this->get('wallabag_core.entry_repository');
|
return $this->showRandomEntries('unread');
|
||||||
|
|
||||||
try {
|
|
||||||
$entry = $repository->getRandomEntry($this->getUser()->getId(), 'unread');
|
|
||||||
} 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()]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -270,19 +273,7 @@ class EntryController extends Controller
|
||||||
*/
|
*/
|
||||||
public function showRandomStarredEntryAction()
|
public function showRandomStarredEntryAction()
|
||||||
{
|
{
|
||||||
$repository = $this->get('wallabag_core.entry_repository');
|
return $this->showRandomEntries('starred');
|
||||||
|
|
||||||
try {
|
|
||||||
$entry = $repository->getRandomEntry($this->getUser()->getId(), 'starred');
|
|
||||||
} 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()]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -296,19 +287,21 @@ class EntryController extends Controller
|
||||||
*/
|
*/
|
||||||
public function showRandomArchiveEntryAction()
|
public function showRandomArchiveEntryAction()
|
||||||
{
|
{
|
||||||
$repository = $this->get('wallabag_core.entry_repository');
|
return $this->showRandomEntries('archive');
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
/**
|
||||||
$entry = $repository->getRandomEntry($this->getUser()->getId(), 'starred');
|
* Shows random all entry.
|
||||||
} catch (NoResultException $e) {
|
*
|
||||||
$bag = $this->get('session')->getFlashBag();
|
* @param Entry $entry
|
||||||
$bag->clear();
|
*
|
||||||
$bag->add('notice', 'flashes.entry.notice.no_random_entry');
|
* @Route("/untagged/random", name="untagged_random")
|
||||||
|
*
|
||||||
return $this->redirect($this->generateUrl('homepage'));
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
}
|
*/
|
||||||
|
public function showRandomUntaggedEntryAction()
|
||||||
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
|
{
|
||||||
|
return $this->showRandomEntries('untagged');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -322,19 +315,7 @@ class EntryController extends Controller
|
||||||
*/
|
*/
|
||||||
public function showRandomAllEntryAction()
|
public function showRandomAllEntryAction()
|
||||||
{
|
{
|
||||||
$repository = $this->get('wallabag_core.entry_repository');
|
return $this->showRandomEntries();
|
||||||
|
|
||||||
try {
|
|
||||||
$entry = $repository->getRandomEntry($this->getUser()->getId());
|
|
||||||
} 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()]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -570,54 +551,6 @@ class EntryController extends Controller
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows untagged articles for current user.
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @param int $page
|
|
||||||
*
|
|
||||||
* @Route("/untagged/list/{page}", name="untagged", defaults={"page" = "1"})
|
|
||||||
*
|
|
||||||
* @return \Symfony\Component\HttpFoundation\Response
|
|
||||||
*/
|
|
||||||
public function showUntaggedEntriesAction(Request $request, $page)
|
|
||||||
{
|
|
||||||
return $this->showEntries('untagged', $request, $page);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch content and update entry.
|
|
||||||
* In case it fails, $entry->getContent will return an error message.
|
|
||||||
*
|
|
||||||
* @param Entry $entry
|
|
||||||
* @param string $prefixMessage Should be the translation key: entry_saved or entry_reloaded
|
|
||||||
*/
|
|
||||||
private function updateEntry(Entry $entry, $prefixMessage = 'entry_saved')
|
|
||||||
{
|
|
||||||
$message = 'flashes.entry.notice.' . $prefixMessage;
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl());
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$this->get('logger')->error('Error while saving an entry', [
|
|
||||||
'exception' => $e,
|
|
||||||
'entry' => $entry,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$message = 'flashes.entry.notice.' . $prefixMessage . '_failed';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($entry->getDomainName())) {
|
|
||||||
$this->get('wallabag_core.content_proxy')->setEntryDomainName($entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($entry->getTitle())) {
|
|
||||||
$this->get('wallabag_core.content_proxy')->setDefaultEntryTitle($entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->get('session')->getFlashBag()->add('notice', $message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Global method to retrieve entries depending on the given type
|
* Global method to retrieve entries depending on the given type
|
||||||
* It returns the response to be send.
|
* It returns the response to be send.
|
||||||
|
@ -690,6 +623,63 @@ 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.
|
||||||
|
*
|
||||||
|
* @param Entry $entry
|
||||||
|
* @param string $prefixMessage Should be the translation key: entry_saved or entry_reloaded
|
||||||
|
*/
|
||||||
|
private function updateEntry(Entry $entry, $prefixMessage = 'entry_saved')
|
||||||
|
{
|
||||||
|
$message = 'flashes.entry.notice.' . $prefixMessage;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl());
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->get('logger')->error('Error while saving an entry', [
|
||||||
|
'exception' => $e,
|
||||||
|
'entry' => $entry,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$message = 'flashes.entry.notice.' . $prefixMessage . '_failed';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($entry->getDomainName())) {
|
||||||
|
$this->get('wallabag_core.content_proxy')->setEntryDomainName($entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($entry->getTitle())) {
|
||||||
|
$this->get('wallabag_core.content_proxy')->setDefaultEntryTitle($entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->get('session')->getFlashBag()->add('notice', $message);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the logged user can manage the given entry.
|
* Check if the logged user can manage the given entry.
|
||||||
*
|
*
|
||||||
|
|
|
@ -464,6 +464,11 @@ class EntryRepository extends EntityRepository
|
||||||
$qb->andWhere('e.isStarred = true');
|
$qb->andWhere('e.isStarred = true');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('untagged' === $status) {
|
||||||
|
$qb->leftJoin('e.tags', 't');
|
||||||
|
$qb->andWhere('t.id is null');
|
||||||
|
}
|
||||||
|
|
||||||
return $qb->andWhere('e.id >= :rand')
|
return $qb->andWhere('e.id >= :rand')
|
||||||
->setParameter('rand', rand(0, $max))
|
->setParameter('rand', rand(0, $max))
|
||||||
->setMaxResults(1)
|
->setMaxResults(1)
|
||||||
|
|
Loading…
Reference in a new issue