/** * Execute * * @param InputInterface $input input * @param OutputInterface $output output */ protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln('<info>Import translations lot 2</info>'); try { $entityManager = $this->getEntityManager(); $translationRepository = $this->getTranslationRepository(); $langs = $this->getContainer()->getParameter('langs'); $translationDir = $this->getContainer()->getParameter('translation_dir') . '/lot_2/'; $progress = $this->getHelperSet()->get('progress'); $progress->start($output, count($langs)); $hotelHighlights = array(); $pages = array(); foreach ($langs as $lang) { $translationfiles = scandir($translationDir . strtoupper($lang) . '/'); foreach ($translationfiles as $translationFile) { if ($translationFile == "." || $translationFile == "..") { continue; } if ($translationFile == 'hotel.xlsx') { $file = $translationDir . strtoupper($lang) . '/' . $translationFile; $hotelCsv = Converter::getCsv($file); $data = Converter::getData($hotelCsv); foreach ($data as $hotel) { $code = $hotel[0]; $description = $hotel[2]; $hotelHighlights[$code]['highlight_1'][$lang] = trim($hotel[3]); $hotelHighlights[$code]['highlight_2'][$lang] = trim($hotel[4]); $hotelHighlights[$code]['highlight_3'][$lang] = trim($hotel[5]); $hotelDb = $this->getRepository('SehBundle:Hotel')->findOneByCodeAdherent($code); if ($hotelDb) { $hotelDb->setTranslatableLocale('en'); $translationRepository->translate($hotelDb, 'shortDescription', $lang, utf8_decode($description)); $entityManager->persist($hotelDb); } } } elseif ($translationFile == 'page.csv') { $file = $translationDir . strtoupper($lang) . '/' . $translationFile; $data = Converter::getData($file); foreach ($data as $page) { $pages[$page[0]][$lang] = array('brand' => $page[1], 'name' => $page[2], 'title' => '<h1>' . $page[3] . '</h1>', 'description' => '<p>' . $page[4] . '</p><h2>' . $page[5] . '</h2><p>' . $page[6] . '</p><h2>' . $page[7] . '</h2><p>' . $page[8] . '</p><h2>' . $page[9] . '</h2><p>' . $page[10] . '</p>' . $page[11] . '</p><h2>' . $page[12] . '</h2><p>' . $page[13] . '</p>'); } } } $progress->advance(); } $progress->finish(); $output->writeln(' > <info>Handling hightlights</info>'); $this->getRepository('SehBundle:HotelHighlight')->deleteAll(); $progress->start($output, count($hotelHighlights)); foreach ($hotelHighlights as $code => $hightlights) { $hotelDb = $this->getRepository('SehBundle:Hotel')->findOneByCodeAdherent($code); if ($hotelDb) { foreach ($hightlights as $hightlight) { $hHighlight = new HotelHighlight(); $hHighlight->setHotel($hotelDb)->setTranslatableLocale('en')->setName($hightlight['en']); foreach ($langs as $lang) { if ($lang != 'en') { $translationRepository->translate($hHighlight, 'name', $lang, utf8_decode($hightlight[$lang])); } } $entityManager->persist($hHighlight); } } $progress->advance(); } $progress->finish(); $output->writeln(' > <info>Handling pages</info>'); $progress->start($output, count($pages)); $template = $this->getRepository('BigfootContentBundle:Template')->findOneByRoute('SehBundle:page:default.html.twig'); foreach ($pages as $cPage) { $nPage = $this->getRepository('BigfootContentBundle:Page')->findOneByName($cPage['en']['name']); if (!$nPage) { $nPage = new Page(); } $nPage->setActive(true)->setTranslatableLocale('en')->setName($cPage['en']['name'])->setTitle($cPage['en']['title'])->setDescription($cPage['en']['description'])->setTemplate($template); foreach ($langs as $lang) { if ($lang != 'en') { $translationRepository->translate($nPage, 'name', $lang, $cPage[$lang]['name']); $translationRepository->translate($nPage, 'title', $lang, $cPage[$lang]['title']); $translationRepository->translate($nPage, 'description', $lang, $cPage[$lang]['description']); } } $entityManager->persist($nPage); $progress->advance(); } $progress->finish(); $output->writeln(' > <info>Flushing</info>'); $entityManager->flush(); $output->writeln(' > <comment>OK</comment>'); } catch (Exception $e) { $output->writeln(' > <error>Erreur : ' . $e->getMessage() . '</error>'); } }