Exemplo n.º 1
0
 /**
  * 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>');
     }
 }
Exemplo n.º 2
0
 protected function importLang($lang)
 {
     $translationRepository = $this->getTranslationRepository();
     $translationDir = $this->getContainer()->getParameter('translation_dir') . '/lot_6/';
     $defaultLang = $this->getContainer()->getParameter('locale');
     $em = $this->getEntityManager();
     $translationfiles = scandir($translationDir . strtoupper($lang) . '/');
     $exclude = array('.', '..');
     $translationfiles = array_diff($translationfiles, $exclude);
     foreach (array_values($translationfiles) as $translationFile) {
         $file = $translationDir . strtoupper($lang) . '/' . $translationFile;
         $handle = fopen($file, "r");
         while (($line = fgetcsv($handle)) !== false) {
             if ($line and $hotelId = $line[0] and $hotel = $this->getRepository('SehBundle:Hotel')->findOneBy(array('codeAdherent' => $hotelId))) {
                 if ($lang != $defaultLang) {
                     // $translationRepository->translate($hotel, 'longDescription', $lang, $line[4]);
                     // $translationRepository->translate($hotel, 'shortDescription', $lang, $line[5]);
                     $highlights = $hotel->getHighlights();
                     /** @var HotelHighlight $highlight */
                     $i = 0;
                     foreach ($highlights as $highlight) {
                         $translationRepository->translate($highlight, 'name', $lang, $line[6 + $i]);
                         $em->persist($highlight);
                         $i++;
                     }
                 } else {
                     // $hotel->setLongDescription($line[4]);
                     // $hotel->setShortDescription($line[5]);
                     foreach ($hotel->getHighlights() as $highlight) {
                         $em->remove($highlight);
                     }
                     $em->flush();
                     for ($i = 0; $i < 3; $i++) {
                         $highlight = new HotelHighlight();
                         $highlight->setName($line[6 + $i]);
                         $hotel->addHighlight($highlight);
                         $em->persist($highlight);
                     }
                 }
                 $em->persist($hotel);
                 $em->flush();
             }
         }
     }
 }
