Skip to content
Snippets Groups Projects
Commit 19c4ba57 authored by Andjelko Horvat's avatar Andjelko Horvat
Browse files

lib/SimpleSAML/XHTML/Template.php: available languages check (issue 435).

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2897 44740490-163a-0410-bde0-09ae8108e29a
parent 97285047
Branches
Tags v1.2.4
No related merge requests found
......@@ -18,6 +18,7 @@ class SimpleSAML_XHTML_Template {
private $configuration = null;
private $template = 'default.php';
private $availableLanguages = array('en');
private $language = null;
private $langtext = array();
......@@ -49,6 +50,8 @@ class SimpleSAML_XHTML_Template {
$this->template = $template;
$this->data['baseurlpath'] = $this->configuration->getBaseURL();
$this->availableLanguages = $this->configuration->getArray('language.available', array('en'));
if (isset($_GET['language'])) {
$this->setLanguage($_GET['language']);
......@@ -74,8 +77,10 @@ class SimpleSAML_XHTML_Template {
* @param $language Language code for the language to set.
*/
public function setLanguage($language) {
$this->language = $language;
SimpleSAML_XHTML_Template::setLanguageCookie($language);
if (in_array($language, $this->availableLanguages, TRUE)) {
$this->language = $language;
SimpleSAML_XHTML_Template::setLanguageCookie($language);
}
}
/**
......@@ -94,7 +99,7 @@ class SimpleSAML_XHTML_Template {
// Language is provided in a stored COOKIE
$languageCookie = SimpleSAML_XHTML_Template::getLanguageCookie();
if ($languageCookie !== NULL) {
if ($languageCookie !== NULL && in_array($languageCookie, $this->availableLanguages, TRUE)) {
$this->language = $languageCookie;
return $languageCookie;
}
......@@ -117,7 +122,6 @@ class SimpleSAML_XHTML_Template {
* languages in the header were available.
*/
private function getHTTPLanguage() {
$availableLanguages = $this->configuration->getArray('language.available', array('en'));
$languageScore = SimpleSAML_Utilities::getAcceptLanguage();
/* For now we only use the default language map. We may use a configurable language map
......@@ -136,7 +140,7 @@ class SimpleSAML_XHTML_Template {
$language = $languageMap[$language];
}
if(!in_array($language, $availableLanguages, TRUE)) {
if(!in_array($language, $this->availableLanguages, TRUE)) {
/* Skip this language - we don't have it. */
continue;
}
......@@ -167,10 +171,9 @@ class SimpleSAML_XHTML_Template {
* Returns a list of all available languages.
*/
private function getLanguageList() {
$availableLanguages = $this->configuration->getArray('language.available', array('en'));
$thisLang = $this->getLanguage();
$lang = array();
foreach ($availableLanguages AS $nl) {
foreach ($this->availableLanguages AS $nl) {
$lang[$nl] = ($nl == $thisLang);
}
return $lang;
......@@ -651,11 +654,14 @@ class SimpleSAML_XHTML_Template {
* @return string|NULL The language, or NULL if unset.
*/
public static function getLanguageCookie() {
$config = SimpleSAML_Configuration::getInstance();
$availableLanguages = $config->getArray('language.available', array('en'));
if (!isset($_COOKIE['language'])) {
return NULL;
if (isset($_COOKIE['language']) && in_array((string)$_COOKIE['language'], $availableLanguages, TRUE)) {
return (string)$_COOKIE['language'];
}
return (string)$_COOKIE['language'];
return NULL;
}
......@@ -667,7 +673,10 @@ class SimpleSAML_XHTML_Template {
public static function setLanguageCookie($language) {
assert('is_string($language)');
if (headers_sent()) {
$config = SimpleSAML_Configuration::getInstance();
$availableLanguages = $config->getArray('language.available', array('en'));
if (!in_array($language, $availableLanguages, TRUE) || headers_sent()) {
return;
}
setcookie('language', $language, time()+60*60*24*900, '/');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment