mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-22 10:36:11 +01:00
Do not enter endless loop while date creation
Entering the continue part would end in an endless loop. We never add anything to $i and therefore would end up here. Existing tests ensure we don't break something. The new test ensures we do not hit endless loop anymore.
This commit is contained in:
parent
58d602c153
commit
fc8c2b3046
4 changed files with 240 additions and 4 deletions
|
@ -141,19 +141,19 @@ class DatesFactory
|
||||||
|
|
||||||
foreach ($date['weekdays'] as $day) {
|
foreach ($date['weekdays'] as $day) {
|
||||||
$i = strtotime($day, $start->getTimestamp());
|
$i = strtotime($day, $start->getTimestamp());
|
||||||
while ($i <= $until->getTimestamp()) {
|
while ($i !== 0 && $i <= $until->getTimestamp()) {
|
||||||
|
$timeStampToUse = (string) $i;
|
||||||
|
$i = strtotime('+1 week', $i);
|
||||||
if ($i < $today) {
|
if ($i < $today) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
yield $this->createDateFromStartAndUntil(
|
yield $this->createDateFromStartAndUntil(
|
||||||
(string) $i,
|
$timeStampToUse,
|
||||||
$start,
|
$start,
|
||||||
$until,
|
$until,
|
||||||
$canceled
|
$canceled
|
||||||
);
|
);
|
||||||
|
|
||||||
$i = strtotime('+1 week', $i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
"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",,"3","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","1656151200","1656172800","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
,"2","2","0","0","0","0",-1,0,"0","0","0","1","1656756000","1656777600","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
,"3","2","0","0","0","0",-1,0,"0","0","0","1","1657360800","1657382400","no","0",,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
|
@ -0,0 +1,170 @@
|
||||||
|
{
|
||||||
|
"status": "OK",
|
||||||
|
"count": 3,
|
||||||
|
"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.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder <a data-cke-saved-href=\"mailto:schillerhaus@rudolstadt.de\" href=\"mailto:schillerhaus@rudolstadt.de\">schillerhaus@rudolstadt.de</a> wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong> <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."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "teaser",
|
||||||
|
"type": "text/html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "teaser",
|
||||||
|
"type": "text/plain"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"country": "Deutschland",
|
||||||
|
"areas": [
|
||||||
|
"Rudolstadt und Umgebung"
|
||||||
|
],
|
||||||
|
"city": "Rudolstadt",
|
||||||
|
"zip": "07407",
|
||||||
|
"street": "Schillerstraße 25",
|
||||||
|
"phone": "+ 49 3672 / 486470",
|
||||||
|
"fax": "+ 49 3672 / 486475",
|
||||||
|
"web": "http://www.schillerhaus.rudolstadt.de/",
|
||||||
|
"email": "schillerhaus@rudolstadt.de",
|
||||||
|
"author": "support@hubermedia.de",
|
||||||
|
"geo": {
|
||||||
|
"main": {
|
||||||
|
"latitude": 50.720971023258805,
|
||||||
|
"longitude": 11.335229873657227
|
||||||
|
},
|
||||||
|
"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": [
|
||||||
|
{
|
||||||
|
"end": "2022-06-15T16:00:00+02:00",
|
||||||
|
"freq": "Weekly",
|
||||||
|
"interval": 1,
|
||||||
|
"repeatUntil": "2022-07-14T16:00:00+02:00",
|
||||||
|
"start": "2022-06-15T10:00:00+02:00",
|
||||||
|
"tz": "Europe/Berlin",
|
||||||
|
"weekdays": [
|
||||||
|
"Saturday"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kitchenTimeIntervals": [],
|
||||||
|
"deliveryTimeIntervals": [],
|
||||||
|
"numbers": [],
|
||||||
|
"name": "Schillerhaus Rudolstadt",
|
||||||
|
"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": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Wrm\Events\Tests\Functional\Import\DestinationDataTest;
|
||||||
|
|
||||||
|
use GuzzleHttp\Psr7\Response;
|
||||||
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||||
|
|
||||||
|
class ImportDoesntEndUpInEndlessDateCreationTest extends AbstractTest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function importsExampleAsExpected(): void
|
||||||
|
{
|
||||||
|
$fileImportPathConfiguration = 'staedte/beispielstadt/events/';
|
||||||
|
$fileImportPath = $this->getInstancePath() . '/fileadmin/' . $fileImportPathConfiguration;
|
||||||
|
GeneralUtility::mkdir_deep($fileImportPath);
|
||||||
|
|
||||||
|
$this->importDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Fixtures/SingleRegion.xml');
|
||||||
|
$this->importDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Fixtures/SingleCategory.xml');
|
||||||
|
$this->setUpConfiguration([
|
||||||
|
'restUrl = https://example.com/some-path/',
|
||||||
|
'license = example-license',
|
||||||
|
'restType = Event',
|
||||||
|
'restLimit = 3',
|
||||||
|
'restMode = next_months,12',
|
||||||
|
'restTemplate = ET2014A.json',
|
||||||
|
'categoriesPid = 2',
|
||||||
|
'categoryParentUid = 2',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$requests = &$this->setUpResponses([
|
||||||
|
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithPotentiellyEndlessDateCreation.json') ?: ''),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$tester = $this->executeCommand([
|
||||||
|
'storage-pid' => '2',
|
||||||
|
'rest-experience' => 'beispielstadt',
|
||||||
|
'files-folder' => $fileImportPathConfiguration,
|
||||||
|
'region-uid' => '1',
|
||||||
|
]);
|
||||||
|
|
||||||
|
self::assertSame(0, $tester->getStatusCode());
|
||||||
|
|
||||||
|
$this->assertCSVDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Assertions/ImportDoesntEndUpInEndlessDateCreationTest.csv');
|
||||||
|
self::assertFileEquals(
|
||||||
|
__DIR__ . '/Assertions/EmptyLogFile.txt',
|
||||||
|
$this->getInstancePath() . '/typo3temp/var/log/typo3_0493d91d8e.log',
|
||||||
|
'Logfile was not empty.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue