From bca66646f00d7e32c570dc22ecbaed46395aea4d Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 26 Feb 2003 21:54:35 +0000 Subject: - Performance improvement. Patch by Zbynek. 1) Even when string is not translated, put it in the cache and save a query for each untranslated string. 2) When there is no cache, create one. --- modules/locale.module | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'modules/locale.module') diff --git a/modules/locale.module b/modules/locale.module index 4d82de8b4..d886b16fc 100644 --- a/modules/locale.module +++ b/modules/locale.module @@ -89,7 +89,12 @@ function locale_refresh_cache() { foreach (array_keys($languages) as $locale) { $result = db_query("SELECT string, %s FROM locales", $locale); while ($data = db_fetch_object($result)) { - $t[$data->string] = $data->$locale; + if (empty($data->$locale)) { + $t[$data->string] = $data->string; + } + else { + $t[$data->string] = $data->$locale; + } } cache_set("locale:$locale", serialize($t)); } @@ -266,9 +271,11 @@ function locale($string) { if (!isset($locale_t)) { $cache = cache_get("locale:$locale"); - if ($cache) { - $locale_t = unserialize($cache->data); + if ($cache == 0) { + locale_refresh_cache(); + $cache = cache_get("locale:$locale"); } + $locale_t = unserialize($cache->data); } if ($locale_t[$string] != "") { @@ -278,6 +285,7 @@ function locale($string) { $result = db_query("SELECT lid, $locale FROM locales WHERE string = '%s'", $string); if (!db_fetch_object($result)) { db_query("INSERT INTO locales (string, location) VALUES ('%s', '%s')", $string, request_uri()); + cache_clear_all("locale:$locale"); } } -- cgit v1.2.3