]> dev.renevier.net Git - syj.git/commitdiff
store lang preference in session instead of url
authorarno <arno@renevier.net>
Fri, 18 Mar 2011 15:15:41 +0000 (16:15 +0100)
committerarno <arno@renevier.net>
Sun, 20 Mar 2011 14:46:55 +0000 (15:46 +0100)
application/controllers/helpers/SyjSession.php
application/controllers/plugins/SyjLocale.php
application/forms/Login.php
application/views/helpers/Anchor.php
application/views/helpers/FooterLink.php
application/views/helpers/LocaleSwitcher.php
application/views/helpers/LogoutLink.php
application/views/helpers/UriPath.php [new file with mode: 0644]

index 11c369fb34fa7f5cf85c6fa085ad1f5ca4519316..06949f0c68d44537b6e1b5598b9d50491d8d5884 100644 (file)
@@ -13,29 +13,20 @@ class Syj_Controller_Action_Helper_SyjSession extends Zend_Controller_Action_Hel
             throw new Zend_Exception();
         }
 
-        $storage = Zend_Auth::getInstance()->getStorage();
-        $storage->clear();
-        $storage->write(array('user' => $user->id));
-        Zend_Session::rememberMe(); // zend default expiration delay is 2 weeks. Ok, use that value
+        $storage = new Zend_Session_Namespace('userSettings');
+        $storage->user = $user->id;
+        Zend_Session::rememberMe();
     }
 
     static public function logout() {
-        Zend_Session::start();
-        Zend_Session::destroy();
+        $storage = new Zend_Session_Namespace('userSettings');
+        unset($storage->user);
+        Zend_Session::rememberMe();
     }
 
     static public function user() {
-        try {
-            $sessionStorage = Zend_Auth::getInstance()->getStorage();
-        } catch(Exception $e) {
-            return null;
-        }
-        $sessionData = $sessionStorage->read();
-        if ($sessionStorage->isEmpty()) {
-            return null;
-        }
-
-        $id = $sessionData['user'];
+        $storage = new Zend_Session_Namespace('userSettings');
+        $id = $storage->user;
         if (!isset($id)) {
             return null;
         }
@@ -63,16 +54,9 @@ class Syj_Controller_Action_Helper_SyjSession extends Zend_Controller_Action_Hel
         $view = $viewRenderer->view;
         $request = $this->getRequest();
 
-        $encodeduri = implode('/', array_map('urlencode', explode('/', $request->getRequestUri())));
+        $encodeduri = $view->UriPath(true);
         $loginurl = $view->addParamToUrl($view->baseUrl() . '/' . 'login', 'redirect', $encodeduri);
         $translator = Zend_Registry::get('Zend_Translate');
-        $lang = $request->getQuery('lang');
-        if ($lang) {
-            $adapter = $translator->getAdapter();
-            if ($adapter->isAvailable($lang)) {
-                $loginurl = $view->addParamToUrl($loginurl, 'lang', $lang);
-            }
-        }
         $this->getActionController()->getHelper('Redirector')->gotoURL($loginurl, array('prependBase' => false));
     }
 }
