From 65e653f6ecdadaed1bfdbab42e1b0b378dbaf21d Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 2 Aug 2022 13:56:18 +0000 Subject: [PATCH] Add location as separate record --- Classes/Domain/Model/Dto/DateDemand.php | 22 + .../Domain/Model/Dto/DateDemandFactory.php | 1 + Classes/Domain/Model/Event.php | 304 +++++++------- Classes/Domain/Model/Location.php | 172 ++++++++ Classes/Domain/Repository/DateRepository.php | 4 + .../Domain/Repository/LocationRepository.php | 9 + .../Service/DestinationDataImportService.php | 57 +-- .../LocationAssignment.php | 57 +++ .../TCA/tx_events_domain_model_event.php | 34 +- .../TCA/tx_events_domain_model_location.php | 248 ++++++++++++ Documentation/Changelog/2.6.0.rst | 17 +- .../Language/de.locallang_csh_event.xlf | 40 +- .../Language/de.locallang_csh_location.xlf | 56 +++ .../Private/Language/locallang_csh_event.xlf | 30 +- .../Language/locallang_csh_location.xlf | 44 ++ .../Private/Partials/Date/ListDefault.html | 9 - .../Private/Partials/Date/ListTable.html | 9 - Resources/Private/Templates/Date/Show.html | 8 +- Resources/Private/Templates/Event/Show.html | 4 +- .../ImportDoesntBreakWithLongFileTitle.csv | 49 ++- ...rtDoesntEndUpInEndlessDateCreationTest.csv | 23 +- .../ImportsAllConfigurationTest.csv | 138 +++---- .../Assertions/ImportsExampleAsExpected.csv | 81 ++-- .../ImportsWithoutCategoryIfNotProvided.csv | 28 +- .../ImportsWithoutLocationIfNotProvided.csv | 6 + .../ImportsWithoutRegionIfNotProvided.csv | 41 +- .../Fixtures/ResponseWithoutLocation.json | 166 ++++++++ .../ImportsWithoutLocationTest.php | 54 +++ .../Domain/Model/Event/LocationDataTest.php | 375 ++++++++++++++++++ ext_tables.sql | 17 + 30 files changed, 1621 insertions(+), 482 deletions(-) create mode 100644 Classes/Domain/Model/Location.php create mode 100644 Classes/Domain/Repository/LocationRepository.php create mode 100644 Classes/Service/DestinationDataImportService/LocationAssignment.php create mode 100644 Configuration/TCA/tx_events_domain_model_location.php create mode 100644 Resources/Private/Language/de.locallang_csh_location.xlf create mode 100644 Resources/Private/Language/locallang_csh_location.xlf create mode 100644 Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutLocationIfNotProvided.csv create mode 100644 Tests/Functional/Import/DestinationDataTest/Fixtures/ResponseWithoutLocation.json create mode 100644 Tests/Functional/Import/DestinationDataTest/ImportsWithoutLocationTest.php create mode 100644 Tests/Unit/Domain/Model/Event/LocationDataTest.php diff --git a/Classes/Domain/Model/Dto/DateDemand.php b/Classes/Domain/Model/Dto/DateDemand.php index 296fd27..fee8d34 100644 --- a/Classes/Domain/Model/Dto/DateDemand.php +++ b/Classes/Domain/Model/Dto/DateDemand.php @@ -46,6 +46,11 @@ class DateDemand */ protected $regions = []; + /** + * @var int[] + */ + protected $locations = []; + /** * @var bool */ @@ -103,6 +108,10 @@ class DateDemand $instance->setSearchword($submittedValues['searchword'] ?? ''); $instance->setSynonyms($settings['synonyms'] ?? []); + if (isset($submittedValues['locations']) && is_array($submittedValues['locations'])) { + $instance->setLocations($submittedValues['locations']); + } + $instance->setRegions(GeneralUtility::intExplode(',', $submittedValues['region'] ?? '', true)); if (isset($submittedValues['regions']) && is_array($submittedValues['regions'])) { $instance->setRegions($submittedValues['regions']); @@ -241,6 +250,19 @@ class DateDemand $this->regions = array_map('intval', $regions); } + /** + * @return int[] + */ + public function getLocations(): array + { + return $this->locations; + } + + public function setLocations(array $locations): void + { + $this->locations = array_map('intval', $locations); + } + public function getHighlight(): bool { return $this->highlight; diff --git a/Classes/Domain/Model/Dto/DateDemandFactory.php b/Classes/Domain/Model/Dto/DateDemandFactory.php index 7323dec..b006dc8 100644 --- a/Classes/Domain/Model/Dto/DateDemandFactory.php +++ b/Classes/Domain/Model/Dto/DateDemandFactory.php @@ -61,6 +61,7 @@ class DateDemandFactory } $demand->setRegions(GeneralUtility::intExplode(',', (string)$settings['region'], true)); + $demand->setLocations(GeneralUtility::intExplode(',', (string)$settings['locations'], true)); $demand->setCategories((string)$settings['categories']); $categoryCombination = (int)$settings['categoryCombination'] === 1 ? 'or' : 'and'; $demand->setCategoryCombination($categoryCombination); diff --git a/Classes/Domain/Model/Event.php b/Classes/Domain/Model/Event.php index f78d395..6aeee21 100644 --- a/Classes/Domain/Model/Event.php +++ b/Classes/Domain/Model/Event.php @@ -52,41 +52,6 @@ class Event extends AbstractEntity */ protected $priceInfo = ''; - /** - * @var string - */ - protected $name = ''; - - /** - * @var string - */ - protected $street = ''; - - /** - * @var string - */ - protected $district = ''; - - /** - * @var string - */ - protected $city = ''; - - /** - * @var string - */ - protected $zip = ''; - - /** - * @var string - */ - protected $country = ''; - - /** - * @var string - */ - protected $phone = ''; - /** * @var string */ @@ -112,16 +77,6 @@ class Event extends AbstractEntity */ protected $instagram = ''; - /** - * @var string - */ - protected $latitude = ''; - - /** - * @var string - */ - protected $longitude = ''; - /** * @var ObjectStorage * @Extbase\ORM\Cascade remove @@ -136,12 +91,17 @@ class Event extends AbstractEntity protected $dates; /** - * @var \Wrm\Events\Domain\Model\Organizer + * @var Location|null + */ + protected $location = null; + + /** + * @var Organizer|null */ protected $organizer = null; /** - * @var Region + * @var Region|null */ protected $region = null; @@ -180,6 +140,55 @@ class Event extends AbstractEntity */ protected $dataProcessing = null; + // Legacy location related info + + /** + * @var string + */ + protected $name = ''; + + /** + * @var string + */ + protected $street = ''; + + /** + * @var string + */ + protected $district = ''; + + /** + * @var string + */ + protected $city = ''; + + /** + * @var string + */ + protected $zip = ''; + + /** + * @var string + */ + protected $country = ''; + + /** + * @var string + */ + protected $phone = ''; + + /** + * @var string + */ + protected $latitude = ''; + + /** + * @var string + */ + protected $longitude = ''; + + // End of legacy location info + public function __construct() { $this->initStorageObjects(); @@ -268,69 +277,6 @@ class Event extends AbstractEntity $this->priceInfo = $priceInfo; } - public function getName(): string - { - return $this->name; - } - - public function setName(string $name): void - { - $this->name = $name; - } - - public function getStreet(): string - { - return $this->street; - } - - public function setStreet(string $street): void - { - $this->street = $street; - } - - /** - * @return string $district - */ - public function getDistrict(): string - { - return $this->district; - } - - public function setDistrict(string $district): void - { - $this->district = $district; - } - - public function getCity(): string - { - return $this->city; - } - - public function setCity(string $city): void - { - $this->city = $city; - } - - public function getZip(): string - { - return $this->zip; - } - - public function setZip(string $zip): void - { - $this->zip = $zip; - } - - public function getPhone(): string - { - return $this->phone; - } - - public function setPhone(string $phone): void - { - $this->phone = $phone; - } - public function getWeb(): string { return $this->web; @@ -381,26 +327,6 @@ class Event extends AbstractEntity $this->instagram = $instagram; } - public function getLatitude(): string - { - return $this->latitude; - } - - public function setLatitude(string $latitude): void - { - $this->latitude = $latitude; - } - - public function getLongitude(): string - { - return $this->longitude; - } - - public function setLongitude(string $longitude): void - { - $this->longitude = $longitude; - } - /** * @return ObjectStorage $images */ @@ -477,6 +403,31 @@ class Event extends AbstractEntity return $this->referencesEvents; } + public function setLocation(?Location $location): void + { + $this->location = $location; + + // Keep this block as long as event still has the properties for legacy reasons. + // This ensures there is only a single point of truth, the new location object. + // That way we detect issues earlier and can migrate them until we get rid of the legacy code base. + if ($location instanceof Location) { + $this->name = ''; + $this->street = ''; + $this->district = ''; + $this->city = ''; + $this->zip = ''; + $this->country = ''; + $this->phone = ''; + $this->latitude = ''; + $this->longitude = ''; + } + } + + public function getLocation(): ?Location + { + return $this->location; + } + public function setOrganizer(Organizer $organizer): void { $this->organizer = $organizer; @@ -507,16 +458,6 @@ class Event extends AbstractEntity return $this->highlight; } - public function getCountry(): string - { - return $this->country; - } - - public function setCountry(string $country): void - { - $this->country = $country; - } - public function getPages(): array { static $pages = null; @@ -592,4 +533,87 @@ class Event extends AbstractEntity { return $this->_localizedUid; } + + // Legacy location related info + + public function getName(): string + { + if ($this->location instanceof Location) { + return $this->location->getName(); + } + + return $this->name; + } + + public function getStreet(): string + { + if ($this->location instanceof Location) { + return $this->location->getStreet(); + } + + return $this->street; + } + + public function getDistrict(): string + { + if ($this->location instanceof Location) { + return $this->location->getDistrict(); + } + + return $this->district; + } + + public function getCountry(): string + { + if ($this->location instanceof Location) { + return $this->location->getCountry(); + } + + return $this->country; + } + + public function getCity(): string + { + if ($this->location instanceof Location) { + return $this->location->getCity(); + } + + return $this->city; + } + + public function getZip(): string + { + if ($this->location instanceof Location) { + return $this->location->getZip(); + } + + return $this->zip; + } + + public function getPhone(): string + { + if ($this->location instanceof Location) { + return $this->location->getPhone(); + } + + return $this->phone; + } + + public function getLatitude(): string + { + if ($this->location instanceof Location) { + return $this->location->getLatitude(); + } + + return $this->latitude; + } + + public function getLongitude(): string + { + if ($this->location instanceof Location) { + return $this->location->getLongitude(); + } + + return $this->longitude; + } } diff --git a/Classes/Domain/Model/Location.php b/Classes/Domain/Model/Location.php new file mode 100644 index 0000000..b8449b2 --- /dev/null +++ b/Classes/Domain/Model/Location.php @@ -0,0 +1,172 @@ +name = $name; + $this->street = $street; + $this->zip = $zip; + $this->city = $city; + $this->district = $district; + $this->country = $country; + $this->phone = $phone; + $this->latitude = $latitude; + $this->longitude = $longitude; + $this->slug = $slug; + $this->_languageUid = $languageUid; + + $this->globalId = $this->generateGlobalId(); + } + + public function getName(): string + { + return $this->name; + } + + public function getStreet(): string + { + return $this->street; + } + + public function getZip(): string + { + return $this->zip; + } + + public function getCity(): string + { + return $this->city; + } + + public function getDistrict(): string + { + return $this->district; + } + + public function getCountry(): string + { + return $this->country; + } + + public function getPhone(): string + { + return $this->phone; + } + + public function getLatitude(): string + { + return $this->latitude; + } + + public function getLongitude(): string + { + return $this->longitude; + } + + public function getGlobalId(): string + { + return $this->globalId; + } + + /** + * Validates the location. + * + * Holds the original logic that at least one property must be given. + */ + public function isValid(): bool + { + return $this->name !== '' + || $this->street !== '' + || $this->zip !== '' + || $this->city !== '' + || $this->district !== '' + || $this->country !== '' + || $this->phone !== '' + ; + } + + private function generateGlobalId(): string + { + return hash('sha256', implode(',', [ + $this->name, + $this->street, + $this->zip, + $this->city, + $this->district, + $this->country, + $this->latitude, + $this->longitude, + ])); + } +} diff --git a/Classes/Domain/Repository/DateRepository.php b/Classes/Domain/Repository/DateRepository.php index 1590ed0..586571e 100644 --- a/Classes/Domain/Repository/DateRepository.php +++ b/Classes/Domain/Repository/DateRepository.php @@ -55,6 +55,10 @@ class DateRepository extends Repository $constraints['features'] = $this->createFeaturesConstraint($query, $demand); } + if ($demand->getLocations() !== []) { + $constraints['locations'] = $query->in('event.location', $demand->getLocations()); + } + if ($demand->getRegion() !== '') { $constraints['region'] = $query->equals('event.region', $demand->getRegion()); } diff --git a/Classes/Domain/Repository/LocationRepository.php b/Classes/Domain/Repository/LocationRepository.php new file mode 100644 index 0000000..6f85ad6 --- /dev/null +++ b/Classes/Domain/Repository/LocationRepository.php @@ -0,0 +1,9 @@ +eventRepository = $eventRepository; $this->organizerRepository = $organizerRepository; @@ -133,6 +141,7 @@ class DestinationDataImportService $this->dataFetcher = $dataFetcher; $this->datesFactory = $datesFactory; $this->categoriesAssignment = $categoriesAssignment; + $this->locationAssignment = $locationAssignment; } public function import( @@ -201,25 +210,9 @@ class DestinationDataImportService $this->setTexts($event['texts']); } - // Set address and geo data - if ( - ($event['name'] ?? false) - || ($event['street'] ?? false) - || ($event['city'] ?? false) - || ($event['zip'] ?? false) - || ($event['country'] ?? false) - || ($event['web'] ?? false) - ) { - $this->setAddress($event); - } - - // Set LatLng - if ( - ($event['geo']['main']['latitude'] ?? false) - && ($event['geo']['main']['longitude'] ?? false) - ) { - $this->setLatLng($event['geo']['main']['latitude'], $event['geo']['main']['longitude']); - } + $this->tmpCurrentEvent->setLocation( + $this->locationAssignment->getLocation($event) + ); // Set Categories if ($event['categories'] ?? false) { @@ -241,6 +234,10 @@ class DestinationDataImportService $this->setSocial($event['media_objects']); } + if ($event['web'] ?? false) { + $this->tmpCurrentEvent->setWeb($event['web']); + } + // Set Tickets if ($event['media_objects'] ?? false) { $this->setTickets($event['media_objects']); @@ -340,20 +337,6 @@ class DestinationDataImportService } } - /** - * @param array $event - */ - private function setAddress(array $event): void - { - $this->tmpCurrentEvent->setName($event['name'] ?? ''); - $this->tmpCurrentEvent->setStreet($event['street'] ?? ''); - $this->tmpCurrentEvent->setCity($event['city'] ?? ''); - $this->tmpCurrentEvent->setZip($event['zip'] ?? ''); - $this->tmpCurrentEvent->setCountry($event['country'] ?? ''); - $this->tmpCurrentEvent->setPhone($event['phone'] ?? ''); - $this->tmpCurrentEvent->setWeb($event['web'] ?? ''); - } - /** * @param array $media */ @@ -418,12 +401,6 @@ class DestinationDataImportService return false; } - private function setLatLng(string $lat, string $lng): void - { - $this->tmpCurrentEvent->setLatitude($lat); - $this->tmpCurrentEvent->setLongitude($lng); - } - private function setTexts(array $texts): void { foreach ($texts as $text) { diff --git a/Classes/Service/DestinationDataImportService/LocationAssignment.php b/Classes/Service/DestinationDataImportService/LocationAssignment.php new file mode 100644 index 0000000..899d5fe --- /dev/null +++ b/Classes/Service/DestinationDataImportService/LocationAssignment.php @@ -0,0 +1,57 @@ +repository = $repository; + } + + public function getLocation(array $event): ?Location + { + $newLocation = new Location( + $event['name'] ?? '', + $event['street'] ?? '', + $event['zip'] ?? '', + $event['city'] ?? '', + $event['district'] ?? '', + $event['country'] ?? '', + $event['phone'] ?? '', + $event['geo']['main']['latitude'] ?? '', + $event['geo']['main']['longitude'] ?? '', + $this->createSlug($event['name'] ?? ''), + -1 + ); + + if ($newLocation->isValid() === false) { + return null; + } + + $existingLocation = $this->repository->findOneByGlobalId($newLocation->getGlobalId()); + + return $existingLocation ?? $newLocation; + } + + public function createSlug(string $name): string + { + $slugHelper = new SlugHelper( + 'tx_events_domain_model_location', + 'slug', + $GLOBALS['TCA']['tx_events_domain_model_location']['columns']['slug']['config'] + ); + + return $slugHelper->sanitize($name); + } +} diff --git a/Configuration/TCA/tx_events_domain_model_event.php b/Configuration/TCA/tx_events_domain_model_event.php index 4e57e97..608f22c 100644 --- a/Configuration/TCA/tx_events_domain_model_event.php +++ b/Configuration/TCA/tx_events_domain_model_event.php @@ -4,6 +4,7 @@ $l10nPathGeneral = 'LLL:EXT:core/Resources/Private/Language/locallang_general.xl $l10nPathLang = 'LLL:EXT:lang/locallang_core.xlf'; $l10nPathFE = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf'; $l10nPath = 'LLL:EXT:events/Resources/Private/Language/locallang_csh_event.xlf'; +$l10nLocationPath = 'LLL:EXT:events/Resources/Private/Language/locallang_csh_location.xlf'; return [ 'ctrl' => [ @@ -45,6 +46,7 @@ return [ --div--;' . $l10nPath . ':tx_events_domain_model_event.tabs.dates, dates, --div--;' . $l10nPath . ':tx_events_domain_model_event.tabs.location, + location, name, street, district, @@ -52,7 +54,6 @@ return [ zip, country, phone, - web, latitude, longitude, --div--;' . $l10nPath . ':tx_events_domain_model_event.tabs.relations, @@ -66,6 +67,7 @@ return [ --div--;' . $l10nPath . ':tx_events_domain_model_event.tabs.media, images, --div--;' . $l10nPath . ':tx_events_domain_model_event.tabs.social, + web, facebook, youtube, instagram, @@ -263,7 +265,7 @@ return [ ], 'name' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.name', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.name', 'config' => [ 'type' => 'input', 'size' => 30, @@ -272,7 +274,7 @@ return [ ], 'street' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.street', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.street', 'config' => [ 'type' => 'input', 'size' => 30, @@ -281,7 +283,7 @@ return [ ], 'district' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.district', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.district', 'config' => [ 'type' => 'input', 'size' => 30, @@ -290,7 +292,7 @@ return [ ], 'city' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.city', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.city', 'config' => [ 'type' => 'input', 'size' => 30, @@ -299,7 +301,7 @@ return [ ], 'zip' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.zip', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.zip', 'config' => [ 'type' => 'input', 'size' => 30, @@ -308,7 +310,7 @@ return [ ], 'country' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.country', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.country', 'config' => [ 'type' => 'input', 'size' => 30, @@ -317,7 +319,7 @@ return [ ], 'phone' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.phone', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.phone', 'config' => [ 'type' => 'input', 'size' => 30, @@ -374,7 +376,7 @@ return [ ], 'latitude' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.latitude', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.latitude', 'config' => [ 'type' => 'input', 'size' => 30, @@ -383,7 +385,7 @@ return [ ], 'longitude' => [ 'exclude' => true, - 'label' => $l10nPath . ':tx_events_domain_model_event.longitude', + 'label' => $l10nLocationPath . ':tx_events_domain_model_location.longitude', 'config' => [ 'type' => 'input', 'size' => 30, @@ -495,6 +497,18 @@ return [ ], + 'location' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_event.location', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'foreign_table' => 'tx_events_domain_model_location', + 'default' => 0, + 'minitems' => 0, + 'maxitems' => 1, + ], + ], 'organizer' => [ 'exclude' => true, 'label' => $l10nPath . ':tx_events_domain_model_event.organizer', diff --git a/Configuration/TCA/tx_events_domain_model_location.php b/Configuration/TCA/tx_events_domain_model_location.php new file mode 100644 index 0000000..18f0991 --- /dev/null +++ b/Configuration/TCA/tx_events_domain_model_location.php @@ -0,0 +1,248 @@ + [ + 'title' => $l10nPath . ':tx_events_domain_model_location', + 'label' => 'name', + 'tstamp' => 'tstamp', + 'crdate' => 'crdate', + 'cruser_id' => 'cruser_id', + 'versioningWS' => true, + 'languageField' => 'sys_language_uid', + 'transOrigPointerField' => 'l10n_parent', + 'transOrigDiffSourceField' => 'l10n_diffsource', + 'delete' => 'deleted', + 'enablecolumns' => [ + 'disabled' => 'hidden', + 'starttime' => 'starttime', + 'endtime' => 'endtime', + ], + 'searchFields' => 'name', + 'iconfile' => 'EXT:events/Resources/Public/Icons/Extension.svg' + ], + 'types' => [ + '1' => [ + 'showitem' => '--palette--;' . $l10nPath . ':palette.general;general, + sys_language_uid, + l10n_parent, + l10n_diffsource, + hidden, + name, + slug, + global_id, + + street, + district, + city, + zip, + country, + phone, + latitude, + longitude, + --div--;' . $l10nPath . ':tabs.access, + starttime, + endtime' + ], + ], + 'columns' => [ + 'sys_language_uid' => [ + 'exclude' => true, + 'label' => $l10nPathGeneral . ':LGL.language', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'special' => 'languages', + 'items' => [ + [ + $l10nPathGeneral . ':LGL.allLanguages', + -1, + 'flags-multiple' + ] + ], + 'default' => 0, + ], + ], + 'l10n_parent' => [ + 'displayCond' => 'FIELD:sys_language_uid:>:0', + 'label' => $l10nPathGeneral . ':LGL.l18n_parent', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'default' => 0, + 'items' => [ + ['', 0], + ], + 'foreign_table' => 'tx_events_domain_model_location', + 'foreign_table_where' => 'AND {#tx_events_domain_model_location}.{#pid}=###CURRENT_PID### AND {#tx_events_domain_model_location}.{#sys_language_uid} IN (-1,0)', + ], + ], + 'l10n_diffsource' => [ + 'config' => [ + 'type' => 'passthrough', + ], + ], + 't3ver_label' => [ + 'label' => $l10nPathGeneral . ':LGL.versionLabel', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'max' => 255, + ], + ], + 'hidden' => [ + 'exclude' => true, + 'label' => $l10nPathGeneral . ':LGL.visible', + 'config' => [ + 'type' => 'check', + 'renderType' => 'checkboxToggle', + 'items' => [ + [ + 0 => '', + 1 => '', + 'invertStateDisplay' => true + ] + ], + ], + ], + 'starttime' => [ + 'exclude' => true, + 'label' => $l10nPathGeneral . ':LGL.starttime', + 'config' => [ + 'type' => 'input', + 'renderType' => 'inputDateTime', + 'eval' => 'datetime,int', + 'default' => 0, + 'behaviour' => [ + 'allowLanguageSynchronization' => true + ] + ], + ], + 'endtime' => [ + 'exclude' => true, + 'label' => $l10nPathGeneral . ':LGL.endtime', + 'config' => [ + 'type' => 'input', + 'renderType' => 'inputDateTime', + 'eval' => 'datetime,int', + 'default' => 0, + 'range' => [ + 'upper' => mktime(0, 0, 0, 1, 1, 2038) + ], + 'behaviour' => [ + 'allowLanguageSynchronization' => true + ] + ], + ], + + 'global_id' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.global_id', + 'description' => $l10nPath . ':tx_events_domain_model_location.global_id.description', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'slug' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.slug', + 'config' => [ + 'type' => 'slug', + 'size' => 50, + 'generatorOptions' => [ + 'fields' => ['name'], + 'fieldSeparator' => '/', + 'prefixParentPageSlug' => false, + ], + 'fallbackCharacter' => '-', + 'eval' => 'uniqueInSite', + 'default' => '', + ], + ], + 'name' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.name', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'street' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.street', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'district' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.district', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'city' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.city', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'zip' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.zip', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'country' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.country', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'phone' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.phone', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'latitude' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.latitude', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'longitude' => [ + 'exclude' => true, + 'label' => $l10nPath . ':tx_events_domain_model_location.longitude', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + ], +]; diff --git a/Documentation/Changelog/2.6.0.rst b/Documentation/Changelog/2.6.0.rst index 5ac553f..419bfd8 100644 --- a/Documentation/Changelog/2.6.0.rst +++ b/Documentation/Changelog/2.6.0.rst @@ -4,7 +4,11 @@ Breaking -------- -Nothing +* The location columns within events will no longer be filled. + The new location will be used instead. + The model will fall back for existing old records. + Therefore this should not end in an effect on existing systems. + The model no longer has setters for location beside the location itself. Features -------- @@ -13,6 +17,11 @@ Features * Search location name and organizer name when a search word for dates was given. +* Introduce new record ``Location``. + This is the actual event location which is stored as separate record instead of + inline properties within the event. + This allows to filter by location. + Fixes ----- @@ -26,4 +35,8 @@ Nothing Deprecation ----------- -Nothing +* Usage of location related properties from within the Event. + Use the new sub property Location instead. + +* Location related database columns within ``tx_events_domain_model_event``. + Use ``tx_events_domain_model_location`` instead. diff --git a/Resources/Private/Language/de.locallang_csh_event.xlf b/Resources/Private/Language/de.locallang_csh_event.xlf index cccf663..bbddbbb 100644 --- a/Resources/Private/Language/de.locallang_csh_event.xlf +++ b/Resources/Private/Language/de.locallang_csh_event.xlf @@ -71,38 +71,10 @@ Price Info Preis Information - - Name - Name - - - Street - Straße - - - District - Bundesland - - - City - Stadt - - - Zip - Postleitzahl - - - Country - Land - Web Internet - - Phone - Telefon - Ticket Ticket @@ -119,14 +91,6 @@ Instagram Instagram - - Latitude - Breitengrad - - - Longitude - Längengrad - Images Bilder @@ -143,6 +107,10 @@ Dates Termine + + Location + Veranstaltungsort + Organizer Organisator diff --git a/Resources/Private/Language/de.locallang_csh_location.xlf b/Resources/Private/Language/de.locallang_csh_location.xlf new file mode 100644 index 0000000..af5f1f7 --- /dev/null +++ b/Resources/Private/Language/de.locallang_csh_location.xlf @@ -0,0 +1,56 @@ + + + +
+ + + Global UID + Globale UID + + + Auto generated from the values. + Wird automatisch aus den Werten generiert. + + + Slug + URL-Segment + + + Name + Name + + + Street + Straße + + + District + Bundesland + + + City + Stadt + + + Zip + Postleitzahl + + + Country + Land + + + Phone + Telefon + + + Latitude + Breitengrad + + + Longitude + Längengrad + + + + diff --git a/Resources/Private/Language/locallang_csh_event.xlf b/Resources/Private/Language/locallang_csh_event.xlf index 3eb5212..934ca84 100644 --- a/Resources/Private/Language/locallang_csh_event.xlf +++ b/Resources/Private/Language/locallang_csh_event.xlf @@ -54,30 +54,9 @@ Price Info - - Name - - - Street - - - District - - - City - - - Zip - - - Country - Web - - Phone - Ticket @@ -90,12 +69,6 @@ Instagram - - Latitude - - - Longitude - Images @@ -108,6 +81,9 @@ Dates + + Location + Organizer diff --git a/Resources/Private/Language/locallang_csh_location.xlf b/Resources/Private/Language/locallang_csh_location.xlf new file mode 100644 index 0000000..384a10f --- /dev/null +++ b/Resources/Private/Language/locallang_csh_location.xlf @@ -0,0 +1,44 @@ + + + +
+ + + Global UID + + + Auto generated from the values. + + + Slug + + + Name + + + Street + + + District + + + City + + + Zip + + + Country + + + Phone + + + Latitude + + + Longitude + + + + diff --git a/Resources/Private/Partials/Date/ListDefault.html b/Resources/Private/Partials/Date/ListDefault.html index dfc44c8..425c61c 100644 --- a/Resources/Private/Partials/Date/ListDefault.html +++ b/Resources/Private/Partials/Date/ListDefault.html @@ -21,15 +21,6 @@ {date.event.region.title} | {date.start}

