/var/www/html_us/wp-content/plugins/elementor/modules/notifications/options.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
namespace Elementor\Modules\Notifications;

class 
Options {

    public static function 
has_unread_notifications() : bool {
        
$current_user wp_get_current_user();

        if ( ! 
$current_user ) {
            return 
false;
        }

        
$unread_notifications get_transient"elementor_unread_notifications_{$current_user->ID});

        if ( 
false === $unread_notifications ) {
            
$notifications API::get_notifications_by_conditions();
            
$notifications_ids wp_list_pluck$notifications'id' );

            
$unread_notifications array_diff$notifications_ids, static::get_notifications_dismissed() );

            
set_transient"elementor_unread_notifications_{$current_user->ID}"$unread_notificationsHOUR_IN_SECONDS );
        }

        return ! empty( 
$unread_notifications );
    }

    public static function 
get_notifications_dismissed() {
        
$current_user wp_get_current_user();

        if ( ! 
$current_user ) {
            return [];
        }

        
$notifications_dismissed get_user_meta$current_user->ID'_e_notifications_dismissed'true );

        if ( ! 
is_array$notifications_dismissed ) ) {
            
$notifications_dismissed = [];
        }

        return 
$notifications_dismissed;
    }

    public static function 
mark_notification_read$notifications ) : bool {
        
$current_user wp_get_current_user();

        if ( ! 
$current_user ) {
            return 
false;
        }

        
$notifications_dismissed = static::get_notifications_dismissed();

        foreach ( 
$notifications as $notification ) {
            if ( ! 
in_array$notification['id'], $notifications_dismissedtrue ) ) {
                
$notifications_dismissed[] = $notification['id'];
            }
        }

        
$notifications_dismissed array_unique$notifications_dismissed );

        
update_user_meta$current_user->ID'_e_notifications_dismissed'$notifications_dismissed );

        
delete_transient"elementor_unread_notifications_{$current_user->ID});

        return 
true;
    }
}