193 lines
4.6 KiB
PHP
193 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace DgoraWcas\Admin\Promo;
|
|
|
|
// Exit if accessed directly
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
use DgoraWcas\Helpers;
|
|
|
|
class FeedbackNotice {
|
|
|
|
const ACTIVATION_DATE_OPT = 'dgwt_wcas_activation_date';
|
|
|
|
const HIDE_NOTICE_OPT = 'dgwt_wcas_dismiss_review_notice';
|
|
|
|
const DISMISS_AJAX_ACTION = 'dgwt_wcas_dismiss_notice';
|
|
|
|
const REVIEW_URL = 'https://wordpress.org/support/plugin/ajax-search-for-woocommerce/reviews/?filter=5';
|
|
|
|
/**
|
|
* Admin notice offset
|
|
* @var int timestamp
|
|
*/
|
|
private $offset;
|
|
|
|
function __construct() {
|
|
$this->offset = strtotime( '-7 days' );
|
|
|
|
add_action( 'admin_init', array( $this, 'checkInstallationDate' ) );
|
|
|
|
add_action( 'wp_ajax_' . self::DISMISS_AJAX_ACTION, array( $this, 'dismissNotice' ) );
|
|
|
|
add_action( 'admin_head', array( $this, 'loadStyle' ) );
|
|
|
|
add_action( 'admin_footer', array( $this, 'printDismissJS' ) );
|
|
}
|
|
|
|
/**
|
|
* Check if is possible to display admin notice on the current screen
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function allowDisplay() {
|
|
$currentScreen = get_current_screen();
|
|
if (
|
|
! empty( $currentScreen )
|
|
&& (
|
|
in_array( $currentScreen->base, array( 'dashboard', 'post', 'edit' ) )
|
|
|| strpos( $currentScreen->base, DGWT_WCAS_SETTINGS_KEY ) !== false
|
|
)
|
|
) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Display feedback notice
|
|
*
|
|
* @return void
|
|
*/
|
|
public function displayNotice() {
|
|
global $current_user;
|
|
|
|
if ( $this->allowDisplay() && ! dgoraAsfwFs()->is_premium() ) {
|
|
?>
|
|
|
|
<div class="notice-info notice dgwt-wcas-notice dgwt-wcas-review-notice">
|
|
<div class="dgwt-wcas-review-notice-logo"></div>
|
|
<?php printf( __( "Hey %s, it's Damian Góra from %s. You have used this free plugin for some time now, and I hope you like it!", 'ajax-search-for-woocommerce' ),
|
|
'<strong>' . $current_user->display_name . '</strong>',
|
|
'<strong>' . DGWT_WCAS_NAME . '</strong>'
|
|
); ?>
|
|
<br/>
|
|
<?php printf( __( "The FiboSearch team have spent countless hours developing it, and it would mean a lot to me if you %ssupport it with a quick review on WordPress.org.%s", 'ajax-search-for-woocommerce' ),
|
|
'<strong><a target="_blank" href="' . self::REVIEW_URL . '">', '</a></strong>'
|
|
); ?>
|
|
<div class="button-container">
|
|
<a href="<?php echo self::REVIEW_URL; ?>" target="_blank" data-link="follow" class="button-secondary dgwt-review-notice-dismiss">
|
|
<span class="dashicons dashicons-star-filled"></span>
|
|
<?php printf( __( "Review %s", 'ajax-search-for-woocommerce' ), DGWT_WCAS_NAME ); ?>
|
|
</a>
|
|
<a href="#" class="button-secondary dgwt-review-notice-dismiss">
|
|
<span class="dashicons dashicons-no-alt"></span>
|
|
<?php _e( "No thanks", 'ajax-search-for-woocommerce' ); ?>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Check instalation date
|
|
*
|
|
* @return void
|
|
*/
|
|
public function checkInstallationDate() {
|
|
|
|
$date = get_option( self::ACTIVATION_DATE_OPT );
|
|
if ( empty( $date ) ) {
|
|
add_option( self::ACTIVATION_DATE_OPT, time() );
|
|
}
|
|
|
|
$notice_closed = get_option( self::HIDE_NOTICE_OPT );
|
|
|
|
if ( empty( $notice_closed ) ) {
|
|
$install_date = get_option( self::ACTIVATION_DATE_OPT );
|
|
|
|
if ( $this->offset >= $install_date && current_user_can( 'install_plugins' ) ) {
|
|
add_action( 'admin_notices', array( $this, 'displayNotice' ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Hide admin notice
|
|
*
|
|
* @return void
|
|
*/
|
|
public function dismissNotice() {
|
|
if ( ! current_user_can( Helpers::shopManagerHasAccess() ? 'manage_woocommerce' : 'manage_options' ) ) {
|
|
wp_die( - 1, 403 );
|
|
}
|
|
|
|
check_ajax_referer( 'dgwt_wcas_dismiss_feedback_notice' );
|
|
|
|
update_option( self::HIDE_NOTICE_OPT, true );
|
|
|
|
wp_send_json_success();
|
|
}
|
|
|
|
/**
|
|
* Print JS for close admin notice
|
|
*
|
|
* @return void
|
|
*/
|
|
public function printDismissJS() {
|
|
if ( ! $this->allowDisplay() ) {
|
|
return;
|
|
}
|
|
?>
|
|
<script>
|
|
(function ($) {
|
|
|
|
$(document).on('click', '.dgwt-review-notice-dismiss', function () {
|
|
var $box = $(this).closest('.dgwt-wcas-review-notice'),
|
|
isLink = $(this).attr('data-link') === 'follow' ? true : false;
|
|
|
|
$box.fadeOut(700);
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
_wpnonce: '<?php echo wp_create_nonce( 'dgwt_wcas_dismiss_feedback_notice' ); ?>',
|
|
action: '<?php echo self::DISMISS_AJAX_ACTION; ?>',
|
|
}
|
|
}).done(function (data) {
|
|
|
|
setTimeout(function () {
|
|
$box.remove();
|
|
}, 700);
|
|
|
|
});
|
|
|
|
if (!isLink) {
|
|
return false;
|
|
}
|
|
});
|
|
|
|
}(jQuery));
|
|
</script>
|
|
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Load the necessary CSS
|
|
*
|
|
* @return void
|
|
*/
|
|
public function loadStyle() {
|
|
if ( $this->allowDisplay() ) {
|
|
wp_enqueue_style( 'dgwt-wcas-admin-style' );
|
|
}
|
|
}
|
|
}
|