PluginProbe
Elementor Website Builder – more than just a page builder / 3.13.2
Elementor Website Builder – more than just a page builder v3.13.2
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/base/controls-stack.php +76 -191 4.2.33.13.2 View file →
@@ -2,11 +2,10 @@
2 2 namespace Elementor;
3 3
4 4 use Elementor\Core\Base\Base_Object;
5 5 use Elementor\Core\DynamicTags\Manager;
6 +use Elementor\Core\Schemes\Manager as Schemes_Manager;
6 7 use Elementor\Core\Breakpoints\Manager as Breakpoints_Manager;
7 -use Elementor\Core\Frontend\Performance;
8 -use Elementor\Utils;
9 8
10 9 if ( ! defined( 'ABSPATH' ) ) {
11 10 exit; // Exit if accessed directly.
12 11 }
@@ -226,26 +225,12 @@
226 225 public function get_id_int() {
227 226 /** We ignore possible notices, in order to support elements created prior to v1.8.0 and might include
228 227 * non-base 16 characters as part of their ID.
229 228 */
230 - return @hexdec( (string) $this->id );
229 + return @hexdec( $this->id );
231 230 }
232 231
233 232 /**
234 - * Get widget number.
235 - *
236 - * Get the first three numbers of the element converted ID.
237 - *
238 - * @since 3.16
239 - * @access public
240 - *
241 - * @return string The widget number.
242 - */
243 - public function get_widget_number(): string {
244 - return substr( $this->get_id_int(), 0, 3 );
245 - }
246 -
247 - /**
248 233 * Get the type.
249 234 *
250 235 * Retrieve the type, e.g. 'stack', 'section', 'widget' etc.
251 236 *
@@ -311,26 +296,9 @@
311 296 *
312 297 * @return mixed Controls list.
313 298 */
314 299 public function get_controls( $control_id = null ) {
315 - $stack = $this->get_stack();
316 -
317 - if ( null !== $control_id ) {
318 - $control_data = self::get_items( $stack['controls'], $control_id );
319 - if ( null === $control_data && ! empty( $stack['style_controls'] ) ) {
320 - $control_data = self::get_items( $stack['style_controls'], $control_id );
321 - }
322 -
323 - return $control_data;
324 - }
325 -
326 - $controls = $stack['controls'];
327 -
328 - if ( Performance::is_use_style_controls() && ! empty( $stack['style_controls'] ) ) {
329 - $controls += $stack['style_controls'];
330 - }
331 -
332 - return self::get_items( $controls, $control_id );
300 + return self::get_items( $this->get_stack()['controls'], $control_id );
333 301 }
334 302
335 303 /**
336 304 * Get active controls.
@@ -349,9 +317,9 @@
349 317 * @param array $settings Optional. Controls settings. Default is null.
350 318 *
351 319 * @return array Active controls.
352 320 */
353 - public function get_active_controls( ?array $controls = null, ?array $settings = null ) {
321 + public function get_active_controls( array $controls = null, array $settings = null ) {
354 322 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.0.0' );
355 323
356 324 if ( ! $controls ) {
357 325 $controls = $this->get_controls();
@@ -364,9 +332,9 @@
364 332 $active_controls = array_reduce(
365 333 array_keys( $controls ), function( $active_controls, $control_key ) use ( $controls, $settings ) {
366 334 $control = $controls[ $control_key ];
367 335
368 - if ( $this->is_control_visible( $control, $settings, $controls ) ) {
336 + if ( $this->is_control_visible( $control, $settings ) ) {
369 337 $active_controls[ $control_key ] = $control;
370 338 }
371 339
372 340 return $active_controls;
@@ -449,50 +417,8 @@
449 417 $this->current_popover['initialized'] = true;
450 418 }
451 419 }
452 420
453 - if ( Performance::should_optimize_controls() ) {
454 - $ui_controls = [
455 - Controls_Manager::RAW_HTML,
456 - Controls_Manager::DIVIDER,
457 - Controls_Manager::HEADING,
458 - Controls_Manager::BUTTON,
459 - Controls_Manager::ALERT,
460 - Controls_Manager::NOTICE,
461 - Controls_Manager::DEPRECATED_NOTICE,
462 - ];
463 -
464 - if ( ! empty( $args['type'] ) && ! empty( $args['section'] ) && in_array( $args['type'], $ui_controls ) ) {
465 - $args = [
466 - 'type' => $args['type'],
467 - 'section' => $args['section'],
468 - ];
469 - }
470 -
471 - unset(
472 - $args['label_block'],
473 - $args['label'],
474 - $args['title'],
475 - $args['tab'],
476 - $args['options'],
477 - $args['placeholder'],
478 - $args['separator'],
479 - $args['size_units'],
480 - $args['range'],
481 - $args['toggle'],
482 - $args['ai'],
483 - $args['classes'],
484 - $args['style_transfer'],
485 - $args['show_label'],
486 - $args['description'],
487 - $args['label_on'],
488 - $args['label_off'],
489 - $args['labels'],
490 - $args['handles'],
491 - $args['editor_available'],
492 - );
493 - }
494 -
495 421 return Plugin::$instance->controls_manager->add_control_to_stack( $this, $id, $args, $options );
496 422 }
497 423
498 424 /**
@@ -612,10 +538,10 @@
612 538
613 539 $position = array_merge( $default_position, $position );
614 540
615 541 if (
616 - ( 'control' === $position['type'] && in_array( $position['at'], [ 'start', 'end' ], true ) ) ||
617 - ( 'section' === $position['type'] && in_array( $position['at'], [ 'before', 'after' ], true ) )
542 + 'control' === $position['type'] && in_array( $position['at'], [ 'start', 'end' ], true ) ||
543 + 'section' === $position['type'] && in_array( $position['at'], [ 'before', 'after' ], true )
618 544 ) {
619 545 _doing_it_wrong( sprintf( '%s::%s', get_called_class(), __FUNCTION__ ), 'Invalid position arguments. Use `before` / `after` for control or `start` / `end` for section.', '1.7.0' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
620 546
621 547 return false;
@@ -637,13 +563,13 @@
637 563
638 564 $controls_keys = array_keys( $registered_controls );
639 565
640 566 while ( Controls_Manager::SECTION !== $registered_controls[ $controls_keys[ $target_section_index ] ]['type'] ) {
641 - --$target_section_index;
567 + $target_section_index--;
642 568 }
643 569
644 570 if ( 'section' === $position['type'] ) {
645 - ++$target_control_index;
571 + $target_control_index++;
646 572
647 573 if ( 'end' === $position['at'] ) {
648 574 while ( Controls_Manager::SECTION !== $registered_controls[ $controls_keys[ $target_control_index ] ]['type'] ) {
649 575 if ( ++$target_control_index >= count( $registered_controls ) ) {
@@ -655,9 +581,9 @@
655 581
656 582 $target_control = $registered_controls[ $controls_keys[ $target_control_index ] ];
657 583
658 584 if ( 'after' === $position['at'] ) {
659 - ++$target_control_index;
585 + $target_control_index++;
660 586 }
661 587
662 588 $section_id = $registered_controls[ $controls_keys[ $target_section_index ] ]['name'];
663 589
@@ -737,9 +663,9 @@
737 663
738 664 $controls_keys = array_keys( $registered_controls );
739 665
740 666 while ( true ) {
741 - ++$section_index;
667 + $section_index++;
742 668
743 669 if ( ! isset( $controls_keys[ $section_index ] ) ) {
744 670 break;
745 671 }
@@ -750,9 +676,9 @@
750 676 break;
751 677 }
752 678
753 679 $section_controls[ $control_key ] = $registered_controls[ $control_key ];
754 - }
680 + };
755 681
756 682 return $section_controls;
757 683 }
758 684
@@ -781,8 +707,32 @@
781 707 $group->add_controls( $this, $args, $options );
782 708 }
783 709
784 710 /**
711 + * Get scheme controls.
712 + *
713 + * Retrieve all the controls that use schemes.
714 + *
715 + * @since 1.4.0
716 + * @access public
717 + * @deprecated 3.0.0
718 + *
719 + * @return array Scheme controls.
720 + */
721 + final public function get_scheme_controls() {
722 +
723 + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.0.0' );
724 +
725 + $enabled_schemes = Schemes_Manager::get_enabled_schemes();
726 +
727 + return array_filter(
728 + $this->get_controls(), function ( $control ) use ( $enabled_schemes ) {
729 + return ( ! empty( $control['scheme'] ) && in_array( $control['scheme']['type'], $enabled_schemes ) );
730 + }
731 + );
732 + }
733 +
734 + /**
785 735 * Get style controls.
786 736 *
787 737 * Retrieve style controls for all active controls or, when requested, from
788 738 * a specific set of controls.
@@ -796,9 +746,9 @@
796 746 * @param array $settings Optional. Controls settings. Default is null.
797 747 *
798 748 * @return array Style controls.
799 749 */
800 - final public function get_style_controls( ?array $controls = null, ?array $settings = null ) {
750 + final public function get_style_controls( array $controls = null, array $settings = null ) {
801 751 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.0.0' );
802 752
803 753 $controls = $this->get_active_controls( $controls, $settings );
804 754
@@ -931,9 +881,9 @@
931 881 $control_args = $args;
932 882
933 883 // Set parent using the name from previous iteration.
934 884 if ( isset( $control_name ) ) {
935 - // If $control_name end with _widescreen use desktop name instead.
885 + // If $control_name end with _widescreen use desktop name instead
936 886 $control_args['parent'] = '_widescreen' === substr( $control_name, -strlen( '_widescreen' ) ) ? $id : $control_name;
937 887 } else {
938 888 $control_args['parent'] = null;
939 889 }
@@ -1060,10 +1010,10 @@
1060 1010 * @return array|null The config.
1061 1011 */
1062 1012 final public function get_config() {
1063 1013 if ( null === $this->config ) {
1064 - // TODO: This is for backwards compatibility starting from 2.9.0.
1065 - // This if statement should be removed when the method is hard-deprecated.
1014 + // TODO: This is for backwards compatibility starting from 2.9.0
1015 + // This if statement should be removed when the method is hard-deprecated
1066 1016 if ( $this->has_own_method( '_get_initial_config', self::class ) ) {
1067 1017 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( '_get_initial_config', '2.9.0', __CLASS__ . '::get_initial_config()' );
1068 1018
1069 1019 $this->config = $this->_get_initial_config();
@@ -1087,10 +1037,8 @@
1087 1037 * Set a config property.
1088 1038 *
1089 1039 * Set a specific property of the config list for this controls-stack.
1090 1040 *
1091 - * @param string $key
1092 - * @param string $value
1093 1041 * @since 3.5.0
1094 1042 * @access public
1095 1043 */
1096 1044 public function set_config( $key, $value ) {
@@ -1166,11 +1114,8 @@
1166 1114 return self::get_items( $this->data, $item );
1167 1115 }
1168 1116
1169 1117 /**
1170 - * @param null $setting
1171 - * @param null $settings
1172 - * @return array|mixed|null
1173 1118 * @since 2.0.14
1174 1119 * @access public
1175 1120 */
1176 1121 public function get_parsed_dynamic_settings( $setting = null, $settings = null ) {
@@ -1184,28 +1129,21 @@
1184 1129
1185 1130 return self::get_items( $this->parsed_dynamic_settings, $setting );
1186 1131 }
1187 1132
1188 - public function reset_render_state(): void {
1189 - $this->active_settings = null;
1190 - $this->parsed_active_settings = null;
1191 - $this->parsed_dynamic_settings = null;
1192 - $this->render_attributes = [];
1193 - }
1194 -
1195 1133 /**
1196 1134 * Get active settings.
1197 1135 *
1198 1136 * Retrieve the settings from all the active controls.
1199 1137 *
1200 - * @param array|null $settings Optional. Controls settings. Default is null.
1201 - * @param array|null $controls Optional. An array of controls. Default is null.
1202 - *
1203 - * @return array Active settings.
1138 + * @since 1.4.0
1204 1139 * @since 2.1.0 Added the `controls` and the `settings` parameters.
1205 1140 * @access public
1206 1141 *
1207 - * @since 1.4.0
1142 + * @param array $controls Optional. An array of controls. Default is null.
1143 + * @param array $settings Optional. Controls settings. Default is null.
1144 + *
1145 + * @return array Active settings.
1208 1146 */
1209 1147 public function get_active_settings( $settings = null, $controls = null ) {
1210 1148 $is_first_request = ! $settings && ! $this->active_settings;
1211 1149
@@ -1220,10 +1158,8 @@
1220 1158 }
1221 1159
1222 1160 $active_settings = [];
1223 1161
1224 - $controls_objs = Plugin::$instance->controls_manager->get_controls();
1225 -
1226 1162 foreach ( $settings as $setting_key => $setting ) {
1227 1163 if ( ! isset( $controls[ $setting_key ] ) ) {
1228 1164 $active_settings[ $setting_key ] = $setting;
1229 1165
@@ -1231,10 +1167,10 @@
1231 1167 }
1232 1168
1233 1169 $control = $controls[ $setting_key ];
1234 1170
1235 - if ( $this->is_control_visible( $control, $settings, $controls ) ) {
1236 - $control_obj = $controls_objs[ $control['type'] ] ?? null;
1171 + if ( $this->is_control_visible( $control, $settings ) ) {
1172 + $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] );
1237 1173
1238 1174 if ( $control_obj instanceof Control_Repeater ) {
1239 1175 foreach ( $setting as & $item ) {
1240 1176 $item = $this->get_active_settings( $item, $control['fields'] );
@@ -1301,13 +1237,11 @@
1301 1237 if ( null === $controls ) {
1302 1238 $controls = $this->get_controls();
1303 1239 }
1304 1240
1305 - $controls_objs = Plugin::$instance->controls_manager->get_controls();
1306 -
1307 1241 foreach ( $controls as $control ) {
1308 1242 $control_name = $control['name'];
1309 - $control_obj = $controls_objs[ $control['type'] ] ?? null;
1243 + $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] );
1310 1244
1311 1245 if ( ! $control_obj instanceof Base_Data_Control ) {
1312 1246 continue;
1313 1247 }
@@ -1419,9 +1353,9 @@
1419 1353
1420 1354 /**
1421 1355 * Get Responsive Control Device Suffix
1422 1356 *
1423 - * @deprecated 3.7.6 Use `Elementor\Controls_Manager::get_responsive_control_device_suffix()` instead.
1357 + * @deprecated 3.7.6
1424 1358 * @param array $control
1425 1359 * @return string $device suffix
1426 1360 */
1427 1361 protected function get_responsive_control_device_suffix( $control ) {
@@ -1434,16 +1368,17 @@
1434 1368 * Whether the control is visible or not.
1435 1369 *
1436 1370 * Used to determine whether the control is visible or not.
1437 1371 *
1372 + * @since 1.4.0
1373 + * @access public
1374 + *
1438 1375 * @param array $control The control.
1439 - * @param null $values Optional. Condition values. Default is null.
1440 - * @param null $controls
1376 + * @param array $values Optional. Condition values. Default is null.
1377 + *
1441 1378 * @return bool Whether the control is visible.
1442 - * @since 1.4.0
1443 - * @access public
1444 1379 */
1445 - public function is_control_visible( $control, $values = null, $controls = null ) {
1380 + public function is_control_visible( $control, $values = null ) {
1446 1381 if ( null === $values ) {
1447 1382 $values = $this->get_settings();
1448 1383 }
1449 1384
@@ -1454,11 +1389,9 @@
1454 1389 if ( empty( $control['condition'] ) ) {
1455 1390 return true;
1456 1391 }
1457 1392
1458 - if ( ! $controls ) {
1459 - $controls = $this->get_controls();
1460 - }
1393 + $controls = $this->get_controls();
1461 1394
1462 1395 foreach ( $control['condition'] as $condition_key => $condition_value ) {
1463 1396 preg_match( '/([a-z_\-0-9]+)(?:\[([a-z_]+)])?(!?)$/i', $condition_key, $condition_key_parts );
1464 1397
@@ -1463,9 +1396,9 @@
1463 1396 preg_match( '/([a-z_\-0-9]+)(?:\[([a-z_]+)])?(!?)$/i', $condition_key, $condition_key_parts );
1464 1397
1465 1398 $pure_condition_key = $condition_key_parts[1];
1466 1399 $condition_sub_key = $condition_key_parts[2];
1467 - $is_negative_condition = (bool) $condition_key_parts[3];
1400 + $is_negative_condition = ! ! $condition_key_parts[3];
1468 1401
1469 1402 if ( ! isset( $values[ $pure_condition_key ] ) || null === $values[ $pure_condition_key ] ) {
1470 1403 return false;
1471 1404 }
@@ -1528,12 +1461,9 @@
1528 1461 } else {
1529 1462 $is_contains = $instance_value === $condition_value;
1530 1463 }
1531 1464
1532 - if (
1533 - ( $is_negative_condition && $is_contains ) ||
1534 - ( ! $is_negative_condition && ! $is_contains )
1535 - ) {
1465 + if ( $is_negative_condition && $is_contains || ! $is_negative_condition && ! $is_contains ) {
1536 1466 return false;
1537 1467 }
1538 1468 }
1539 1469
@@ -1584,12 +1514,8 @@
1584 1514 * @param array $args Section arguments.
1585 1515 */
1586 1516 do_action( "elementor/element/{$stack_name}/{$section_id}/before_section_start", $this, $args );
1587 1517
1588 - if ( $this->should_manually_trigger_common_action( $stack_name ) ) {
1589 - do_action( "elementor/element/common/{$section_id}/before_section_start", $this, $args );
1590 - }
1591 -
1592 1518 $args['type'] = Controls_Manager::SECTION;
1593 1519
1594 1520 $this->add_control( $section_id, $args );
1595 1521
@@ -1628,12 +1554,8 @@
1628 1554 * @param Controls_Stack $this The control.
1629 1555 * @param array $args Section arguments.
1630 1556 */
1631 1557 do_action( "elementor/element/{$stack_name}/{$section_id}/after_section_start", $this, $args );
1632 -
1633 - if ( $this->should_manually_trigger_common_action( $stack_name ) ) {
1634 - do_action( "elementor/element/common/{$section_id}/after_section_start", $this, $args );
1635 - }
1636 1558 }
1637 1559
1638 1560 /**
1639 1561 * End controls section.
@@ -1682,12 +1604,8 @@
1682 1604 * @param array $args Section arguments.
1683 1605 */
1684 1606 do_action( "elementor/element/{$stack_name}/{$section_id}/before_section_end", $this, $args );
1685 1607
1686 - if ( $this->should_manually_trigger_common_action( $stack_name ) ) {
1687 - do_action( "elementor/element/common/{$section_id}/before_section_end", $this, $args );
1688 - }
1689 -
1690 1608 $this->current_section = null;
1691 1609
1692 1610 /**
1693 1611 * After section end.
@@ -1714,40 +1632,11 @@
1714 1632 * @param Controls_Stack $this The control.
1715 1633 * @param array $args Section arguments.
1716 1634 */
1717 1635 do_action( "elementor/element/{$stack_name}/{$section_id}/after_section_end", $this, $args );
1718 -
1719 - if ( $this->should_manually_trigger_common_action( $stack_name ) ) {
1720 - do_action( "elementor/element/common/{$section_id}/after_section_end", $this, $args );
1721 - }
1722 1636 }
1723 1637
1724 1638 /**
1725 - * Should manually trigger common action.
1726 - *
1727 - * With the Optimized Markup experiment, the Advanced Tab has been split to maintain backward compatibility:
1728 - * - 'common' refers to the existing Advanced Tab.
1729 - * - 'common-optimized' refers to the new Advanced Tab for optimized widgets.
1730 - *
1731 - * Third-party developers may have used hooks like 'elementor/element/common/_section_background/before_section_end'
1732 - * to add controls to the Advanced Tab. However, this hook will now only work on widgets that are not optimized.
1733 - *
1734 - * This method checks whether the 'elementor/element/common/...' hooks should be manually executed
1735 - * to prevent third parties from needing to add equivalent hooks for 'elementor/element/common-optimized/...'.
1736 - *
1737 - * @todo Remove this method and the manual execution of 'common' hooks when the feature is merged.
1738 - *
1739 - * @access private
1740 - *
1741 - * @param string $stack_name Stack name.
1742 - *
1743 - * @return bool
1744 - */
1745 - private function should_manually_trigger_common_action( $stack_name ): bool {
1746 - return 'common-optimized' === $stack_name && Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
1747 - }
1748 -
1749 - /**
1750 1639 * Start controls tabs.
1751 1640 *
1752 1641 * Used to add a new set of tabs inside a section. You should use this
1753 1642 * method before adding new individual tabs using `start_controls_tab()`.
@@ -2020,10 +1909,10 @@
2020 1909 *
2021 1910 * @since 2.7.0
2022 1911 * @access public
2023 1912 *
2024 - * @param string $element The HTML element.
2025 - * @param string $key Optional. Attribute key. Default is null.
1913 + * @param string $element The HTML element.
1914 + * @param string $key Optional. Attribute key. Default is null.
2026 1915 * @param array|string $values Optional. Attribute value/s. Default is null.
2027 1916 */
2028 1917 public function remove_render_attribute( $element, $key = null, $values = null ) {
2029 1918 if ( $key && ! isset( $this->render_attributes[ $element ][ $key ] ) ) {
@@ -2080,9 +1969,9 @@
2080 1969 *
2081 1970 * @param array|string $element The element.
2082 1971 */
2083 1972 public function print_render_attribute_string( $element ) {
2084 - Utils::print_unescaped_internal_string( $this->get_render_attribute_string( $element ) );
1973 + echo $this->get_render_attribute_string( $element ); // XSS ok.
2085 1974 }
2086 1975
2087 1976 /**
2088 1977 * Print element template.
@@ -2095,9 +1984,9 @@
2095 1984 public function print_template() {
2096 1985 ob_start();
2097 1986
2098 1987 // TODO: This is for backwards compatibility starting from 2.9.0
2099 - // This `if` statement should be removed when the method is removed.
1988 + // This `if` statement should be removed when the method is removed
2100 1989 if ( $this->has_own_method( '_content_template', self::class ) ) {
2101 1990 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( '_content_template', '2.9.0', __CLASS__ . '::content_template()' );
2102 1991
2103 1992 $this->_content_template();
@@ -2143,9 +2032,9 @@
2143 2032 * @param array|null $controls The available controls.
2144 2033 *
2145 2034 * @return array Element data.
2146 2035 */
2147 - public static function on_import_update_dynamic_content( array $config, array $data, $controls = null ): array {
2036 + public static function on_import_update_dynamic_content( array $config, array $data, $controls = null ) : array {
2148 2037 return $config;
2149 2038 }
2150 2039
2151 2040 /**
@@ -2224,12 +2113,12 @@
2224 2113 * `start_controls_tab()`.
2225 2114 *
2226 2115 * @since 1.4.0
2227 2116 * @access protected
2228 - * @deprecated 3.1.0 Use `register_controls()` method instead.
2117 + * @deprecated 3.1.0 Use `Controls_Stack::register_controls()` instead
2229 2118 */
2230 2119 protected function _register_controls() {
2231 - Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0', 'register_controls()' );
2120 + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0', __CLASS__ . '::register_controls()' );
2232 2121
2233 2122 $this->register_controls();
2234 2123 }
2235 2124
@@ -2272,12 +2161,10 @@
2272 2161 */
2273 2162 protected function get_init_settings() {
2274 2163 $settings = $this->get_data( 'settings' );
2275 2164
2276 - $controls_objs = Plugin::$instance->controls_manager->get_controls();
2277 -
2278 2165 foreach ( $this->get_controls() as $control ) {
2279 - $control_obj = $controls_objs[ $control['type'] ] ?? null;
2166 + $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] );
2280 2167
2281 2168 if ( ! $control_obj instanceof Base_Data_Control ) {
2282 2169 continue;
2283 2170 }
@@ -2313,15 +2200,15 @@
2313 2200 * Retrieve the current element initial configuration - controls list and
2314 2201 * the tabs assigned to the control.
2315 2202 *
2316 2203 * @since 1.4.0
2317 - * @deprecated 2.9.0 Use `get_initial_config()` method instead.
2204 + * @deprecated 2.9.0 use `get_initial_config()` instead
2318 2205 * @access protected
2319 2206 *
2320 2207 * @return array The initial config.
2321 2208 */
2322 2209 protected function _get_initial_config() {
2323 - Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.9.0', 'get_initial_config()' );
2210 + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.9.0', __CLASS__ . '::get_initial_config()' );
2324 2211
2325 2212 return $this->get_initial_config();
2326 2213 }
2327 2214
@@ -2392,9 +2279,9 @@
2392 2279 *
2393 2280 * @param string $template_content Template content.
2394 2281 */
2395 2282 protected function print_template_content( $template_content ) {
2396 - Utils::print_unescaped_internal_string( $template_content );
2283 + echo $template_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2397 2284 }
2398 2285
2399 2286 /**
2400 2287 * Render element output in the editor.
@@ -2411,13 +2298,13 @@
2411 2298 *
2412 2299 * Used to generate the live preview, using a Backbone JavaScript template.
2413 2300 *
2414 2301 * @since 2.0.0
2415 - * @deprecated 2.9.0 Use `content_template()` method instead.
2302 + * @deprecated 2.9.0 use `content_template()` instead
2416 2303 * @access protected
2417 2304 */
2418 2305 protected function _content_template() {
2419 - Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.9.0', 'content_template()' );
2306 + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.9.0', __CLASS__ . '::content_template()' );
2420 2307
2421 2308 $this->content_template();
2422 2309 }
2423 2310
@@ -2432,9 +2319,9 @@
2432 2319 protected function init_controls() {
2433 2320 Plugin::$instance->controls_manager->open_stack( $this );
2434 2321
2435 2322 // TODO: This is for backwards compatibility starting from 2.9.0
2436 - // This `if` statement should be removed when the method is removed.
2323 + // This `if` statement should be removed when the method is removed
2437 2324 if ( $this->has_own_method( '_register_controls', self::class ) ) {
2438 2325 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( '_register_controls', '3.1.0', __CLASS__ . '::register_controls()' );
2439 2326
2440 2327 $this->_register_controls();
@@ -2470,11 +2357,9 @@
2470 2357 if ( null !== $target_tab ) {
2471 2358 $args = array_replace_recursive( $target_tab, $args );
2472 2359 }
2473 2360 } elseif ( empty( $args['section'] ) && ( ! $overwrite || is_wp_error( Plugin::$instance->controls_manager->get_control_from_stack( $this->get_unique_name(), $control_id ) ) ) ) {
2474 - if ( ! Performance::should_optimize_controls() ) {
2475 - wp_die( sprintf( '%s::%s: Cannot add a control outside of a section (use `start_controls_section`).', get_called_class(), __FUNCTION__ ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2476 - }
2361 + wp_die( sprintf( '%s::%s: Cannot add a control outside of a section (use `start_controls_section`).', get_called_class(), __FUNCTION__ ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2477 2362 }
2478 2363
2479 2364 return $args;
2480 2365 }
@@ -2500,15 +2385,15 @@
2500 2385 *
2501 2386 * Set the raw data, the ID and the parsed settings.
2502 2387 *
2503 2388 * @since 1.4.0
2504 - * @deprecated 2.9.0 Use `init()` method instead.
2389 + * @deprecated 2.9.0 use `init()` instead
2505 2390 * @access protected
2506 2391 *
2507 2392 * @param array $data Initial data.
2508 2393 */
2509 2394 protected function _init( $data ) {
2510 - Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.9.0', 'init()' );
2395 + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.9.0', __CLASS__ . '::init()' );
2511 2396
2512 2397 $this->init( $data );
2513 2398 }
2514 2399
@@ -2579,9 +2464,9 @@
2579 2464 */
2580 2465 public function __construct( array $data = [] ) {
2581 2466 if ( $data ) {
2582 2467 // TODO: This is for backwards compatibility starting from 2.9.0
2583 - // This if statement should be removed when the method is hard-deprecated.
2468 + // This if statement should be removed when the method is hard-deprecated
2584 2469 if ( $this->has_own_method( '_init', self::class ) ) {
2585 2470 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( '_init', '2.9.0', __CLASS__ . '::init()' );
2586 2471
2587 2472 $this->_init( $data );