<?php
/***************************************************************************
- * Copyright (C) 2003-2006 Polytechnique.org *
+ * Copyright (C) 2003-2007 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-require_once 'diogenes/diogenes.misc.inc.php';
-
class Session
{
- function init()
+ public static function init()
{
@session_start();
if (empty($_SESSION['challenge'])) {
$_SESSION['challenge'] = sha1(uniqid(rand(), true));
}
+ if (!isset($_SESSION['perms']) || !($_SESSION['perms'] instanceof FlagSet)) {
+ $_SESSION['perms'] = new FlagSet();
+ }
}
- function destroy()
+ public static function destroy()
{
@session_destroy();
unset($_SESSION);
}
-
-
- function has($key)
+ public static function has($key)
{
return isset($_SESSION[$key]);
}
- function kill($key)
+ public static function kill($key)
{
unset($_SESSION[$key]);
}
- function v($key, $default = null)
+ public static function v($key, $default = null)
{
return isset($_SESSION[$key]) ? $_SESSION[$key] : $default;
}
- function i($key, $default = 0)
+ public static function s($key, $default = '')
+ {
+ return (string)Session::v($key, $default);
+ }
+
+ public static function i($key, $default = 0)
{
$i = Session::v($key, $default);
return is_numeric($i) ? intval($i) : $default;
}
- function has_perms()
+ public static function l(array $keys)
+ {
+ return array_map(array('Session', 'v'), $keys);
+ }
+
+ public static function has_perms()
{
- return Session::logged() && Session::v('perms') == PERMS_ADMIN;
+ return Session::logged() && Session::v('perms')->hasFlag(PERMS_ADMIN);
}
- function logged()
+ public static function logged()
{
return Session::v('auth', AUTH_PUBLIC) >= AUTH_COOKIE;
}
- function identified()
+ public static function identified()
{
return Session::v('auth', AUTH_PUBLIC) >= AUTH_MDP;
}
if ($_SESSION['log']) {
$_SESSION['log']->log("noperms",$_SERVER['PHP_SELF']);
}
- $page->kill("Tu n'as pas les permissions nécessaires pour accéder à cette page.");
+ $page->kill("Tu n'as pas les permissions nécessaires pour accéder à cette page.");
}
}
// }}}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>