X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=f7b52eaf71b4de811dedc7173d78eae51935d181;hb=c26a3edc0aa7d17a0ea95092447f16471fda8718;hp=b73e9eecd52e5aeb81e0c72e75fdf3a97f0c290a;hpb=ec00964de22a338d8f814c5440f8e09f542fdbbf;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index b73e9eec..f7b52eaf 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -6,7 +6,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Wallabag\CoreBundle\Entity\Entry; -use Wallabag\CoreBundle\Service\Extractor; use Wallabag\CoreBundle\Form\Type\NewEntryType; use Wallabag\CoreBundle\Form\Type\EditEntryType; use Wallabag\CoreBundle\Filter\EntryFilterType; @@ -15,6 +14,23 @@ use Pagerfanta\Pagerfanta; class EntryController extends Controller { + /** + * @param Entry $entry + */ + private function updateEntry(Entry $entry) + { + try { + $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); + $em = $this->getDoctrine()->getManager(); + $em->persist($entry); + $em->flush(); + } catch (\Exception $e) { + return false; + } + + return true; + } + /** * @param Request $request * @@ -31,15 +47,7 @@ class EntryController extends Controller $form->handleRequest($request); if ($form->isValid()) { - $content = Extractor::extract($entry->getUrl()); - - $entry->setTitle($content->getTitle()); - $entry->setContent($content->getBody()); - - $em = $this->getDoctrine()->getManager(); - $em->persist($entry); - $em->flush(); - + $this->updateEntry($entry); $this->get('session')->getFlashBag()->add( 'notice', 'Entry saved' @@ -53,6 +61,22 @@ class EntryController extends Controller )); } + /** + * @param Request $request + * + * @Route("/bookmarklet", name="bookmarklet") + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function addEntryViaBookmarklet(Request $request) + { + $entry = new Entry($this->getUser()); + $entry->setUrl($request->get('url')); + $this->updateEntry($entry); + + return $this->redirect($this->generateUrl('homepage')); + } + /** * @param Request $request * @@ -196,7 +220,7 @@ class EntryController extends Controller throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type)); } - $form = $this->get('form.factory')->create(new EntryFilterType()); + $form = $this->get('form.factory')->create(new EntryFilterType($repository, $this->getUser())); if ($request->query->has($form->getName())) { // manually bind values from the request @@ -292,16 +316,15 @@ class EntryController extends Controller } /** - * Deletes entry. + * Deletes entry and redirect to the homepage. * - * @param Request $request - * @param Entry $entry + * @param Entry $entry * * @Route("/delete/{id}", requirements={"id" = "\d+"}, name="delete_entry") * * @return \Symfony\Component\HttpFoundation\RedirectResponse */ - public function deleteEntryAction(Request $request, Entry $entry) + public function deleteEntryAction(Entry $entry) { $this->checkUserAction($entry); @@ -314,7 +337,7 @@ class EntryController extends Controller 'Entry deleted' ); - return $this->redirect($request->headers->get('referer')); + return $this->redirect($this->generateUrl('homepage')); } /**