X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=ccdf940669bde3d5aa00073256c5607e8ba1805c;hb=389d55f86b962a448d7a5052a5c0cf438d161c41;hp=17b72bd1c56e632c8d5c4bc7bfdfd4a88f0064c0;hpb=f2e5fdc3666a2a6525b4202ab48df05efeebaf5c;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 17b72bd1..ccdf9406 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -23,10 +23,16 @@ class EntryController extends Controller { try { $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); + $em = $this->getDoctrine()->getManager(); $em->persist($entry); $em->flush(); } catch (\Exception $e) { + $this->get('logger')->error('Error while saving an entry', [ + 'exception' => $e, + 'entry' => $entry, + ]); + return false; } @@ -60,11 +66,12 @@ class EntryController extends Controller return $this->redirect($this->generateUrl('view', ['id' => $existingEntry->getId()])); } - $this->updateEntry($entry); - $this->get('session')->getFlashBag()->add( - 'notice', - 'flashes.entry.notice.entry_saved' - ); + $message = 'flashes.entry.notice.entry_saved'; + if (false === $this->updateEntry($entry)) { + $message = 'flashes.entry.notice.entry_saved_failed'; + } + + $this->get('session')->getFlashBag()->add('notice', $message); return $this->redirect($this->generateUrl('homepage')); } @@ -344,11 +351,13 @@ class EntryController extends Controller $message ); - return $this->redirect($request->headers->get('referer')); + $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer')); + + return $this->redirect($redirectUrl); } /** - * Changes favorite status for an entry. + * Changes starred status for an entry. * * @param Request $request * @param Entry $entry @@ -374,7 +383,9 @@ class EntryController extends Controller $message ); - return $this->redirect($request->headers->get('referer')); + $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer')); + + return $this->redirect($redirectUrl); } /** @@ -395,7 +406,7 @@ class EntryController extends Controller $url = $this->generateUrl( 'view', ['id' => $entry->getId()], - UrlGeneratorInterface::ABSOLUTE_URL + UrlGeneratorInterface::ABSOLUTE_PATH ); $em = $this->getDoctrine()->getManager(); @@ -407,8 +418,13 @@ class EntryController extends Controller 'flashes.entry.notice.entry_deleted' ); - // don't redirect user to the deleted entry - return $this->redirect($url !== $request->headers->get('referer') ? $request->headers->get('referer') : $this->generateUrl('homepage')); + // don't redirect user to the deleted entry (check that the referer doesn't end with the same url) + $referer = $request->headers->get('referer'); + $to = (1 !== preg_match('#'.$url.'$#i', $referer) ? $referer : null); + + $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($to); + + return $this->redirect($redirectUrl); } /**