From 7235fd838959f11920f47c75d6cc388d1ad1c402 Mon Sep 17 00:00:00 2001 From: Laurent Laffont Date: Mon, 23 Mar 2020 13:27:37 +0100 Subject: [PATCH] dev#102397 : Facets : The thesaurii Id cannot take more than 10000 values --- VERSIONS_WIP/102397 | 1 + library/Class/CodifThesaurus.php | 5 +++-- tests/library/Class/CodifThesaurusTest.php | 16 +++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 VERSIONS_WIP/102397 diff --git a/VERSIONS_WIP/102397 b/VERSIONS_WIP/102397 new file mode 100644 index 0000000000..a2d29c45c3 --- /dev/null +++ b/VERSIONS_WIP/102397 @@ -0,0 +1 @@ + - ticket #102397 : Le nombre d'entrées pour les facettes dynamiques peut maintenant aller jusqu'à 1 679 615 (au lieu de 9 999 auparavant). \ No newline at end of file diff --git a/library/Class/CodifThesaurus.php b/library/Class/CodifThesaurus.php index 9488d3245a..6e1d9b36c6 100644 --- a/library/Class/CodifThesaurus.php +++ b/library/Class/CodifThesaurus.php @@ -243,9 +243,10 @@ class CodifThesaurusLoader extends Storm_Model_Loader { public function incrementId($id) { - $last=substr($id,strlen($id)-4); + $last=base_convert(substr($id,strlen($id)-4), 36, 10); $first_part=substr($id,0,strlen($id)-4); $last++; + $last = strtoupper(base_convert($last, 10, 36)); return $first_part.$this->getCodeSur4Chiffres($last,true); } @@ -731,7 +732,7 @@ class Class_CodifThesaurus extends Storm_Model_Abstract { $this->checkAttribute('id_thesaurus', $my_key != $empty_key, $this->_('Nombre maximum d\'élément à ce niveau déjà atteint (%s)', - str_repeat('9', self::ID_KEY_LENGTH))); + str_repeat('Z', self::ID_KEY_LENGTH))); } diff --git a/tests/library/Class/CodifThesaurusTest.php b/tests/library/Class/CodifThesaurusTest.php index 9cb92269d4..8957f4d7e1 100644 --- a/tests/library/Class/CodifThesaurusTest.php +++ b/tests/library/Class/CodifThesaurusTest.php @@ -58,14 +58,20 @@ class CodifThesaurusCommonTest extends ModelTestCase { /** @test */ - public function incrementYYYY0001ShouldReturnYYYY0002() { - $this->assertEquals('YYYY1000', Class_CodifThesaurus::incrementId('YYYY0999')); + public function incrementYYYY0999ShouldReturnYYYY099A() { + $this->assertEquals('YYYY099A', Class_CodifThesaurus::incrementId('YYYY0999')); } /** @test */ public function incrementYYYY00ZZShouldReturnYYYY0100() { - $this->assertEquals('YYYY01AA', Class_CodifThesaurus::incrementId('YYYY00ZZ')); + $this->assertEquals('YYYY0100', Class_CodifThesaurus::incrementId('YYYY00ZZ')); + } + + + /** @test */ + public function incrementYYYY0009ShouldReturnYYYY000A() { + $this->assertEquals('YYYY000A', Class_CodifThesaurus::incrementId('YYYY0009')); } @@ -203,7 +209,7 @@ class CodifThesaurusTooManyValuesTest extends ModelTestCase { 'rules' => null]); $this->fixture('Class_CodifThesaurus', - ['id_thesaurus' => 'TEST9999', + ['id_thesaurus' => 'TESTZZZZ', 'id_origine' => 'RIME', 'libelle' => 'rime', 'code' => 'TEST', @@ -215,7 +221,7 @@ class CodifThesaurusTooManyValuesTest extends ModelTestCase { /** @test */ - public function shouldNotInsertMoreThan9999Child() { + public function shouldNotInsertMoreThanZZZZChild() { Class_CodifThesaurus::find(723) ->getOrCreateChild(strtoupper('métiers de la recherche'), 'métiers de la recherche'); -- 2.18.1