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 (UserPreference::SKIN === $name) { $skin = 'skin-' . $ref->getValue(); } if (false !== strpos($name, 'theme.')) { $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 (null === $this->storage->getToken()) { return false; } /** @var User $user */ $user = $this->storage->getToken()->getUser(); return ($user instanceof User); } }