/var/www/html_us/wp-content/plugins/elementor/modules/ai/site-planner-connect/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
<?php

namespace Elementor\Modules\Ai\SitePlannerConnect;

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

class 
Module {
    const 
NOT_TRANSLATED_APP_NAME 'Site Planner';
    const 
PLANNER_ORIGIN 'https://planner.elementor.com';
    const 
HIDDEN_PAGE_SLUG '';

    public function 
__construct() {
        
add_action'rest_api_init', [ $this'on_rest_init' ] );
        
add_action'admin_menu', [ $this'register_menu_page' ], 100 );
        
add_filter'rest_prepare_application_password', function ( $response$item$request ) {
            if ( 
'/wp/v2/users/me/application-passwords' === $request->get_route() && is_user_logged_in() ) {
                
$user wp_get_current_user();
                
$response->data['user_login'] = $user->user_login;
            }
            return 
$response;
        }, 
10);
    }

    public function 
on_rest_init(): void {
        ( new 
Wp_Rest_Api() )->register();
    }

    public function 
register_menu_page() {
        
add_submenu_page(
            
self::HIDDEN_PAGE_SLUG,
            
'App Password Generator',
            
'App Password',
            
'manage_options',
            
'e-site-planner-password-generator',
            [ 
$this'render_menu_page' ]
        );
    }

    public function 
render_menu_page() {
        
ob_start();
        require_once 
__DIR__ '/view.php';
        
$content ob_get_clean();
        
$vars = [
            
'%app_name%' => self::NOT_TRANSLATED_APP_NAME,
            
'%safe_origin%' => esc_urlself::PLANNER_ORIGIN ),
            
'%domain%' => isset( $_SERVER['HTTP_HOST'] ) ? sanitize_text_fieldwp_unslash$_SERVER['HTTP_HOST'] ) ) : '',
            
'%title%' => esc_html__'Connect to Site Planner''elementor' ),
            
'%description%' => esc_html__'To connect your site to Site Planner, you need to generate an app password.''elementor' ),
            
'%cta%' => esc_html__'Approve & Connect''elementor' ),
        ];

        
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
        
echo strtr$content$vars );
    }
}