diff --git a/config-templates/config.php b/config-templates/config.php index 64818e6254e35f742144f5151a44e9419e0a1530..dc63b94ed3172d6cddccbdef3b0435007e863d24 100644 --- a/config-templates/config.php +++ b/config-templates/config.php @@ -277,6 +277,14 @@ $config = array ( 'language.rtl' => array('ar','dv','fa','ur','he'), 'language.default' => 'en', + /* + * Options to override the default settings for the language cookie + */ + 'language.cookie.name' => 'language', + 'language.cookie.domain' => NULL, + 'language.cookie.path' => '/', + 'language.cookie.lifetime' => (60*60*24*900), + /** * Custom getLanguage function called from SimpleSAML_XHTML_Template::getLanguage(). * Function should return language code of one of the available languages or NULL. diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php index c7db50eb398638b77901f5f0cc8b5c2c38aa8d4f..b58af7e2135e5c8fe3f58b1235ec2ac887e12dea 100644 --- a/lib/SimpleSAML/XHTML/Template.php +++ b/lib/SimpleSAML/XHTML/Template.php @@ -669,9 +669,10 @@ class SimpleSAML_XHTML_Template { public static function getLanguageCookie() { $config = SimpleSAML_Configuration::getInstance(); $availableLanguages = $config->getArray('language.available', array('en')); + $name = $config->getString('language.cookie.name', 'language'); - if (isset($_COOKIE['language'])) { - $language = strtolower((string)$_COOKIE['language']); + if (isset($_COOKIE[$name])) { + $language = strtolower((string)$_COOKIE[$name]); if (in_array($language, $availableLanguages, TRUE)) { return $language; } @@ -696,7 +697,19 @@ class SimpleSAML_XHTML_Template { if (!in_array($language, $availableLanguages, TRUE) || headers_sent()) { return; } - setcookie('language', $language, time()+60*60*24*900, '/'); + + $name = $config->getString('language.cookie.name', 'language'); + $domain = $config->getString('language.cookie.domain', NULL); + $path = $config->getString('language.cookie.path', '/'); + $lifetime = $config->getInteger('language.cookie.lifetime', 60*60*24*900); + + if ($lifetime === 0) { + $expire = 0; + } else { + $expire = time() + $lifetime; + } + + setcookie($name, $language, $expire, $path, $domain); } }