PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.4
Elementor Website Builder – more than just a page builder v4.2.4
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 / core / modules-manager.php

modules-manager.php in Elementor Website Builder – more than just a page builder 4.2.4, at core/modules-manager.php

186 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Core;
3
4 use Elementor\Core\Base\Module;
5 use Elementor\Plugin;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly.
9 }
10
11 /**
12 * Elementor modules manager.
13 *
14 * Elementor modules manager handler class is responsible for registering and
15 * managing Elementor modules.
16 *
17 * @since 1.6.0
18 */
19 class Modules_Manager {
20
21 /**
22 * Registered modules.
23 *
24 * Holds the list of all the registered modules.
25 *
26 * @since 1.6.0
27 * @access public
28 *
29 * @var array
30 */
31 private $modules = [];
32
33 /**
34 * Modules manager constructor.
35 *
36 * Initializing the Elementor modules manager.
37 *
38 * @since 1.6.0
39 * @access public
40 */
41 public function __construct() {
42 $modules_namespace_prefix = $this->get_modules_namespace_prefix();
43
44 foreach ( $this->get_modules_names() as $module_name ) {
45 $class_name = str_replace( '-', ' ', $module_name );
46
47 $class_name = str_replace( ' ', '', ucwords( $class_name ) );
48
49 $class_name = $modules_namespace_prefix . '\\Modules\\' . $class_name . '\Module';
50
51 /** @var Module $class_name */
52
53 $experimental_data = $class_name::get_experimental_data();
54
55 if ( $experimental_data ) {
56 Plugin::$instance->experiments->add_feature( $experimental_data );
57
58 if ( ! Plugin::$instance->experiments->is_feature_active( $experimental_data['name'] ) ) {
59 continue;
60 }
61 }
62
63 if ( $class_name::is_active() ) {
64 $this->modules[ $module_name ] = $class_name::instance();
65 }
66 }
67 }
68
69 /**
70 * Get modules names.
71 *
72 * Retrieve the modules names.
73 *
74 * @since 2.0.0
75 * @access public
76 *
77 * @return string[] Modules names.
78 */
79 public function get_modules_names() {
80 return [
81 'admin-bar',
82 'history',
83 'library',
84 'dynamic-tags',
85 'page-templates',
86 'gutenberg',
87 'wp-cli',
88 'mcp',
89 'wp-rest',
90 'safe-mode',
91 'ai',
92 'notifications',
93 'usage',
94 'dev-tools',
95 'landing-pages',
96 'compatibility-tag',
97 'generator-tag',
98 'elements-color-picker',
99 'elementor-counter',
100 'shapes',
101 'favorites',
102 'admin-top-bar',
103 'element-manager',
104 'pro-free-trial-popup',
105 'nested-elements',
106 // Depends on Nested Elements module
107 'nested-tabs',
108 'nested-accordion',
109 'container-converter',
110 'web-cli',
111 'promotions',
112 'pro-install',
113 'notes',
114 'performance-lab',
115 'lazyload',
116 'image-loading-optimization',
117 'kit-elements-defaults',
118 'announcements',
119 'editor-app-bar',
120 'site-navigation',
121 'styleguide',
122 'element-cache',
123 'apps',
124 'home',
125 'link-in-bio',
126 'floating-buttons',
127 'content-sanitizer',
128 'atomic-widgets',
129 'global-classes',
130 'variables',
131 'design-system-sync',
132 'wc-product-editor',
133 'checklist',
134 'cloud-library',
135 'cloud-kit-library',
136 'atomic-opt-in',
137 'components',
138 'interactions',
139 'feedback',
140 'widget-creation',
141 'editor-one',
142 'markdown-render',
143 'elementor-capabilities-mcp',
144 'assets-manager',
145 ];
146 }
147
148 /**
149 * Get modules.
150 *
151 * Retrieve all the registered modules or a specific module.
152 *
153 * @since 2.0.0
154 * @access public
155 *
156 * @param string $module_name Module name.
157 *
158 * @return null|Module|Module[] All the registered modules or a specific module.
159 */
160 public function get_modules( $module_name ) {
161 if ( $module_name ) {
162 if ( isset( $this->modules[ $module_name ] ) ) {
163 return $this->modules[ $module_name ];
164 }
165
166 return null;
167 }
168
169 return $this->modules;
170 }
171
172 /**
173 * Get modules namespace prefix.
174 *
175 * Retrieve the modules namespace prefix.
176 *
177 * @since 2.0.0
178 * @access protected
179 *
180 * @return string Modules namespace prefix.
181 */
182 protected function get_modules_namespace_prefix() {
183 return 'Elementor';
184 }
185 }
186