]> git.immae.eu Git - github/wallabag/wallabag.git/blob - src/Wallabag/CoreBundle/Helper/Redirect.php
Added tests
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Helper / Redirect.php
1 <?php
2
3 namespace Wallabag\CoreBundle\Helper;
4
5 use Symfony\Component\Routing\Router;
6 use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
7 use Wallabag\CoreBundle\Entity\Config;
8
9 /**
10 * Manage redirections to avoid redirecting to empty routes.
11 */
12 class Redirect
13 {
14 private $router;
15 private $tokenStorage;
16 private $actionMarkAsRead;
17
18 public function __construct(Router $router, TokenStorageInterface $tokenStorage)
19 {
20 $this->router = $router;
21 $this->tokenStorage = $tokenStorage;
22 }
23
24 /**
25 * @param string $url URL to redirect
26 * @param string $fallback Fallback URL if $url is null
27 *
28 * @return string
29 */
30 public function to($url, $fallback = '')
31 {
32 $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
33
34 if (null === $user || !is_object($user)) {
35 return $url;
36 }
37
38 if (Config::REDIRECT_TO_HOMEPAGE === $user->getConfig()->getActionMarkAsRead()) {
39 return $this->router->generate('homepage');
40 }
41
42 if (null !== $url) {
43 return $url;
44 }
45
46 if ('' === $fallback) {
47 return $this->router->generate('homepage');
48 }
49
50 return $fallback;
51 }
52 }