name = $name; $this->type = $type; $this->dismiss_url = $dismiss_url; $this->temporary_dismiss_url = $temporary_dismiss_url; $this->pricing_url = 'https://www.blockspare.com/pricing/'; $this->current_user_id = get_current_user_id(); // Notice markup. add_action('admin_notices', array($this, 'notice')); $this->dismiss_notice(); $this->dismiss_notice_temporary(); } public function notice() { $current_screen = get_current_screen(); if ( $current_screen->id !=='dashboard' && $current_screen->id !== 'themes' && $current_screen->id !=='plugins' ) { return; } if (!$this->is_dismiss_notice()) { $this->notice_markup(); } } private function is_dismiss_notice() { return apply_filters('blockspare_' . $this->name . '_notice_dismiss', true); } public function notice_markup() { echo ''; } /** * Hide a notice if the GET variable is set. */ public function dismiss_notice() { if (isset($_GET['blockspare_setup_notice_dismiss']) && isset($_GET['_blockspare_setup_notice_dismiss_nonce'])) { // WPCS: input var ok. if (!wp_verify_nonce(wp_unslash($_GET['_blockspare_setup_notice_dismiss_nonce']), 'blockspare_setup_notice_dismiss_nonce')) { // phpcs:ignore WordPress.VIP.ValidatedSanitizedInput.InputNotSanitized wp_die(__('Action failed. Please refresh the page and retry.', 'blockspare')); // WPCS: xss ok. } if (!current_user_can('publish_posts')) { wp_die(__('Cheatin’ huh?', 'blockspare')); // WPCS: xss ok. } $dismiss_notice = sanitize_text_field(wp_unslash($_GET['blockspare_setup_notice_dismiss'])); // Hide. if ($dismiss_notice === $_GET['blockspare_setup_notice_dismiss']) { add_user_meta(get_current_user_id(), 'blockspare_' . $dismiss_notice . '_notice_dismiss', 'yes', true); } } } public function dismiss_notice_temporary() { if (isset($_GET['blockspare_setup_notice_dismiss_temporary']) && isset($_GET['_blockspare_setup_notice_dismiss_temporary_nonce'])) { // WPCS: input var ok. if (!wp_verify_nonce(wp_unslash($_GET['_blockspare_setup_notice_dismiss_temporary_nonce']), 'blockspare_setup_notice_dismiss_temporary_nonce')) { // phpcs:ignore WordPress.VIP.ValidatedSanitizedInput.InputNotSanitized wp_die(__('Action failed. Please refresh the page and retry.', 'blockspare')); // WPCS: xss ok. } if (!current_user_can('publish_posts')) { wp_die(__('Cheatin’ huh?', 'blockspare')); // WPCS: xss ok. } $dismiss_notice = sanitize_text_field(wp_unslash($_GET['blockspare_setup_notice_dismiss_temporary'])); // Hide. if ($dismiss_notice === $_GET['blockspare_setup_notice_dismiss_temporary']) { add_user_meta(get_current_user_id(), 'blockspare_' . $dismiss_notice . '_notice_dismiss_temporary', 'yes', true); } } } } class Blockspare_Setup_Notice extends Blockspare_Setup { public function __construct() { if ( ! current_user_can( 'publish_posts' ) ) { return; } $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(); } private function set_notice_time() { if ( ! get_option( 'blockspare_setup_notice_start_time' ) ) { update_option( 'blockspare_setup_notice_start_time', 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() ); } } public function set_dismiss_notice() { /** * Do not show notice if: * * 1. It has not been 5 days since the plugin is activated. * 2. If the user has ignored the message partially for 2 days. * 3. Dismiss always if clicked on 'Dismiss' button. */ if ( get_option( 'blockspare_setup_notice_start_time' ) > strtotime( '-1 minute' ) || get_user_meta( get_current_user_id(), 'blockspare_setup_notice_dismiss', true ) || get_user_meta( get_current_user_id(), 'blockspare_setup_notice_dismiss_temporary_start_time', true ) > strtotime( '-2 days' ) ) { add_filter( 'blockspare_setup_notice_dismiss', '__return_true' ); } else { add_filter( 'blockspare_setup_notice_dismiss', '__return_false' ); } } public function notice_markup() { if ( is_admin() ) { if( ! function_exists('get_plugin_data') ){ require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); } $plugin_data = get_plugin_data( BLOCKSPARE_BASE_FILE ); } ?>