Files
rr/src/RR/Flash.php
T
2020-04-16 02:04:39 +00:00

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;
}
}
}