wp_back/wp-content/plugins/visual-portfolio/classes/class-ask-review.php

138 lines
3.9 KiB
PHP
Raw Permalink Normal View History

2024-05-20 15:37:46 +03:00
<?php
/**
* Ask Review Notice.
*
* @package visual-portfolio
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class Visual_Portfolio_Ask_Review_Notice
*/
class Visual_Portfolio_Ask_Review_Notice {
/**
* Option name.
*
* @var string
*/
public $option_name = 'vpf_ask_review_notice';
/**
* Visual_Portfolio_Ask_Review_Notice constructor.
*/
public function __construct() {
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
add_action( 'wp_ajax_vpf_dismiss_ask_review_notice', array( $this, 'ajax_vpf_dismiss_ask_review_notice' ) );
}
/**
* Check if we can display notice.
*/
public function is_notice_allowed() {
$state = get_site_option( $this->option_name . '_state' );
$time = (int) get_site_option( $this->option_name . '_time' );
if ( 'yes' === $state || 'already' === $state ) {
return false;
}
// Save current time if nothing saved.
if ( ! $time ) {
$time = time();
update_site_option( $this->option_name . '_time', $time );
}
// Allow notice if plugin used for more then 2 weeks.
if ( $time < strtotime( '-14 days' ) ) {
return true;
}
return false;
}
/**
* Display admin notice if needed.
*/
public function admin_notices() {
if ( ! $this->is_notice_allowed() ) {
return;
}
?>
<div class="notice notice-info vpf-admin-notice" id="vpf-review-plugin-notice">
<div class="vpf-admin-notice-icon">
<i class="dashicons-visual-portfolio"></i>
</div>
<div class="vpf-admin-notice-content">
<h3><?php esc_html_e( 'Satisfied using Visual Portfolio?', 'visual-portfolio' ); ?></h3>
<p>
<?php
// translators: %s - Plugin name.
echo wp_kses_post( sprintf( __( 'Hey, we noticed you\'ve been using %s for more than two weeks now that\'s awesome!', 'visual-portfolio' ), '<strong>' . _x( 'Visual Portfolio', 'plugin name inside the review notice', 'visual-portfolio' ) . '</strong>' ) );
?>
<br>
<?php esc_html_e( 'Could you please do us a BIG favor and give it a rating on WordPress.org to help us spread the word and boost our motivation?', 'visual-portfolio' ); ?>
</p>
<p>
<a href="https://wordpress.org/support/plugin/visual-portfolio/reviews/?filter=5#new-post" class="vpf-review-plugin-notice-dismiss" data-vpf-review-action="yes" target="_blank" rel="noopener noreferrer">
<strong>
<?php esc_html_e( 'Yes, you deserve it', 'visual-portfolio' ); ?>
</strong>
</a>
<br>
<a href="#" class="vpf-review-plugin-notice-dismiss" data-vpf-review-action="later">
<?php esc_html_e( 'No, maybe later', 'visual-portfolio' ); ?>
</a><br>
<a href="#" class="vpf-review-plugin-notice-dismiss" data-vpf-review-action="already">
<?php esc_html_e( 'I already did', 'visual-portfolio' ); ?>
</a>
</p>
</div>
</div>
<?php
}
/**
* Enqueue script.
*/
public function admin_enqueue_scripts() {
if ( is_customize_preview() ) {
return;
}
Visual_Portfolio_Assets::enqueue_script( 'visual-portfolio-ask-review-notice', 'build/assets/admin/js/ask-review-notice' );
wp_localize_script(
'visual-portfolio-ask-review-notice',
'VPAskReviewNotice',
array(
'nonce' => wp_create_nonce( $this->option_name ),
)
);
}
/**
* Handles Ajax request to persist notices dismissal.
* Uses check_ajax_referer to verify nonce.
*/
public function ajax_vpf_dismiss_ask_review_notice() {
check_ajax_referer( $this->option_name, 'nonce' );
$type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : 'yes';
update_site_option( $this->option_name . '_state', $type );
// Update time if user clicked "No, maybe later" button.
if ( 'later' === $type ) {
$time = time();
update_site_option( $this->option_name . '_time', $time );
}
wp_die();
}
}
new Visual_Portfolio_Ask_Review_Notice();