311 lines
15 KiB
PHP
311 lines
15 KiB
PHP
<?php
|
||
namespace PDFP\Base;
|
||
|
||
class Activate{
|
||
|
||
protected $FILE = PDFP_FILE_;
|
||
protected $prefix = '';
|
||
protected $plugin_name = 'PDF Poster';
|
||
protected $url = 'https://bplugins.com/wp-json/data/v1/accept-data';
|
||
protected $status = false;
|
||
protected $post_type = 'pdfposter';
|
||
protected $version = PDFP_VER;
|
||
protected $nonce = null;
|
||
protected $marketing_allowed = false;
|
||
protected static $_instance = null;
|
||
protected $basename = null;
|
||
|
||
public function __construct(){
|
||
$this->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 = '<a href="'.admin_url("plugins.php?$this->prefix-allow=false").'" data-modal="'.$this->prefix.'">Opt out</a>';
|
||
}else {
|
||
$settings_link = '<a href="'.admin_url("plugins.php?$this->prefix-allow=true").'" class="bpc_opt_btn" data-modal="'.$this->prefix.'">Opt In</a>';
|
||
}
|
||
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'));
|
||
|
||
?>
|
||
<div class="bts-opt-in">
|
||
<div class="content">
|
||
<div class="bp-connect">
|
||
<span class="wp-icon"><i class="dashicons dashicons-wordpress"></i></span>
|
||
<i class="dashicons dashicons-plus fs-second"></i>
|
||
<img src="<?php echo esc_url("https://ps.w.org/$this->prefix/assets/icon-128x128.png") ?>" alt="">
|
||
<i class="dashicons dashicons-plus fs-second"></i>
|
||
<img src="https://bplugins.com/wp-content/uploads/2021/07/bplugins-white.png" alt="">
|
||
</div>
|
||
<p>
|
||
Hey <b><?php echo esc_html($user->user_login) ?></b>,<br/> <?php echo esc_html__("Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with", "pdfp"); ?> bplugins.com.
|
||
</p>
|
||
</div>
|
||
<div class="actions">
|
||
<form method="POST" action="<?php echo $this->url ?>">
|
||
<input type="hidden" name="website" value="<?php echo esc_url(site_url()); ?>" />
|
||
<input type="hidden" name="user_email" value="<?php echo esc_attr($user->user_email); ?>" />
|
||
<input type="hidden" name="user_display_name" value="<?php echo esc_attr($user->display_name); ?>" />
|
||
<input type="hidden" name="user_nickname" value="<?php echo esc_attr($user->user_login); ?>" />
|
||
<input type="hidden" name="plugin_version" value="<?php echo esc_attr($this->version); ?>" />
|
||
<input type="hidden" name="php_version" value="<?php echo esc_attr(phpversion()); ?>" />
|
||
<input type="hidden" name="platform_version" value="<?php echo esc_attr($wp_version); ?>" />
|
||
<input type="hidden" name="status" value="activate" />
|
||
<input type="hidden" name="plugin_slug" value="<?php echo esc_attr($this->prefix) ?>" />
|
||
<input type="hidden" name="marketing_allowed" value="1" />
|
||
<input type="hidden" name="return_url" value="<?php echo esc_url(admin_url("edit.php?post_type=$this->post_type&bp_action={$this->prefix}_agreed_activate&nonce=$this->nonce")); ?>" />
|
||
<button class="button button-primary"><?php echo esc_html__("Agree & continue", "pdfp") ?></button>
|
||
</form>
|
||
<a href="<?php echo esc_url($skip_url) ?>" class="button button-secondary"><?php echo esc_html__("Skip", "pdfp"); ?></a>
|
||
</div>
|
||
<div class="what-is-granted">
|
||
<p class="details-btn"><?php echo esc_html__("What permissions are being granted?", "pdfp"); ?></p>
|
||
<div class="permissions">
|
||
<div class="permission">
|
||
<i class="dashicons dashicons-admin-users"></i>
|
||
<div>
|
||
<h3><?php echo esc_html__("YOUR PROFILE OVERVIEW", "pdfp"); ?></h3>
|
||
<p><?php echo esc_html__("Name and email address", "pdfp"); ?></p>
|
||
</div>
|
||
</div>
|
||
<div class="permission">
|
||
<i class="dashicons dashicons-admin-settings"></i>
|
||
<div>
|
||
<h3><?php echo esc_html__("YOUR SITE OVERVIEW", "pdfp"); ?></h3>
|
||
<p><?php echo esc_html__("Site URL, WP version, PHP info", "pdfp"); ?></p>
|
||
</div>
|
||
</div>
|
||
<div class="permission">
|
||
<i class="dashicons dashicons-testimonial"></i>
|
||
<div>
|
||
<h3><?php echo esc_html__("ADMIN NOTICES", "pdfp"); ?></h3>
|
||
<p><?php echo esc_html__("Updates, announcements, marketing, no spam", "pdfp"); ?></p>
|
||
</div>
|
||
</div>
|
||
<div class="permission">
|
||
<i class="dashicons dashicons-admin-plugins"></i>
|
||
<div>
|
||
<h3><?php echo esc_html__("CURRENT PLUGIN STATUS", "pdfp"); ?></h3>
|
||
<p><?php echo esc_html__("Active, deactivated, or uninstalled", "pdfp"); ?></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="privacy-policy">
|
||
<a href="https://bplugins.com/privacy-policy/" target="_blank"><?php echo esc_html__("Privacy Policy", "pdfp"); ?></a>
|
||
<span>-</span>
|
||
<a href="https://bplugins.com/terms-of-service/" target="_blank"><?php echo esc_html__("Terms and Condition", "pdfp"); ?></a>
|
||
</div>
|
||
</div>
|
||
<style>
|
||
<?php echo esc_html("#menu-posts-$this->post_type") ?> ul{
|
||
display: none;
|
||
}
|
||
<?php echo esc_html("#menu-posts-$this->post_type") ?> > a{
|
||
background: #2271b1;
|
||
}
|
||
<?php echo esc_html("#menu-posts-$this->post_type") ?> div.wp-menu-image::before{
|
||
color: #fff;
|
||
}
|
||
</style>
|
||
<?php
|
||
// echo "<div id='bts-opt-in'></div>";
|
||
}
|
||
|
||
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'){
|
||
?>
|
||
<div id="opt_in_modal" class="opt_in_modal <?php echo esc_attr($this->prefix) ?>">
|
||
<div class="opt_in_content">
|
||
<div class="content">
|
||
<div>
|
||
<img src="<?php echo esc_url(plugin_dir_url( $this->FILE ).'img/shield_success.png') ?>" alt="">
|
||
</div>
|
||
<div>
|
||
<h3><?php echo esc_html__("Stay on the safe side", "pdfp") ?></h3>
|
||
<p><?php echo esc_html__("Receive our plugin’s alerts in case of critical security & feature updates and allow non-sensitive diagnostic tracking.", "pdfp") ?></p>
|
||
</div>
|
||
</div>
|
||
<div class="active-btn">
|
||
<form method="POST" action="<?php echo esc_url($this->url) ?>">
|
||
<input type="hidden" name="website" value="<?php echo esc_url(site_url()); ?>" />
|
||
<input type="hidden" name="user_email" value="<?php echo esc_attr($user->user_email); ?>" />
|
||
<input type="hidden" name="user_display_name" value="<?php echo esc_attr($user->display_name); ?>" />
|
||
<input type="hidden" name="user_nickname" value="<?php echo esc_attr($user->user_login); ?>" />
|
||
<input type="hidden" name="plugin_version" value="<?php echo esc_attr($this->version); ?>" />
|
||
<input type="hidden" name="php_version" value="<?php echo esc_attr(phpversion()); ?>" />
|
||
<input type="hidden" name="platform_version" value="<?php echo esc_attr($wp_version); ?>" />
|
||
<input type="hidden" name="status" value="activate" />
|
||
<input type="hidden" name="plugin_slug" value="<?php echo esc_attr($this->prefix) ?>" />
|
||
<input type="hidden" name="marketing_allowed" value="1" />
|
||
<input type="hidden" name="return_url" value="<?php echo esc_url(admin_url("plugins.php?$this->prefix-allow=true&bp_action={$this->prefix}_agreed_activate&nonce=$this->nonce")); ?>" />
|
||
<button class="button button-primary"><?php echo esc_html__("Agree & continue", "pdfp") ?></button>
|
||
</form>
|
||
</div>
|
||
<div class="granted-info">
|
||
<h3><?php echo esc_html__("You're granting these permissions", "pdfp") ?>:</h3>
|
||
<ul>
|
||
<li><?php echo esc_html__("Your profile information (name and email)", "pdfp") ?></li>
|
||
<li><?php echo esc_html__("Your site information (URL, WP version, PHP info)", "pdfp") ?></li>
|
||
<li><?php echo esc_html__("Plugin notices (updates, announcements, marketing, no spam)", "pdfp") ?></li>
|
||
<li><?php echo esc_html__("Plugin events (activation, deactivation and uninstall)", "pdfp") ?></li>
|
||
</ul>
|
||
</div>
|
||
<div class="learn-skip">
|
||
<a href="#" class="hide-btn"><?php echo esc_html__("hide", "pdfp") ?></a>
|
||
<a href="#" class="learn-more-btn"><?php echo esc_html__("Learn More", "pdfp") ?></a>|
|
||
<a href="#" class="skip-btn"><?php echo esc_html__("Skip", "pdfp") ?></a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<?php
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
Activate::instance();
|