$message
);
- return $this->redirect($request->headers->get('referer'));
+ $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
+
+ return $this->redirect($redirectUrl);
}
/**
$message
);
- return $this->redirect($request->headers->get('referer'));
+ $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
+
+ return $this->redirect($redirectUrl);
}
/**
);
// don't redirect user to the deleted entry
- return $this->redirect($url !== $request->headers->get('referer') ? $request->headers->get('referer') : $this->generateUrl('homepage'));
+ $to = ($url !== $request->headers->get('referer') ? $request->headers->get('referer') : $this->generateUrl('homepage'));
+
+ $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($to);
+
+ return $this->redirect($redirectUrl);
}
/**
}
$em->flush();
- return $this->redirect($request->headers->get('referer'));
+ $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
+
+ return $this->redirect($redirectUrl);
}
/**
--- /dev/null
+<?php
+
+namespace Wallabag\CoreBundle\Helper;
+
+use Symfony\Component\Routing\Router;
+
+class Redirect
+{
+ private $router;
+
+ public function __construct(Router $router)
+ {
+ $this->router = $router;
+ }
+
+ /**
+ * @param string $url URL to redirect
+ * @param string $fallback Fallback URL if $url is null
+ *
+ * @return string
+ */
+ public function to($url, $fallback = '')
+ {
+ $returnUrl = $url;
+
+ if (null === $url) {
+ if ('' !== $fallback) {
+ $returnUrl = $fallback;
+ } else {
+ $returnUrl = $this->router->generate('homepage');
+ }
+ }
+
+ return $returnUrl;
+ }
+}
class: Wallabag\CoreBundle\Operator\Doctrine\Matches
tags:
- { name: rulerz.operator, executor: rulerz.executor.doctrine, operator: matches, inline: true }
+
+ wallabag_core.helper.redirect:
+ class: Wallabag\CoreBundle\Helper\Redirect
+ arguments:
+ - "@router"
--- /dev/null
+<?php
+
+namespace Wallabag\CoreBundle\Tests\Helper;
+
+use Wallabag\CoreBundle\Helper\Redirect;
+
+class RedirectTest extends \PHPUnit_Framework_TestCase
+{
+ /** @var \Symfony\Component\Routing\Router */
+ private $routerMock;
+
+ /** @var Redirect */
+ private $redirect;
+
+ public function setUp()
+ {
+ $this->routerMock = $this->getRouterMock();
+ $this->redirect = new Redirect($this->routerMock);
+ }
+
+ public function testRedirectToNullWithFallback()
+ {
+ $redirectUrl = $this->redirect->to(null, 'fallback');
+
+ $this->assertEquals('fallback', $redirectUrl);
+ }
+
+ public function testRedirectToNullWithoutFallback()
+ {
+ $redirectUrl = $this->redirect->to(null);
+
+ $this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
+ }
+
+ public function testRedirectToValidUrl()
+ {
+ $redirectUrl = $this->redirect->to('/unread/list');
+
+ $this->assertEquals('/unread/list', $redirectUrl);
+ }
+
+ private function getRouterMock()
+ {
+ return $this->getMockBuilder('Symfony\Component\Routing\Router')
+ ->setMethods(['generate'])
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+}