Viewing File: /home/eticmes/www/wp-content/plugins/ultimate-post-kit/includes/feedback-hub/notice.php
<?php
if (!defined('ABSPATH')) {
exit;
}
if (!class_exists('RC_Reviews_Collector')) {
class RC_Reviews_Collector {
public $version = '1.0.0';
public $rc_name;
public $rc_allow_name;
public $rc_date_name;
public $rc_count_name;
public $nonce;
public $params;
public $review_url;
private static $instance = null;
/**
* Get Instance
*
* @since 0.0.0
*/
public static function get_instance($params) {
if (!isset(self::$instance)) {
self::$instance = new self($params);
}
return self::$instance;
}
/**
* Insights SDK Version
* param array $params
* @return void
*/
public function __construct($params) {
$this->params = $params;
$this->review_url = isset($params['review_url']) ? $params['review_url'] : false;
// add_action( 'admin_enqueue_scripts', array( $this, 'rc_enqueue_scripts' ) );
add_action('wp_ajax_rc_sdk_insights', array($this, 'rc_sdk_insights'));
add_action('wp_ajax_rc_sdk_dismiss_notice', array($this, 'rc_sdk_dismiss_notice'));
$security_key = md5($params['plugin_name']);
$this->rc_name = 'rc_' . str_replace('-', '_', sanitize_title($params['plugin_name']) . '_' . $security_key);
$this->rc_allow_name = 'rc_allow_' . $this->rc_name;
$this->rc_date_name = 'rc_date_' . $this->rc_name;
$rc_count_name = 'rc_attempt_count_' . $this->rc_name;
$rc_status_db = get_option($this->rc_allow_name, false);
$this->nonce = wp_create_nonce($this->rc_allow_name);
/**
* Show Notice after 3 days
* Now 5 minutes
*/
$installed = get_option($this->rc_date_name . '_installed', false);
if (!$installed) {
update_option($this->rc_date_name . '_installed', time());
}
$installed = get_option($this->rc_date_name . '_installed', false);
// if ( $installed && ( time() - $installed ) < 1 * MINUTE_IN_SECONDS ) {
if ($installed && (time() - $installed) < 3 * DAY_IN_SECONDS) {
return;
}
/**
* Show Notice
*/
if (!$rc_status_db) {
$this->display_notice();
return;
}
/**
* If Disallow
*/
if ('disallow' == $rc_status_db) {
return;
}
/**
* Skip & Date Not Expired
* Show Notice
*/
if ('skip' == $rc_status_db && true == $this->check_date()) {
$this->display_notice();
return;
}
/**
* Allowed & Date not Expired
* No need send data to server
* Else Send Data to Server
*/
if (!$this->check_date()) {
return;
}
/**
* Count attempt every time
*/
$rc_attempt = get_option($rc_count_name, 0);
if (!$rc_attempt) {
update_option($rc_count_name, 1);
}
update_option($rc_count_name, $rc_attempt + 1);
}
/**
* Notice Modal
*
* @return void
*/
public function display_notice() {
add_action('admin_enqueue_scripts', array($this, 'rc_enqueue_scripts'));
if (!get_transient('dismissed_notice_' . $this->rc_name)) {
add_action('admin_notices', array($this, 'display_global_notice'));
}
}
/**
* If date is expired immidiate action
*
* @return boolean
*/
public function check_date() {
$current_date = strtotime(gmdate('Y-m-d'));
$rc_status_date = strtotime(get_option($this->rc_date_name, false));
if (!$rc_status_date) {
return true;
}
if ($rc_status_date && $current_date >= $rc_status_date) {
return true;
}
return false;
}
/**
* Reset Options Settings
* @return void
*/
public function reset_settings() {
delete_option($this->rc_allow_name);
delete_option($this->rc_date_name);
}
/**
* Ajax callback
*/
public function rc_sdk_insights() {
$sanitized_status = isset($_POST['button_val']) ? sanitize_text_field($_POST['button_val']) : '';
$nonce = isset($_POST['nonce']) ? sanitize_text_field($_POST['nonce']) : '';
$allow_name = isset($_POST['allow_name']) ? sanitize_text_field($_POST['allow_name']) : '';
$date_name = isset($_POST['date_name']) ? sanitize_text_field($_POST['date_name']) : '';
if (!wp_verify_nonce($nonce, 'rc_sdk')) {
wp_send_json(array(
'status' => 'error',
'title' => 'Error',
'message' => 'Nonce verification failed',
));
wp_die();
}
if (!current_user_can('manage_options')) {
wp_send_json(array(
'status' => 'error',
'title' => 'Error',
'message' => 'Denied, you don\'t have right permission',
));
wp_die();
}
if ('disallow' == $sanitized_status) {
update_option($allow_name, 'disallow');
}
if ($sanitized_status == 'skip') {
update_option($allow_name, 'skip');
/**
* Next schedule date for attempt
*/
update_option($date_name, gmdate('Y-m-d', strtotime("+1 month")));
} elseif ($sanitized_status == 'yes') {
update_option($allow_name, 'yes');
}
wp_send_json(array(
'status' => 'success',
'title' => 'Success',
'message' => 'Success.',
'action' => $sanitized_status,
));
wp_die();
}
/**
* Enqueue scripts and styles.
*
* @since 1.0.0
*/
public function rc_enqueue_scripts() {
wp_enqueue_style('rc-sdk', plugins_url('assets/rc.css', __FILE__), array(), '1.0.0');
wp_enqueue_script('rc-sdk', plugins_url('assets/rc.js', __FILE__), array('jquery'), '1.0.0', true);
// Add inline style to hide all but the first notice on page load
$inline_css = '.rc-global-notice { display: none; }';
wp_add_inline_style( 'rc-sdk', $inline_css );
}
/**
* Display Global Notice
*
* @return void
*/
public function display_global_notice() {
$plugin_title = isset($this->params['plugin_title']) ? $this->params['plugin_title'] : '';
$plugin_msg = isset($this->params['plugin_msg']) ? $this->params['plugin_msg'] : '';
$plugin_icon = isset($this->params['plugin_icon']) ? $this->params['plugin_icon'] : '';
?>
<div class="rc-global-notice notice notice-success is-dismissible <?php echo esc_attr(substr($this->rc_name, 0, -33)); ?>">
<div class="rc-global-header">
<?php if (!empty($plugin_icon)) : ?>
<div class="bdt-notice-rc-logo">
<img src="<?php echo esc_url($plugin_icon); ?>" alt="icon">
</div>
<?php endif; ?>
<div class="bdt-notice-rc-content">
<h3>
<?php printf(wp_kses_post($plugin_title)); ?>
</h3>
<?php printf(wp_kses_post($plugin_msg)); ?>
<input type="hidden" name="rc_name" value="<?php echo esc_html($this->rc_name); ?>">
<input type="hidden" name="nonce" value="<?php echo esc_html(wp_create_nonce('rc_sdk')); ?>">
<div class="bdt-notice-rc-buttons">
<button data-rc_name="<?php echo esc_html($this->rc_name); ?>" data-date_name="<?php echo esc_html($this->rc_date_name); ?>" data-allow_name="<?php echo esc_html($this->rc_allow_name); ?>" data-nonce="<?php echo esc_html(wp_create_nonce('rc_sdk')); ?>" data-review_url="<?php echo esc_html($this->review_url); ?>" name="rc_allow_status" value="yes" class="rc-button-allow">
<span class="dashicons dashicons-star-filled" style="margin-top: 3px;"></span> Give us your Review
</button>
<button data-rc_name="<?php echo esc_html($this->rc_name); ?>" data-date_name="<?php echo esc_html($this->rc_date_name); ?>" data-allow_name="<?php echo esc_html($this->rc_allow_name); ?>" data-nonce="<?php echo esc_html(wp_create_nonce('rc_sdk')); ?>" data-review_url="<?php echo esc_html($this->review_url); ?>" name="rc_allow_status" value="skip" class="rc-button-skip">
I'll skip for now
</button>
<button data-rc_name="<?php echo esc_html($this->rc_name); ?>" data-date_name="<?php echo esc_html($this->rc_date_name); ?>" data-allow_name="<?php echo esc_html($this->rc_allow_name); ?>" data-nonce="<?php echo esc_html(wp_create_nonce('rc_sdk')); ?>" data-review_url="<?php echo esc_html($this->review_url); ?>" name="rc_allow_status" value="disallow" class="rc-button-disallow rc-button-danger">
Hide and Don't show again
</button>
</div>
</div>
</div>
</div>
<?php
}
/**
* Dismiss Notice
*
* @return void
*/
public function rc_sdk_dismiss_notice() {
$nonce = isset($_POST['nonce']) ? sanitize_text_field($_POST['nonce']) : '';
$rc_name = isset($_POST['rc_name']) ? sanitize_text_field($_POST['rc_name']) : '';
if (!wp_verify_nonce($nonce, 'rc_sdk')) {
wp_send_json(array(
'status' => 'error',
'title' => 'Error',
'message' => 'Nonce verification failed',
));
wp_die();
}
if (!current_user_can('manage_options')) {
wp_send_json(array(
'status' => 'error',
'title' => 'Error',
'message' => 'Denied, you don\'t have right permission',
));
wp_die();
}
set_transient('dismissed_notice_' . $rc_name, true, 30 * DAY_IN_SECONDS);
wp_send_json(array(
'status' => 'success',
'title' => 'Success',
'message' => 'Success.',
));
wp_die();
}
}
}
/**
* Main Insights Function
*/
if (!function_exists('rc_sdk_automate')) {
function rc_sdk_automate($params) {
if (class_exists('RC_Reviews_Collector')) {
// RC_Reviews_Collector::get_instance( $params );
new RC_Reviews_Collector($params);
}
}
}
Back to Directory
File Manager