| @@ -3,13 +3,8 @@ | ||
| 3 | 3 | |
| 4 | 4 | use Elementor\Core\Base\Document; |
| 5 | 5 | use Elementor\Core\Utils\Api\Parse_Result; |
| 6 | 6 | use Elementor\Modules\Components\OverridableProps\Component_Overridable_Props_Parser; |
| 7 | -use Elementor\Modules\Components\PropTypes\Override_Prop_Type; | |
| 8 | -use Elementor\Modules\Components\PropTypes\Overridable_Prop_Type; | |
| 9 | -use Elementor\Modules\Components\Variants\Component_Variants; | |
| 10 | -use Elementor\Modules\Components\Variants\Component_Variants_Parser; | |
| 11 | -use Elementor\Modules\Components\Widgets\Component_Instance; | |
| 12 | 7 | |
| 13 | 8 | if ( ! defined( 'ABSPATH' ) ) { |
| 14 | 9 | exit; // Exit if accessed directly |
| 15 | 10 | } |
| @@ -17,15 +12,13 @@ | ||
| 17 | 12 | class Component extends Document { |
| 18 | 13 | const TYPE = 'elementor_component'; |
| 19 | 14 | const COMPONENT_UID_META_KEY = '_elementor_component_uid'; |
| 20 | 15 | const OVERRIDABLE_PROPS_META_KEY = '_elementor_component_overridable_props'; |
| 21 | - const VARIANTS_META_KEY = '_elementor_component_variants'; | |
| 22 | 16 | const ARCHIVED_META_KEY = '_elementor_component_is_archived'; |
| 23 | 17 | const ARCHIVED_AT_META_KEY = '_elementor_component_archived_at'; |
| 24 | 18 | const COMPONENT_CUSTOM_META_KEYS = [ |
| 25 | 19 | self::COMPONENT_UID_META_KEY, |
| 26 | 20 | self::OVERRIDABLE_PROPS_META_KEY, |
| 27 | - self::VARIANTS_META_KEY, | |
| 28 | 21 | self::ARCHIVED_META_KEY, |
| 29 | 22 | self::ARCHIVED_AT_META_KEY, |
| 30 | 23 | ]; |
| 31 | 24 | |
| @@ -114,30 +107,8 @@ | ||
| 114 | 107 | |
| 115 | 108 | return $result; |
| 116 | 109 | } |
| 117 | 110 | |
| 118 | - public function get_variants(): Component_Variants { | |
| 119 | - $meta = $this->get_json_meta( self::VARIANTS_META_KEY ); | |
| 120 | - | |
| 121 | - return Component_Variants::make( $meta ?? [] ); | |
| 122 | - } | |
| 123 | - | |
| 124 | - public function update_variants( $data ): Parse_Result { | |
| 125 | - $parser = Component_Variants_Parser::make(); | |
| 126 | - | |
| 127 | - $result = $parser->parse( $data ); | |
| 128 | - | |
| 129 | - if ( ! $result->is_valid() ) { | |
| 130 | - return $result; | |
| 131 | - } | |
| 132 | - | |
| 133 | - $sanitized_data = $result->unwrap(); | |
| 134 | - | |
| 135 | - $this->update_json_meta( self::VARIANTS_META_KEY, $sanitized_data ); | |
| 136 | - | |
| 137 | - return $result; | |
| 138 | - } | |
| 139 | - | |
| 140 | 111 | public function update_title( string $title ): bool { |
| 141 | 112 | $sanitized_title = sanitize_text_field( $title ); |
| 142 | 113 | |
| 143 | 114 | if ( empty( $sanitized_title ) ) { |
| @@ -155,12 +126,8 @@ | ||
| 155 | 126 | return $this->update_post_field( 'post_status', $status ); |
| 156 | 127 | } |
| 157 | 128 | |
| 158 | 129 | private function update_post_field( string $field, $value ): bool { |
| 159 | - if ( is_string( $value ) ) { | |
| 160 | - // NOTE: escape the json to support non-UTF-8 characters | |
| 161 | - $value = wp_slash( $value ); | |
| 162 | - } | |
| 163 | 130 | $result = wp_update_post( [ |
| 164 | 131 | 'ID' => $this->post->ID, |
| 165 | 132 | $field => $value, |
| 166 | 133 | ] ); |
| @@ -171,89 +138,6 @@ | ||
| 171 | 138 | $this->refresh_post(); |
| 172 | 139 | } |
| 173 | 140 | |
| 174 | 141 | return $success; |
| 175 | - } | |
| 176 | - | |
| 177 | - public function print_elements_without_cache( array $elements_data ) { | |
| 178 | - $this->do_print_elements( $elements_data ); | |
| 179 | - } | |
| 180 | - | |
| 181 | - public function align_overridable_props_with_elements() { | |
| 182 | - $elements_data = $this->get_elements_data(); | |
| 183 | - // format elements data to flat map of overridable prop key -> new origin value | |
| 184 | - $overridable_props_map = $this->get_elements_origin_values_map( $elements_data, [] ); | |
| 185 | - | |
| 186 | - if ( empty( $overridable_props_map ) ) { | |
| 187 | - return; | |
| 188 | - } | |
| 189 | - | |
| 190 | - $updated_overridable_props = $this->get_overridable_props(); | |
| 191 | - | |
| 192 | - foreach ( $updated_overridable_props->props as $prop ) { | |
| 193 | - | |
| 194 | - $new_origin_value = $overridable_props_map[ $prop->override_key ]; | |
| 195 | - | |
| 196 | - if ( isset( $new_origin_value ) ) { | |
| 197 | - $prop->origin_value = $new_origin_value; | |
| 198 | - } | |
| 199 | - } | |
| 200 | - | |
| 201 | - $this->update_overridable_props( $updated_overridable_props->to_associative_array() ); | |
| 202 | - } | |
| 203 | - | |
| 204 | - private function get_elements_origin_values_map( array $elements_data, array $overridable_props_map ) { | |
| 205 | - foreach ( $elements_data as $element ) { | |
| 206 | - if ( $this->is_component_instance( $element ) ) { | |
| 207 | - $component_instance = $element['settings']['component_instance']['value']; | |
| 208 | - $overrides = $component_instance['overrides']['value'] ?? []; | |
| 209 | - | |
| 210 | - if ( empty( $overrides ) ) { | |
| 211 | - continue; | |
| 212 | - } | |
| 213 | - | |
| 214 | - foreach ( $overrides as $item ) { | |
| 215 | - if ( $this->is_overridable_prop( $item ) ) { | |
| 216 | - $override_key = $item['value']['override_key']; | |
| 217 | - $override = $item['value']['origin_value']; | |
| 218 | - | |
| 219 | - if ( ! $this->is_override_prop( $override ) ) { | |
| 220 | - throw new \Exception( 'Invalid override value' ); | |
| 221 | - } | |
| 222 | - $overridable_props_map[ $override_key ] = $override['value']['override_value']; | |
| 223 | - } | |
| 224 | - } | |
| 225 | - | |
| 226 | - continue; | |
| 227 | - } | |
| 228 | - | |
| 229 | - if ( ! empty( $element['settings'] ) ) { | |
| 230 | - foreach ( $element['settings'] as $prop_key => $prop_value ) { | |
| 231 | - if ( isset( $prop_value['$$type'] ) && Overridable_Prop_Type::get_key() === $prop_value['$$type'] ) { | |
| 232 | - $override_key = $prop_value['value']['override_key']; | |
| 233 | - $origin_value = $prop_value['value']['origin_value']; | |
| 234 | - | |
| 235 | - $overridable_props_map[ $override_key ] = $origin_value; | |
| 236 | - } | |
| 237 | - } | |
| 238 | - } | |
| 239 | - | |
| 240 | - if ( is_array( $element['elements'] ) ) { | |
| 241 | - $overridable_props_map = $this->get_elements_origin_values_map( $element['elements'], $overridable_props_map ); | |
| 242 | - } | |
| 243 | - } | |
| 244 | - | |
| 245 | - return $overridable_props_map; | |
| 246 | - } | |
| 247 | - | |
| 248 | - private function is_overridable_prop( array $prop ): bool { | |
| 249 | - return isset( $prop['$$type'] ) && Overridable_Prop_Type::get_key() === $prop['$$type']; | |
| 250 | - } | |
| 251 | - | |
| 252 | - private function is_override_prop( array $prop ): bool { | |
| 253 | - return isset( $prop['$$type'] ) && Override_Prop_Type::get_key() === $prop['$$type']; | |
| 254 | - } | |
| 255 | - | |
| 256 | - private function is_component_instance( array $element ): bool { | |
| 257 | - return 'widget' === $element['elType'] && Component_Instance::get_element_type() === $element['widgetType']; | |
| 258 | 142 | } |
| 259 | 143 | } |