<?php /** * Class for logging and displaying admin notices * * @package LBRYPress */ class LBRY_Admin_Notice { public function __construct() { add_action('admin_notices', array($this, 'admin_notices')); } /** * Displays all messages set with the lbry_notices transient */ public function admin_notices() { if (get_transient('lbry_notices')) { $notices = get_transient('lbry_notices'); foreach ($notices as $key => $notice) { $this->create_admin_notice($notice); } delete_transient('lbry_notices'); } } /** * Sets transients for admin errors */ // TODO: Make sure we only set one transient at a time per error public function set_notice($status = 'error', $message = 'Something went wrong', $is_dismissible = false) { $notice = array( 'status' => $status, 'message' => $message, 'is_dismissible' => $is_dismissible ); if (! get_transient('lbry_notices')) { set_transient('lbry_notices', array($notice)); } else { $notices = get_transient('lbry_notices'); if (!in_array($notice, $notices)) { $notices[] = $notice; } set_transient('lbry_notices', $notices); } } /** * Prints an admin notice */ private function create_admin_notice($notice) { $class = 'notice notice-' . $notice['status']; if ($notice['is_dismissible']) { $class .= ' is-dismissible'; } ob_start(); ?> <div class="<?= $class ?>"> <p> <span style="font-weight:bold">LBRYPress: </span> <?= $notice['message'] ?> </p> </div> <?php echo ob_get_clean(); } }