diff --git a/_test/tests/inc/pageutils_clean_id.test.php b/_test/tests/inc/pageutils_clean_id.test.php index f67109ba3820220c580e74eb2dff853084de995c..25d0a9f6925398c5371f82403cac1eff1beced30 100644 --- a/_test/tests/inc/pageutils_clean_id.test.php +++ b/_test/tests/inc/pageutils_clean_id.test.php @@ -158,5 +158,15 @@ class init_clean_id_test extends DokuWikiTest { } } + function test_caching_ascii() { + global $conf; + $conf['deaccent'] = 0; + $this->assertEquals('pà ge', cleanID('pà ge',false)); + $this->assertEquals('page', cleanID('pà ge',true)); + + $this->assertEquals('page', cleanID('pagĖ',true)); + $this->assertEquals('pagė', cleanID('pagĖ',false)); + } + } //Setup VIM: ex: et ts=4 : diff --git a/inc/pageutils.php b/inc/pageutils.php index 6498fca4022cbb05e6f0adbd62aacdf4daa919b0..b7e09af5b34951beda2edd02cf16058c0ca77413 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -110,7 +110,7 @@ function cleanID($raw_id,$ascii=false){ $cache = & $cache_cleanid; // check if it's already in the memory cache - if (isset($cache[(string)$raw_id])) { + if (!$ascii && isset($cache[(string)$raw_id])) { return $cache[(string)$raw_id]; } @@ -143,7 +143,7 @@ function cleanID($raw_id,$ascii=false){ $id = preg_replace('#:[:\._\-]+#',':',$id); $id = preg_replace('#[:\._\-]+:#',':',$id); - $cache[(string)$raw_id] = $id; + if (!$ascii) $cache[(string)$raw_id] = $id; return($id); }