/var/www/html_de/wp-content/plugins/elementor/modules/atomic-widgets/opt-in.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
<?php

namespace Elementor\Modules\AtomicWidgets;

use 
Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use 
Elementor\Core\Experiments\Manager as Experiments_Manager;
use 
Elementor\Modules\GlobalClasses\Module as GlobalClassesModule;
use 
Elementor\Modules\NestedElements\Module as NestedElementsModule;
use 
Elementor\Modules\AtomicWidgets\Module as AtomicWidgetsModule;
use 
Elementor\Modules\Variables\Module as VariablesModule;
use 
Elementor\Plugin;

class 
Opt_In {
    const 
EXPERIMENT_NAME 'e_opt_in_v4';

    const 
OPT_OUT_FEATURES = [
        
self::EXPERIMENT_NAME,
        
AtomicWidgetsModule::EXPERIMENT_NAME,
        
GlobalClassesModule::NAME,
        
VariablesModule::EXPERIMENT_NAME,
    ];

    const 
OPT_IN_FEATURES = [
        
self::EXPERIMENT_NAME,
        
'container',
        
NestedElementsModule::EXPERIMENT_NAME,
        
AtomicWidgetsModule::EXPERIMENT_NAME,
        
GlobalClassesModule::NAME,
        
VariablesModule::EXPERIMENT_NAME,
    ];

    public function 
init() {
        
$this->register_feature();

        
add_action'elementor/ajax/register_actions', fn( Ajax $ajax ) => $this->add_ajax_actions$ajax ) );
    }

    private function 
register_feature() {
        
Plugin::$instance->experiments->add_feature([
            
'name' => self::EXPERIMENT_NAME,
            
'title' => esc_html__'Editor V4''elementor' ),
            
'description' => esc_html__'Enable Editor V4.''elementor' ),
            
'hidden' => true,
            
'default' => Experiments_Manager::STATE_INACTIVE,
            
'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA,
        ]);
    }

    private function 
opt_out_v4() {
        foreach ( 
self::OPT_OUT_FEATURES as $feature ) {
            
$feature_key Plugin::$instance->experiments->get_feature_option_key$feature );
            
update_option$feature_keyExperiments_Manager::STATE_INACTIVE );
        }
    }

    private function 
opt_in_v4() {
        foreach ( 
self::OPT_IN_FEATURES as $feature ) {
            
$feature_key Plugin::$instance->experiments->get_feature_option_key$feature );
            
update_option$feature_keyExperiments_Manager::STATE_ACTIVE );
        }
    }

    public function 
ajax_opt_out_v4() {
        if ( ! 
current_user_can'manage_options' ) ) {
            throw new 
\Exception'Permission denied' );
        }

        
$this->opt_out_v4();
    }

    public function 
ajax_opt_in_v4() {
        if ( ! 
current_user_can'manage_options' ) ) {
            throw new 
\Exception'Permission denied' );
        }

        
$this->opt_in_v4();
    }

    private function 
add_ajax_actionsAjax $ajax ) {
        
$ajax->register_ajax_action'editor_v4_opt_in', fn() => $this->ajax_opt_in_v4() );
        
$ajax->register_ajax_action'editor_v4_opt_out', fn() => $this->ajax_opt_out_v4() );
    }
}