PluginProbe
Elementor Website Builder – more than just a page builder / 3.0.6
Elementor Website Builder – more than just a page builder v3.0.6
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
← All changes | includes/autoloader.php +47 -78 4.1.0-dev33.0.6 View file →
@@ -41,45 +41,17 @@
41 41 */
42 42 private static $classes_aliases;
43 43
44 44 /**
45 - * Default path for autoloader.
46 - *
47 - * @var string
48 - */
49 - private static $default_path;
50 -
51 - /**
52 - * Default namespace for autoloader.
53 - *
54 - * @var string
55 - */
56 - private static $default_namespace;
57 -
58 - /**
59 45 * Run autoloader.
60 46 *
61 47 * Register a function as `__autoload()` implementation.
62 48 *
63 - * @param string $default_path
64 - * @param string $default_namespace
65 - *
66 49 * @since 1.6.0
67 50 * @access public
68 51 * @static
69 52 */
70 - public static function run( $default_path = '', $default_namespace = '' ) {
71 - if ( '' === $default_path ) {
72 - $default_path = ELEMENTOR_PATH;
73 - }
74 -
75 - if ( '' === $default_namespace ) {
76 - $default_namespace = __NAMESPACE__;
77 - }
78 -
79 - self::$default_path = $default_path;
80 - self::$default_namespace = $default_namespace;
81 -
53 + public static function run() {
82 54 spl_autoload_register( [ __CLASS__, 'autoload' ] );
83 55 }
84 56
85 57 /**
@@ -127,9 +99,8 @@
127 99 'Fonts' => 'includes/fonts.php',
128 100 'Frontend' => 'includes/frontend.php',
129 101 'Group_Control_Base' => 'includes/controls/groups/base.php',
130 102 'Group_Control_Interface' => 'includes/interfaces/group-control.php',
131 - 'Has_Validation' => 'includes/interfaces/has-validation.php',
132 103 'Heartbeat' => 'includes/heartbeat.php',
133 104 'Images_Manager' => 'includes/managers/image.php',
134 105 'Maintenance' => 'includes/maintenance.php',
135 106 'Maintenance_Mode' => 'includes/maintenance-mode.php',
@@ -144,21 +115,15 @@
144 115 'Icons_Manager' => 'includes/managers/icons.php',
145 116 'Stylesheet' => 'includes/stylesheet.php',
146 117 'System_Info\Main' => 'includes/settings/system-info/main.php',
147 118 'TemplateLibrary\Classes\Import_Images' => 'includes/template-library/classes/class-import-images.php',
148 - 'TemplateLibrary\Classes\Media_Collector' => 'includes/template-library/classes/class-media-collector.php',
149 - 'TemplateLibrary\Classes\Media_Mapper' => 'includes/template-library/classes/class-media-mapper.php',
150 - 'TemplateLibrary\Forms\New_Template_Form' => 'includes/template-library/forms/new-template-form.php',
151 119 'TemplateLibrary\Manager' => 'includes/template-library/manager.php',
152 120 'TemplateLibrary\Source_Base' => 'includes/template-library/sources/base.php',
153 121 'TemplateLibrary\Source_Local' => 'includes/template-library/sources/local.php',
154 122 'TemplateLibrary\Source_Remote' => 'includes/template-library/sources/remote.php',
155 - 'TemplateLibrary\Source_Cloud' => 'includes/template-library/sources/cloud.php',
156 123 'Tools' => 'includes/settings/tools.php',
157 - 'Container\Container' => 'includes/container/container.php',
158 124 'Tracker' => 'includes/tracker.php',
159 125 'User' => 'includes/user.php',
160 - 'User_Data' => 'includes/user-data.php',
161 126 'Utils' => 'includes/utils.php',
162 127 'Widget_WordPress' => 'includes/widgets/wordpress.php',
163 128 'Widgets_Manager' => 'includes/managers/widgets.php',
164 129 'WordPress_Widgets_Manager' => 'includes/managers/wordpress-widgets.php',
@@ -179,9 +144,9 @@
179 144
180 145 $controls_groups_names = Controls_Manager::get_groups_names();
181 146
182 147 foreach ( $controls_groups_names as $group_name ) {
183 - $class_name = 'Group_Control_' . self::normalize_class_name( $group_name, '_' );
148 + $class_name = 'Group_Control_' . self::normalize_class_name( str_replace( '-', '_', $group_name ), '_' );
184 149
185 150 self::$classes_map[ $class_name ] = 'includes/controls/groups/' . $group_name . '.php';
186 151 }
187 152 }
@@ -188,48 +153,52 @@
188 153
189 154 /**
190 155 * Normalize Class Name
191 156 *
192 - * Used to convert control names to class names.
157 + * Used to convert control names to class name,
158 + * a ucwords polyfill for php versions not supporting delimiter parameter
159 + * reference : https://github.com/elementor/elementor/issues/7310#issuecomment-469593385
193 160 *
194 - * @param string $class_name
161 + * @param $string
195 162 * @param string $delimiter
196 163 *
164 + * @todo Remove once we bump minimum php version to 5.6
197 165 * @return mixed
198 166 */
199 - private static function normalize_class_name( $class_name, $delimiter = ' ' ) {
200 - return ucwords( str_replace( '-', '_', $class_name ), $delimiter );
167 + private static function normalize_class_name( $string, $delimiter = ' ' ) {
168 + return str_replace( ' ', $delimiter, ucwords( str_replace( $delimiter, ' ', $string ) ) );
201 169 }
202 170
203 - /**
204 - * Init classes aliases.
205 - *
206 - * When Elementor classes renamed or moved to different folders, developers
207 - * can still use the old names by setting an alias.
208 - *
209 - * While in deprecation period both classes will work. When the deprecation
210 - * period ends, the alies should be removed from the list of aliases.
211 - *
212 - * Usage:
213 - *
214 - * self::$classes_aliases = [
215 - * 'Namespace\OldClassName' => [
216 - * 'replacement' => 'Namespace\NewClassName',
217 - * 'version' => '3.0.0',
218 - * ],
219 - * 'Namespace\OldModule\ClassName' => [
220 - * 'replacement' => 'Namespace\NewModule\ClassName',
221 - * 'version' => '3.5.0',
222 - * ],
223 - * ];
224 - *
225 - * @access private
226 - * @static
227 - *
228 - * @return void
229 - */
230 171 private static function init_classes_aliases() {
231 172 self::$classes_aliases = [
173 + 'Core\Ajax' => [
174 + 'replacement' => 'Core\Common\Modules\Ajax\Module',
175 + 'version' => '2.3.0',
176 + ],
177 + 'Editor' => [
178 + 'replacement' => 'Core\Editor\Editor',
179 + 'version' => '2.6.0',
180 + ],
181 + 'Scheme_Base' => [
182 + 'replacement' => 'Core\Schemes\Base',
183 + 'version' => '2.8.0',
184 + ],
185 + 'Scheme_Color' => [
186 + 'replacement' => 'Core\Schemes\Color',
187 + 'version' => '2.8.0',
188 + ],
189 + 'Scheme_Color_Picker' => [
190 + 'replacement' => 'Core\Schemes\Color_Picker',
191 + 'version' => '2.8.0',
192 + ],
193 + 'Schemes_Manager' => [
194 + 'replacement' => 'Core\Schemes\Manager',
195 + 'version' => '2.8.0',
196 + ],
197 + 'Scheme_Typography' => [
198 + 'replacement' => 'Core\Schemes\Typography',
199 + 'version' => '2.8.0',
200 + ],
232 201 'System_Info\Main' => [
233 202 'replacement' => 'Modules\System_Info\Module',
234 203 'version' => '2.9.0',
235 204 ],
@@ -282,9 +251,9 @@
282 251 private static function load_class( $relative_class_name ) {
283 252 $classes_map = self::get_classes_map();
284 253
285 254 if ( isset( $classes_map[ $relative_class_name ] ) ) {
286 - $filename = self::$default_path . '/' . $classes_map[ $relative_class_name ];
255 + $filename = ELEMENTOR_PATH . '/' . $classes_map[ $relative_class_name ];
287 256 } else {
288 257 $filename = strtolower(
289 258 preg_replace(
290 259 [ '/([a-z])([A-Z])/', '/_/', '/\\\/' ],
@@ -292,9 +261,9 @@
292 261 $relative_class_name
293 262 )
294 263 );
295 264
296 - $filename = self::$default_path . $filename . '.php';
265 + $filename = ELEMENTOR_PATH . $filename . '.php';
297 266 }
298 267
299 268 if ( is_readable( $filename ) ) {
300 269 require $filename;
@@ -309,22 +278,22 @@
309 278 * @since 1.6.0
310 279 * @access private
311 280 * @static
312 281 *
313 - * @param string $class_name Class name.
282 + * @param string $class Class name.
314 283 */
315 - private static function autoload( $class_name ) {
316 - if ( 0 !== strpos( $class_name, self::$default_namespace . '\\' ) ) {
284 + private static function autoload( $class ) {
285 + if ( 0 !== strpos( $class, __NAMESPACE__ . '\\' ) ) {
317 286 return;
318 287 }
319 288
320 - $relative_class_name = preg_replace( '/^' . self::$default_namespace . '\\\/', '', $class_name );
289 + $relative_class_name = preg_replace( '/^' . __NAMESPACE__ . '\\\/', '', $class );
321 290
322 291 $classes_aliases = self::get_classes_aliases();
323 292
324 293 $has_class_alias = isset( $classes_aliases[ $relative_class_name ] );
325 294
326 - // Backward Compatibility: Save old class name for set an alias after the new class is loaded.
295 + // Backward Compatibility: Save old class name for set an alias after the new class is loaded
327 296 if ( $has_class_alias ) {
328 297 $alias_data = $classes_aliases[ $relative_class_name ];
329 298
330 299 $relative_class_name = $alias_data['replacement'];
@@ -329,9 +298,9 @@
329 298
330 299 $relative_class_name = $alias_data['replacement'];
331 300 }
332 301
333 - $final_class_name = self::$default_namespace . '\\' . $relative_class_name;
302 + $final_class_name = __NAMESPACE__ . '\\' . $relative_class_name;
334 303
335 304 if ( ! class_exists( $final_class_name ) ) {
336 305 self::load_class( $relative_class_name );
337 306 }
@@ -336,10 +305,10 @@
336 305 self::load_class( $relative_class_name );
337 306 }
338 307
339 308 if ( $has_class_alias ) {
340 - class_alias( $final_class_name, $class_name );
309 + class_alias( $final_class_name, $class );
341 310
342 - Utils::handle_deprecation( $class_name, $alias_data['version'], $final_class_name );
311 + Utils::handle_deprecation( $class, $alias_data['version'], $final_class_name );
343 312 }
344 313 }
345 314 }