PluginProbe
Cookie Consent – GDPR & CCPA Cookie Banner & Consent Manager / 0.0.3
Cookie Consent – GDPR & CCPA Cookie Banner & Consent Manager v0.0.3
0.0.11 0.0.10 0.0.9 0.0.8 0.0.7 0.0.6 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5
cookiez / modules / core / components / pointers.php

pointers.php in Cookie Consent – GDPR & CCPA Cookie Banner & Consent Manager 0.0.3, at modules/core/components/pointers.php

68 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Cookiez\Modules\Core\Components;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly.
7 }
8
9 /**
10 * Pointers
11 */
12 class Pointers {
13 const DISMISSED_POINTERS_META_KEY = 'cookiez_dismissed_pointers';
14
15 /**
16 * Dismiss pointers
17 *
18 * @return void {JSON}
19 * @throws WP_Error
20 */
21 public function dismiss_pointers() {
22 if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'cookiez-pointer-dismissed' ) ) {
23 wp_send_json_error( [ 'message' => 'Invalid nonce' ] );
24 }
25
26 $pointer = sanitize_text_field( wp_unslash( $_POST['data']['pointer'] ?? '' ) );
27
28 if ( empty( $pointer ) ) {
29 wp_send_json_error( [ 'message' => 'The pointer id must be provided' ] );
30 }
31
32 $pointer = explode( ',', $pointer );
33
34 $user_dismissed_meta = get_user_meta( get_current_user_id(), self::DISMISSED_POINTERS_META_KEY, true );
35
36 if ( ! $user_dismissed_meta ) {
37 $user_dismissed_meta = [];
38 }
39
40 foreach ( $pointer as $item ) {
41 $user_dismissed_meta[ $item ] = true;
42 }
43
44 update_user_meta( get_current_user_id(), self::DISMISSED_POINTERS_META_KEY, $user_dismissed_meta );
45
46 wp_send_json_success( [] );
47 }
48
49 /**
50 * Check if a pointer is dismissed
51 *
52 * @param string $slug The pointer slug
53 * @return bool
54 */
55 public static function is_dismissed( string $slug ): bool {
56 $meta = (array) get_user_meta( get_current_user_id(), self::DISMISSED_POINTERS_META_KEY, true );
57
58 return key_exists( $slug, $meta );
59 }
60
61 /**
62 * @return void
63 */
64 public function __construct() {
65 add_action( 'wp_ajax_cookiez_pointer_dismissed', [ $this, 'dismiss_pointers' ] );
66 }
67 }
68