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;
}
$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));
}
}
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;
}
$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,
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;
} 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'));
$availables = $translator->getList();
$current = $translator->getLocale();
- $requestUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
+ $requestUri = $this->view->UriPath();
$links = array();
foreach ($availables as $lang) {
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'));
--- /dev/null
+<?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;
+ }
+}