/var/www/html_us/wp-content/plugins/elementor/core/common/modules/connect/admin.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
<?php
namespace Elementor\Core\Common\Modules\Connect;

use 
Elementor\Core\Admin\Menu\Admin_Menu_Manager;
use 
Elementor\Plugin;
use 
Elementor\Settings;
use 
Elementor\Utils;

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

class 
Admin {

    const 
PAGE_ID 'elementor-connect';

    public static 
$url '';

    
/**
     * @since 2.3.0
     * @access public
     */
    
public function register_admin_menuAdmin_Menu_Manager $admin_menu ) {
        
$admin_menu->register( static::PAGE_ID, new Connect_Menu_Item() );
    }

    
/**
     * @since 2.3.0
     * @access public
     */
    
public function on_load_page() {
        if ( ! 
$this->user_has_enough_permissions() ) {
            
wp_die'You do not have sufficient permissions to access this page.''You do not have sufficient permissions to access this page.', [
                
'back_link' => true,
            ] );
        }

        if ( isset( 
$_GET['action'], $_GET['app'] ) ) {
            
$manager Plugin::$instance->common->get_component'connect' );

            
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
            
$app_slug Utils::get_super_global_value$_GET'app' );
            
$app $manager->get_app$app_slug );

            
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
            
$action Utils::get_super_global_value$_GET'action' );

            
$nonce_action $app_slug $action;

            if ( ! 
$app ) {
                
wp_die'Unknown app: ' esc_attr$app_slug ) );
            }

            if ( ! 
wp_verify_nonceUtils::get_super_global_value$_GET'nonce' ), $nonce_action ) ) {
                
wp_die'Invalid Nonce''Invalid Nonce', [
                    
'back_link' => true,
                ] );
            }

            
$method 'action_' $action;

            if ( 
method_exists$app$method ) ) {
                
call_user_func( [ $app$method ] );
            }
        }
    }

    private function 
user_has_enough_permissions() {
        if ( 
current_user_can'manage_options' ) ) {
            return 
true;
        }

        if ( 
'library' === Utils::get_super_global_value$_GET'app' ) ) {
            return 
current_user_can'edit_posts' );
        }

        return 
false;
    }

    
/**
     * @since 2.3.0
     * @access public
     */
    
public function __construct() {
        
self::$url admin_url'admin.php?page=' self::PAGE_ID );

        
add_action'elementor/admin/menu/register', [ $this'register_admin_menu' ] );

        
add_action'elementor/admin/menu/after_register', function ( Admin_Menu_Manager $admin_menu, array $hooks ) {
            if ( ! empty( 
$hooks[ static::PAGE_ID ] ) ) {
                
add_action'load-' $hooks[ static::PAGE_ID ], [ $this'on_load_page' ] );
            }
        }, 
10);
    }
}