index 19af8ec77e5409e7985f9dca0e260e95699f99ac..52dd4919718437fed82586702fea902a25c6cbb0 100644 (file)
@@ -7,11 +7,14 @@ class Syj_Controllers_Plugins_SyjLocale extends Zend_Controller_Plugin_Abstract
 
     public function preDispatch(Zend_Controller_Request_Abstract $request) {
         $lang = $request->getQuery('lang');
-        if (is_null($lang)) {
-            return;
+
+        if ($lang) {
+            setcookie("syj_lang", $lang, 0, "", "", false, true);
+        } else {
+            $lang = $request->getCookie('syj_lang');
         }
 
-        if (!Zend_Registry::isRegistered('Zend_Translate')) {
+        if (!$lang) {
             return;
         }
 
index b42f8ba0ae6c23de878428dba013f4523cc9363f..ab3a5f6fadd318e7dbff80f7649ce2f3913648b6 100644 (file)
@@ -13,10 +13,7 @@ class Syj_Form_Login extends Syj_Form_TableAbstract
         $this->setMainElements(array($user, $pass))
              ->addElement('Hidden', 'login_geom_id', array( 'decorators' => array('ViewHelper')));
 
-        $currentUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
-        if (strpos($currentUri, '?') !== false) {
-            $currentUri = strstr($currentUri, '?', true);
-        }
+        $currentUri = $this->getView()->UriPath(true);
         $href = $this->getView()->addParamToUrl('newpwd', 'redirect', $currentUri, true);
 
         $anchor = $this->getView()->Anchor($href,
index 55cae33cd7c8b2c877c2355074cb993ef078de67..6cc59bf0d4a391db43f8ff6dedee214d1b178f44 100644 (file)
@@ -5,15 +5,6 @@
 class Syj_View_Helper_Anchor extends Zend_View_Helper_HtmlElement
 {
     public function Anchor($href, $text = null, array $attribs=array(), $escape = true) {
-        $lang = Zend_Controller_Front::getInstance()->getRequest()->getQuery('lang');
-        if ($lang) {
-            $translator = Zend_Registry::get('Zend_Translate');
-            $adapter = $translator->getAdapter();
-            if ($adapter->isAvailable($lang)) {
-                $href = $this->view->addParamToUrl($href, 'lang', $lang);
-            }
-        }
-
         $attribs = array_merge(array('href' => $href), $attribs);
         if (!isset($text)) {
             $text = $href;
index cebae509b396d2fb277749d89d6391423ae56365..0a2a4752a7ad0416ca5ece1aea1fc92ed8b99dc2 100644 (file)
@@ -11,10 +11,7 @@ class Syj_View_Helper_FooterLink extends Zend_View_Helper_Abstract
         } else {
             $href = $page->getHRef();
             if ($redirect) {
-                $currentUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
-                if (($pos = strpos($currentUri, '?')) !== false) {
-                    $currentUri = substr($currentUri, 0, $pos);
-                 }
+                $currentUri = $this->view->UriPath(true);
                 $href = $this->view->addParamToUrl($href, 'redirect', $currentUri, true);
             }
             $link = $this->view->anchor($href, $text, array('class' => 'footer-anchor'));
index cd4e26d3b7cfae54c62dcfd63907ba515decc047..f5b9042f94ee43f7f780eb44c8c0e2896bd68cba 100644 (file)
@@ -9,7 +9,7 @@ class Syj_View_Helper_LocaleSwitcher extends Zend_View_Helper_Abstract
         $availables = $translator->getList();
         $current = $translator->getLocale();
 
-        $requestUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
+        $requestUri = $this->view->UriPath();
 
         $links = array();
         foreach ($availables as $lang) {
index 146276e9d2da6cf7738e4ac732ec869cb701ca50..307c55cd6baf2aaa5be806ed3aaf97107315d477 100644 (file)
@@ -5,8 +5,7 @@
 class Syj_View_Helper_LogoutLink extends Zend_View_Helper_Abstract
 {
     public function logoutLink() {
-        $currentUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
-        $encodeduri = implode('/', array_map('urlencode', explode('/', $currentUri)));
+        $encodeduri = $this->view->UriPath(true);
         $translatedString = $this->view->translate('logout');
         $href = $this->view->addParamToUrl('logout', 'redirect', $encodeduri, true);
         return $this->view->anchor($href, $translatedString, array('id' => 'logout', 'class' => 'menu-item'));
diff --git a/application/views/helpers/UriPath.php b/application/views/helpers/UriPath.php
new file mode 100644 (file)
index 0000000..8d267d5
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/*  This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+    and is published under the AGPL license. */
+
+class Syj_View_Helper_UriPath extends Zend_View_Helper_Abstract
+{
+    public function uriPath($encoded = false) {
+        $uri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
+        if (($pos = strpos($uri, '?')) !== false) {
+            $uri = substr($uri, 0, $pos);
+        }
+        if ($encoded) {
+            $uri = implode('/', array_map('urlencode', explode('/', $uri)));
+        }
+        return $uri;
+    }
+}