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_notifications, HOUR_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_dismissed, true ) ) { $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; } }
|