3 namespace Wallabag\CoreBundle\Controller
;
5 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route
;
6 use Symfony\Bundle\FrameworkBundle\Controller\Controller
;
7 use Symfony\Component\HttpFoundation\Request
;
8 use Wallabag\CoreBundle\Entity\Entry
;
9 use Wallabag\CoreBundle\Service\Extractor
;
10 use Wallabag\CoreBundle\Helper\Url
;
12 class EntryController
extends Controller
15 * @param Request $request
16 * @Route("/new", name="new_entry")
17 * @return \Symfony\Component\HttpFoundation\Response
19 public function addEntryAction(Request
$request)
21 $entry = new Entry($this->getUser());
23 $form = $this->createFormBuilder($entry)
25 ->add('save', 'submit')
28 $form->handleRequest($request);
30 if ($form->isValid()) {
31 $content = Extractor
::extract($entry->getUrl());
33 $entry->setTitle($content->getTitle());
34 $entry->setContent($content->getBody());
36 $em = $this->getDoctrine()->getManager();
40 $this->get('session')->getFlashBag()->add(
45 return $this->redirect($this->generateUrl('homepage'));
48 return $this->render('WallabagCoreBundle:Entry:new.html.twig', array(
49 'form' => $form->createView(),
54 * Shows unread entries for current user
56 * @Route("/unread", name="unread")
57 * @return \Symfony\Component\HttpFoundation\Response
59 public function showUnreadAction()
61 // TODO change pagination
62 $entries = $this->getDoctrine()
63 ->getRepository('WallabagCoreBundle:Entry')
64 ->findUnreadByUser($this->getUser()->getId(), 0);
67 'WallabagCoreBundle:Entry:entries.html.twig',
68 array('entries' => $entries)
73 * Shows read entries for current user
75 * @Route("/archive", name="archive")
76 * @return \Symfony\Component\HttpFoundation\Response
78 public function showArchiveAction()
80 // TODO change pagination
81 $entries = $this->getDoctrine()
82 ->getRepository('WallabagCoreBundle:Entry')
83 ->findArchiveByUser($this->getUser()->getId(), 0);
86 'WallabagCoreBundle:Entry:entries.html.twig',
87 array('entries' => $entries)
92 * Shows starred entries for current user
94 * @Route("/starred", name="starred")
95 * @return \Symfony\Component\HttpFoundation\Response
97 public function showStarredAction()
99 // TODO change pagination
100 $entries = $this->getDoctrine()
101 ->getRepository('WallabagCoreBundle:Entry')
102 ->findStarredByUser($this->getUser()->getId(), 0);
104 return $this->render(
105 'WallabagCoreBundle:Entry:entries.html.twig',
106 array('entries' => $entries)
111 * Shows entry content
113 * @param Entry $entry
114 * @Route("/view/{id}", requirements={"id" = "\d+"}, name="view")
115 * @return \Symfony\Component\HttpFoundation\Response
117 public function viewAction(Entry
$entry)
119 return $this->render(
120 'WallabagCoreBundle:Entry:entry.html.twig',
121 array('entry' => $entry)
126 * Changes read status for an entry
128 * @param Request $request
129 * @param Entry $entry
130 * @Route("/archive/{id}", requirements={"id" = "\d+"}, name="archive_entry")
131 * @return \Symfony\Component\HttpFoundation\RedirectResponse
133 public function toggleArchiveAction(Request
$request, Entry
$entry)
135 $entry->toggleArchive();
136 $this->getDoctrine()->getManager()->flush();
138 $this->get('session')->getFlashBag()->add(
143 return $this->redirect($request->headers
->get('referer'));
147 * Changes favorite status for an entry
149 * @param Request $request
150 * @param Entry $entry
151 * @Route("/star/{id}", requirements={"id" = "\d+"}, name="star_entry")
152 * @return \Symfony\Component\HttpFoundation\RedirectResponse
154 public function toggleStarAction(Request
$request, Entry
$entry)
156 $entry->toggleStar();
157 $this->getDoctrine()->getManager()->flush();
159 $this->get('session')->getFlashBag()->add(
164 return $this->redirect($request->headers
->get('referer'));
170 * @param Request $request
171 * @param Entry $entry
172 * @Route("/delete/{id}", requirements={"id" = "\d+"}, name="delete_entry")
173 * @return \Symfony\Component\HttpFoundation\RedirectResponse
175 public function deleteEntryAction(Request
$request, Entry
$entry)
177 $em = $this->getDoctrine()->getManager();
178 $entry->setDeleted(1);
179 $em->persist($entry);
182 $this->get('session')->getFlashBag()->add(
187 return $this->redirect($request->headers
->get('referer'));