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(); foreach ($user->getPreferences() as $ref) { $name = $ref->getName(); switch ($name) { case UserPreference::SKIN: if (!empty($ref->getValue())) { $this->helper->setOption('skin', 'skin-' . $ref->getValue()); } break; case 'theme.collapsed_sidebar': $this->helper->setOption('collapsed_sidebar', $ref->getValue()); break; } } } /** * @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); } }