]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/EntryController.php
Merge pull request #2220 from Rurik19/master
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / EntryController.php
index 69dfd4b108a12e305943a35d908acde9a1a60215..4eb314f7510b68133f418d16dba774abe5b9e6fe 100644 (file)
@@ -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'));
         }
@@ -399,7 +406,7 @@ class EntryController extends Controller
         $url = $this->generateUrl(
             'view',
             ['id' => $entry->getId()],
-            UrlGeneratorInterface::ABSOLUTE_URL
+            UrlGeneratorInterface::ABSOLUTE_PATH
         );
 
         $em = $this->getDoctrine()->getManager();
@@ -411,8 +418,9 @@ class EntryController extends Controller
             'flashes.entry.notice.entry_deleted'
         );
 
-        // don't redirect user to the deleted entry
-        $to = ($url !== $request->headers->get('referer') ? $request->headers->get('referer') : null);
+        // 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);