storage = $storage; $this->helper = $helper; } /** * @return array */ public static function getSubscribedEvents(): array { return [ KernelEvents::CONTROLLER => ['setThemeOptions', 100] ]; } /** * @param KernelEvent $event */ public function setThemeOptions(KernelEvent $event) { if (!$this->canHandleEvent($event)) { return; } /** @var User $user */ $user = $this->storage->getToken()->getUser(); $skin = ''; foreach ($user->getPreferences() as $ref) { $name = $ref->getName(); if ($name === UserPreference::SKIN) { $skin = 'skin-' . $ref->getValue(); } if (strpos($name, 'theme.') !== false) { $this->helper->setOption(str_replace('theme.', '', $name), $ref->getValue()); } } if (empty($skin)) { $skin = 'skin-green'; } $this->helper->setOption('skin', $skin); } /** * @param KernelEvent $event * @return bool */ protected function canHandleEvent(KernelEvent $event): bool { // Ignore sub-requests if (!$event->isMasterRequest()) { return false; } // ignore events like the toolbar where we do not have a token if ($this->storage->getToken() === null) { return false; } /** @var User $user */ $user = $this->storage->getToken()->getUser(); return ($user instanceof User); } }