Session.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. * La classe Session gère la session utilisateur
  4. * C'est un singleton
  5. */
  6. class Minz_Session {
  7. /**
  8. * $session stocke les variables de session
  9. */
  10. private static $session = array ();
  11. /**
  12. * Initialise la session, avec un nom
  13. * Le nom de session est utilisé comme nom pour les cookies et les URLs (i.e. PHPSESSID).
  14. * Il ne doit contenir que des caractères alphanumériques ; il doit être court et descriptif
  15. */
  16. public static function init ($name) {
  17. // démarre la session
  18. session_name ($name);
  19. session_start ();
  20. if (isset ($_SESSION)) {
  21. self::$session = $_SESSION;
  22. }
  23. }
  24. /**
  25. * Permet de récupérer une variable de session
  26. * @param $p le paramètre à récupérer
  27. * @return la valeur de la variable de session, false si n'existe pas
  28. */
  29. public static function param ($p, $default = false) {
  30. if (isset (self::$session[$p])) {
  31. $return = self::$session[$p];
  32. } else {
  33. $return = $default;
  34. }
  35. return $return;
  36. }
  37. /**
  38. * Permet de créer ou mettre à jour une variable de session
  39. * @param $p le paramètre à créer ou modifier
  40. * @param $v la valeur à attribuer, false pour supprimer
  41. */
  42. public static function _param ($p, $v = false) {
  43. if ($v === false) {
  44. unset ($_SESSION[$p]);
  45. unset (self::$session[$p]);
  46. } else {
  47. $_SESSION[$p] = $v;
  48. self::$session[$p] = $v;
  49. if($p == 'language') {
  50. // reset pour remettre à jour le fichier de langue à utiliser
  51. Minz_Translate::reset ();
  52. }
  53. }
  54. }
  55. /**
  56. * Permet d'effacer une session
  57. * @param $force si à false, n'efface pas le paramètre de langue
  58. */
  59. public static function unset_session ($force = false) {
  60. $language = self::param ('language');
  61. session_unset ();
  62. self::$session = array ();
  63. if (!$force) {
  64. self::_param ('language', $language);
  65. }
  66. }
  67. }