<?php
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* @since 1.0.0
* Class Epsilon_Notifications
*/
class Epsilon_Notifications {
/**
* @since 1.0.0
* @var null
*/
private static $instance = null;
/**
* @since 1.0.0
* @var array
*/
public $notices = array();
/**
* @since 1.0.0
* @var array
*/
public $html = '<div class="epsilon-framework-notice is-dismissible %1$s" data-unique-id="%2$s">%3$s</div>';
/**
* Epsilon_Notifications constructor.
*/
public function __construct() {
add_action( 'admin_notices', array( $this, 'display_notices' ) );
}
/**
* We need to grab instances of this object, so we can add multiple notices at the same time
*
* @return Epsilon_Notifications
*/
public static function get_instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Adds a notice to the array
*
* @param array $notice
*/
public function add_notice( $notice = array() ) {
$this->notices[] = $notice;
}
/**
* Displays notices in the frontend
*
* @since 1.0.0
*/
public function display_notices() {
foreach ( $this->notices as $notice ) {
if ( get_user_meta( get_current_user_id(), $notice['id'], true ) ) {
continue;
}
printf( wp_kses_post( $this->html ), esc_attr( $notice['type'] ), esc_attr( $notice['id'] ), wp_kses_post( $notice['message'] ) );
}
}
/**
* Dismiss notice AJAX
*
* @since 1.0.0
*
* @param $args
*/
public static function dismiss_notice( $args ) {
add_user_meta( $args['user_id'], $args['notice_id'], 'true', true );
return 'ok';
}
}