Server IP : 192.64.118.117 / Your IP : 3.145.149.120 Web Server : LiteSpeed System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : thecgapy ( 1160) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/thecgapy/mcprintingandpromotions.com/wp-content/plugins/heartbeat-control/ |
Upload File : |
<?php /** * Contains the Heartbeat_Control\Notices class. * * Simple to use message flashbag for admin base on user_id. * * @package Heartbeat_Control */ namespace Heartbeat_Control; defined( 'ABSPATH' ) || die( 'Cheatin\' uh?' ); /** * Simple notification flashbag */ class Notices { /** * The single instance of the class. * * @var Notices * @access protected */ protected static $instance; /** * The transient name. * * @var string * @access protected */ protected $transient; /** * Store notices. * * @var int * @access protected */ protected $notices = false; /** * The user ID. * * @var int * @access protected */ protected $user_id; /** * Main Plugin Instance. * * Ensures only one instance of the class is loaded or can be loaded. * * @return Notices - Main instance. */ public static function get_instance() { if ( ! self::$instance ) { self::$instance = new Notices(); } return self::$instance; } /** * Constructor. */ public function __construct() { $this->transient = basename( plugin_dir_path( __FILE__ ) ) . '_notices'; $this->notices = get_transient( $this->transient ); $this->user_id = get_current_user_id(); } /** * Append a new notice for the current user. * * @param string $class The class of the message use for styling and typing. * @param string $notice The message of the notice. */ public function append( $class, $notice ) { $new_notices = array(); if ( $this->notices ) { $new_notices = json_decode( $this->notices, true ); } $new_notices[ $this->user_id ][] = array( 'class' => $class, 'notice' => $notice, ); $this->notices = json_encode( $new_notices ); // phpcs:ignore WordPress.WP.AlternativeFunctions set_transient( $this->transient, $this->notices, 30 ); } /** * Echo notices for the current user. * * @param boolean $trash [optional] If true the notices will be trash after the echo. */ public function echo_notices( $trash = true ) { if ( $this->notices ) { $notices = json_decode( $this->notices, true ); if ( isset( $notices[ $this->user_id ] ) ) { foreach ( $notices[ $this->user_id ] as $n ) { echo '<div class="notice notice-' . esc_attr( $n['class'] ) . ' is-dismissible"><p><strong>' . esc_html( $n['notice'] ) . '</strong></p></div>'; // phpcs:ignore WordPress.Security.EscapeOutput } if ( $trash ) { $this->trash( $notices, $this->user_id ); } } } } /** * Return the notices for the current user. * * @param boolean $trash [optional] If true the notices will be trash after get returned. * @return mixed Output a array if a notice or more exist, a false if not. */ public function get( $trash = true ) { if ( $this->notices ) { $notices = json_decode( $this->notices, true ); if ( isset( $notices[ $this->user_id ] ) ) { if ( $trash ) { $this->trash( $notices, $this->user_id ); } return $notices[ $this->user_id ]; } } return false; } /** * Unset notice for a given user and save the new notices as a transient. * * @param array $notices An array of $notices to clean. * @param int $user_id [optional] A user id, if null it's will find the current user id. */ private function trash( $notices, $user_id = null ) { if ( is_null( $user_id ) ) { $user_id = $this->user_id; } if ( isset( $notices[ $user_id ] ) ) { unset( $notices[ $user_id ] ); } set_transient( $this->transient, json_encode( $notices ), 30 ); // phpcs:ignore WordPress.WP.AlternativeFunctions } }