bibhamrokhanpin/wp-content/plugins/simple-custom-post-order/class-simple-review.php
2024-04-10 17:46:06 +05:45

171 lines
4.5 KiB
PHP

<?php
class Simple_Review {
private $value;
private $messages;
private $link = 'https://wordpress.org/plugins/simple-custom-post-order/#reviews';
private $slug = 'simple-custom-post-order';
function __construct() {
$this->messages = array(
'notice' => esc_html__( "Hi there! Stoked to see you're using Simple Custom Post Order for a few days now - hope you like it! And if you do, please consider rating it. It would mean the world to us. Keep on rocking!", 'simple-custom-post-order' ),
'rate' => esc_html__( 'Rate the plugin', 'simple-custom-post-order' ),
'rated' => esc_html__( 'Remind me later', 'simple-custom-post-order' ),
'no_rate' => esc_html__( 'Don\'t show again', 'simple-custom-post-order' ),
);
if ( isset( $args['messages'] ) ) {
$this->messages = wp_parse_args( $args['messages'], $this->messages );
}
add_action( 'init', array( $this, 'init' ) );
}
public function init() {
if ( ! is_admin() ) {
return;
}
$this->value = $this->value();
if ( $this->check() ) {
add_action( 'admin_notices', array( $this, 'five_star_wp_rate_notice' ) );
add_action( 'wp_ajax_epsilon_simple_review', array( $this, 'ajax' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
add_action( 'admin_print_footer_scripts', array( $this, 'ajax_script' ) );
}
}
private function check() {
if ( ! current_user_can('manage_options') ) {
return false;
}
return( time() > $this->value );
}
private function value() {
$value = get_option( 'simple-rate-time', false );
if ( $value ) {
return $value;
}
$value = time() + DAY_IN_SECONDS;
update_option( 'simple-rate-time', $value );
return $value;
}
public function five_star_wp_rate_notice() {
$url = sprintf( $this->link, $this->slug );
?>
<div id="<?php echo esc_attr($this->slug) ?>-epsilon-review-notice" class="notice notice-success is-dismissible" style="margin-top:30px;">
<p><?php echo sprintf( esc_html( $this->messages['notice'] ), $this->value ) ; ?></p>
<p class="actions">
<a id="epsilon-rate" href="<?php echo esc_url( $url ) ?>" target="_blank" class="button button-primary epsilon-review-button">
<?php echo esc_html( $this->messages['rate'] ); ?>
</a>
<a id="epsilon-later" href="#" style="margin-left:10px" class="epsilon-review-button"><?php echo esc_html( $this->messages['rated'] ); ?></a>
<a id="epsilon-no-rate" href="#" style="margin-left:10px" class="epsilon-review-button"><?php echo esc_html( $this->messages['no_rate'] ); ?></a>
</p>
</div>
<?php
}
public function ajax() {
check_ajax_referer( 'epsilon-simple-review', 'security' );
if ( ! isset( $_POST['check'] ) ) {
wp_die( 'ok' );
}
$time = get_option( 'simple-rate-time' );
if ( 'epsilon-rate' == $_POST['check'] ) {
$time = time() + YEAR_IN_SECONDS * 5;
}elseif ( 'epsilon-later' == $_POST['check'] ) {
$time = time() + WEEK_IN_SECONDS;
}elseif ( 'epsilon-no-rate' == $_POST['check'] ) {
$time = time() + YEAR_IN_SECONDS * 5;
}
update_option( 'simple-rate-time', $time );
wp_die( 'ok' );
}
public function enqueue() {
wp_enqueue_script( 'jquery' );
}
public function ajax_script() {
$ajax_nonce = wp_create_nonce( "epsilon-simple-review" );
?>
<script type="text/javascript">
jQuery( document ).ready( function( $ ){
$( '.epsilon-review-button' ).click( function( evt ){
var href = $(this).attr('href'),
id = $(this).attr('id');
if ( 'epsilon-rate' != id ) {
evt.preventDefault();
}
var data = {
action: 'epsilon_simple_review',
security: '<?php echo $ajax_nonce; ?>',
check: id
};
if ( 'epsilon-rated' === id || 'epsilon-rate' === id ) {
data['epsilon-review'] = 1;
}
$.post( '<?php echo admin_url( 'admin-ajax.php' ) ?>', data, function( response ) {
$( '#<?php echo $this->slug ?>-epsilon-review-notice' ).slideUp( 'fast', function() {
$( this ).remove();
} );
});
} );
$('#simple-custom-post-order-epsilon-review-notice .notice-dismiss').click(function(){
var data = {
action: 'epsilon_simple_review',
security: '<?php echo $ajax_nonce; ?>',
check: 'epsilon-later'
};
$.post( '<?php echo admin_url( 'admin-ajax.php' ) ?>', data, function( response ) {
$( '#<?php echo $this->slug ?>-epsilon-review-notice' ).slideUp( 'fast', function() {
$( this ).remove();
} );
});
});
});
</script>
<?php
}
}
new Simple_Review();