From 6281194e7ba4ece218b0a90e17ebae05e906a1a1 Mon Sep 17 00:00:00 2001
From: Andjelko Horvat <comel@vingd.com>
Date: Mon, 19 Dec 2011 13:06:18 +0000
Subject: [PATCH] Lowercase language in get/set functions (issue #463).

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@3001 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/Utilities.php      |  2 +-
 lib/SimpleSAML/XHTML/Template.php | 17 ++++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php
index 78be4eeed..f09580f94 100644
--- a/lib/SimpleSAML/Utilities.php
+++ b/lib/SimpleSAML/Utilities.php
@@ -833,7 +833,7 @@ class SimpleSAML_Utilities {
 			return array();
 		}
 
-		$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+		$languages = explode(',', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
 
 		$ret = array();
 
diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index e9da55d21..49582bbec 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -76,10 +76,13 @@ class SimpleSAML_XHTML_Template {
 	 * 
 	 * @param $language    Language code for the language to set.
 	 */
-	public function setLanguage($language) {
+	public function setLanguage($language, $setLanguageCookie = TRUE) {
+		$language = strtolower($language);
 		if (in_array($language, $this->availableLanguages, TRUE)) {
 			$this->language = $language;
-			SimpleSAML_XHTML_Template::setLanguageCookie($language);
+			if ($setLanguageCookie === TRUE) {
+				SimpleSAML_XHTML_Template::setLanguageCookie($language);
+			}
 		}
 	}
 
@@ -109,7 +112,7 @@ class SimpleSAML_XHTML_Template {
 
 		// Language is provided in a stored COOKIE
 		$languageCookie = SimpleSAML_XHTML_Template::getLanguageCookie();
-		if ($languageCookie !== NULL && in_array($languageCookie, $this->availableLanguages, TRUE)) {
+		if ($languageCookie !== NULL) {
 			$this->language = $languageCookie;
 			return $languageCookie;
 		}
@@ -667,8 +670,11 @@ class SimpleSAML_XHTML_Template {
 		$config = SimpleSAML_Configuration::getInstance();
 		$availableLanguages = $config->getArray('language.available', array('en'));
 
-		if (isset($_COOKIE['language']) && in_array((string)$_COOKIE['language'], $availableLanguages, TRUE)) {
-			return (string)$_COOKIE['language'];
+		if (isset($_COOKIE['language'])) {
+			$language = strtolower((string)$_COOKIE['language']);
+			if (in_array($language, $availableLanguages, TRUE)) {
+				return $language;
+			}
 		}
 
 		return NULL;
@@ -683,6 +689,7 @@ class SimpleSAML_XHTML_Template {
 	public static function setLanguageCookie($language) {
 		assert('is_string($language)');
 
+		$language = strtolower($language);
 		$config = SimpleSAML_Configuration::getInstance();
 		$availableLanguages = $config->getArray('language.available', array('en'));
 
-- 
GitLab