Exemplo n.º 3
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getContainer()->get("doctrine")->getManager();
     $repository = $em->getRepository('Gedmo\\Translatable\\Entity\\Translation');
     $medias = array();
     // Media creation
     $media300x500 = new Media();
     $media300x500->setFile('fixtures/300x500.gif');
     $media300x500->setType('gif');
     $medias[] = $media300x500;
     $media400x300 = new Media();
     $media400x300->setFile('fixtures/400x300.gif');
     $media400x300->setType('gif');
     $medias[] = $media400x300;
     $media500x200 = new Media();
     $media500x200->setFile('fixtures/500x200.gif');
     $media500x200->setType('gif');
     $medias[] = $media500x200;
     $media800x600 = new Media();
     $media800x600->setFile('fixtures/800x600.gif');
     $media800x600->setType('gif');
     $medias[] = $media800x600;
     $em->persist($media300x500);
     $em->persist($media400x300);
     $em->persist($media500x200);
     $em->persist($media800x600);
     $media300x500 = new Media();
     $media300x500->setFile('fixtures/300x500.gif');
     $media300x500->setType('gif');
     $medias[] = $media300x500;
     $media400x300 = new Media();
     $media400x300->setFile('fixtures/400x300.gif');
     $media400x300->setType('gif');
     $medias[] = $media400x300;
     $media500x200 = new Media();
     $media500x200->setFile('fixtures/500x200.gif');
     $media500x200->setType('gif');
     $medias[] = $media500x200;
     $media800x600 = new Media();
     $media800x600->setFile('fixtures/800x600.gif');
     $media800x600->setType('gif');
     $medias[] = $media800x600;
     $em->persist($media300x500);
     $em->persist($media400x300);
     $em->persist($media500x200);
     $em->persist($media800x600);
     $media300x500 = new Media();
     $media300x500->setFile('fixtures/300x500.gif');
     $media300x500->setType('gif');
     $medias[] = $media300x500;
     $media400x300 = new Media();
     $media400x300->setFile('fixtures/400x300.gif');
     $media400x300->setType('gif');
     $medias[] = $media400x300;
     $media500x200 = new Media();
     $media500x200->setFile('fixtures/500x200.gif');
     $media500x200->setType('gif');
     $medias[] = $media500x200;
     $media800x600 = new Media();
     $media800x600->setFile('fixtures/800x600.gif');
     $media800x600->setType('gif');
     $medias[] = $media800x600;
     $em->persist($media300x500);
     $em->persist($media400x300);
     $em->persist($media500x200);
     $em->persist($media800x600);
     $media300x500 = new Media();
     $media300x500->setFile('fixtures/300x500.gif');
     $media300x500->setType('gif');
     $medias[] = $media300x500;
     $media400x300 = new Media();
     $media400x300->setFile('fixtures/400x300.gif');
     $media400x300->setType('gif');
     $medias[] = $media400x300;
     $media500x200 = new Media();
     $media500x200->setFile('fixtures/500x200.gif');
     $media500x200->setType('gif');
     $medias[] = $media500x200;
     $media800x600 = new Media();
     $media800x600->setFile('fixtures/800x600.gif');
     $media800x600->setType('gif');
     $medias[] = $media800x600;
     $em->persist($media300x500);
     $em->persist($media400x300);
     $em->persist($media500x200);
     $em->persist($media800x600);
     $media300x500 = new Media();
     $media300x500->setFile('fixtures/300x500.gif');
     $media300x500->setType('gif');
     $medias[] = $media300x500;
     $media400x300 = new Media();
     $media400x300->setFile('fixtures/400x300.gif');
     $media400x300->setType('gif');
     $medias[] = $media400x300;
     $media500x200 = new Media();
     $media500x200->setFile('fixtures/500x200.gif');
     $media500x200->setType('gif');
     $medias[] = $media500x200;
     $media800x600 = new Media();
     $media800x600->setFile('fixtures/800x600.gif');
     $media800x600->setType('gif');
     $medias[] = $media800x600;
     $em->persist($media300x500);
     $em->persist($media400x300);
     $em->persist($media500x200);
     $em->persist($media800x600);
     $em->flush();
     $hotels = $em->getRepository('SehBundle:Hotel')->findAll();
     foreach ($hotels as $hotel) {
         $hotel->setTranslatableLocale('en');
         $em->refresh($hotel);
         if ($hotel->getThumbnail() == null) {
             $nbRandom = rand(1, 4);
             if ($nbRandom == 1) {
                 $hotel->setThumbnail($media300x500->getId());
             } else {
                 if ($nbRandom == 2) {
                     $hotel->setThumbnail($media400x300->getId());
                 } else {
                     if ($nbRandom == 3) {
                         $hotel->setThumbnail($media500x200->getId());
                     } else {
                         $hotel->setThumbnail($media800x600->getId());
                     }
                 }
             }
         }
         if ($hotel->getMark() == null) {
             $randomMark = rand(10, 50) / 10;
             //                $hotel->setMark($randomMark);
         }
         if ($hotel->getGallery() == null) {
             $nbRandom = rand(1, 3);
             $tabGallery = array();
             if ($nbRandom == 1) {
                 for ($i = 0; $i < 5; $i++) {
                     $tabGallery[] = $medias[$i]->getId();
                 }
             } else {
                 if ($nbRandom == 2) {
                     for ($i = 0; $i < 10; $i++) {
                         $tabGallery[] = $medias[$i]->getId();
                     }
                 } else {
                     for ($i = 0; $i < 20; $i++) {
                         $tabGallery[] = $medias[$i]->getId();
                     }
                 }
             }
             $stringGallery = implode(';', $tabGallery);
             $hotel->setGallery($stringGallery);
         }
         if (!$hotel->getShortDescription()) {
             $hotel->setShortDescription('<p><strong>Lucc varius orci eget placerat auctor.</strong> Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse potenti. Sed sed consequat nibh, a molestie dolor. Nunc ultricies semper augue at auctor. Nulla fringilla lacus et laoreet posuere.</p>');
         }
         $repository->translate($hotel, 'shortDescription', 'fr', $hotel->getShortDescription());
         if (!$hotel->getLongDescription()) {
             $hotel->setLongDescription('<p><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</strong> Quisque scelerisque ipsum sit amet ipsum tempor, nec ultricies mauris molestie. Vivamus vestibulum est et odio egestas, sit amet faucibus arcu elementum. Nulla auctor dapibus leo nec sodales. Suspendisse sit amet aliquet magna. Pellentesque nunc nibh, aliquet sodales egestas vitae, fermentum vitae arcu. Nullam sit amet nunc elit. Integer in ipsum augue. Nunc scelerisque commodo nisi. Nulla convallis, enim et suscipit hendrerit, metus tortor dignissim risus, quis interdum purus neque sed dolor. Sed eget imperdiet leo, id suscipit lectus. Quisque interdum purus non pretium vehicula. Quisque quis nisl vel velit pharetra porttitor. Vestibulum ut turpis adipiscing felis semper consectetur sit amet eget sem.<br />
         Sed euismod massa eget velit lacinia malesuada. Nulla egestas urna ac tellus rutrum, quis sodales tortor malesuada. Quisque ut pellentesque lacus. Sed ultricies ante quis porttitor suscipit. Maecenas rutrum neque nec dui fermentum hendrerit. Morbi non lacus mollis quam vestibulum pretium. Fusce mauris nisi, elementum in purus in, elementum posuere turpis. Vivamus tincidunt nisi nec tellus mattis, at eleifend nisl rhoncus. Donec blandit et dui in semper. Nulla volutpat id odio nec commodo. Quisque laoreet non magna vel luctus.</p>');
         }
         $repository->translate($hotel, 'longDescription', 'fr', $hotel->getLongDescription());
         if (!$hotel->getConvenience()) {
             $hotel->setConvenience('<h3 class="title3">Venir en voiture ?</h3><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae, hic, mollitia, vero quia at repellat architecto numquam obcaecati vel libero officia perspiciatis illo accusamus earum magni voluptatem fugiat ea alias.</p><h3 class="title3">Où se garer ?</h3><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto, voluptas dicta alias veniam facere voluptatum doloremque cum natus consequatur maxime.</p>');
         }
         $repository->translate($hotel, 'convenience', 'fr', $hotel->getConvenience());
         if (!$hotel->getStars()) {
             //                $hotel->setStars('****');
         }
         $highlight = new HotelHighlight();
         $highlight->setTranslatableLocale('en')->setName('Lorem ipsum');
         $repository->translate($highlight, 'name', 'fr', $highlight->getName());
         $hotel->addHighlight($highlight);
         $em->persist($highlight);
         $em->persist($hotel);
     }
     $em->flush();
     $regions = $em->getRepository('SehBundle:Region')->findAll();
     foreach ($regions as $region) {
         $region->setTranslatableLocale('fr');
         $em->refresh($region);
         if (!$region->getName()) {
             $region->setTranslatableLocale('en');
             $em->refresh($region);
             if ($region->getName()) {
                 $repository->translate($region, 'name', 'fr', $region->getName());
             }
             $em->persist($region);
         }
     }
     $departments = $em->getRepository('SehBundle:Department')->findAll();
     foreach ($departments as $department) {
         $department->setTranslatableLocale('fr');
         $em->refresh($department);
         if (!$department->getName()) {
             $department->setTranslatableLocale('en');
             $em->refresh($department);
             if ($department->getName()) {
                 $repository->translate($department, 'name', 'fr', $department->getName());
             }
             $em->persist($department);
         }
     }
     $services = $em->getRepository('SehBundle:HotelService')->findAll();
     foreach ($services as $service) {
         $service->setTranslatableLocale('fr');
         $em->refresh($service);
         if (in_array($service->getSlug(), array('swimming-pool', 'restaurant'))) {
             $service->setUseInSearch(true);
         }
         if (!$service->getName()) {
             $service->setTranslatableLocale('en');
             $em->refresh($service);
             if ($service->getName()) {
                 $repository->translate($service, 'name', 'fr', $service->getName());
             }
         }
         $em->persist($service);
     }
     $em->flush();
 }