PluginProbe
Elementor Website Builder – more than just a page builder / 3.29.0-beta4
Elementor Website Builder – more than just a page builder v3.29.0-beta4
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / modules / atomic-widgets / opt-in.php

opt-in.php in Elementor Website Builder – more than just a page builder 3.29.0-beta4, at modules/atomic-widgets/opt-in.php

83 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\AtomicWidgets;
4
5 use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
6 use Elementor\Core\Experiments\Manager as Experiments_Manager;
7 use Elementor\Modules\EditorAppBar\Module as EditorAppBarModule;
8 use Elementor\Modules\GlobalClasses\Module as GlobalClassesModule;
9 use Elementor\Modules\NestedElements\Module as NestedElementsModule;
10 use Elementor\Modules\AtomicWidgets\Module as AtomicWidgetsModule;
11 use Elementor\Plugin;
12
13 class Opt_In {
14 const EXPERIMENT_NAME = 'e_opt_in_v4';
15
16 const OPT_OUT_FEATURES = [
17 self::EXPERIMENT_NAME,
18 AtomicWidgetsModule::EXPERIMENT_NAME,
19 GlobalClassesModule::NAME,
20 ];
21
22 const OPT_IN_FEATURES = [
23 self::EXPERIMENT_NAME,
24 'container',
25 NestedElementsModule::EXPERIMENT_NAME,
26 EditorAppBarModule::EXPERIMENT_NAME,
27 AtomicWidgetsModule::EXPERIMENT_NAME,
28 GlobalClassesModule::NAME,
29 ];
30
31 public function init() {
32 $this->register_feature();
33
34 add_action( 'elementor/ajax/register_actions', fn( Ajax $ajax ) => $this->add_ajax_actions( $ajax ) );
35 }
36
37 private function register_feature() {
38 Plugin::$instance->experiments->add_feature([
39 'name' => self::EXPERIMENT_NAME,
40 'title' => esc_html__( 'Editor V4', 'elementor' ),
41 'description' => esc_html__( 'Enable Editor V4.', 'elementor' ),
42 'hidden' => true,
43 'default' => Experiments_Manager::STATE_INACTIVE,
44 'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA,
45 ]);
46 }
47
48 private function opt_out_v4() {
49 foreach ( self::OPT_OUT_FEATURES as $feature ) {
50 $feature_key = Plugin::$instance->experiments->get_feature_option_key( $feature );
51 update_option( $feature_key, Experiments_Manager::STATE_INACTIVE );
52 }
53 }
54
55 private function opt_in_v4() {
56 foreach ( self::OPT_IN_FEATURES as $feature ) {
57 $feature_key = Plugin::$instance->experiments->get_feature_option_key( $feature );
58 update_option( $feature_key, Experiments_Manager::STATE_ACTIVE );
59 }
60 }
61
62 public function ajax_opt_out_v4() {
63 if ( ! current_user_can( 'manage_options' ) ) {
64 throw new \Exception( 'Permission denied' );
65 }
66
67 $this->opt_out_v4();
68 }
69
70 public function ajax_opt_in_v4() {
71 if ( ! current_user_can( 'manage_options' ) ) {
72 throw new \Exception( 'Permission denied' );
73 }
74
75 $this->opt_in_v4();
76 }
77
78 private function add_ajax_actions( Ajax $ajax ) {
79 $ajax->register_ajax_action( 'editor_v4_opt_in', fn() => $this->ajax_opt_in_v4() );
80 $ajax->register_ajax_action( 'editor_v4_opt_out', fn() => $this->ajax_opt_out_v4() );
81 }
82 }
83