<?php
/**
* Class that handles displaying of review notice
*
* @since 4.1.3
*/
class RM_Review_Message {
/**
* Variable to hold how many results needed to show message
*
* @since 4.1.3
*/
public $trigger = -1;
/**
* Main Construct Function
*
* Adds the notice check to init and then check to display message
*
* @since 4.1.3
*/
public function __construct() {
$this->add_hooks();
}
/**
* Adds check message to admin_init hook
*
* @since 4.1.3
*/
public function add_hooks() {
add_action( 'admin_init', array( $this, 'check_message_display' ) );
}
/**
* Checks if message should be displayed
*
* @since 4.1.3
*/
public function check_message_display() {
$this->admin_notice_check();
$this->trigger = $this->check_message_trigger();
if ( -1 !== $this->trigger ) {
$amount = $this->check_results_amount();
if ( $amount >= $this->trigger ) {
add_action( 'admin_notices', array( $this, 'display_admin_message' ) );
}
}
}
/**
* Retrieves what the next trigger value is
*
* @since 4.1.3
* @return int The amount of menus needed to display message
*/
public function check_message_trigger() {
$trigger = get_option( 'rm_review_message_trigger' );
if ( empty( $trigger ) || is_null( $trigger ) ) {
add_option( 'rm_review_message_trigger', 1 );
return 1;
}
return intval( $trigger );
}
/**
* Checks the amount of Menus
*
* @return int The amount of menus
*/
public function check_results_amount() {
global $wpdb;
$amount = $wpdb->get_var(
'SELECT COUNT(*) FROM `' . $wpdb->prefix . "posts`
WHERE post_type = 'rmp_menu'"
);
return $amount;
}
/**
* Displays the message
*
* Displays the message asking for review
*/
public function display_admin_message() {
?>
<div class='updated'><br />
<?php
/* translators: %d: Result count */
echo sprintf( esc_html__( 'Greetings! I just noticed that you have created %d Menus. That is awesome! Could you please help me out by giving this plugin a 5-star rating on WordPress? This will help us by helping other users discover this plugin.', 'responsive-menu' ), esc_html( $this->check_results_amount() ) );
?>
<br/><strong><em>~ <?php esc_html_e( 'RM Team', 'responsive-menu' ); ?></em></strong><br/><br/>
<a target="_blank" rel="noopener" href="https://wordpress.org/support/plugin/responsive-menu/reviews/#new-topic-0" class="button-primary"><?php esc_html_e( 'Yeah, you deserve it!', 'responsive-menu' ); ?></a>
<a href="<?php echo esc_url( add_query_arg( 'rm_review_notice_check', 'already_did' ) ); ?>" class="button-secondary"><?php esc_html_e( 'I already did!', 'responsive-menu' ); ?></a>
<a href="<?php echo esc_url( add_query_arg( 'rm_review_notice_check', 'remove_message' ) ); ?>" class="button-secondary"><?php esc_html_e( 'No, this plugin is not good enough', 'responsive-menu' ); ?></a>
<br /><br /></div>
<?php
}
/**
* Checks if a link in the admin message has been clicked
*
* @since 4.1.3
*/
public function admin_notice_check() {
if ( isset( $_GET['rm_review_notice_check'] ) && 'remove_message' === $_GET['rm_review_notice_check'] ) {
$this->trigger = $this->check_message_trigger();
$update_trigger = -1;
if ( -1 === $this->trigger ) {
exit;
} elseif ( 1 === $this->trigger ) {
$update_trigger = 5;
} elseif ( 5 === $this->trigger ) {
$update_trigger = 10;
} elseif ( 10 === $this->trigger ) {
$update_trigger = -1;
}
update_option( 'rm_review_message_trigger', $update_trigger );
}
if ( isset( $_GET['rm_review_notice_check'] ) && 'already_did' === $_GET['rm_review_notice_check'] ) {
update_option( 'rm_review_message_trigger', -1 );
}
}
}
$rm_review_message = new RM_Review_Message();