<?php
class PhpCodeForPosts_Messages {
const SESSION_KEY = 'phpcodeforposts_messages';
const TYPE_SUCCESS = 'success';
const TYPE_ERROR = 'error';
/**
* SUCCESS MESSAGES
**/
public static function add_success_message( $msg )
{
self::add_message( self::TYPE_SUCCESS, $msg );
}
public static function has_success_messages()
{
return self::has_message_of_type( self::TYPE_SUCCESS );
}
public static function return_success_messages()
{
return self::return_messages_of_type( self::TYPE_SUCCESS );
}
public static function display_success_messages()
{
if(! self::has_success_messages() ) {
return;
}
self::display_messages( self::TYPE_SUCCESS, self::return_success_messages() );
}
/**
* ERROR MESSAGES
**/
public static function add_error_message( $msg )
{
self::add_message( self::TYPE_ERROR, $msg );
}
public static function has_error_messages()
{
return self::has_message_of_type( self::TYPE_ERROR );
}
public static function return_error_messages()
{
return self::return_messages_of_type( self::TYPE_ERROR );
}
public static function display_error_messages()
{
if(! self::has_error_messages() ) {
return;
}
self::display_messages( self::TYPE_ERROR, self::return_error_messages() );
}
/**
* PRIVATE FUNCTIONS
**/
private static function get_default_structure()
{
return array(
self::TYPE_SUCCESS => array(),
self::TYPE_ERROR => array(),
);
}
private static function add_message( $type, $msg )
{
if(! isset( $_SESSION[self::SESSION_KEY] ) ) {
$_SESSION[self::SESSION_KEY] = self::get_default_structure();
}
if(! isset( $_SESSION[self::SESSION_KEY] [$type] ) ) {
throw new Exception( __( 'Invalid Message Type', "phpcodeforposts" ) );
}
$_SESSION[self::SESSION_KEY] [$type] [] = $msg;
}
private static function has_message_of_type( $type )
{
if(! isset( $_SESSION[self::SESSION_KEY] ) ) {
return false;
}
return count( $_SESSION[self::SESSION_KEY] [$type] ) > 0;
}
private static function return_messages_of_type( $type )
{
if (
!isset( $_SESSION[self::SESSION_KEY] )
||
!isset( $_SESSION[self::SESSION_KEY] [$type] )
) {
return array();
}
$messages = $_SESSION[self::SESSION_KEY] [$type];
$_SESSION[self::SESSION_KEY] [$type] = array();
return $messages;
}
private static function display_messages( $type, Array $messages )
{
if( count( $messages ) ) {
foreach( $messages as $message ) {
printf(
'<div class="%s" id="setting-error-setting_updated"><p>%s</p></div>',
$type == self::TYPE_SUCCESS ? 'updated' : 'error',
$message
);
}
}
}
}