/** * Install theme. * * @param Symfony\Component\HttpFoundation\Request $request * @param string $classname * @param Doctrine\ORM\EntityManager $em * * @return bool */ public static function install(Request $request, $classname, EntityManager $em) { $data = static::getThemeInformation($classname); $fix = new Fixtures($em, $request); $data["className"] = $classname; $fix->installTheme($data); $installedLanguage = $em->getRepository("RZ\\Roadiz\\Core\\Entities\\Translation")->findAll(); foreach ($installedLanguage as $key => $locale) { $installedLanguage[$key] = $locale->getLocale(); } $exist = false; foreach ($data["supportedLocale"] as $locale) { if (in_array($locale, $installedLanguage)) { $exist = true; } } if ($exist === false) { $newTranslation = new Translation(); $newTranslation->setLocale($data["supportedLocale"][0]); $newTranslation->setName(Translation::$availableLocales[$data["supportedLocale"][0]]); $em->persist($newTranslation); $em->flush(); } $importFile = false; foreach ($data["importFiles"] as $name => $filenames) { foreach ($filenames as $filename) { $importFile = true; break; } } return $importFile; }
/** * Install theme screen. * * @param Symfony\Component\HttpFoundation\Request $request * * @return Symfony\Component\HttpFoundation\Response */ public function themeInstallAction(Request $request) { $array = explode('\\', $request->get("classname")); $file = ROADIZ_ROOT . "/themes/" . $array[2] . "/config.yml"; $yaml = new YamlConfiguration($file); $yaml->load(); $data = $yaml->getConfiguration(); $fix = new Fixtures($this->getService("em"), $request); $data["className"] = $request->get("classname"); $fix->installTheme($data); $theme = $this->getService("em")->getRepository("RZ\\Roadiz\\Core\\Entities\\Theme")->findOneByClassName($request->get("classname")); $installedLanguage = $this->getService("em")->getRepository("RZ\\Roadiz\\Core\\Entities\\Translation")->findAll(); foreach ($installedLanguage as $key => $locale) { $installedLanguage[$key] = $locale->getLocale(); } $exist = false; foreach ($data["supportedLocale"] as $locale) { if (in_array($locale, $installedLanguage)) { $exist = true; } } if ($exist === false) { $newTranslation = new Translation(); $newTranslation->setLocale($data["supportedLocale"][0]); $newTranslation->setName(Translation::$availableLocales[$data["supportedLocale"][0]]); $this->getService('em')->persist($newTranslation); $this->getService('em')->flush(); } $importFile = false; foreach ($data["importFiles"] as $name => $filenames) { foreach ($filenames as $filename) { $importFile = true; break; } } if ($importFile === false) { return $this->redirect($this->generateUrl('installUserPage', ["id" => $theme->getId()])); } else { return $this->redirect($this->generateUrl('installImportThemePage', ["id" => $theme->getId()])); } }