diff --git a/VERSIONS_HOTLINE/140590 b/VERSIONS_HOTLINE/140590 new file mode 100644 index 0000000000000000000000000000000000000000..ba43eeb2e1611b68ba9505eeadb3bfee253f460a --- /dev/null +++ b/VERSIONS_HOTLINE/140590 @@ -0,0 +1 @@ + - ticket #140590 : Articles : correction de la prise en compte du fuseau horaire lors de l'import d'agenda OpenAgenda en mode horaires multiples \ No newline at end of file diff --git a/library/Class/ExternalAgenda/OpenAgenda.php b/library/Class/ExternalAgenda/OpenAgenda.php index f4584f891f7282f90449c15334656899a64b4e51..3bebd71e9d856beab157a4d4f1c7ee5dcb98a719 100644 --- a/library/Class/ExternalAgenda/OpenAgenda.php +++ b/library/Class/ExternalAgenda/OpenAgenda.php @@ -79,11 +79,16 @@ abstract class EventBuilder_Abstract { .$event->getInfosTag() .$event->getInscriptionsTag()) ->setDescription($event->getImageTag().'<p>'.$event->getString('description').'</p>') - ->setDateMaj($event->getUpdatedAt()) + ->setDateMaj($this->_localizeDateTime($event->getUpdatedAt())) ->setTags(implode(';', $event->getKeywords())) ->setLieu($event->getLocation()) ->setIdOrigine($event->getUid()); } + + + protected function _localizeDateTime($value) { + return date('Y-m-d H:i', strtotime($value)); + } } @@ -103,8 +108,8 @@ class Articles extends EventBuilder_Abstract { protected function _buildArticleForTiming($event, $timing, $open_agenda) { return $this->_buildArticle($event, $open_agenda) ->setIdOrigine($event->getUid($timing['start'])) - ->setEventsDebut(date('Y-m-d H:i', strtotime($timing['start']))) - ->setEventsFin(date('Y-m-d H:i', strtotime($timing['end']))); + ->setEventsDebut($this->_localizeDateTime($timing['start'])) + ->setEventsFin($this->_localizeDateTime($timing['end'])); } } @@ -117,9 +122,9 @@ class Timings extends EventBuilder_Abstract { ->setIdOrigine($event->getUid()); foreach($event->get('timings') as $timing) - $article->addEventTiming((new Class_Article_EventTiming()) - ->setStart($timing['start']) - ->setEnd($timing['end'])); + $article->addEventTiming((new Class_Article_EventTiming) + ->setStart($this->_localizeDateTime($timing['start'])) + ->setEnd($this->_localizeDateTime($timing['end']))); $open_agenda->appendEvent($article); return $this; diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php index a815a5fea87cb2b605529d9db8eafa878263fcb9..366cba091f285dca1e6a0eda4d3119b5e0552aa6 100644 --- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php +++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php @@ -61,11 +61,11 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge /** @test */ public function firstArticleUpdatedAtShouldBe20191126() { - $this->assertEquals('2019-11-26T14:12:06.000Z', Class_Article::find(1)->getDateMaj()); + $this->assertEquals('2019-11-26 15:12', Class_Article::find(1)->getDateMaj()); } - /** @test */ + /** @test */ public function firstArticleImageShouldContainsHTMLAndImage() { $this->assertEquals('<figure><img src="https://cibul.s3.amazonaws.com/9c3729cce33140c5a011056c8168ec5b.base.image.jpg" alt=""/><figcaption>Credits : moi</figcaption></figure><p>Voyons ça dans une session de coding dojo</p><p>Infos pratiques :</p><dl><dt>Conditions</dt><dd>être geek</dd><dt>Âge</dt><dd>de 6 à 99 ans</dd></dl><p>Pour s\'inscrire :</p><dl><dt>Courriel</dt><dd><a href="mailto:llaffont@afi-sa.fr">llaffont@afi-sa.fr</a></dd><dt>Téléphone</dt><dd><a href="tel:0123456789">0123456789</a></dd><dt>Site</dt><dd><a href="https://www.website.org">https://www.website.org</a></dd><dt>Lien</dt><dd><a href="https://registration.website.org/">https://registration.website.org/</a></dd></dl>', Class_Article::find(1)->getContenu()); @@ -81,21 +81,20 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge /** @test */ public function firstArticleShouldHaveThreeTimings() { $this->assertEquals([ - ['start' => '2019-11-25 09:30', - 'end' => '2019-11-25 11:30', + ['start' => '2019-11-25 10:30', + 'end' => '2019-11-25 12:30', 'article_id' => 1, 'id' => 1], - ['start' => '2019-11-29 09:00', - 'end' => '2019-11-29 11:00', + ['start' => '2019-11-29 10:00', + 'end' => '2019-11-29 12:00', 'article_id' => 1, 'id' => 2], - ['start' => '2019-12-01 09:30', - 'end' => '2019-12-01 10:30', + ['start' => '2019-12-01 10:30', + 'end' => '2019-12-01 11:30', 'article_id' => 1, 'id' => 3]], - $this->_dumpArticleTimings(1)); } @@ -105,23 +104,22 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge public function onSecondImportArticleShouldStillHaveThreeTimings() { Class_ExternalAgenda::find(12)->import(); $this->assertEquals([ - ['start' => '2019-11-25 09:30', - 'end' => '2019-11-25 11:30', + ['start' => '2019-11-25 10:30', + 'end' => '2019-11-25 12:30', 'article_id' => 1, 'id' => 9], - ['start' => '2019-11-29 09:00', - 'end' => '2019-11-29 11:00', + ['start' => '2019-11-29 10:00', + 'end' => '2019-11-29 12:00', 'article_id' => 1, 'id' => 10], - ['start' => '2019-12-01 09:30', - 'end' => '2019-12-01 10:30', + ['start' => '2019-12-01 10:30', + 'end' => '2019-12-01 11:30', 'article_id' => 1, - 'id' => 11]], - + 'id' => 11] + ], $this->_dumpArticleTimings(1)); - } @@ -134,16 +132,16 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge /** @test */ public function articleTwoShouldHaveTimingsSameAsOrigine() { $this->assertEquals([ - ['start' => '2019-11-25 10:00', - 'end' => '2019-11-25 10:30', + ['start' => '2019-11-25 11:00', + 'end' => '2019-11-25 11:30', 'article_id' => 2, 'id' => 4], - ['start' => '2019-12-02 10:00', - 'end' => '2019-12-02 10:30', + + ['start' => '2019-12-02 11:00', + 'end' => '2019-12-02 11:30', 'article_id' => 2, 'id' => 5] ], $this->_dumpArticleTimings(2)); - } } diff --git a/tests/scenarios/ExternalAgendas/ExternalAgendasOpenAgendaTest.php b/tests/scenarios/ExternalAgendas/ExternalAgendasOpenAgendaTest.php index b4a9275cf64d9df1dc1792650cb712833c5eaf35..df81548be02d57d01387eefef84a81cbd77c3d76 100644 --- a/tests/scenarios/ExternalAgendas/ExternalAgendasOpenAgendaTest.php +++ b/tests/scenarios/ExternalAgendas/ExternalAgendasOpenAgendaTest.php @@ -76,12 +76,13 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor public function setup() { parent::setup(); Class_ExternalAgenda::find(12)->import(); + Class_Article::clearCache(); } /** @test */ - public function countArticlesShouldBeSixteen() { - $this->assertCount(16, Class_Article::findAll()); + public function countArticlesShouldBeEight() { + $this->assertCount(8, Class_Article::findAll()); } @@ -92,15 +93,15 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor /** @test */ - public function firstArticleDateMajShouldBeEmpty() { - $this->assertEquals('', Class_Article::find(1)->getDateMaj()); + public function firstArticleDateMajShouldBe2019_11_26_15_12() { + $this->assertEquals('2019-11-26 15:12', Class_Article::find(1)->getDateMaj()); } /** @test */ - public function afterSecondImportCountArticlesShouldRemainsSixteen() { + public function afterSecondImportCountArticlesShouldRemainsEight() { Class_ExternalAgenda::find(12)->import(); - $this->assertCount(16, Class_Article::findAll()); + $this->assertCount(8, Class_Article::findAll()); } @@ -115,7 +116,7 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor ] ); Class_ExternalAgenda::find(12)->import(); - $this->assertCount(16, Class_Article::findAll()); + $this->assertCount(8, Class_Article::findAll()); $this->assertNull(Class_Article::find(234)); } @@ -132,7 +133,7 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor ] ); Class_ExternalAgenda::find(12)->import(); - $this->assertCount(17, Class_Article::findAll()); + $this->assertCount(9, Class_Article::findAll()); $this->assertNotNull(Class_Article::find(234)); } @@ -186,7 +187,6 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor } - /** @test */ public function numberOfLocationsShouldBeTwo() { $this->assertCount(2, Class_Lieu::findAll()); @@ -210,7 +210,6 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor } - /** @test */ public function secondLocationShouldBeAFIAnnecy() { $this->assertEquals(['id' => 2, @@ -228,7 +227,6 @@ class ExternalAgendasOpenAgendaImportTest extends ExternalAgendasOpenAgendaImpor } - /** @test */ public function firstArticleImageShouldContainsHTMLAndImage() { $this->assertEquals('<figure><img src="https://cibul.s3.amazonaws.com/9c3729cce33140c5a011056c8168ec5b.base.image.jpg" alt=""/><figcaption>Credits : moi</figcaption></figure><p>Voyons ça dans une session de coding dojo</p><p>Infos pratiques :</p><dl><dt>Conditions</dt><dd>être geek</dd><dt>Âge</dt><dd>de 6 à 99 ans</dd></dl><p>Pour s\'inscrire :</p><dl><dt>Courriel</dt><dd><a href="mailto:llaffont@afi-sa.fr">llaffont@afi-sa.fr</a></dd><dt>Téléphone</dt><dd><a href="tel:0123456789">0123456789</a></dd><dt>Site</dt><dd><a href="https://www.website.org">https://www.website.org</a></dd><dt>Lien</dt><dd><a href="https://registration.website.org/">https://registration.website.org/</a></dd></dl>',