157 lines
3.6 KiB
PHP
Executable File
157 lines
3.6 KiB
PHP
Executable File
<?php
|
|
namespace RR;
|
|
|
|
class Flash{
|
|
|
|
private static $_instance;
|
|
|
|
// Message types and shortcuts
|
|
const FLASH_INFO = 'i';
|
|
const FLASH_SUCCESS = 's';
|
|
const FLASH_WARNING = 'w';
|
|
const FLASH_ERROR = 'e';
|
|
|
|
const FLASH_SESSION_NAME = 'flashes';
|
|
|
|
const defaultType = self::INFO;
|
|
|
|
protected $msgTypes = [
|
|
self::ERROR => 'error',
|
|
self::WARNING => 'warning',
|
|
self::SUCCESS => 'success',
|
|
self::INFO => 'info',
|
|
];
|
|
|
|
public $oldMessages = Array();
|
|
public $newMessages = Array();
|
|
public $_flashes = Array();
|
|
|
|
//SINGLETON==============================================
|
|
|
|
private function __construct(){
|
|
if(session_id() == '' || !isset($_SESSION)) {
|
|
session_start();
|
|
}
|
|
if( isset($_SESSION['flashes']) ){
|
|
$this->oldMessages = $_SESSION['flashes'];
|
|
}
|
|
unset( $_SESSION[self::SESSION_NAME] );
|
|
}
|
|
|
|
private static function newObj(){
|
|
if (!isset( self::$_instance )) {
|
|
self::$_instance = new Flash();
|
|
}
|
|
return self::$_instance;
|
|
}
|
|
|
|
public static function getInstance(){
|
|
if (!isset(self::$_instance)) {
|
|
return self::newObj();
|
|
}
|
|
return self::$_instance;
|
|
}
|
|
|
|
//=======================================================
|
|
|
|
public function merge(){
|
|
$this->_flashes = array_merge_recursive($this->newMessages, $this->oldMessages);
|
|
}
|
|
|
|
public function loadToSession(){
|
|
$_SESSION[self::SESSION_NAME] = $this->newMessages;
|
|
}
|
|
|
|
/*
|
|
*
|
|
* @ctag Flash:addMessage();
|
|
* @ctag Flash:addMessage(Flash::FLASH_INFO, '');
|
|
* @ctag Flash:addMessage(Flash::FLASH_SUCCESS, '');
|
|
* @ctag Flash:addMessage(Flash::FLASH_WARNING, '');
|
|
* @ctag Flash:addMessage(Flash::FLASH_ERROR, '');
|
|
*
|
|
*/
|
|
public static function addMessage($type = self::defaultType, $message){
|
|
$instance = self::getInstance();
|
|
$instance->newMessages[$type] = $message;
|
|
$instance->loadToSession();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @ctag Flash::addInfo('');
|
|
*
|
|
*/
|
|
public static function addInfo($message){
|
|
$instance = self::getInstance();
|
|
$instance->newMessages[self::INFO] = $message;
|
|
$instance->loadToSession();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @ctag Flash::addError('');
|
|
*
|
|
*/
|
|
public static function addError($message){
|
|
$instance = self::getInstance();
|
|
$instance->newMessages[self::ERROR] = $message;
|
|
$instance->loadToSession();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @ctag Flash::getErrors();
|
|
*
|
|
*/
|
|
public static function getErrors(){
|
|
if(!self::hasErrors()){
|
|
return Array();
|
|
}
|
|
return self::getInstance()->_flashes[self::ERROR];
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @ctag Flash::addInfos();
|
|
*
|
|
*/
|
|
public static function getInfos(){
|
|
if(!self::hasInfo()){
|
|
return Array();
|
|
}
|
|
return self::getInstance()->_flashes[self::INFO];
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @ctag Flash::addErrors();
|
|
*
|
|
*/
|
|
public static function hasErrors(){
|
|
$instance = self::getInstance();
|
|
$instance->merge();
|
|
if( array_key_exists(self::ERROR, $instance->_flashes ) ){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @ctag Flash::hasInfo();
|
|
*
|
|
*/
|
|
public static function hasInfo(){
|
|
$instance = self::getInstance();
|
|
$instance->merge();
|
|
if( array_key_exists(self::INFO, $instance->_flashes ) ){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|