← All changes
|
modules/global-classes/utils/atomic-elements-utils.php
+35
-2
4.0.7
→
4.2.4
View file →
| @@ -1,12 +1,12 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | namespace Elementor\Modules\GlobalClasses\Utils; |
| 4 | 4 | |
| 5 | -use Elementor\Core\Base\Document; | |
| 6 | -use Elementor\Core\Utils\Collection; | |
| 7 | 5 | use Elementor\Modules\AtomicWidgets\Elements\Base\Atomic_Element_Base; |
| 8 | 6 | use Elementor\Modules\AtomicWidgets\Elements\Base\Atomic_Widget_Base; |
| 7 | +use Elementor\Modules\AtomicWidgets\Utils\Utils as Atomic_Utils; | |
| 8 | +use Elementor\Modules\AtomicWidgets\PropTypeMigrations\Schema_Resolver; | |
| 9 | 9 | use Elementor\Plugin; |
| 10 | 10 | |
| 11 | 11 | class Atomic_Elements_Utils { |
| 12 | 12 | |
| @@ -12,8 +12,41 @@ | ||
| 12 | 12 | |
| 13 | 13 | public static function is_classes_prop( $prop ) { |
| 14 | 14 | // phpcs:ignore |
| 15 | 15 | return 'plain' === $prop::$KIND && 'classes' === $prop->get_key(); |
| 16 | + } | |
| 17 | + | |
| 18 | + public static function collect_class_ids_from_element_data( array $element_data ): array { | |
| 19 | + $element_type = self::get_element_type( $element_data ); | |
| 20 | + $element_instance = self::get_element_instance( $element_type ); | |
| 21 | + | |
| 22 | + if ( ! Atomic_Utils::is_atomic( $element_instance ) ) { | |
| 23 | + return []; | |
| 24 | + } | |
| 25 | + | |
| 26 | + $schema = Schema_Resolver::get_widget_schema( $element_type ); | |
| 27 | + $settings = $element_data['settings'] ?? []; | |
| 28 | + $class_ids = []; | |
| 29 | + | |
| 30 | + foreach ( $schema as $settings_key => $prop ) { | |
| 31 | + if ( ! self::is_classes_prop( $prop ) ) { | |
| 32 | + continue; | |
| 33 | + } | |
| 34 | + | |
| 35 | + $values = $settings[ $settings_key ]['value'] ?? []; | |
| 36 | + | |
| 37 | + if ( ! is_array( $values ) ) { | |
| 38 | + continue; | |
| 39 | + } | |
| 40 | + | |
| 41 | + foreach ( $values as $class_id ) { | |
| 42 | + if ( is_string( $class_id ) && '' !== $class_id ) { | |
| 43 | + $class_ids[] = $class_id; | |
| 44 | + } | |
| 45 | + } | |
| 46 | + } | |
| 47 | + | |
| 48 | + return $class_ids; | |
| 16 | 49 | } |
| 17 | 50 | |
| 18 | 51 | public static function get_element_type( $element ) { |
| 19 | 52 | return 'widget' === $element['elType'] ? $element['widgetType'] : $element['elType']; |