diff --git a/VERSIONS_HOTLINE/64143 b/VERSIONS_HOTLINE/64143 new file mode 100644 index 0000000000000000000000000000000000000000..ccc1f97805455c02528add948b591c5931da62ef --- /dev/null +++ b/VERSIONS_HOTLINE/64143 @@ -0,0 +1,2 @@ + - ticket #64143 : Administration : amélioration de la génération du cache des fichiers de CSS et JS. + \ No newline at end of file diff --git a/application/modules/admin/controllers/IndexController.php b/application/modules/admin/controllers/IndexController.php index 097e911876aa724308ad579c30e6cd7ea2830ad0..e1ff46101d805ceef360ecab3298cbee535cae8f 100644 --- a/application/modules/admin/controllers/IndexController.php +++ b/application/modules/admin/controllers/IndexController.php @@ -127,8 +127,9 @@ class Admin_IndexController extends ZendAfi_Controller_Action { public function clearcacheAction() { (new Storm_Cache())->clean(); - Class_AdminVar::set('CACHE_DATE', (new Class_TimeSource())->dateFormat('Y-m-d H:i:s')); - Class_ScriptLoader::getInstance()->resetCacheHash(); + $scriptloader = Class_ScriptLoader::getInstance(); + Class_AdminVar::set('CACHE_DATE', $scriptloader->getDate()); + $scriptloader->resetCacheHash(); $this->_helper->notify($this->_('Le cache de Bokeh a été vidé')); $this->_redirectToReferer(); } diff --git a/library/Class/ScriptLoader.php b/library/Class/ScriptLoader.php index 2ce013d371acf4f33e3344c530a5ccb17fb065c9..92a1901fe6ded261762db6c079d979ba24111d42 100644 --- a/library/Class/ScriptLoader.php +++ b/library/Class/ScriptLoader.php @@ -21,7 +21,9 @@ class Class_ScriptLoader { - use Trait_Translator; + use + Trait_Translator, + Trait_TimeSource; const MODE_JQUERY_READY = 0, @@ -731,7 +733,7 @@ class Class_ScriptLoader { public function resetCacheHash() { - return $this->_version_pergame_hash = md5(BOKEH_MAJOR_VERSION . Class_AdminVar::get('CACHE_DATE')); + return $this->_version_pergame_hash = md5(BOKEH_MAJOR_VERSION . BOKEH_RELEASE_NUMBER . Class_AdminVar::get('CACHE_DATE')); } @@ -846,4 +848,9 @@ class Class_ScriptLoader { return $this; } + + + public function getDate() { + return date('Y-m-d H:i:s', static::getTimeSource()->time()); + } } diff --git a/tests/application/modules/admin/controllers/IndexControllerTest.php b/tests/application/modules/admin/controllers/IndexControllerTest.php index bbfdbb458a7d5a02172ea68d21e947074b6f76c2..8951deba852f3f799e3994f7bc88f33ece228b04 100644 --- a/tests/application/modules/admin/controllers/IndexControllerTest.php +++ b/tests/application/modules/admin/controllers/IndexControllerTest.php @@ -268,7 +268,16 @@ class Admin_IndexControllerClearCacheActionTest extends Admin_IndexControllerTes public function setUp() { parent::setUp(); Storm_Cache::beVolatile(); - $this->_cache_version = Class_ScriptLoader::getInstance()->getCacheHash(); + + $this->fixture('Class_AdminVar', + ['id' => 'CACHE_DATE', + 'valeur' => '2017-08-30 10:00:00']); + + $scriptloadder = Class_ScriptLoader::getInstance(); + $scriptloadder->setTimeSource(new TimeSourceForTest('2017-08-31 11:00:00')); + + $this->_cache_version = $scriptloadder->getCacheHash(); + $this->dispatch('/admin/index/clearcache', true); } @@ -283,6 +292,13 @@ class Admin_IndexControllerClearCacheActionTest extends Admin_IndexControllerTes public function cacheVersionShouldHaveChange() { $this->assertNotEquals($this->_cache_version, Class_ScriptLoader::getInstance()->getCacheHash()); } + + + /** @test */ + public function cacheVersionShouldContainsMajorAndMinorVersionAndTime() { + $this->assertEquals(md5(BOKEH_MAJOR_VERSION . BOKEH_RELEASE_NUMBER . Class_AdminVar::get('CACHE_DATE')), + Class_ScriptLoader::getInstance()->getCacheHash()); + } }