name = $name; $this->type = $type; $this->dismiss_url = $dismiss_url; $this->temporary_dismiss_url = $temporary_dismiss_url; $this->pricing_url = 'https://www.blockspare.com/'; $this->current_user_id = get_current_user_id(); add_action('admin_notices', array($this, 'notice')); $this->dismiss_notice(); $this->dismiss_notice_temporary(); } /** * Display notice. */ public function notice() { if (! current_user_can('publish_posts')) { return; } $current_screen = get_current_screen(); if (! $current_screen) { return; } if ( 'dashboard' !== $current_screen->id && 'themes' !== $current_screen->id && 'plugins' !== $current_screen->id ) { return; } if (! $this->is_dismiss_notice()) { $this->notice_markup(); } } /** * Check if notice dismissed. */ private function is_dismiss_notice() { return apply_filters('blockspare_' . $this->name . '_notice_dismiss', false); } /** * Notice markup. */ public function notice_markup() { echo ''; } /** * Permanently dismiss notice. */ public function dismiss_notice() { if ( isset($_GET['blockspare_setup_notice_dismiss']) && isset($_GET['_blockspare_setup_notice_dismiss_nonce']) ) { if ( ! wp_verify_nonce( wp_unslash($_GET['_blockspare_setup_notice_dismiss_nonce']), 'blockspare_setup_notice_dismiss_nonce' ) ) { wp_die(esc_html__('Action failed. Please refresh the page and retry.', 'blockspare')); } if (! current_user_can('publish_posts')) { wp_die(esc_html__('Cheatin’ huh?', 'blockspare')); } $dismiss_notice = sanitize_text_field(wp_unslash($_GET['blockspare_setup_notice_dismiss'])); // FIX: Match current notice name dynamically instead of hardcoded 'setup' if ($this->name === $dismiss_notice) { update_user_meta( $this->current_user_id, 'blockspare_' . $dismiss_notice . '_notice_dismiss', 'yes' ); wp_safe_redirect(remove_query_arg(array('blockspare_setup_notice_dismiss', '_blockspare_setup_notice_dismiss_nonce'))); exit; } } } /** * Temporarily dismiss notice. */ public function dismiss_notice_temporary() { if ( isset($_GET['blockspare_setup_notice_dismiss_temporary']) && isset($_GET['_blockspare_setup_notice_dismiss_temporary_nonce']) ) { if ( ! wp_verify_nonce( wp_unslash($_GET['_blockspare_setup_notice_dismiss_temporary_nonce']), 'blockspare_setup_notice_dismiss_temporary_nonce' ) ) { wp_die(esc_html__('Action failed. Please refresh the page and retry.', 'blockspare')); } if (! current_user_can('publish_posts')) { wp_die(esc_html__('Cheatin’ huh?', 'blockspare')); } $dismiss_notice = sanitize_text_field(wp_unslash($_GET['blockspare_setup_notice_dismiss_temporary'])); // FIX: Match current notice name dynamically instead of hardcoded 'setup' if ($this->name === $dismiss_notice) { update_user_meta( $this->current_user_id, 'blockspare_' . $dismiss_notice . '_notice_dismiss_temporary', 'yes' ); wp_safe_redirect(remove_query_arg(array('blockspare_setup_notice_dismiss_temporary', '_blockspare_setup_notice_dismiss_temporary_nonce'))); exit; } } } } class Blockspare_Setup_Notice extends Blockspare_Setup { /** * Constructor. */ public function __construct() { $dismiss_url = wp_nonce_url( add_query_arg( 'blockspare_setup_notice_dismiss', 'setup', admin_url() ), 'blockspare_setup_notice_dismiss_nonce', '_blockspare_setup_notice_dismiss_nonce' ); $temporary_dismiss_url = wp_nonce_url( add_query_arg( 'blockspare_setup_notice_dismiss_temporary', 'setup', admin_url() ), 'blockspare_setup_notice_dismiss_temporary_nonce', '_blockspare_setup_notice_dismiss_temporary_nonce' ); parent::__construct( 'setup', 'info', $dismiss_url, $temporary_dismiss_url ); $this->set_notice_time(); $this->set_temporary_dismiss_notice_time(); $this->set_dismiss_notice(); } /** * Set initial notice time. */ private function set_notice_time() { if (! get_option('blockspare_setup_notice_start_time')) { update_option('blockspare_setup_notice_start_time', time()); } } /** * Set temporary dismiss time. */ private function set_temporary_dismiss_notice_time() { if ( isset($_GET['blockspare_setup_notice_dismiss_temporary']) && 'setup' === $_GET['blockspare_setup_notice_dismiss_temporary'] ) { update_user_meta( $this->current_user_id, 'blockspare_setup_notice_dismiss_temporary_start_time', time() ); } } /** * Set dismiss conditions. */ public function set_dismiss_notice() { $user_id = get_current_user_id(); $is_permanently_dismissed = ('yes' === get_user_meta($user_id, 'blockspare_setup_notice_dismiss', true)); $temporary_dismiss_time = (int) get_user_meta($user_id, 'blockspare_setup_notice_dismiss_temporary_start_time', true); $is_temporarily_dismissed = ($temporary_dismiss_time > strtotime('-2 days')); // FIX: Clean, predictable condition parsing if ($is_permanently_dismissed || $is_temporarily_dismissed) { add_filter('blockspare_setup_notice_dismiss', '__return_true'); } else { add_filter('blockspare_setup_notice_dismiss', '__return_false'); } } /** * Notice markup. */ public function notice_markup() { if (! function_exists('get_plugin_data')) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $plugin_data = get_plugin_data(BLOCKSPARE_BASE_FILE); $version = isset($plugin_data['Version']) ? $plugin_data['Version'] : ''; ?>