/var/www/html_us/wp-content/plugins/elementor/modules/notifications/module.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
namespace Elementor\Modules\Notifications;

use 
Elementor\Core\Base\Module as BaseModule;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly.
}

class 
Module extends BaseModule {

    public function 
get_name() {
        return 
'notification-center';
    }

    public function 
__construct() {
        
parent::__construct();

        
add_action'elementor/admin_top_bar/before_enqueue_scripts', function() {
            if ( ! 
current_user_can'manage_options' ) ) {
                return;
            }

            
wp_enqueue_script(
                
'e-admin-notifications',
                
$this->get_js_assets_url'admin-notifications' ),
                [
                    
'elementor-v2-ui',
                    
'elementor-v2-icons',
                    
'elementor-v2-query',
                    
'wp-i18n',
                ],
                
ELEMENTOR_VERSION,
                
true
            
);

            
wp_localize_script(
                
'e-admin-notifications',
                
'elementorNotifications',
                
$this->get_app_js_config()
            );

            
wp_set_script_translations'e-editor-notifications''elementor' );
        }, 
/* Before Elementor's admin enqueue scripts */ );

        
add_action'elementor/editor/v2/scripts/enqueue', [ $this'enqueue_editor_scripts' ] );
        
add_action'elementor/editor/after_enqueue_scripts', [ $this'enqueue_editor_scripts' ] );

        
add_action'elementor/ajax/register_actions', [ $this'register_ajax_actions' ] );
    }

    public function 
enqueue_editor_scripts() {
        
$deps = [
            
'elementor-editor',
            
'elementor-v2-ui',
            
'elementor-v2-icons',
            
'elementor-v2-query',
            
'wp-i18n',
        ];

        
$is_editor_v2 current_action() === 'elementor/editor/v2/scripts/enqueue';

        if ( 
$is_editor_v2 ) {
            
$deps[] = 'elementor-v2-editor-app-bar';
        }

        
wp_enqueue_script(
            
'e-editor-notifications',
            
$this->get_js_assets_url'editor-notifications' ),
            
$deps,
            
ELEMENTOR_VERSION,
            
true
        
);

        
wp_localize_script(
            
'e-editor-notifications',
            
'elementorNotifications',
            
$this->get_app_js_config()
        );

        
wp_set_script_translations'e-editor-notifications''elementor' );
    }

    private function 
get_app_js_config() : array {
        return [
            
'is_unread' => Options::has_unread_notifications(),
        ];
    }

    public function 
register_ajax_actions$ajax ) {
        
$ajax->register_ajax_action'notifications_get', [ $this'ajax_get_notifications' ] );
    }

    public function 
ajax_get_notifications() {
        
$notifications API::get_notifications_by_conditionstrue );

        
Options::mark_notification_read$notifications );

        return 
$notifications;
    }
}