/var/www/html_us/wp-content/plugins/elementor/modules/ai/preferences.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
102
103
104
105
106
107
108
109
110
111
112
113
<?php
namespace Elementor\Modules\Ai;

use 
Elementor\User;
use 
Elementor\Utils;

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

class 
Preferences {

    const 
ENABLE_AI 'elementor_enable_ai';

    
/**
     * Register actions and hooks.
     *
     * @return void
     */
    
public function register() {
        
add_action'personal_options', function ( \WP_User $user ) {
            
$this->add_personal_options_settings$user );
        } );

        
add_action'personal_options_update', function ( $user_id ) {
            
$this->update_personal_options_settings$user_id );
        } );

        
add_action'edit_user_profile_update', function ( $user_id ) {
            
$this->update_personal_options_settings$user_id );
        } );
    }

    
/**
     * Determine if AI features are enabled for a user.
     *
     * @param int $user_id - User ID.
     *
     * @return bool
     */
    
public static function is_ai_enabled$user_id ) {
        return (bool) 
User::get_user_option_with_default( static::ENABLE_AI$user_idtrue );
    }

    
/**
     * Add settings to the "Personal Options".
     *
     * @param \WP_User $user - User object.
     *
     * @return void
     */
    
protected function add_personal_options_settings\WP_User $user ) {
        if ( ! 
$this->has_permissions_to_edit_user$user->ID ) ) {
            return;
        }

        
$ai_value User::get_user_option_with_default( static::ENABLE_AI$user->ID'1' );
        
?>
            <tr>
                <th style="padding:0px">
        <h2><?php echo esc_html__'Elementor - AI''elementor' ); ?></h2>
                </th>
            </tr>
        <tr>
            <th>
                    <label for="<?php echo esc_attr( static::ENABLE_AI ); ?>">
                        <?php echo esc_html__'Status''elementor' ); ?>
                    </label>
            </th>
                <td>
                    <label for="<?php echo esc_attr( static::ENABLE_AI ); ?>">
                        <input name="<?php echo esc_attr( static::ENABLE_AI ); ?>" id="<?php echo esc_attr( static::ENABLE_AI ); ?>" type="checkbox" value="1"<?php checked'1'$ai_value ); ?> />
                        <?php echo esc_html__'Enable Elementor AI functionality''elementor' ); ?>
                    </label>
                </td>
            </tr>
        <?php
    
}

    
/**
     * Save the settings in the "Personal Options".
     *
     * @param int $user_id - User ID.
     *
     * @return void
     */
    
protected function update_personal_options_settings$user_id ) {
        
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce already verified in `wp_verify_nonce`.
        
$wpnonce Utils::get_super_global_value$_POST'_wpnonce' );
        if ( ! 
wp_verify_nonce$wpnonce'update-user_' $user_id ) ) {
            return;
        }

        if ( ! 
$this->has_permissions_to_edit_user$user_id ) ) {
            return;
        }

        
$ai_value = empty( $_POST[ static::ENABLE_AI ] ) ? '0' '1';

        
update_user_option$user_id, static::ENABLE_AIsanitize_text_field$ai_value ) );
    }

    
/**
     * Determine if the current user has permission to view/change preferences of a user.
     *
     * @param int $user_id
     *
     * @return bool
     */
    
protected function has_permissions_to_edit_user$user_id ) {
        return 
current_user_can'edit_user'$user_id );
    }
}