| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | -namespace ImageOptimizer\Modules\Core\Components; | |
| 3 | +namespace ImageOptimization\Modules\Core\Components; | |
| 4 | 4 | |
| 5 | 5 | if ( ! defined( 'ABSPATH' ) ) { |
| 6 | 6 | exit; // Exit if accessed directly. |
| 7 | 7 | } |
| @@ -9,18 +9,22 @@ | ||
| 9 | 9 | class Pointers { |
| 10 | 10 | const DISMISSED_POINTERS_META_KEY = 'image_optimizer_dismissed_pointers'; |
| 11 | 11 | |
| 12 | 12 | public function dismiss_pointers() { |
| 13 | - if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'image-optimizer-pointer-dismissed' ) ) { | |
| 13 | + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'image-optimization-pointer-dismissed' ) ) { | |
| 14 | 14 | wp_send_json_error( [ 'message' => 'Invalid nonce' ] ); |
| 15 | 15 | } |
| 16 | 16 | |
| 17 | - $pointer = sanitize_text_field( $_POST['data']['pointer'] ) ?? null; | |
| 17 | + $pointer = isset( $_POST['data']['pointer'] ) ? | |
| 18 | + sanitize_text_field( wp_unslash( $_POST['data']['pointer'] ) ) : | |
| 19 | + null; | |
| 18 | 20 | |
| 19 | 21 | if ( empty( $pointer ) ) { |
| 20 | 22 | wp_send_json_error( [ 'message' => 'The pointer id must be provided' ] ); |
| 21 | 23 | } |
| 22 | 24 | |
| 25 | + $pointer = explode( ',', $pointer ); | |
| 26 | + | |
| 23 | 27 | $user_dismissed_meta = get_user_meta( get_current_user_id(), self::DISMISSED_POINTERS_META_KEY, true ); |
| 24 | 28 | |
| 25 | 29 | if ( ! $user_dismissed_meta ) { |
| 26 | 30 | $user_dismissed_meta = []; |
| @@ -25,13 +29,21 @@ | ||
| 25 | 29 | if ( ! $user_dismissed_meta ) { |
| 26 | 30 | $user_dismissed_meta = []; |
| 27 | 31 | } |
| 28 | 32 | |
| 29 | - $user_dismissed_meta[ $pointer ] = true; | |
| 33 | + foreach ( $pointer as $item ) { | |
| 34 | + $user_dismissed_meta[ $item ] = true; | |
| 35 | + } | |
| 30 | 36 | |
| 31 | 37 | update_user_meta( get_current_user_id(), self::DISMISSED_POINTERS_META_KEY, $user_dismissed_meta ); |
| 32 | 38 | |
| 33 | 39 | wp_send_json_success( [] ); |
| 40 | + } | |
| 41 | + | |
| 42 | + public static function is_dismissed( string $slug ): bool { | |
| 43 | + $meta = (array) get_user_meta( get_current_user_id(), self::DISMISSED_POINTERS_META_KEY, true ); | |
| 44 | + | |
| 45 | + return key_exists( $slug, $meta ); | |
| 34 | 46 | } |
| 35 | 47 | |
| 36 | 48 | public function __construct() { |
| 37 | 49 | add_action( 'wp_ajax_image_optimizer_pointer_dismissed', [ $this, 'dismiss_pointers' ] ); |