Support import of HTML variant for detail text (#65)

Provide a new option within configurations to turn on import of HTML
from destination.one for detail text of each event.

Resolves: #10629
This commit is contained in:
Daniel Siepmann 2024-08-20 08:58:31 +02:00 committed by GitHub
parent 39dfc0b42a
commit 2d6c13e199
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 648 additions and 9 deletions

View file

@ -6,6 +6,7 @@ namespace WerkraumMedia\Events\Domain\Model;
use TYPO3\CMS\Core\Resource\Folder;
use TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject;
use WerkraumMedia\Events\Domain\Model\Import\Features;
/**
* Actual request to import.
@ -26,7 +27,8 @@ class Import extends AbstractDomainObject
protected ?Category $categoryParent = null,
int $featuresPid = 0,
protected ?Category $featuresParent = null,
protected ?Region $region = null
protected ?Region $region = null,
protected int $importFeatures = 0,
) {
// Do not allow categories on pid 0
if ($categoriesPid === 0) {
@ -85,4 +87,9 @@ class Import extends AbstractDomainObject
{
return $this->restSearchQuery;
}
public function getFeatures(): Features
{
return new Features($this->importFeatures);
}
}

View file

@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
/*
* Copyright (C) 2024 Daniel Siepmann <coding@daniel-siepmann.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
namespace WerkraumMedia\Events\Domain\Model\Import;
use TYPO3\CMS\Core\Type\BitSet;
final class Features extends BitSet
{
public const HTML_FOR_DETAIL = 0b1;
public function hasHtmlForDetailEnabled(): bool
{
return $this->get(self::HTML_FOR_DETAIL);
}
}

View file

@ -356,25 +356,58 @@ final class DestinationDataImportService
private function setTexts(array $texts): void
{
$shouldSetPrice = true;
$detailText = '';
foreach ($texts as $text) {
if (isset($text['value']) === false) {
if (
isset($text['value']) === false
|| is_string($text['value']) === false
) {
continue;
}
if ($text['rel'] == 'details' && $text['type'] == 'text/plain') {
$this->tmpCurrentEvent->setDetails(str_replace("\n\n", "\n", (string)$text['value']));
$value = str_replace("\n\n", "\n", $text['value']);
if (
$text['rel'] == 'details'
&& $text['type'] == 'text/html'
&& $this->import->getFeatures()->hasHtmlForDetailEnabled()
&& $value
) {
$detailText = $value;
continue;
}
if (
$text['rel'] == 'details'
&& $text['type'] == 'text/plain'
&& (
$this->import->getFeatures()->hasHtmlForDetailEnabled() === false
|| $detailText === ''
)
) {
$detailText = $value;
continue;
}
if ($text['rel'] == 'teaser' && $text['type'] == 'text/plain') {
$this->tmpCurrentEvent->setTeaser(str_replace("\n\n", "\n", (string)$text['value']));
$this->tmpCurrentEvent->setTeaser($value);
continue;
}
if ($shouldSetPrice && $text['rel'] == 'PRICE_INFO_EXTRA' && $text['type'] == 'text/plain') {
$shouldSetPrice = false;
$this->tmpCurrentEvent->setPriceInfo(str_replace("\n\n", "\n", (string)$text['value']));
$this->tmpCurrentEvent->setPriceInfo($value);
continue;
}
if ($shouldSetPrice && $text['rel'] == 'PRICE_INFO' && $text['type'] == 'text/plain') {
$this->tmpCurrentEvent->setPriceInfo(str_replace("\n\n", "\n", (string)$text['value']));
$this->tmpCurrentEvent->setPriceInfo($value);
continue;
}
}
$this->tmpCurrentEvent->setDetails($detailText);
}
private function getOrCreateEvent(string $globalId, string $title): Event

View file

@ -19,7 +19,20 @@ return [
],
'types' => [
'1' => [
'showitem' => 'title, hidden, --div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.typo3, --palette--;;typo3_storage, --palette--;;categories, --palette--;;features,--palette--;;relations, --div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.rest, rest_experience, rest_search_query',
'showitem' => implode(',', [
'title',
'hidden',
'--div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.typo3',
'--palette--;;typo3_storage',
'--palette--;;categories',
'--palette--;;features',
'-palette--;;relations',
'--div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.rest',
'rest_experience',
'rest_search_query',
'--div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.import',
'import_features',
]),
],
],
'palettes' => [
@ -169,5 +182,20 @@ return [
'max' => 255,
],
],
'import_features' => [
'exclude' => true,
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.import_features',
'description' => 'LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.import_features.description',
'config' => [
'type' => 'check',
'cols' => 'inline',
'default' => '0',
'items' => [
[
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.import_features.html_for_detail',
],
],
],
],
],
];

View file

@ -0,0 +1,33 @@
4.2.0
=====
Breaking
--------
Nothing
Features
--------
* Support HTML for detail text of events when importing data from destination.one.
This can be enabled within the import configuration. That way one can restrict the
HTML import to certain import configurations.
Ensure to adjust the templates when turning on the feature.
Either use `f:format.html` or `f:sanitize.html` as content might be unsafe.
Fixes
-----
Nothing
Tasks
-----
Nothing
Deprecation
-----------
Nothing

View file

@ -12,6 +12,9 @@
<trans-unit id="tx_events_domain_model_import.div.rest">
<source>REST</source>
</trans-unit>
<trans-unit id="tx_events_domain_model_import.div.import">
<source>Import</source>
</trans-unit>
<trans-unit id="tx_events_domain_model_import.palette.relations">
<source>Relations</source>
</trans-unit>
@ -81,6 +84,15 @@
<trans-unit id="tx_events_domain_model_import.rest_search_query.description">
<source>See: https://developer.et4.de/reference/current/#eT4META-search-param-q.html (todo check, was not loadable)</source>
</trans-unit>
<trans-unit id="tx_events_domain_model_import.import_features">
<source>Import Features</source>
</trans-unit>
<trans-unit id="tx_events_domain_model_import.import_features.description">
<source>Enable certain features related to the import.</source>
</trans-unit>
<trans-unit id="tx_events_domain_model_import.import_features.html_for_detail">
<source>HTML for Event Details</source>
</trans-unit>
</body>
</file>
</xliff>

View file

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
return [
'tx_events_domain_model_event' => [
0 => [
'uid' => '1',
'global_id' => 'e_100354481',
'details' => '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.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder&nbsp;<a data-cke-saved-href="mailto:schillerhaus@rudolstadt.de" href="mailto:schillerhaus@rudolstadt.de">schillerhaus@rudolstadt.de</a>&nbsp;wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong>&nbsp;<br>',
],
],
];

View file

@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
return [
'tx_events_domain_model_event' => [
0 => [
'uid' => '1',
'global_id' => 'e_100354481',
'details' => implode("\n", [
'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.',
]),
],
],
];

View file

@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
return [
'tx_events_domain_model_event' => [
0 => [
'uid' => '1',
'global_id' => 'e_100354481',
'details' => implode("\n", [
'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.',
]),
],
],
];

View file

@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
return [
'tx_events_domain_model_import' => [
[
'uid' => '1',
'pid' => '2',
'title' => 'Example import configuration',
'storage_pid' => '2',
'files_folder' => '1:/staedte/beispielstadt/events/',
'region' => '1',
'rest_experience' => 'beispielstadt',
'import_features' => '1',
],
],
];

View file

@ -0,0 +1,84 @@
{
"status": "OK",
"count": 1,
"overallcount": 50,
"channels": [],
"facetGroups": [],
"items": [
{
"global_id": "e_100354481",
"id": "100354481",
"type": "Event",
"country": "Deutschland",
"areas": [
"Rudolstadt und Umgebung"
],
"city": "Rudolstadt",
"zip": "07407",
"street": "Schulplatz 13",
"phone": "0 36 72 - 48 64 20",
"fax": "0 36 72 - 48 64 30",
"web": "http://www.stadtbibliothek-rudolstadt.de/",
"email": "stadtbibliothek@rudolstadt.de",
"author": "support@hubermedia.de",
"cuisine_types": [],
"payment": [],
"keywords": [],
"timeIntervals": [
{
"weekdays": [],
"start": "2022-07-13T15:00:00+02:00",
"end": "2022-07-13T16:30:00+02:00",
"tz": "Europe/Berlin",
"interval": 1
}
],
"numbers": [],
"name": "Stadtbibliothek Rudolstadt",
"attributes": [
],
"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"
}
],
"created": "2099-11-10T23:02:00+00:00",
"changed": "2099-12-14T08:28:00+00:00",
"source": {
"url": "http://destination.one/",
"value": "destination.one"
},
"company": "",
"district": "",
"postoffice": "",
"phone2": "",
"seasons": [],
"subitems": [],
"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.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder&nbsp;<a data-cke-saved-href=\"mailto:schillerhaus@rudolstadt.de\" href=\"mailto:schillerhaus@rudolstadt.de\">schillerhaus@rudolstadt.de</a>&nbsp;wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong>&nbsp;<br>"
},
{
"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."
}
],
"title": "Kurzf\u00fchrung - Historische Altstadt",
"type": "Event",
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
"zip": "99084"
}
]
}

View file

@ -0,0 +1,84 @@
{
"status": "OK",
"count": 1,
"overallcount": 50,
"channels": [],
"facetGroups": [],
"items": [
{
"global_id": "e_100354481",
"id": "100354481",
"type": "Event",
"country": "Deutschland",
"areas": [
"Rudolstadt und Umgebung"
],
"city": "Rudolstadt",
"zip": "07407",
"street": "Schulplatz 13",
"phone": "0 36 72 - 48 64 20",
"fax": "0 36 72 - 48 64 30",
"web": "http://www.stadtbibliothek-rudolstadt.de/",
"email": "stadtbibliothek@rudolstadt.de",
"author": "support@hubermedia.de",
"cuisine_types": [],
"payment": [],
"keywords": [],
"timeIntervals": [
{
"weekdays": [],
"start": "2022-07-13T15:00:00+02:00",
"end": "2022-07-13T16:30:00+02:00",
"tz": "Europe/Berlin",
"interval": 1
}
],
"numbers": [],
"name": "Stadtbibliothek Rudolstadt",
"attributes": [
],
"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"
}
],
"created": "2099-11-10T23:02:00+00:00",
"changed": "2099-12-14T08:28:00+00:00",
"source": {
"url": "http://destination.one/",
"value": "destination.one"
},
"company": "",
"district": "",
"postoffice": "",
"phone2": "",
"seasons": [],
"subitems": [],
"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.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder&nbsp;<a data-cke-saved-href=\"mailto:schillerhaus@rudolstadt.de\" href=\"mailto:schillerhaus@rudolstadt.de\">schillerhaus@rudolstadt.de</a>&nbsp;wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong>&nbsp;<br>"
},
{
"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."
}
],
"title": "Kurzf\u00fchrung - Historische Altstadt",
"type": "Event",
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
"zip": "99084"
}
]
}

View file

@ -0,0 +1,84 @@
{
"status": "OK",
"count": 1,
"overallcount": 50,
"channels": [],
"facetGroups": [],
"items": [
{
"global_id": "e_100354481",
"id": "100354481",
"type": "Event",
"country": "Deutschland",
"areas": [
"Rudolstadt und Umgebung"
],
"city": "Rudolstadt",
"zip": "07407",
"street": "Schulplatz 13",
"phone": "0 36 72 - 48 64 20",
"fax": "0 36 72 - 48 64 30",
"web": "http://www.stadtbibliothek-rudolstadt.de/",
"email": "stadtbibliothek@rudolstadt.de",
"author": "support@hubermedia.de",
"cuisine_types": [],
"payment": [],
"keywords": [],
"timeIntervals": [
{
"weekdays": [],
"start": "2022-07-13T15:00:00+02:00",
"end": "2022-07-13T16:30:00+02:00",
"tz": "Europe/Berlin",
"interval": 1
}
],
"numbers": [],
"name": "Stadtbibliothek Rudolstadt",
"attributes": [
],
"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"
}
],
"created": "2099-11-10T23:02:00+00:00",
"changed": "2099-12-14T08:28:00+00:00",
"source": {
"url": "http://destination.one/",
"value": "destination.one"
},
"company": "",
"district": "",
"postoffice": "",
"phone2": "",
"seasons": [],
"subitems": [],
"texts": [
{
"rel": "details",
"type": "text/html",
"value": ""
},
{
"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."
}
],
"title": "Kurzf\u00fchrung - Historische Altstadt",
"type": "Event",
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
"zip": "99084"
}
]
}

View file

@ -0,0 +1,79 @@
{
"status": "OK",
"count": 1,
"overallcount": 50,
"channels": [],
"facetGroups": [],
"items": [
{
"global_id": "e_100354481",
"id": "100354481",
"type": "Event",
"country": "Deutschland",
"areas": [
"Rudolstadt und Umgebung"
],
"city": "Rudolstadt",
"zip": "07407",
"street": "Schulplatz 13",
"phone": "0 36 72 - 48 64 20",
"fax": "0 36 72 - 48 64 30",
"web": "http://www.stadtbibliothek-rudolstadt.de/",
"email": "stadtbibliothek@rudolstadt.de",
"author": "support@hubermedia.de",
"cuisine_types": [],
"payment": [],
"keywords": [],
"timeIntervals": [
{
"weekdays": [],
"start": "2022-07-13T15:00:00+02:00",
"end": "2022-07-13T16:30:00+02:00",
"tz": "Europe/Berlin",
"interval": 1
}
],
"numbers": [],
"name": "Stadtbibliothek Rudolstadt",
"attributes": [
],
"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"
}
],
"created": "2099-11-10T23:02:00+00:00",
"changed": "2099-12-14T08:28:00+00:00",
"source": {
"url": "http://destination.one/",
"value": "destination.one"
},
"company": "",
"district": "",
"postoffice": "",
"phone2": "",
"seasons": [],
"subitems": [],
"texts": [
{
"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."
}
],
"title": "Kurzf\u00fchrung - Historische Altstadt",
"type": "Event",
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
"zip": "99084"
}
]
}

View file

@ -0,0 +1,90 @@
<?php
declare(strict_types=1);
namespace WerkraumMedia\Events\Tests\Functional\Import\DestinationDataTest;
use GuzzleHttp\Psr7\Response;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\Attributes\TestDox;
#[TestDox('DestinationData import')]
class ImportsTextsTest extends AbstractTestCase
{
protected function setUp(): void
{
parent::setUp();
$this->setUpConfiguration([
'restUrl = https://example.com/some-path/',
'license = example-license',
'restType = Event',
'restLimit = 3',
'restMode = next_months,12',
'restTemplate = ET2014A.json',
]);
}
protected function tearDown(): void
{
$this->assertEmptyLog();
parent::tearDown();
}
#[Test]
public function importsPlainTextIfConfigured(): void
{
$this->importPHPDataSet(__DIR__ . '/Fixtures/Database/DefaultImportConfiguration.php');
$requests = &$this->setUpResponses([
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithPlainTextTexts.json') ?: ''),
]);
$tester = $this->executeCommand();
self::assertSame(0, $tester->getStatusCode());
$this->assertPHPDataSet(__DIR__ . '/Assertions/ImportsPlainTextIfConfigured.php');
}
#[Test]
public function importsHtmlTextIfConfiguredAndAvailable(): void
{
$this->importPHPDataSet(__DIR__ . '/Fixtures/Database/ImportConfigurationWithHtml.php');
$requests = &$this->setUpResponses([
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithHtmlTextTexts.json') ?: ''),
]);
$tester = $this->executeCommand();
self::assertSame(0, $tester->getStatusCode());
$this->assertPHPDataSet(__DIR__ . '/Assertions/ImportsHtmlTextIfConfigured.php');
}
#[Test]
#[DataProvider('responseWithoutHtml')]
public function importsPlainTextIfHtmlIsConfiguredButUnavailable(
string $responseName
): void {
$this->importPHPDataSet(__DIR__ . '/Fixtures/Database/ImportConfigurationWithHtml.php');
$requests = &$this->setUpResponses([
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithoutHtmlTextTextsDueTo' . $responseName . '.json') ?: ''),
]);
$tester = $this->executeCommand();
self::assertSame(0, $tester->getStatusCode());
$this->assertPHPDataSet(__DIR__ . '/Assertions/ImportsPlainTextIfHtmlIsConfiguredButUnavailable.php');
}
public static function responseWithoutHtml(): iterable
{
yield 'Missing type text/html' => [
'responseName' => 'MissingType',
];
yield 'Empty type text/html' => [
'responseName' => 'EmptyType',
];
}
}

View file

@ -9,7 +9,7 @@ $EM_CONF['events'] = [
'author' => 'Dirk Koritnik, Daniel Siepmann',
'author_email' => 'koritnik@werkraum-media.de, coding@daniel-siepmann.de',
'state' => 'stable',
'version' => '4.1.0',
'version' => '4.2.0',
'constraints' => [
'depends' => [
'typo3' => '',

View file

@ -85,6 +85,8 @@ CREATE TABLE tx_events_domain_model_import (
rest_experience varchar(1024) DEFAULT '' NOT NULL,
rest_search_query varchar(1024) DEFAULT '' NOT NULL,
import_features tinyint(4) DEFAULT '0' NOT NULL,
);
CREATE TABLE tx_events_domain_model_location (