set_box_html( * 'test' * ); * $message_box->init_hooks(); */ class BackWPup_Message_Box { /** * ID of this message box * @var string */ private $box_id = ''; /** * HTML of this message box * @var string */ private $box_html = ''; /** * @var string Date to a campaign should be displayed */ private $campaign_to_date = '0000-00-00'; /** * BackWPup_Message_Box constructor. * * @param string $box_id Name for box to have more than one or future one */ public function __construct( $box_id ) { if ( ! $box_id || ! is_string( $box_id ) ) { return null; } $this->box_id = sanitize_title_with_dashes( $box_id ); } /** * Init hooks to displaying message box */ public function init_hooks() { if ( ! current_user_can( 'backwpup' ) ) { return; } $boxes_display = get_user_meta( get_current_user_id(), 'backwpup_message_boxes_not_display', true ); if ( ! $boxes_display ) { $boxes_display = array(); } if ( ! empty( $boxes_display[ $this->box_id ] ) ) { return; } if ( isset( $_GET['page'] ) && $_GET['page'] === 'backwpupabout' ) { return; } if ( $this->campaign_to_date !== '0000-00-00' ) { $this_day = date( 'Y-m-d' ); if ( $this_day > $this->campaign_to_date ) { return; } } add_action( 'admin_notices', array( $this, 'output_box_html' ) ); add_action( 'admin_init', array( $this, 'save_not_display' ) ); } /** * Output the message box */ public function output_box_html() { $url = add_query_arg( array( 'backwpup_msg_' . $this->box_id => 1 ), '//' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] ); ?>
box_html = $html; } /** * Save user meta for boxes that should not be displayed */ public function save_not_display() { if ( ! empty( $_GET[ 'backwpup_msg_' . $this->box_id ] ) ) { $boxes_display = get_user_meta( get_current_user_id(), 'backwpup_message_boxes_not_display', true ); if ( ! $boxes_display ) { $boxes_display = array(); } $boxes_display[ $this->box_id ] = true; update_user_meta( get_current_user_id(), 'backwpup_message_boxes_not_display', $boxes_display ); remove_action( 'admin_notices', array( $this, 'output_box_html' ) ); } } /** * Date to a campaign should be displayed * * @since 3.3.2 * * @param string $campaign_to_date */ public function set_campaign_to_date( $campaign_to_date = '0000-00-00' ) { $this->campaign_to_date = $campaign_to_date; } }