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"])."&amp;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)