{date.event.title}

{date.event.teaser}

- - - diff --git a/Resources/Private/Partials/Date/ListTable.html b/Resources/Private/Partials/Date/ListTable.html index 85d8008..48ce207 100644 --- a/Resources/Private/Partials/Date/ListTable.html +++ b/Resources/Private/Partials/Date/ListTable.html @@ -12,15 +12,6 @@
- - -

diff --git a/Resources/Private/Templates/Date/Show.html b/Resources/Private/Templates/Date/Show.html index 18b4786..3ebc684 100644 --- a/Resources/Private/Templates/Date/Show.html +++ b/Resources/Private/Templates/Date/Show.html @@ -54,10 +54,10 @@

Veranstaltungsort:
- {date.event.name}
- {date.event.street}
- {date.event.zip} {date.event.city}
- {date.event.phone}
+ {date.event.location.name}
+ {date.event.location.street}
+ {date.event.location.zip} {date.event.location.city}
+ {date.event.location.phone}

diff --git a/Resources/Private/Templates/Event/Show.html b/Resources/Private/Templates/Event/Show.html index 4ede781..cc48061 100644 --- a/Resources/Private/Templates/Event/Show.html +++ b/Resources/Private/Templates/Event/Show.html @@ -25,8 +25,8 @@

Veranstaltungsort:
- {event.street}
- {event.zip} {event.city}
+ {event.location.street}
+ {event.location.zip} {event.location.city}

diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntBreakWithLongFileTitle.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntBreakWithLongFileTitle.csv index 7c88b03..34cc6eb 100644 --- a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntBreakWithLongFileTitle.csv +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntBreakWithLongFileTitle.csv @@ -1,26 +1,23 @@ -"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events" -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. -Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) -Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","1",,"1","1",,"1", -"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_file_metadata",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","title","description","alternative",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,1,0,"This title is longer then the supported 255 chars as limited by default by TYPO3 database. Also c …","This is a supported description","DD Import",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","uid_local","uid_foreign","tablenames","fieldname","title","description",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,1,1,1,"tx_events_domain_model_event","images",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email" +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de" +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","dates", +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"1", +"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,, +,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,, +"sys_category",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,, +,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,, +,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,, +,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,, +"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,, +,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,, +,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,, +"sys_file_metadata",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","title","description","alternative",,,,,,,,,,,,,,,, +,1,0,"This title is longer then the supported 255 chars as limited by default by TYPO3 database. Also c …","This is a supported description","DD Import",,,,,,,,,,,,,,,, +"sys_file_reference",,,,,,,,,,,,,,,,,,,,, +,"uid","uid_local","uid_foreign","tablenames","fieldname","title","description",,,,,,,,,,,,,, +,1,1,1,"tx_events_domain_model_event","images",,,,,,,,,,,,,,,, diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntEndUpInEndlessDateCreationTest.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntEndUpInEndlessDateCreationTest.csv index b073e93..afc2b19 100644 --- a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntEndUpInEndlessDateCreationTest.csv +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntEndUpInEndlessDateCreationTest.csv @@ -1,13 +1,10 @@ -"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events" -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. -Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) -Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","0","1",,"2","1",,"1", -"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0",-1,0,"0","0","0","1",1656748800,1656770400,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0",-1,0,"0","0","0","1",1657353600,1657375200,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email" +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de" +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","dates", +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"2", +"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,, +,"1","2","0","0","0","0",-1,0,"0","0","0","1",1656748800,1656770400,"no","0",,,,, +,"2","2","0","0","0","0",-1,0,"0","0","0","1",1657353600,1657375200,"no","0",,,,, diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsAllConfigurationTest.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsAllConfigurationTest.csv index 80988d3..5b63af8 100644 --- a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsAllConfigurationTest.csv +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsAllConfigurationTest.csv @@ -1,77 +1,61 @@ -"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,, -,"4","3","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"5","3","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"6","3","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,, -"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events" -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. -Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) -Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","1",,"1","1",,"1", -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein. -Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420 - -Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","1",,"4","2",,"1", -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss. - -Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","2",,"8","3",,"1", -,"4","3","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. -Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) -Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","1",,"1","4",,"1", -,"5","3","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein. -Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420 - -Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","1",,"4","5",,"1", -,"6","3","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss. - -Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","2",,"8","6",,"1", -"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0",-1,0,"0","0","0","2","4101112800","4101118200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"3","2","0","0","0","0",-1,0,"0","0","0","2",4078717200,4078724400,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"4","2","0","0","0","0",-1,0,"0","0","0","2",4078803600,4078810800,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"5","2","0","0","0","0",-1,0,"0","0","0","2","4075020000","4075027200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"6","2","0","0","0","0",-1,0,"0","0","0","3","4099831200","4099834800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"7","2","0","0","0","0",-1,0,"0","0","0","3","4097728800","4097736000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"8","2","0","0","0","0",-1,0,"0","0","0","3","4098333600","4098340800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"9","2","0","0","0","0",-1,0,"0","0","0","3","4098938400","4098945600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"10","2","0","0","0","0",-1,0,"0","0","0","3","4097815200","4097822400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"11","2","0","0","0","0",-1,0,"0","0","0","3","4098420000","4098427200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"12","2","0","0","0","0",-1,0,"0","0","0","3","4099024800","4099032000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"13","2","0","0","0","0",-1,0,"0","0","0","3","4101645600","4101649200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"14","3","0","0","0","0",-1,0,"0","0","0","4","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"15","3","0","0","0","0",-1,0,"0","0","0","5","4101112800","4101118200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"16","3","0","0","0","0",-1,0,"0","0","0","5",4078717200,4078724400,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"17","3","0","0","0","0",-1,0,"0","0","0","5",4078803600,4078810800,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"18","3","0","0","0","0",-1,0,"0","0","0","5","4075020000","4075027200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"19","3","0","0","0","0",-1,0,"0","0","0","6","4099831200","4099834800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"20","3","0","0","0","0",-1,0,"0","0","0","6","4097728800","4097736000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"21","3","0","0","0","0",-1,0,"0","0","0","6","4098333600","4098340800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"22","3","0","0","0","0",-1,0,"0","0","0","6","4098938400","4098945600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"23","3","0","0","0","0",-1,0,"0","0","0","6","4097815200","4097822400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"24","3","0","0","0","0",-1,0,"0","0","0","6","4098420000","4098427200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"25","3","0","0","0","0",-1,0,"0","0","0","6","4099024800","4099032000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"26","3","0","0","0","0",-1,0,"0","0","0","6","4101645600","4101649200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,2,0,0,0,0,0,0,"Kinder",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,2,0,0,0,0,0,0,"Konzerte, Festivals, Show & Tanz",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,2,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,4,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,5,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,6,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,6,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,, +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,, +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,, +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,, +,"4","3","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,, +,"5","3","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,, +,"6","3","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,, +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","images","categories","pages","dates","organizer","partner","region","references_events" +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"1","1",,"1","1",,"1", +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"1","1",,"4","2",,"1", +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"1","2",,"8","3",,"1", +,"4","3","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"1","1",,"1","4",,"1", +,"5","3","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"1","1",,"4","5",,"1", +,"6","3","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"1","2",,"8","6",,"1", +"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,, +,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,, +,"2","2","0","0","0","0",-1,0,"0","0","0","2","4101112800","4101118200","no","0",,,,,,,,,,, +,"3","2","0","0","0","0",-1,0,"0","0","0","2",4078717200,4078724400,"no","0",,,,,,,,,,, +,"4","2","0","0","0","0",-1,0,"0","0","0","2",4078803600,4078810800,"no","0",,,,,,,,,,, +,"5","2","0","0","0","0",-1,0,"0","0","0","2","4075020000","4075027200","no","0",,,,,,,,,,, +,"6","2","0","0","0","0",-1,0,"0","0","0","3","4099831200","4099834800","no","0",,,,,,,,,,, +,"7","2","0","0","0","0",-1,0,"0","0","0","3","4097728800","4097736000","no","0",,,,,,,,,,, +,"8","2","0","0","0","0",-1,0,"0","0","0","3","4098333600","4098340800","no","0",,,,,,,,,,, +,"9","2","0","0","0","0",-1,0,"0","0","0","3","4098938400","4098945600","no","0",,,,,,,,,,, +,"10","2","0","0","0","0",-1,0,"0","0","0","3","4097815200","4097822400","no","0",,,,,,,,,,, +,"11","2","0","0","0","0",-1,0,"0","0","0","3","4098420000","4098427200","no","0",,,,,,,,,,, +,"12","2","0","0","0","0",-1,0,"0","0","0","3","4099024800","4099032000","no","0",,,,,,,,,,, +,"13","2","0","0","0","0",-1,0,"0","0","0","3","4101645600","4101649200","no","0",,,,,,,,,,, +,"14","3","0","0","0","0",-1,0,"0","0","0","4","4101372000","4101377400","no","0",,,,,,,,,,, +,"15","3","0","0","0","0",-1,0,"0","0","0","5","4101112800","4101118200","no","0",,,,,,,,,,, +,"16","3","0","0","0","0",-1,0,"0","0","0","5",4078717200,4078724400,"no","0",,,,,,,,,,, +,"17","3","0","0","0","0",-1,0,"0","0","0","5",4078803600,4078810800,"no","0",,,,,,,,,,, +,"18","3","0","0","0","0",-1,0,"0","0","0","5","4075020000","4075027200","no","0",,,,,,,,,,, +,"19","3","0","0","0","0",-1,0,"0","0","0","6","4099831200","4099834800","no","0",,,,,,,,,,, +,"20","3","0","0","0","0",-1,0,"0","0","0","6","4097728800","4097736000","no","0",,,,,,,,,,, +,"21","3","0","0","0","0",-1,0,"0","0","0","6","4098333600","4098340800","no","0",,,,,,,,,,, +,"22","3","0","0","0","0",-1,0,"0","0","0","6","4098938400","4098945600","no","0",,,,,,,,,,, +,"23","3","0","0","0","0",-1,0,"0","0","0","6","4097815200","4097822400","no","0",,,,,,,,,,, +,"24","3","0","0","0","0",-1,0,"0","0","0","6","4098420000","4098427200","no","0",,,,,,,,,,, +,"25","3","0","0","0","0",-1,0,"0","0","0","6","4099024800","4099032000","no","0",,,,,,,,,,, +,"26","3","0","0","0","0",-1,0,"0","0","0","6","4101645600","4101649200","no","0",,,,,,,,,,, +"sys_category",,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,,,,,,,, +,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,,,,,,,, +,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,,,,,,,, +,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,,,,,,,, +,4,2,0,0,0,0,0,0,"Kinder",0,2,,,,,,,,,,,,,,,, +,5,2,0,0,0,0,0,0,"Konzerte, Festivals, Show & Tanz",0,2,,,,,,,,,,,,,,,, +"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,,,,,,,, +,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,4,2,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,5,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,3,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,3,4,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,4,5,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,5,6,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, +,3,6,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,, diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsExampleAsExpected.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsExampleAsExpected.csv index f0329b6..a50167b 100644 --- a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsExampleAsExpected.csv +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsExampleAsExpected.csv @@ -1,46 +1,51 @@ -"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,, -"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events" +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,,, +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,,, +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,,, +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,,, +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","web","phone","ticket","facebook","youtube","instagram","images","categories","pages","dates","organizer","partner","region","references_events","location","name","street","district","city","zip","country","latitude","longitude" ,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","1",,"1","1",,"1", +Es gilt die 2G-PLUS-Regel.",,"http://www.schillerhaus.rudolstadt.de/",,,,,,"1","1",,"1","1",,"1",,1,,,,,,,, ,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein. Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420 -Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","1",,"4","2",,"1", +Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"http://www.stadtbibliothek-rudolstadt.de/",,,,,,"1","1",,"4","2",,"1",,2,,,,,,,, ,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss. -Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","2",,"8","3",,"1", -"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0",-1,0,"0","0","0","2","4101112800","4101118200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"3","2","0","0","0","0",-1,0,"0","0","0","2",4078717200,4078724400,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"4","2","0","0","0","0",-1,0,"0","0","0","2",4078803600,4078810800,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"5","2","0","0","0","0",-1,0,"0","0","0","2","4075020000","4075027200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"6","2","0","0","0","0",-1,0,"0","0","0","3","4099831200","4099834800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"7","2","0","0","0","0",-1,0,"0","0","0","3","4097728800","4097736000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"8","2","0","0","0","0",-1,0,"0","0","0","3","4098333600","4098340800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"9","2","0","0","0","0",-1,0,"0","0","0","3","4098938400","4098945600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"10","2","0","0","0","0",-1,0,"0","0","0","3","4097815200","4097822400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"11","2","0","0","0","0",-1,0,"0","0","0","3","4098420000","4098427200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"12","2","0","0","0","0",-1,0,"0","0","0","3","4099024800","4099032000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -,"13","2","0","0","0","0",-1,0,"0","0","0","3","4101645600","4101649200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,2,0,0,0,0,0,0,"Kinder",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,2,0,0,0,0,0,0,"Konzerte, Festivals, Show & Tanz",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,2,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Es gilt die 2G-PLUS-Regel.",,,,,,,,"1","2",,"8","3",,"1",,3,,,,,,,, +"tx_events_domain_model_date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","event","start","end","canceled","postponed_date","canceled_link",,,,,,,,,,,,,,,,,,,,,,,,,,, +,"1","2","0","0","0","0",-1,0,"0","0","0","1","4101372000","4101377400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"2","2","0","0","0","0",-1,0,"0","0","0","2","4101112800","4101118200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"3","2","0","0","0","0",-1,0,"0","0","0","2",4078717200,4078724400,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"4","2","0","0","0","0",-1,0,"0","0","0","2",4078803600,4078810800,"no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"5","2","0","0","0","0",-1,0,"0","0","0","2","4075020000","4075027200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"6","2","0","0","0","0",-1,0,"0","0","0","3","4099831200","4099834800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"7","2","0","0","0","0",-1,0,"0","0","0","3","4097728800","4097736000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"8","2","0","0","0","0",-1,0,"0","0","0","3","4098333600","4098340800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"9","2","0","0","0","0",-1,0,"0","0","0","3","4098938400","4098945600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"10","2","0","0","0","0",-1,0,"0","0","0","3","4097815200","4097822400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"11","2","0","0","0","0",-1,0,"0","0","0","3","4098420000","4098427200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"12","2","0","0","0","0",-1,0,"0","0","0","3","4099024800","4099032000","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"13","2","0","0","0","0",-1,0,"0","0","0","3","4101645600","4101649200","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,, +"tx_events_domain_model_location",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","name","street","district","city","zip","country","latitude","longitude","phone",,,,,,,,,,,,,,,,,,,,,,,, +,"1","2","0","0","0","0",-1,0,"0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","50.720971023259","11.335229873657","+ 49 3672 / 486470",,,,,,,,,,,,,,,,,,,,,,,, +,"2","2","0","0","0","0",-1,0,"0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","50.720835175056","11.342568397522","0 36 72 - 48 64 20",,,,,,,,,,,,,,,,,,,,,,,, +,"3","2","0","0","0","0",-1,0,"0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland","50.718688721183","11.327333450317","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,, +"sys_category",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,4,2,0,0,0,0,0,0,"Kinder",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,5,2,0,0,0,0,0,0,"Konzerte, Festivals, Show & Tanz",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,4,2,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,5,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,3,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutCategoryIfNotProvided.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutCategoryIfNotProvided.csv index cd685eb..09c5122 100644 --- a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutCategoryIfNotProvided.csv +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutCategoryIfNotProvided.csv @@ -1,18 +1,10 @@ -"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,, -"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events" -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. -Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) -Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","0",,"1","1",,"1", -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein. -Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420 - -Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","0",,"4","2",,"1", -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss. - -Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","0",,"8","3",,"1", +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email" +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de" +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de" +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",, +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","categories", +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"0", +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"0", +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"0", diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutLocationIfNotProvided.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutLocationIfNotProvided.csv new file mode 100644 index 0000000..9bab3d0 --- /dev/null +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutLocationIfNotProvided.csv @@ -0,0 +1,6 @@ +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email" +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de" +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","region", +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"0", diff --git a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutRegionIfNotProvided.csv b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutRegionIfNotProvided.csv index 472da67..f37493f 100644 --- a/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutRegionIfNotProvided.csv +++ b/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutRegionIfNotProvided.csv @@ -1,31 +1,10 @@ -"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email",,,,,,,,,,,,,,,,,,,,,, -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de",,,,,,,,,,,,,,,,,,,,,, -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",,,,,,,,,,,,,,,,,,,,,,,, -"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","details","price_info","name","street","district","city","zip","country","web","phone","ticket","facebook","youtube","instagram","latitude","longitude","images","categories","pages","dates","organizer","partner","region","references_events" -,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert. -Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke) -Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten. -Es gilt die 2G-PLUS-Regel.",,"Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","Deutschland","http://www.schillerhaus.rudolstadt.de/","+ 49 3672 / 486470",,,,,"50.720971023259","11.335229873657","1","1",,"1","1",,"0", -,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"Die Tüftlerzeit wird dieses Mal ein weihnachtliches Angebot bereithalten. Alle kleinen Tüftler dürfen gespannt sein. -Voranmeldung über: kinderbibliothek@rudolstadt.de oder 03672-486420 - -Bitte beachten Sie die derzeit geltenden Zugangsregeln.",,"Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","Deutschland","http://www.stadtbibliothek-rudolstadt.de/","0 36 72 - 48 64 20",,,,,"50.720835175056","11.342568397522","1","1",,"4","2",,"0", -,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"Immer mittwochs in der Adventszeit spielt Frank Bettenhausen solo und zusammen mit anderen Musikern auf der Steinmeyerorgel aus dem Jahr 1906. Bekannte Adventslieder, barocke und romantische Kompositionen stehen neben besinnlichen Texten von Pfarrer Johannes-Martin Weiss. - -Es gilt die 2G-PLUS-Regel.",,"Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","Deutschland",,"03672 - 48 96 13",,,,,"50.718688721183","11.327333450317","1","2",,"8","3",,"0", -"sys_category",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid","pid","cruser_id","hidden","starttime","endtime","sys_language_uid","l10n_parent","title","items","parent",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,1,2,0,0,0,0,0,0,"Top Category",0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,2,2,0,0,0,0,0,0,"Event Category Parent",0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,2,0,0,0,0,0,0,"Weihnachten",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,2,0,0,0,0,0,0,"Kinder",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,2,0,0,0,0,0,0,"Konzerte, Festivals, Show & Tanz",0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"sys_category_record_mm",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,"uid_local","uid_foreign","tablenames","fieldname",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,1,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,4,2,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,5,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,3,3,"tx_events_domain_model_event","categories",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"tx_events_domain_model_organizer",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","name","street","district","city","zip","phone","web","email" +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Schillerhaus Rudolstadt","Schillerstraße 25",,"Rudolstadt","07407","+ 49 3672 / 486470","http://schillerhaus.rudolstadt.de","schillerhaus@rudolstadt.de" +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Stadtbibliothek Rudolstadt","Schulplatz 13",,"Rudolstadt","07407","0 36 72 - 48 64 20","http://www.stadtbibliothek-rudolstadt.de ","stadtbibliothek@rudolstadt.de" +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Lutherkirche","Caspar-Schulte-Straße",,"Rudolstadt","07407","03672 - 48 96 13",, +"tx_events_domain_model_event",,,,,,,,,,,,,,,,,,,,, +,"uid","pid","cruser_id","deleted","hidden","starttime","endtime","sys_language_uid","l10n_parent","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","title","subtitle","global_id","slug","highlight","teaser","region", +,"1","2","0","0","0","0","0","-1","0","0","0","0","0","Allerlei Weihnachtliches (Heute mit Johannes Geißer)",,"e_100347853","e-100347853","0",,"0", +,"2","2","0","0","0","0","0","-1","0","0","0","0","0","Tüftlerzeit",,"e_100354481","e-100354481","0",,"0", +,"3","2","0","0","0","0","0","-1","0","0","0","0","0","Adventliche Orgelmusik (Orgel: KMD Frank Bettenhausen)",,"e_100350503","e-100350503","0",,"0", diff --git a/Tests/Functional/Import/DestinationDataTest/Fixtures/ResponseWithoutLocation.json b/Tests/Functional/Import/DestinationDataTest/Fixtures/ResponseWithoutLocation.json new file mode 100644 index 0000000..1daf294 --- /dev/null +++ b/Tests/Functional/Import/DestinationDataTest/Fixtures/ResponseWithoutLocation.json @@ -0,0 +1,166 @@ +{ + "status": "OK", + "count": 1, + "overallcount": 50, + "channels": [], + "facetGroups": [], + "items": [ + { + "global_id": "e_100347853", + "id": "100347853", + "title": "Allerlei Weihnachtliches (Heute mit Johannes Geißer)", + "type": "Event", + "categories": [ + "Weihnachten" + ], + "texts": [ + { + "rel": "details", + "type": "text/html", + "value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.
Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)
Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.
Es gilt die 2G-PLUS-Regel. 
" + }, + { + "rel": "details", + "type": "text/plain", + "value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.\nEintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)\nUm Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.\nEs gilt die 2G-PLUS-Regel." + }, + { + "rel": "teaser", + "type": "text/html" + }, + { + "rel": "teaser", + "type": "text/plain" + } + ], + "country": "", + "areas": [ + "Rudolstadt und Umgebung" + ], + "city": "", + "zip": "", + "street": "", + "phone": "", + "fax": "+ 49 3672 / 486475", + "web": "http://www.schillerhaus.rudolstadt.de/", + "email": "schillerhaus@rudolstadt.de", + "author": "support@hubermedia.de", + "geo": { + "main": { + "latitude": null, + "longitude": null + }, + "entry": [], + "attributes": [] + }, + "ratings": [ + { + "type": "eT4", + "value": 40.0 + }, + { + "type": "order", + "value": 99.0001 + } + ], + "cuisine_types": [], + "payment": [], + "media_objects": [ + { + "rel": "venuewebsite", + "url": "http://schillerhaus.rudolstadt.de/", + "latitude": null, + "longitude": null, + "value": "" + } + ], + "keywords": [], + "timeIntervals": [ + { + "weekdays": [], + "start": "2099-12-19T15:00:00+01:00", + "end": "2099-12-19T16:30:00+01:00", + "tz": "Europe/Berlin", + "interval": 1 + } + ], + "kitchenTimeIntervals": [], + "deliveryTimeIntervals": [], + "numbers": [], + "name": "", + "attributes": [ + { + "key": "VO_Id", + "value": "100050775" + }, + { + "key": "VO_CategoryName", + "value": "POI" + }, + { + "key": "VA_Id", + "value": "100050775" + }, + { + "key": "VA_CategoryName", + "value": "POI" + }, + { + "key": "interval_first_match_start", + "value": "2099-12-19T15:00:00+01" + }, + { + "key": "interval_first_match_end", + "value": "2099-12-19T16:30:00+01" + }, + { + "key": "interval_match_count", + "value": "1" + } + ], + "features": [], + "addresses": [ + { + "name": "Städtetourismus in Thüringen e.V.", + "city": "Weimar", + "zip": "99423", + "street": "UNESCO-Platz 1", + "phone": "+49 (3643) 745 314", + "web": "http://www.thueringer-staedte.de", + "email": "verein@thueringer-staedte.de", + "rel": "author" + }, + { + "name": "Städtetourismus in Thüringen\" e.V.", + "web": "http://www.thueringer-staedte.de", + "email": "verein@thueringer-staedte.de", + "rel": "organisation" + }, + { + "name": "Schillerhaus Rudolstadt", + "city": "Rudolstadt", + "zip": "07407", + "street": "Schillerstraße 25", + "phone": "+ 49 3672 / 486470", + "fax": "+ 49 3672 / 486475", + "web": "http://schillerhaus.rudolstadt.de", + "email": "schillerhaus@rudolstadt.de", + "rel": "organizer" + } + ], + "created": "2099-10-31T12:29:00+00:00", + "changed": "2099-12-14T08:29:00+00:00", + "source": { + "url": "http://destination.one/", + "value": "destination.one" + }, + "company": "", + "district": "", + "postoffice": "", + "phone2": "", + "seasons": [], + "subitems": [], + "hyperObjects": [] + } + ] +} diff --git a/Tests/Functional/Import/DestinationDataTest/ImportsWithoutLocationTest.php b/Tests/Functional/Import/DestinationDataTest/ImportsWithoutLocationTest.php new file mode 100644 index 0000000..3afccb3 --- /dev/null +++ b/Tests/Functional/Import/DestinationDataTest/ImportsWithoutLocationTest.php @@ -0,0 +1,54 @@ +getInstancePath() . '/fileadmin/' . $fileImportPathConfiguration; + GeneralUtility::mkdir_deep($fileImportPath); + + $this->setUpConfiguration([ + 'restUrl = https://example.com/some-path/', + 'license = example-license', + 'restType = Event', + 'restLimit = 3', + 'restMode = next_months,12', + 'restTemplate = ET2014A.json', + ]); + + $requests = &$this->setUpResponses([ + new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithoutLocation.json') ?: ''), + ]); + $tester = $this->executeCommand([ + 'storage-pid' => '2', + 'rest-experience' => 'beispielstadt', + 'files-folder' => $fileImportPathConfiguration, + 'region-uid' => '', + ]); + + self::assertSame(0, $tester->getStatusCode()); + self::assertCount( + 0, + $this->getAllRecords('tx_events_domain_model_location'), + 'Added unexpected location.' + ); + $this->assertCSVDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Assertions/ImportsWithoutLocationIfNotProvided.csv'); + self::assertFileEquals( + __DIR__ . '/Assertions/EmptyLogFile.txt', + $this->getInstancePath() . '/typo3temp/var/log/typo3_0493d91d8e.log', + 'Logfile was not empty.' + ); + } +} diff --git a/Tests/Unit/Domain/Model/Event/LocationDataTest.php b/Tests/Unit/Domain/Model/Event/LocationDataTest.php new file mode 100644 index 0000000..ad1ea72 --- /dev/null +++ b/Tests/Unit/Domain/Model/Event/LocationDataTest.php @@ -0,0 +1,375 @@ +_setProperty('name', 'Location Name'); + + self::assertSame( + 'Location Name', + $subject->getName() + ); + } + + /** + * @test + */ + public function returnsLocationStreetFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('street', 'Mußterstraße 24'); + + self::assertSame( + 'Mußterstraße 24', + $subject->getStreet() + ); + } + + /** + * @test + */ + public function returnsLocationDistrictFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('district', 'NRW'); + + self::assertSame( + 'NRW', + $subject->getDistrict() + ); + } + + /** + * @test + */ + public function returnsLocationCityFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('city', 'Weimar'); + + self::assertSame( + 'Weimar', + $subject->getCity() + ); + } + + /** + * @test + */ + public function returnsLocationZipFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('zip', '41367'); + + self::assertSame( + '41367', + $subject->getZip() + ); + } + + /** + * @test + */ + public function returnsLocationCountryFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('country', 'Germany'); + + self::assertSame( + 'Germany', + $subject->getCountry() + ); + } + + /** + * @test + */ + public function returnsLocationPhoneFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('phone', '+49 2161 333 333 333'); + + self::assertSame( + '+49 2161 333 333 333', + $subject->getPhone() + ); + } + + /** + * @test + */ + public function returnsLocationLatitudeFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('latitude', '50.720971023259'); + + self::assertSame( + '50.720971023259', + $subject->getLatitude() + ); + } + + /** + * @test + */ + public function returnsLocationLongitudeFromLegacyProperty(): void + { + $subject = new Event(); + $subject->_setProperty('longitude', '11.335229873657'); + + self::assertSame( + '11.335229873657', + $subject->getLongitude() + ); + } + + /** + * @test + */ + public function returnsLocationNameFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + 'Location Name', + '', + '', + '', + '', + '', + '', + '', + '', + '', + -1 + )); + + self::assertSame( + 'Location Name', + $subject->getName() + ); + } + + /** + * @test + */ + public function returnsLocationStreetFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + 'Mußterstraße 24', + '', + '', + '', + '', + '', + '', + '', + '', + -1 + )); + + self::assertSame( + 'Mußterstraße 24', + $subject->getStreet() + ); + } + + /** + * @test + */ + public function returnsLocationDistrictFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '', + '', + 'NRW', + '', + '', + '', + '', + '', + -1 + )); + + self::assertSame( + 'NRW', + $subject->getDistrict() + ); + } + + /** + * @test + */ + public function returnsLocationCityFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '', + 'Weimar', + '', + '', + '', + '', + '', + '', + -1 + )); + + self::assertSame( + 'Weimar', + $subject->getCity() + ); + } + + /** + * @test + */ + public function returnsLocationZipFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '41367', + '', + '', + '', + '', + '', + '', + '', + -1 + )); + + self::assertSame( + '41367', + $subject->getZip() + ); + } + + /** + * @test + */ + public function returnsLocationCountryFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '', + '', + '', + 'Germany', + '', + '', + '', + '', + -1 + )); + + self::assertSame( + 'Germany', + $subject->getCountry() + ); + } + + /** + * @test + */ + public function returnsLocationPhoneFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '', + '', + '', + '', + '+49 2161 333 333 333', + '', + '', + '', + -1 + )); + + self::assertSame( + '+49 2161 333 333 333', + $subject->getPhone() + ); + } + + /** + * @test + */ + public function returnsLocationLatitudeFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '', + '', + '', + '', + '', + '50.720971023259', + '', + '', + -1 + )); + + self::assertSame( + '50.720971023259', + $subject->getLatitude() + ); + } + + /** + * @test + */ + public function returnsLocationLongitudeFromLocation(): void + { + $subject = new Event(); + $subject->setLocation(new Location( + '', + '', + '', + '', + '', + '', + '', + '', + '11.335229873657', + '', + -1 + )); + + self::assertSame( + '11.335229873657', + $subject->getLongitude() + ); + } +} diff --git a/ext_tables.sql b/ext_tables.sql index e96768d..c7bd3d3 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -31,6 +31,7 @@ CREATE TABLE tx_events_domain_model_event ( pages text, dates int(11) unsigned DEFAULT '0' NOT NULL, organizer int(11) unsigned DEFAULT '0', + location int(11) unsigned DEFAULT '0', partner text, region int(11) unsigned DEFAULT '0', references_events text, @@ -115,3 +116,19 @@ CREATE TABLE tx_events_domain_model_import ( rest_experience varchar(1024) DEFAULT '' NOT NULL, rest_search_query varchar(1024) DEFAULT '' NOT NULL, ); + +CREATE TABLE tx_events_domain_model_location ( + global_id varchar(255) DEFAULT '' NOT NULL, + slug varchar(255) DEFAULT '' NOT NULL, + name varchar(255) DEFAULT '' NOT NULL, + street varchar(255) DEFAULT '' NOT NULL, + city varchar(255) DEFAULT '' NOT NULL, + zip varchar(255) DEFAULT '' NOT NULL, + district varchar(255) DEFAULT '' NOT NULL, + country varchar(255) DEFAULT '' NOT NULL, + phone varchar(255) DEFAULT '' NOT NULL, + latitude varchar(255) DEFAULT '' NOT NULL, + longitude varchar(255) DEFAULT '' NOT NULL, + + KEY global_id (global_id) +);