Hey user_login) ?>,
bplugins.com.
register(); } public static function instance(){ if(!self::$_instance){ self::$_instance = new self(); } return self::$_instance; } public function register(){ $this->prefix = dirname(plugin_basename($this->FILE)); $this->status = get_option("$this->prefix-opt_in", false); $this->last_check = get_option("$this->prefix-info-check", time()-1); $this->marketing_allowed = get_option("$this->prefix-marketing-allowed", false); $this->basename = plugin_basename($this->FILE); register_activation_hook($this->FILE, [$this, 'activate']); add_filter("plugin_action_links_$this->basename", [$this, 'opt_in_button'] ); add_action('admin_init', [$this, 'admin_init']); if(!$this->status){ add_action('admin_menu', [$this, 'add_opt_in_menu']); add_action('bts_opt_in', [$this, 'bts_opt_in']); } add_action('admin_enqueue_scripts', [$this, 'enqueue_assets']); if($this->status == 'agreed'){ register_deactivation_hook( $this->FILE, [$this, 'deactivate'] ); } add_action('admin_footer', [$this, 'opt_in_modal']); } public function opt_in_button($links){ if($this->marketing_allowed){ $settings_link = 'prefix-allow=false").'" data-modal="'.$this->prefix.'">Opt out'; }else { $settings_link = 'prefix-allow=true").'" class="bpc_opt_btn" data-modal="'.$this->prefix.'">Opt In'; } array_unshift($links, $settings_link); return $links; } public function add_opt_in_menu(){ $this->nonce = \wp_create_nonce('bp_nonce'); add_submenu_page( '', $this->plugin_name, $this->plugin_name, 'manage_options', $this->prefix, [$this, 'opt_in_form'] ); } public function enqueue_assets($hook){ wp_register_script("$this->prefix-opt-in", plugin_dir_url($this->FILE).'dist/optin.js', [], $this->version); wp_register_style("$this->prefix-opt-in", plugin_dir_url($this->FILE).'dist/optin.css', [], $this->version); wp_localize_script("$this->prefix-opt-in", 'ppvOptData', [ 'post_type' => $this->post_type, 'page' => admin_url("admin.php?page=$this->prefix"), 'basename' => $this->basename, ]); if($hook === 'plugins.php' || $hook === "admin_page_$this->prefix"){ wp_enqueue_script("$this->prefix-opt-in"); wp_enqueue_style("$this->prefix-opt-in"); } } public function opt_in_form(){ update_option("$this->prefix-redirect", true); global $wp_version; wp_enqueue_script('bts-opt-in'); wp_enqueue_style('bts-opt-in'); $user = wp_get_current_user(); $skip_url = admin_url("edit.php?post_type=$this->post_type&bp_action={$this->prefix}_skipped_activate&nonce=$this->nonce"); $agree_url = admin_url("/admin.php?page=$this->prefix&opt_action=opt_accept&nonce=".wp_create_nonce('opt_action')); ?>
"; } public function data_update($data = []){ global $wp_version; $user = wp_get_current_user(); $response = wp_remote_post($this->url, array( 'method' => 'POST', 'timeout' => 45, 'headers' => array(), 'body' => wp_parse_args($data, [ 'website' => site_url(), 'user_email' => $user->user_email, 'user_nickname' => $user->user_nickname ? $user->user_nickname : $user->user_login, 'php_version' => phpversion(), 'platform_version' => $wp_version, 'plugin_version' => $this->version ] ) ) ); } public function admin_init(){ if(!$this->status){ if(isset($_GET['bp_action']) && isset($_GET['nonce'])){ $action = $_GET['bp_action']; $nonce = $_GET['nonce']; if(wp_verify_nonce($nonce, 'bp_nonce')){ if($action == "{$this->prefix}_skipped_activate"){ update_option("$this->prefix-opt_in", 'skipped'); }else if($action == "{$this->prefix}_agreed_activate") { update_option("$this->prefix-opt_in", 'agreed'); update_option("$this->prefix-marketing-allowed", true); } } } $redirect = get_option("$this->prefix-redirect", false); if(!$redirect){ wp_redirect("admin.php?page=$this->prefix"); } } if(isset($_GET["$this->prefix-allow"])){ if($_GET["$this->prefix-allow"] == "true"){ update_option("$this->prefix-marketing-allowed", true); $this->data_update(['marketing_allowed' => true]); }else { update_option("$this->prefix-marketing-allowed", false); $this->data_update(['marketing_allowed' => false]); } wp_redirect(admin_url('plugins.php')); } } public function activate(){ if($this->status == 'agreed'){ $this->data_update(['status' => 'activate']); } } public function deactivate(){ if($this->status == 'agreed'){ $this->data_update(['status' => 'deactivate']); } } public function opt_in_modal($hook){ global $wp_version; $user = \wp_get_current_user(); $screen = \get_current_screen(); if($screen->base === 'plugins'){ ?>