= $min_days_trigger && !self::$active_notice; } public static function getMinDaysTrigger(): int { $option_key = App::instance()->prefix('review_notice_min_days'); return intval(get_option($option_key, self::days_interval)); } public static function setMinDaysTrigger($value): bool { $option_key = App::instance()->prefix('review_notice_min_days'); return update_option($option_key, $value); } public static function getDaysPassed(): int { $install_timestamp = Migrations::$installed_time; $current_time = time(); $date_diff = $current_time - $install_timestamp; return intval(round($date_diff / (60 * 60 * 24))); } public static function getReadableDaysPassed(): string { $install_timestamp = Migrations::$installed_time; $current_time = time(); return human_time_diff($install_timestamp, $current_time); } public static function ajaxPluginRateAction() { // Continue only if the nonce is correct $nonce = sanitize_text_field($_REQUEST['_nonce']); if ( ! wp_verify_nonce( $nonce, App::instance()->prefix('wp_notice_action_nonce') ) ) { wp_send_json_error(); } $notice_action = sanitize_text_field($_POST['notice_action']); self::ratePlugin($notice_action); wp_send_json_success(); } public static function ratePlugin($notice_action, $days_interval = null) { $min_days_trigger = self::getMinDaysTrigger(); $days_passed = self::getDaysPassed(); $days_interval = !empty($days_interval) ? $days_interval : self::days_interval; if ( -1 === $min_days_trigger ) { return; } if ('done-rating' === $notice_action) { $min_days_trigger = -1; } else { if($min_days_trigger > self::max_days) { $min_days_trigger = -1; }else { $min_days_trigger = $days_passed + $days_interval; } } self::setMinDaysTrigger($min_days_trigger); } public static function add_review_notice() { $current_user = wp_get_current_user(); $first_name = ucfirst(strtolower(!empty($current_user->user_firstname) ? $current_user->user_firstname : $current_user->display_name)); $time_passed = self::getReadableDaysPassed(); $action = SLUG."_plugin_rate_action"; ?>