PluginProbe
Slider Block by Sliderberg – WordPress Slider & Carousel Plugin for Gutenberg / trunk
Slider Block by Sliderberg – WordPress Slider & Carousel Plugin for Gutenberg vtrunk
1.2.3 1.2.2 1.2.0 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.7 1.0.8 1.0.9
sliderberg / includes / class-review-handler.php

class-review-handler.php in Slider Block by Sliderberg – WordPress Slider & Carousel Plugin for Gutenberg trunk, at includes/class-review-handler.php

93 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Review Handler Class
4 *
5 * @package SliderBerg
6 */
7
8 namespace SliderBerg;
9
10 // Exit if accessed directly.
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 /**
16 * Review Handler Class
17 */
18 class Review_Handler {
19
20 /**
21 * Initialize the review handler
22 */
23 public function __construct() {
24 add_action( 'wp_ajax_sliderberg_dismiss_review', array( $this, 'handle_dismiss_review' ) );
25 add_action( 'wp_ajax_sliderberg_track_review_click', array( $this, 'handle_track_review_click' ) );
26 }
27
28 /**
29 * Handle review dismissal
30 */
31 public function handle_dismiss_review() {
32 // Verify nonce
33 if ( ! check_ajax_referer( 'sliderberg_nonce', 'nonce', false ) ) {
34 wp_send_json_error( 'Invalid nonce' );
35 }
36
37 // Check user permissions
38 if ( ! current_user_can( 'edit_posts' ) ) {
39 wp_send_json_error( 'Insufficient permissions' );
40 }
41
42 $permanent = isset( $_POST['permanent'] ) && $_POST['permanent'] === 'true';
43
44 if ( $permanent ) {
45 update_user_meta( get_current_user_id(), 'sliderberg_review_dismissed_permanently', true );
46 } else {
47 update_user_meta( get_current_user_id(), 'sliderberg_review_dismissed_until', time() + ( 30 * DAY_IN_SECONDS ) );
48 }
49
50 wp_send_json_success();
51 }
52
53 /**
54 * Track when user clicks the review button
55 */
56 public function handle_track_review_click() {
57 // Verify nonce
58 if ( ! check_ajax_referer( 'sliderberg_nonce', 'nonce', false ) ) {
59 wp_send_json_error( 'Invalid nonce' );
60 }
61
62 // Check user permissions
63 if ( ! current_user_can( 'edit_posts' ) ) {
64 wp_send_json_error( 'Insufficient permissions' );
65 }
66
67 // Mark as permanently dismissed since they clicked review
68 update_user_meta( get_current_user_id(), 'sliderberg_review_dismissed_permanently', true );
69 update_user_meta( get_current_user_id(), 'sliderberg_review_clicked', true );
70
71 wp_send_json_success();
72 }
73
74 /**
75 * Check if review should be shown for current user
76 *
77 * @return bool
78 */
79 public static function should_show_review() {
80 // Don't show if permanently dismissed
81 if ( get_user_meta( get_current_user_id(), 'sliderberg_review_dismissed_permanently', true ) ) {
82 return false;
83 }
84
85 // Check temporary dismissal
86 $dismissed_until = get_user_meta( get_current_user_id(), 'sliderberg_review_dismissed_until', true );
87 if ( $dismissed_until && $dismissed_until > time() ) {
88 return false;
89 }
90
91 return true;
92 }
93 }