Skip to content

Instantly share code, notes, and snippets.

@danjesus
Created January 11, 2012 13:12
Show Gist options
  • Select an option

  • Save danjesus/1594593 to your computer and use it in GitHub Desktop.

Select an option

Save danjesus/1594593 to your computer and use it in GitHub Desktop.
Functions Diesel
function sucessMessage($message) {
Session::writeFlash('sucessMessage', $message);
}
function errorMessage($message) {
Session::writeFlash('errorMessage', $message);
}
function updateMessage($message) {
Session::writeFlash('updateMessage', $message);
}
<?php
/**
* Diesel Framework
* Copyright © LQDI Technologies - 2011
* http://www.lqdi.net
*
* Biblioteca de gerenciamento de sessão de usuário
*
* @author Aryel Tupinambá
* @author Dan Jesus <daniel.jesus@lqdi.net>
*/
interface ISessionUser {
/**
* Deve retornar o ID do usuário
*/
public function getUserID();
/**
* Estática: deve retornar o objeto do usuário à partir de seu ID
*
* @param int $id ID do usuário
*/
public static function load($id);
}
class Session {
/**
* @var type O nome da classe que representa um usuário (default: User)
*/
public static $userClass = "User";
/**
* @var boolean Há um usuário logado na sessão?
*/
public static $isAuthenticated = false;
/**
* @var int O ID do usuário logado nesta sessão (quando não logado, é igual a null)
*/
public static $userID = null;
/**
* @var User O objeto que representa o usuário logado nesta sessão
*/
public static $user = null;
/**
* Inicializa a sessão
* @param string $userClass A classe que representa um usuário no sistema (default: User)
*/
public static function init($userClass = "User") {
self::$userClass = $userClass;
session_start();
}
/**
* Recarrega uma sessão de usuário para a biblioteca, quando existir.
* Se há um usuário logado na sessão, automaticamente carrega seu objeto
*/
public static function reload() {
if ($_SESSION['isAuthenticated'] == true && $_SESSION['userClass'] == self::$userClass) {
self::$isAuthenticated = true;
self::$userID = intval($_SESSION['userID']);
self::$user = call_user_func_array(array(self::$userClass, "load"), array(self::$userID));
}
}
/**
* Cria uma nova sessão de usuário e carrega automaticamente o seu objeto.
* @param string $userID O ID do usuário no sistema
*/
public static function create($userID) {
$_SESSION['isAuthenticated'] = true;
$_SESSION['userID'] = intval($userID);
$_SESSION['userClass'] = self::$userClass;
self::reload();
}
/**
* Faz com que o usuário saia da sessão, mas sem excluir as outras variáveis de sessão.
*
* @return void
*/
public static function logoff() {
$_SESSION['isAuthenticated'] = false;
$_SESSION['userID'] = null;
$_SESSION['userClass'] = null;
unset($_SESSION['userID']);
self::reload();
}
/**
* Destrói a sessão, apagando todas as variáveis de sessão já salvas
*
* @return void
*/
public static function destroy() {
$_SESSION['isAuthenticated'] = false;
$_SESSION['userID'] = null;
$_SESSION['userClass'] = null;
session_destroy();
}
/**
* Captura uma váriavel da sessão
*
* @return váriavel da sessão ou false
*/
public static function get($var) {
if (!isset($_SESSION[$var])) {
return false;
} else {
return $_SESSION[$var];
}
}
/**
* Seta uma váriavel na sessão
*
* @param string $var Nome da variável
* @param string $val Valor da variável
*
* @return void
*/
public static function set($var, $val) {
$_SESSION[$var] = $val;
}
/**
* Lê uma variável da sessão
*
* @param type $name Nome da variável
*
* @return type
*/
public static function read($name) {
return self::get($name);
}
/**
* Escreve uma variável com seu respectivo valor na sessão.
*
* @param string $name Valor da variável
* @param string $value Conteudo da variável
*/
public static function write($name, $value) {
return self::set($name, $value);
}
/**
* Remove uma variável setada na sessão.
*
* @param string $name Variável a ser removida
*
* @return boolean Verdadeiro para remoção da variável
*/
public static function delete($name) {
unset($_SESSION[$name]);
return true;
}
/**
* Escreve uma váriavel na sessão
*
* @param string $key Váriavel de referencia da mensagem
* @param string $value Valor da mensagem
*
* @return void
*/
public static function writeFlash($key, $value) {
self::write('Flash.' . $key, $value);
}
/**
* Lê uma váriavel flash e exibe seu valor
*
* @param string $key Nome da váriavel
*
* @return string
*/
public static function readFlash($key) {
$value = self::read('Flash.' . $key);
self::delete('Flash.' . $key);
return $value;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment