예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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()]));
     }
 }