public function register(Container $container) { $container['backendClass'] = function ($c) { $theme = $c['backendTheme']; if ($theme !== null) { return $theme->getClassName(); } return 'RZ\\Roadiz\\CMS\\Controllers\\BackendController'; }; $container['backendTheme'] = function ($c) { if (isset($c['config']['install']) && false === $c['config']['install']) { return $c['em']->getRepository('RZ\\Roadiz\\Core\\Entities\\Theme')->findAvailableBackend(); } else { return null; } }; $container['frontendThemes'] = function ($c) { if (isset($c['config']['install']) && false === $c['config']['install']) { $themes = $c['em']->getRepository('RZ\\Roadiz\\Core\\Entities\\Theme')->findAvailableFrontends(); if (count($themes) < 1) { $defaultTheme = new Theme(); $defaultTheme->setClassName('RZ\\Roadiz\\CMS\\Controllers\\FrontendController'); $defaultTheme->setAvailable(true); return [$defaultTheme]; } else { return $themes; } } else { return []; } }; return $container; }
/** * Install theme and return its ID. * * @return integer */ public function installFrontendTheme($classname) { $existing = $this->entityManager->getRepository('RZ\\Roadiz\\Core\\Entities\\Theme')->findOneByClassName($classname); if (null === $existing) { $feTheme = new Theme(); $feTheme->setClassName($classname); $feTheme->setAvailable(true); $feTheme->setBackendTheme(false); $this->entityManager->persist($feTheme); $this->entityManager->flush(); $this->clearResultCache(); return $feTheme->getId(); } return $existing->getId(); }