From 877e78510fb547fcfca1f7c83e51dcfbb08a3b01 Mon Sep 17 00:00:00 2001 From: Ivan Tcholakov Date: Thu, 1 Oct 2009 18:35:10 +0300 Subject: [PATCH] Feature #306 - Adding a sanity check in api_get_language_isocode() for Database class presense (whether it is loaded). --- main/inc/lib/internationalization.lib.php | 7 ++++--- main/inc/lib/internationalization_internal.lib.php | 12 ++---------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/main/inc/lib/internationalization.lib.php b/main/inc/lib/internationalization.lib.php index 4a3e28127a..9bf3227597 100755 --- a/main/inc/lib/internationalization.lib.php +++ b/main/inc/lib/internationalization.lib.php @@ -267,7 +267,6 @@ function api_purify_language_id($language) { return $purified[$language]; } -// TODO: To be added a sanity check whether Database class has been loaded. /** * Gets language isocode column from the language table, taking the current language as a query parameter. * @param string $language This is the name of the folder containing translations for the corresponding language (e.g arabic, english). @@ -285,8 +284,10 @@ function api_get_language_isocode($language = null) { $language = api_get_interface_language(); } if (!isset($iso_code[$language])) { - $table = Database::get_main_table(TABLE_MAIN_LANGUAGE); - $sql_result = Database::query("SELECT isocode FROM $table WHERE dokeos_folder = '$language'", __FILE__, __LINE__); + if (!class_exists('Database')) { + return 'en'; // This might happen, in case of calling this function early during the global initialization. + } + $sql_result = Database::query("SELECT isocode FROM ".Database::get_main_table(TABLE_MAIN_LANGUAGE)." WHERE dokeos_folder = '$language'", __FILE__, __LINE__); if (Database::num_rows($sql_result)) { $result = Database::fetch_array($sql_result); $iso_code[$language] = $result['isocode']; diff --git a/main/inc/lib/internationalization_internal.lib.php b/main/inc/lib/internationalization_internal.lib.php index 1b77c88229..8dcb023e53 100755 --- a/main/inc/lib/internationalization_internal.lib.php +++ b/main/inc/lib/internationalization_internal.lib.php @@ -806,16 +806,8 @@ function _api_get_locale_from_language($language = null) { $language = api_get_interface_language(); } if (!isset($locale[$language])) { - if (class_exists('Database')) { - $locale[$language] = Database::get_language_isocode($language); - } else { - return 'en'; - } - if (empty($locale[$language])) { - $locale[$language] = 'en'; - } else { - $locale[$language] = str_replace('-', '_', $locale[$language]); - } + $locale[$language] = api_get_language_isocode($language); + $locale[$language] = empty($locale[$language]) ? 'en' : str_replace('-', '_', $locale[$language]); } return $locale[$language]; }