From a575803404eb09132f629c3f78e0f344dc1c920f Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Thu, 21 Jun 2012 15:49:01 -0400
Subject: [PATCH] Updated MobileUrl helper for ZF2.

---
 themes/vufind/root/helpers/MobileUrl.php | 22 ++++++++++------------
 themes/vufind/root/theme.ini             |  1 +
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/themes/vufind/root/helpers/MobileUrl.php b/themes/vufind/root/helpers/MobileUrl.php
index b85cb237db8..bc9d9488b4d 100644
--- a/themes/vufind/root/helpers/MobileUrl.php
+++ b/themes/vufind/root/helpers/MobileUrl.php
@@ -25,6 +25,9 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
+namespace VuFindThemes\Root\Helpers;
+use VuFind\Mobile,
+    Zend\View\Helper\AbstractHelper;
 
 /**
  * Mobile URL view helper
@@ -35,7 +38,7 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
-class VuFind_Theme_Root_Helper_MobileUrl extends Zend_View_Helper_Abstract
+class MobileUrl extends AbstractHelper
 {
     /**
      * Return the mobile version of the current URL if the user is on a mobile device
@@ -43,22 +46,17 @@ class VuFind_Theme_Root_Helper_MobileUrl extends Zend_View_Helper_Abstract
      *
      * @return string
      */
-    public function mobileUrl()
+    public function __invoke()
     {
         // Do nothing special if we're not on a mobile device or no mobile theme is
         // enabled:
-        if (!VF_Mobile::enabled() || !VF_Mobile::detect()) {
+        if (!Mobile::enabled() || !Mobile::detect()) {
             return false;
         }
 
-        // TODO: find a better way to obtain GET parameters without using superglobal
-        // (Zend Framework doesn't seem to offer a simple solution).
-        $newParams = array('ui' => 'mobile');
-        foreach ($_GET as $key => $value) {
-            if ($key != 'ui') {
-                $newParams[$key] = $value;
-            }
-        }
-        return $this->view->url() . '?' . http_build_query($newParams);
+        $urlHelper = $this->getView()->plugin('serverurl');
+        $currentUrl = rtrim($urlHelper(true), '?');
+        $currentUrl .= strstr($currentUrl, '?') ? '&' : '?';
+        return $currentUrl .= 'ui=mobile';
     }
 }
\ No newline at end of file
diff --git a/themes/vufind/root/theme.ini b/themes/vufind/root/theme.ini
index 7b9ba05a3dd..f56efd36e2f 100644
--- a/themes/vufind/root/theme.ini
+++ b/themes/vufind/root/theme.ini
@@ -1,5 +1,6 @@
 extends = false
 
 helper_namespace = "VuFindThemes\Root\Helpers"
+helpers_to_register[] = "MobileUrl"
 helpers_to_register[] = "TransEsc"
 helpers_to_register[] = "Translate"
-- 
GitLab