]>
Commit | Line | Data |
---|---|---|
32da2a70 J |
1 | <?php |
2 | ||
3 | namespace Wallabag\CoreBundle\Helper; | |
4 | ||
5 | use Liip\ThemeBundle\Helper\DeviceDetectionInterface; | |
6 | use Symfony\Component\Security\Core\SecurityContextInterface; | |
7 | use Wallabag\CoreBundle\Entity\User; | |
8 | ||
495aecfe J |
9 | /** |
10 | * This class intend to detect the active theme for the logged in user. | |
11 | * It will retrieve the configured theme of the user. | |
12 | * | |
13 | * If no user where logged in, it will returne the default theme | |
14 | */ | |
32da2a70 J |
15 | class DetectActiveTheme implements DeviceDetectionInterface |
16 | { | |
17 | protected $securityContext; | |
495aecfe | 18 | protected $defaultTheme; |
32da2a70 | 19 | |
495aecfe J |
20 | /** |
21 | * @param SecurityContextInterface $securityContext Needed to retrieve the current user | |
22 | * @param string $defaultTheme Default theme when user isn't logged in | |
23 | */ | |
24 | public function __construct(SecurityContextInterface $securityContext, $defaultTheme) | |
32da2a70 J |
25 | { |
26 | $this->securityContext = $securityContext; | |
495aecfe | 27 | $this->defaultTheme = $defaultTheme; |
32da2a70 J |
28 | } |
29 | ||
30 | public function setUserAgent($userAgent) | |
31 | { | |
32 | } | |
33 | ||
34 | /** | |
35 | * This should return the active theme for the logged in user. | |
495aecfe J |
36 | * |
37 | * Default theme for: | |
32da2a70 | 38 | * - anonymous user |
495aecfe | 39 | * - user without a config (shouldn't happen ..) |
32da2a70 J |
40 | * |
41 | * @return string | |
42 | */ | |
43 | public function getType() | |
44 | { | |
45 | $user = $this->securityContext->getToken()->getUser(); | |
46 | ||
32da2a70 | 47 | if (!$user instanceof User) { |
495aecfe | 48 | return $this->defaultTheme; |
32da2a70 J |
49 | } |
50 | ||
51 | $config = $user->getConfig(); | |
52 | ||
53 | if (!$config) { | |
495aecfe | 54 | return $this->defaultTheme; |
32da2a70 J |
55 | } |
56 | ||
57 | return $config->getTheme(); | |
58 | } | |
59 | } |