2021-12-07 11:08:05 +00:00
|
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* Icon manager migartion class.
|
|
|
|
|
*
|
|
|
|
|
* @package Divi
|
|
|
|
|
* @subpackage Builder
|
|
|
|
|
* @since ?
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Migration process to handle all the changes done in Icon Manager QF.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*/
|
|
|
|
|
class ET_Builder_Module_Settings_Migration_IconManager extends ET_Builder_Module_Settings_Migration {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Migration Version.
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
public $version = '4.13.0';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Proccessing field name.
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $_field_name;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Current field value.
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $_current_value;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Saved field value.
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $_saved_value;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Current field name.
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $_saved_field_name;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Array of attributes.
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $_attrs;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* All responsive modes suffixes.
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $_responsive_modes_suffixes = array( '', '_tablet', '_phone', '__hover', '__hover_enabled', '_last_edited' );
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Responsive modes.
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $_responsive_modes = array( '', '_tablet', '_phone' );
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Default values for the fields related to icon placement migration.
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $_icon_placement_migration_values = array(
|
|
|
|
|
'image_icon_width' => array(
|
|
|
|
|
'left' => '16px',
|
|
|
|
|
'top' => '48px',
|
|
|
|
|
),
|
|
|
|
|
'image_icon_custom_padding' => array(
|
|
|
|
|
'left' => '8px|8px|8px|8px|false|false',
|
|
|
|
|
'top' => '25px|25px|25px|25px|false|false',
|
|
|
|
|
),
|
|
|
|
|
'border_width_all_image' => array(
|
|
|
|
|
'left' => '2px',
|
|
|
|
|
'top' => '3px',
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Border radii value for the circle icon attr migration.
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $_circle_border_radii_value = 'on|100%|100%|100%|100%';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Attrs sticky suffixes.
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $_sticky_suffixes = array( '__sticky_enabled', '__sticky' );
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get array with Blurb module slug.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_blurb_modules() {
|
|
|
|
|
return et_pb_get_font_icon_modules( 'blurb' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the list of Divi modules with buttons that have a custom icons.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_button_modules() {
|
|
|
|
|
return et_pb_get_font_icon_modules( 'button' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get array with slugs for modules that supported Hover Overlay functionality.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_overlay_modules() {
|
|
|
|
|
return et_pb_get_font_icon_modules( 'overlay' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get array with slugs for modules that supported Toggle Icon functionality.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_toggle_modules() {
|
|
|
|
|
return et_pb_get_font_icon_modules( 'toggle' );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get Blurb fields.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_blurb_fields() {
|
|
|
|
|
|
|
|
|
|
// The order of the array keys and the order of the field names in the values is important when
|
|
|
|
|
// executing the migration logic, since it uses the "return early" principle.
|
|
|
|
|
if ( parent::$_maybe_global_presets_migration ) {
|
|
|
|
|
// Migrations rules for the Global Presets migrations case.
|
|
|
|
|
$migration_options = array(
|
|
|
|
|
'icon_font_size' => array( 'image_icon_width' ),
|
|
|
|
|
'border_color_all_image' => array( 'border_color_all_image' ),
|
|
|
|
|
'border_width_all_image' => array( 'border_width_all_image' ),
|
|
|
|
|
'font_icon' => array( 'font_icon' ),
|
|
|
|
|
'image_max_width' => array( 'image_icon_width' ),
|
|
|
|
|
'circle_border_color' => array( 'border_color_all_image' ),
|
|
|
|
|
'circle_color' => array( 'image_icon_background_color' ),
|
|
|
|
|
'use_circle_border' => array( 'border_color_all_image' ),
|
|
|
|
|
'use_circle' => array( 'image_icon_custom_padding', 'border_color_all_image', 'border_radii_image', 'image_icon_background_color', 'border_width_all_image' ),
|
|
|
|
|
'icon_placement' => array( 'image_icon_width', 'border_width_all_image' ),
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
$migration_options = array(
|
|
|
|
|
'icon_font_size' => array( 'image_icon_width' ),
|
|
|
|
|
'border_color_all_image' => array( 'border_color_all_image' ),
|
|
|
|
|
'border_width_all_image' => array( 'border_width_all_image' ),
|
|
|
|
|
'font_icon' => array( 'font_icon' ),
|
|
|
|
|
'image_max_width' => array( 'image_icon_width' ),
|
|
|
|
|
'circle_border_color' => array( 'border_color_all_image' ),
|
|
|
|
|
'circle_color' => array( 'image_icon_background_color' ),
|
|
|
|
|
'use_circle_border' => array( 'border_color_all_image' ),
|
|
|
|
|
'use_circle' => array( 'border_color_all_image', 'border_radii_image', 'image_icon_background_color', 'border_width_all_image' ),
|
|
|
|
|
'icon_placement' => array( 'image_icon_width', 'image_icon_custom_padding', 'border_width_all_image' ),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sticky_options = array( 'circle_color', 'circle_border_color', 'image_max_width', 'icon_font_size' );
|
|
|
|
|
|
|
|
|
|
$result_fields_keys = array();
|
|
|
|
|
|
|
|
|
|
$modes_with_sticky = array_merge( $this->_responsive_modes_suffixes, $this->_sticky_suffixes );
|
|
|
|
|
|
|
|
|
|
foreach ( $migration_options as $saved_field_name => $field_names ) {
|
|
|
|
|
foreach ( $modes_with_sticky as $mode_suffix ) {
|
|
|
|
|
|
|
|
|
|
$maybe_border_width_all_image_saved_field = 'border_width_all_image' === $saved_field_name && in_array( $mode_suffix, array( '__hover', '__hover_enabled' ), true );
|
|
|
|
|
$maybe_use_circle_border_saved_field = 'use_circle_border' === $saved_field_name && in_array( $mode_suffix, array( '_tablet', '_phone', '__hover', '__hover_enabled', '_last_edited' ), true );
|
|
|
|
|
$maybe_use_circle_responsive = 'use_circle' === $saved_field_name && '' !== $mode_suffix;
|
|
|
|
|
$maybe_icon_placement_in_hover = 'icon_placement' === $saved_field_name && in_array( $mode_suffix, array( '__hover', '__hover_enabled' ), true );
|
|
|
|
|
$maybe_not_sticky_option_when_sticky_mode = in_array( $mode_suffix, $this->_sticky_suffixes, true ) && ! in_array( $saved_field_name, $sticky_options, true );
|
|
|
|
|
|
|
|
|
|
if ( $maybe_icon_placement_in_hover || $maybe_border_width_all_image_saved_field || $maybe_use_circle_border_saved_field || $maybe_use_circle_responsive || $maybe_not_sticky_option_when_sticky_mode ) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
foreach ( $field_names as $field_name ) {
|
|
|
|
|
$affected_fields = 'use_circle' === $saved_field_name ? array( $saved_field_name => $this->_get_blurb_modules() ) : array( $saved_field_name . $mode_suffix => $this->_get_blurb_modules() );
|
|
|
|
|
if ( ! empty( $result_fields_keys[ $field_name . $mode_suffix ]['affected_fields'] ) ) {
|
|
|
|
|
$affected_fields += $result_fields_keys[ $field_name . $mode_suffix ]['affected_fields'];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$result_fields_keys[ $field_name . $mode_suffix ] = array(
|
|
|
|
|
'affected_fields' => $affected_fields,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $result_fields_keys;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get fields for modules with Button support.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_button_fields() {
|
|
|
|
|
$result_button_fields = array();
|
|
|
|
|
$button_field_names_for_module = array(
|
|
|
|
|
'et_pb_fullwidth_header' => array( 'button_one_icon', 'button_two_icon' ),
|
|
|
|
|
'one_button_modules' => array( 'button_icon' ),
|
|
|
|
|
);
|
|
|
|
|
foreach ( $button_field_names_for_module as $field_module => $field_names ) {
|
|
|
|
|
foreach ( $field_names as $field_name ) {
|
|
|
|
|
foreach ( $this->_responsive_modes as $mode_suffix ) {
|
|
|
|
|
$modules = 'et_pb_fullwidth_header' === $field_module ? array( 'et_pb_fullwidth_header' ) : array_diff( $this->_get_button_modules(), array( 'et_pb_fullwidth_header' ) );
|
|
|
|
|
$full_field_name = $field_name . $mode_suffix;
|
|
|
|
|
$result_button_fields[ $full_field_name ] = array(
|
|
|
|
|
'affected_fields' => array( $full_field_name => $modules ),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $result_button_fields;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get modules which are using overlay functionality by responsive suffix.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
* @param string $suffix responsive suffix.
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_overlay_modules_by_suffix( $suffix ) {
|
|
|
|
|
return '' === $suffix ? $this->_get_overlay_modules() : array_filter(
|
|
|
|
|
$this->_get_overlay_modules(),
|
|
|
|
|
function( $module ) {
|
|
|
|
|
return 'et_pb_filterable_portfolio' !== $module;
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get fields for modules with Hover Overlay functionality.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_overlay_fields() {
|
|
|
|
|
$result_overlay_fields = array();
|
|
|
|
|
foreach ( $this->_responsive_modes as $mode_suffix ) {
|
|
|
|
|
$full_field_name = 'hover_icon' . $mode_suffix;
|
|
|
|
|
$modules = $this->_get_overlay_modules_by_suffix( $mode_suffix );
|
|
|
|
|
$result_overlay_fields[ $full_field_name ] = array(
|
|
|
|
|
'affected_fields' => array( $full_field_name => $modules ),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
return $result_overlay_fields;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get fields for modules with Toggle icon functionality.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
private function _get_toggle_fields() {
|
|
|
|
|
$result_overlay_fields = array();
|
|
|
|
|
$toggle_icon_fields = array( 'use_icon_font_size', 'icon_color', 'icon_font_size' );
|
|
|
|
|
foreach ( $toggle_icon_fields as $toggle_icon_field ) {
|
|
|
|
|
foreach ( $this->_responsive_modes_suffixes as $mode_suffix ) {
|
|
|
|
|
if ( 'use_icon_font_size' === $toggle_icon_field && '' !== $mode_suffix ) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$full_field_name = $toggle_icon_field . $mode_suffix;
|
|
|
|
|
$modules = $this->_get_toggle_modules();
|
|
|
|
|
$result_overlay_fields[ 'open_' . $full_field_name ] = array(
|
|
|
|
|
'affected_fields' => array( $full_field_name => $modules ),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $result_overlay_fields;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get all affected fields.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function get_fields() {
|
|
|
|
|
return array_merge( $this->_get_blurb_fields(), $this->_get_button_fields(), $this->_get_overlay_fields(), $this->_get_toggle_fields() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get all affected modules.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function get_modules() {
|
|
|
|
|
return array_merge( $this->_get_blurb_modules(), $this->_get_overlay_modules(), $this->_get_button_modules(), $this->_get_toggle_modules() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Base migrate method, which launching during migration.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $field_name field name.
|
|
|
|
|
* @param string $current_value current value.
|
|
|
|
|
* @param string $module_slug module slug.
|
|
|
|
|
* @param string $saved_value saved value.
|
|
|
|
|
* @param string $saved_field_name saved field name.
|
|
|
|
|
* @param array $attrs attrs array.
|
|
|
|
|
* @param string $content content.
|
|
|
|
|
* @param string $module_address module_address.
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function migrate( $field_name, $current_value, $module_slug, $saved_value, $saved_field_name, $attrs, $content, $module_address ) {
|
|
|
|
|
// Initialize migration params from received args.
|
|
|
|
|
$this->_init_params( $field_name, $current_value, $saved_value, $saved_field_name, $attrs );
|
|
|
|
|
|
|
|
|
|
// For the non Blurb modules we only migarte `font_icon` option.
|
|
|
|
|
if ( ! in_array( $module_slug, $this->_get_blurb_modules(), true ) ) {
|
|
|
|
|
// Simple migrate filed names for toggle icons.
|
|
|
|
|
if ( in_array( $module_slug, $this->_get_toggle_modules(), true ) ) {
|
|
|
|
|
return $current_value;
|
|
|
|
|
}
|
|
|
|
|
return $this->_migrate_font_icon();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Run different scripts depending on the type of migration.
|
|
|
|
|
return ( parent::$_maybe_global_presets_migration ) ? $this->_blurb_global_presets_attrs_migration() : $this->_blurb_post_attrs_migration();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Initialize migration params from received args.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $field_name field_name.
|
|
|
|
|
* @param string $current_value current_value.
|
|
|
|
|
* @param string $saved_value saved_value.
|
|
|
|
|
* @param string $saved_field_name saved_field_name.
|
|
|
|
|
* @param string $attrs attrs.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
private function _init_params( $field_name, $current_value, $saved_value, $saved_field_name, $attrs ) {
|
|
|
|
|
$this->_field_name = $field_name;
|
|
|
|
|
$this->_current_value = $current_value;
|
|
|
|
|
$this->_saved_value = $saved_value;
|
|
|
|
|
$this->_saved_field_name = $saved_field_name;
|
|
|
|
|
$this->_attrs = $attrs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check if an passed attribute is an on\off type via its name.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $attr_name attribute name.
|
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
private function _maybe_on( $attr_name ) {
|
|
|
|
|
return ! empty( $this->_attrs[ $attr_name ] ) && 'on' === ( $this->_attrs[ $attr_name ] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check if current migrated `field_name` contains passed attribute name.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $attr_name attribute name.
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
private function _field_name_contains( $attr_name ) {
|
|
|
|
|
return false !== strpos( $this->_field_name, $attr_name );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check if current migrated `saved_name` contains passed attribute name.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $attr_name attr_name.
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
private function _saved_name_contains( $attr_name ) {
|
|
|
|
|
return false !== strpos( $this->_saved_field_name, $attr_name );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get current migrated field name suffix.
|
|
|
|
|
*
|
|
|
|
|
* @param bool $use_sticky_suffixes use or not sticky_suffixes.
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _get_field_suffix( $use_sticky_suffixes = false ) {
|
|
|
|
|
$suffixes = $use_sticky_suffixes ? array_merge( $this->_sticky_suffixes, array_reverse( $this->_responsive_modes_suffixes ) ) : array_reverse( $this->_responsive_modes_suffixes );
|
|
|
|
|
array_pop( $suffixes );
|
|
|
|
|
foreach ( $suffixes as $suffix ) {
|
|
|
|
|
if ( $this->_field_name_contains( $suffix ) ) {
|
|
|
|
|
return $suffix;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get current migrated field name without suffix.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _get_field_name_without_suffix() {
|
|
|
|
|
return str_replace( $this->_get_field_suffix(), '', $this->_field_name );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Migrate fields value "as is" if the current field is one of the
|
|
|
|
|
* service fields ( fields with suffix '__hover_enabled' or '_last_edited' ) or sticky fields.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
private function _maybe_service_or_sticky_field() {
|
|
|
|
|
$service_suffixes = array_merge( $this->_sticky_suffixes, array( '__hover_enabled', '_last_edited' ) );
|
|
|
|
|
return in_array( $this->_get_field_suffix( true ), $service_suffixes, true ) && ! empty( $this->_current_value );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns an attribute value from by attribute's name.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $attr_name attribute name.
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
private function _get_attr( $attr_name ) {
|
|
|
|
|
return ! empty( $this->_attrs[ $attr_name ] ) ? $this->_attrs[ $attr_name ] : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Migrate fields which depends on the icon placement option.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @param string $for_empty_current_value setting returned value for empty icon_placement.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _migrate_icon_placement( $for_empty_current_value = '' ) {
|
|
|
|
|
$result_values = $this->_icon_placement_migration_values[ $this->_get_field_name_without_suffix() ];
|
|
|
|
|
$result_values[''] = $for_empty_current_value;
|
|
|
|
|
$current_icon_placement_value = $this->_get_attr( 'icon_placement' . $this->_get_field_suffix() );
|
|
|
|
|
if ( '' === $this->_get_field_suffix() || ! empty( $current_icon_placement_value ) ) {
|
|
|
|
|
return $result_values[ $current_icon_placement_value ];
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Migrate background color with circle color.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _migrate_background_color_with_circle_color() {
|
|
|
|
|
|
|
|
|
|
if ( empty( $this->_current_value ) && '' === $this->_get_field_suffix() ) {
|
|
|
|
|
return et_builder_accent_color();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Migrate font icon.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _migrate_font_icon() {
|
|
|
|
|
if ( empty( $this->_current_value ) ) {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-23 12:17:18 +00:00
|
|
|
|
return et_pb_build_extended_font_icon_value( $this->_current_value );
|
2021-12-07 11:08:05 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Run Blurb's attributes migration when post's shortcodes attributes migrating.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _blurb_post_attrs_migration() {
|
|
|
|
|
// Determine the conditions for the migration of various options.
|
|
|
|
|
$is_icon_mode = $this->_maybe_on( 'use_icon' );
|
|
|
|
|
$maybe_set_border_color_all_image_as_is = ! $is_icon_mode && $this->_field_name_contains( 'border_color_all_image' ) && ! empty( $this->_attrs[ $this->_field_name ] );
|
|
|
|
|
$_migrate_font_icon = $is_icon_mode && $this->_field_name_contains( 'font_icon' ) && ! $this->_field_name_contains( '__hover_enabled' ) && ! $this->_field_name_contains( '_last_edited' );
|
|
|
|
|
$migrate_border_radii_image = $is_icon_mode && $this->_field_name_contains( 'border_radii_image' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_image_icon_custom_padding = $is_icon_mode && $this->_field_name_contains( 'image_icon_custom_padding' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_border_width_all_image_as_is = $this->_field_name_contains( 'border_width_all_image' ) && $this->_saved_name_contains( 'border_width_all_image' );
|
|
|
|
|
$migrate_border_width_all_image_with_circle_border = $is_icon_mode && $this->_field_name_contains( 'border_width_all_image' ) && $this->_maybe_on( 'use_circle' ) && $this->_maybe_on( 'use_circle_border' );
|
|
|
|
|
$migrate_border_color_all_image = ! $maybe_set_border_color_all_image_as_is && $is_icon_mode && $this->_field_name_contains( 'border_color_all_image' ) && $this->_maybe_on( 'use_circle' ) && $this->_maybe_on( 'use_circle_border' );
|
|
|
|
|
$migrate_image_icon_width_with_circle = $is_icon_mode && $this->_field_name_contains( 'image_icon_width' ) && $this->_saved_name_contains( 'icon_placement' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_icon_font_size_as_is = $is_icon_mode && $this->_field_name_contains( 'image_icon_width' ) && $this->_saved_name_contains( 'icon_font_size' ) && ! empty( $this->_current_value );
|
|
|
|
|
$_migrate_background_color_with_circle_color = $is_icon_mode && $this->_field_name_contains( 'image_icon_background_color' ) && $this->_saved_name_contains( 'circle_color' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$maybe_return_default_accent_color_for_default_border = empty( $this->_get_attr( 'circle_border_color' ) ) && empty( $this->_get_attr( 'circle_border_color' . $this->_get_field_suffix() ) ) && empty( $this->_get_attr( 'border_color_all_image' ) ) && empty( $this->_get_attr( 'border_color_all_image' . $this->_get_field_suffix() ) );
|
|
|
|
|
$migrate_image_max_width_as_is = ! $is_icon_mode && $this->_field_name_contains( 'image_icon_width' ) && $this->_saved_name_contains( 'image_max_width' );
|
|
|
|
|
|
|
|
|
|
if ( $this->_maybe_service_or_sticky_field() ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $maybe_set_border_color_all_image_as_is && ! empty( $this->_saved_value ) ) {
|
|
|
|
|
return $this->_saved_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_icon_font_size_as_is ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $_migrate_background_color_with_circle_color ) {
|
|
|
|
|
return $this->_migrate_background_color_with_circle_color();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_image_icon_width_with_circle ) {
|
|
|
|
|
return $this->_migrate_icon_placement();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_color_all_image && $maybe_return_default_accent_color_for_default_border ) {
|
|
|
|
|
return et_builder_accent_color();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $_migrate_font_icon ) {
|
|
|
|
|
return $this->_migrate_font_icon();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_radii_image ) {
|
|
|
|
|
return $this->_circle_border_radii_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_image_icon_custom_padding ) {
|
|
|
|
|
return $this->_migrate_icon_placement();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_width_all_image_with_circle_border ) {
|
|
|
|
|
return $this->_migrate_icon_placement( $this->_icon_placement_migration_values['border_width_all_image']['top'] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_width_all_image_as_is && $is_icon_mode ) {
|
|
|
|
|
return in_array( $this->_saved_value, $this->_icon_placement_migration_values['border_width_all_image'], true ) ? $this->_saved_value : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_color_all_image ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_image_max_width_as_is ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $this->_saved_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Run Blurb's attributes migration when Global Presets attributes migrating.
|
|
|
|
|
*
|
|
|
|
|
* @since ?
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
private function _blurb_global_presets_attrs_migration() {
|
|
|
|
|
// Determine the conditions for the migration of various options.
|
|
|
|
|
$_migrate_font_icon = $this->_field_name_contains( 'font_icon' ) && ! $this->_field_name_contains( '__hover_enabled' ) && ! $this->_field_name_contains( '_last_edited' );
|
|
|
|
|
$migrate_border_radii_image = $this->_field_name_contains( 'border_radii_image' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_image_icon_custom_padding = $this->_field_name_contains( 'image_icon_custom_padding' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_border_width_all_image_as_is = $this->_field_name_contains( 'border_width_all_image' ) && $this->_saved_name_contains( 'border_width_all_image' );
|
|
|
|
|
$migrate_border_width_all_image_with_circle_border = ! $migrate_border_width_all_image_as_is && $this->_field_name_contains( 'border_width_all_image' ) && $this->_maybe_on( 'use_circle' ) && $this->_maybe_on( 'use_circle_border' );
|
|
|
|
|
$migrate_no_border_width_all_image_field = ! $migrate_border_width_all_image_with_circle_border && $this->_field_name_contains( 'border_width_all_image' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_border_color_all_image = $this->_field_name_contains( 'border_color_all_image' ) && $this->_maybe_on( 'use_circle' ) && $this->_maybe_on( 'use_circle_border' );
|
|
|
|
|
$migrate_image_icon_width_with_circle = $this->_field_name_contains( 'image_icon_width' ) && $this->_saved_name_contains( 'icon_placement' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_icon_font_size_as_is = $this->_field_name_contains( 'image_icon_width' ) && $this->_saved_name_contains( 'icon_font_size' ) && ! empty( $this->_current_value );
|
|
|
|
|
$_migrate_background_color_with_circle_color = $this->_field_name_contains( 'image_icon_background_color' ) && $this->_saved_name_contains( 'circle_color' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$migrate_default_background_color = ! $_migrate_background_color_with_circle_color && $this->_field_name_contains( 'image_icon_background_color' ) && $this->_maybe_on( 'use_circle' );
|
|
|
|
|
$maybe_return_accent_color_for_default_border = empty( $this->_attrs[ 'circle_border_color' . $this->_get_field_suffix() ] ) && in_array( $this->_get_field_suffix(), array( '', '_tablet', '_phone', '__hover' ), true );
|
|
|
|
|
$migrate_circle_border_color_as_is = $this->_field_name_contains( 'border_color_all_image' ) && $this->_saved_name_contains( 'circle_border_color' ) && ! empty( $this->_current_value );
|
|
|
|
|
$migrate_image_max_width_as_is = $this->_field_name_contains( 'image_icon_width' ) && $this->_saved_name_contains( 'image_max_width' );
|
|
|
|
|
|
|
|
|
|
if ( $this->_maybe_service_or_sticky_field() ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_icon_font_size_as_is ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_default_background_color ) {
|
|
|
|
|
return et_builder_accent_color();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $_migrate_background_color_with_circle_color ) {
|
|
|
|
|
return $this->_migrate_background_color_with_circle_color();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_image_icon_width_with_circle ) {
|
|
|
|
|
return $this->_migrate_icon_placement();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_color_all_image && $maybe_return_accent_color_for_default_border ) {
|
|
|
|
|
return et_builder_accent_color();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $_migrate_font_icon ) {
|
|
|
|
|
return $this->_migrate_font_icon();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_radii_image ) {
|
|
|
|
|
return $this->_circle_border_radii_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_image_icon_custom_padding ) {
|
|
|
|
|
return $this->_migrate_icon_placement( $this->_icon_placement_migration_values['image_icon_custom_padding']['top'] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_width_all_image_with_circle_border ) {
|
|
|
|
|
return $this->_migrate_icon_placement( $this->_icon_placement_migration_values['border_width_all_image']['top'] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_no_border_width_all_image_field ) {
|
|
|
|
|
return in_array( $this->_saved_value, $this->_icon_placement_migration_values['border_width_all_image'], true ) ? $this->_saved_value : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_border_color_all_image || $migrate_circle_border_color_as_is ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $migrate_image_max_width_as_is ) {
|
|
|
|
|
return $this->_current_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $this->_saved_value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new ET_Builder_Module_Settings_Migration_IconManager();
|