Mercurial > hg > mgallery
changeset 65:7019d87bc479
Improve/fix language selection support to store language cookie better.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 14 Sep 2016 12:57:28 +0300 |
parents | 9a01e14b27ef |
children | be68b2d06674 |
files | mgallery.php |
diffstat | 1 files changed, 34 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/mgallery.php Tue Sep 13 00:20:20 2016 +0300 +++ b/mgallery.php Wed Sep 14 12:57:28 2016 +0300 @@ -54,12 +54,12 @@ function mgGetLanguageSelector() { - global $pageLang, $pageLanguages; + global $pageLang, $pageLanguages, $galBaseURL; if (isset($pageLanguages) && count($pageLanguages) > 0) { $str = "<div id=\"languages\">"; foreach ($pageLanguages as $id => $lang) - $str .= "<a href=\"?lang=".$id."\">".$lang."</a> "; + $str .= "<a href=\"".$galBaseURL."?from=".urlencode($_SERVER["REQUEST_URI"])."&lang=".$id."\">".$lang."</a> "; return $str."</div>\n"; } else @@ -316,6 +316,38 @@ // +// Check language +// +if (($tmp = stGetRequestItem("lang", FALSE, TRUE)) !== FALSE) +{ + $tmp = strtolower($tmp); + if (array_key_exists($tmp, $pageLanguages)) + { + $pageLang = $tmp; + setcookie("mglang", $tmp, time() + 365*24*60*60); // expire in a year + } +} +else +if (isset($_COOKIE["mglang"])) +{ + $tmp = strtolower($_COOKIE["mglang"]); + if (array_key_exists($tmp, $pageLanguages)) + $pageLang = $tmp; +} + + +// +// Check for "from" redirection +// +if (($from = stGetRequestItem("from", FALSE, TRUE)) !== FALSE && + preg_match("@^[a-z0-9/_.]+\$@i", $from)) +{ + header("Location: ".$from); + exit; +} + + +// // Get gallery settings // mgReadSettings(); @@ -380,27 +412,6 @@ // -// Check language -// -if (($tmp = stGetRequestItem("lang", FALSE, TRUE)) !== FALSE) -{ - $tmp = strtolower($tmp); - if (array_key_exists($tmp, $pageLanguages)) - { - $pageLang = $tmp; - setcookie("mglang", $tmp, time() + 365*24*60*60); // expire in a year - } -} -else -if (isset($_COOKIE["mglang"])) -{ - $tmp = strtolower($_COOKIE["mglang"]); - if (array_key_exists($tmp, $pageLanguages)) - $pageLang = $tmp; -} - - -// // Print page header, etc. // if (($index = array_search($galImage, $galImagesIndex)) !== FALSE)