diff options
author | plegall <plg@piwigo.org> | 2011-12-17 22:52:19 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2011-12-17 22:52:19 +0000 |
commit | b581ba81b7f92ce7ce1b9ade1d004f200a828e4e (patch) | |
tree | 44ff31e965dafee24fcc71dee1d52810ef7019e0 /include/functions_html.inc.php | |
parent | b3ce83e9cb53ac9de13463f37645a01bad7ca9da (diff) |
merge r12760 from branch 2.3 to trunk
bug 2502 fixed: better handling of non-latin tags and multilanguage tags on
tags.php with mode letter.
We can't rely on url_name because it always start with "_" when the tag looks
like "[lang...". Instead we compute a str2url on the name, but once it has been
rendered by Extended Description. To avoid useless computations, I have added a
cache on the tag_alpha_compare function. Tested on a 175 tags set, speed is
good.
git-svn-id: http://piwigo.org/svn/trunk@12761 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/functions_html.inc.php')
-rw-r--r-- | include/functions_html.inc.php | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/include/functions_html.inc.php b/include/functions_html.inc.php index e414c1c0c..ce327cc0c 100644 --- a/include/functions_html.inc.php +++ b/include/functions_html.inc.php @@ -294,7 +294,17 @@ function name_compare($a, $b) function tag_alpha_compare($a, $b) { - return strcmp(strtolower($a['url_name']), strtolower($b['url_name'])); + global $page; + + foreach (array($a, $b) as $tag) + { + if (!isset($page[__FUNCTION__.'_cache'][ $tag['name'] ])) + { + $page[__FUNCTION__.'_cache'][ $tag['name'] ] = strtolower(str2url($tag['name'])); + } + } + + return strcmp($page[__FUNCTION__.'_cache'][ $a['name'] ], $page[__FUNCTION__.'_cache'][ $b['name'] ]); } /** |