]> dev.renevier.net Git - syj.git/blob - application/controllers/helpers/SyjSession.php
06949f0c68d44537b6e1b5598b9d50491d8d5884
[syj.git] / application / controllers / helpers / SyjSession.php
1 <?php
2 /*  This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
3     and is published under the AGPL license. */
4
5 class Syj_Controller_Action_Helper_SyjSession extends Zend_Controller_Action_Helper_Abstract
6 {
7     protected static $cache = array();
8
9     static public function login($userid) {
10         $userMapper = new Syj_Model_UserMapper();
11         $user = new Syj_Model_User();
12         if (!$userMapper->find($userid, $user)) {
13             throw new Zend_Exception();
14         }
15
16         $storage = new Zend_Session_Namespace('userSettings');
17         $storage->user = $user->id;
18         Zend_Session::rememberMe();
19     }
20
21     static public function logout() {
22         $storage = new Zend_Session_Namespace('userSettings');
23         unset($storage->user);
24         Zend_Session::rememberMe();
25     }
26
27     static public function user() {
28         $storage = new Zend_Session_Namespace('userSettings');
29         $id = $storage->user;
30         if (!isset($id)) {
31             return null;
32         }
33         if (isset (self::$cache[$id])) {
34             return self::$cache[$id];
35         }
36
37         $userMapper = new Syj_Model_UserMapper();
38         $user = new Syj_Model_User();
39         if ($userMapper->find($id, $user)) {
40             self::$cache[$id] = $user;
41             return $user;
42         } else {
43             self::logout();
44             return null;
45         }
46     }
47
48     public function needsLogin() {
49         $user = self::user();
50         if ($user) {
51             return;
52         }
53         $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
54         $view = $viewRenderer->view;
55         $request = $this->getRequest();
56
57         $encodeduri = $view->UriPath(true);
58         $loginurl = $view->addParamToUrl($view->baseUrl() . '/' . 'login', 'redirect', $encodeduri);
59         $translator = Zend_Registry::get('Zend_Translate');
60         $this->getActionController()->getHelper('Redirector')->gotoURL($loginurl, array('prependBase' => false));
61     }
62 }