Ejemplo n.º 1
0
 /**
  * @param ObjectManager $objectManager
  */
 public function load(ObjectManager $objectManager)
 {
     $csvIterator = new CsvIterator($this->container->getParameter('sulu_event.csv_import_file'));
     \Locale::setDefault('de');
     $countries = Intl::getRegionBundle()->getCountryNames();
     $geocoder = new GoogleMaps(new GuzzleHttpAdapter(), true, $this->container->getParameter('sulu_event.google_maps_api_key'));
     $output = $this->getConsoleOutput();
     foreach ($csvIterator as $row => $data) {
         if (empty($data)) {
             break;
         }
         if ($row == 1) {
             continue;
         }
         // sleep 1 second to prevent Google Geocode API from going OVER_QUERY_LIMIT
         sleep(1);
         $event = new Event();
         $event->setTitle(trim($data[0]) === '' ? 'Nicht definierter Event-Titel' : $data[0]);
         $event->setStartDate(new \DateTime($data[1]));
         if (!empty($data[2])) {
             $event->setStartTime(new \DateTime($data[2]));
         }
         $event->setDescription('<p>' . $data[3] . '</p>');
         $event->setDescriptionVenue('<p>' . $data[4] . '</p>');
         $event->setZip($data[5]);
         $event->setCity($data[6]);
         $countryAlpha2 = array_keys($countries, $data[7]);
         $event->setCountry(isset($countryAlpha2[0]) ? $countryAlpha2[0] : 'DE');
         $organizer = new EventOrganizer();
         $organizer->setTitle($data[10]);
         $organizer->setFirstName($data[11]);
         $organizer->setLastName($data[12]);
         $organizer->setStreet($data[13]);
         $organizer->setZip($data[14]);
         $organizer->setCity($data[15]);
         $organizer->setPhone($data[16]);
         $organizer->setFax($data[17]);
         $organizer->setEmail($data[18]);
         $event->setOrganizer($organizer);
         $result = $geocoder->geocode($data[4] . '+' . $data[5]);
         if (isset($result->results[0])) {
             $event->setLatitude($result->results[0]->geometry->location->lat);
             $event->setLongitude($result->results[0]->geometry->location->lng);
         } else {
             $error = 'No geocoding data at event ' . $data[0] . '(row ' . $row . ') with status' . $result->status;
             $output->writeln($error);
             $event->setLatitude(0);
             $event->setLongitude(0);
         }
         $event->setWebsite($data[19]);
         $objectManager->persist($event);
     }
     $objectManager->flush();
 }
 private function initOrm()
 {
     $this->purgeDatabase();
     $event = new Event();
     $event->setTitle('test');
 }
Ejemplo n.º 3
0
 /**
  * @param Event $event
  * @param $mediaData
  * @param $locale
  * @return bool
  * @throws EventDependencyNotFoundException
  * @throws \Sulu\Bundle\MediaBundle\Media\Exception\MediaNotFoundException
  */
 protected function addMedia(Event $event, $mediaData, $locale)
 {
     $media = $this->mediaManager->getById($mediaData, $locale);
     if (!$media) {
         throw new EventDependencyNotFoundException(MediaManager::ENTITY_NAME_MEDIA, $mediaData);
     }
     $media = $media->getEntity();
     $event->addMedia($media);
     $this->entityManager->persist($media);
     return true;
 }