You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1783 lines
87 KiB
PHP

<?php
/**
* Migrate Background Gradient Start/End to new Multi-stops format.
*
* This migration will take four existing settings and combine them into one
* new, unified setting:
*
* OLD:
* - background_color_gradient_start: #rrggbb
* - background_color_gradient_start_position: xx%
* - background_color_gradient_end: rgba(rr,gg,bb,aa)
* - background_color_gradient_end_position: xx%
*
* NEW:
* - background_gradient_stops: #rrggbb xx%|rgba(rr,gg,bb,aa) xx%
*
* This new format is not limited to only having defined points for gradient
* start and end. In this way, we can enable unlimited gradient stops in our
* gradient background settings.
*
* @package Divi
* @subpackage Builder/Migration
* @since 4.16.0
*/
/**
* Background Gradient Stops migrations class.
*/
class ET_Builder_Module_Settings_Migration_BackgroundGradientStops extends ET_Builder_Module_Settings_Migration {
/**
* The Divi release where this migration was introduced.
*
* @var string
*
* @since 4.16.0
*/
public $version = '4.16';
/**
* This migration should add the defined field(s).
*
* This migration adds a new, combined field for background gradient stops. Older modules do not
* have this field, so it needs to be added.
*
* @var bool
*
* @since 4.16.1
*/
public $add_missing_fields = true;
/**
* Array of modules to inspect for settings to migrate.
*
* Pass attribute and it will return selected modules only. Default return all affected modules.
*
* @param string $attr Attribute name.
*
* @return array Collection of module types.
*
* @since 4.16.0
*/
public function get_modules( $attr = '' ) {
$all_module_slugs = ET_Builder_Element::get_all_module_slugs();
$modules = array();
$module_bg = array(
// Structure Elements.
'et_pb_column_inner',
'et_pb_column_specialty',
'et_pb_column',
'et_pb_section_fullwidth',
'et_pb_section_specialty',
'et_pb_section',
'et_pb_row_inner',
'et_pb_row',
// Divi Content Modules.
'et_pb_accordion_item',
'et_pb_accordion',
'et_pb_audio',
'et_pb_blog',
'et_pb_blurb',
'et_pb_circle_counter',
'et_pb_code',
'et_pb_comments',
'et_pb_contact_field',
'et_pb_contact_form',
'et_pb_countdown_timer',
'et_pb_counter',
'et_pb_counters',
'et_pb_cta',
'et_pb_divider',
'et_pb_filterable_portfolio',
'et_pb_gallery',
'et_pb_icon',
'et_pb_image',
'et_pb_login',
'et_pb_map',
'et_pb_menu',
'et_pb_number_counter',
'et_pb_portfolio',
'et_pb_post_content',
'et_pb_post_nav',
'et_pb_post_slider',
'et_pb_post_title',
'et_pb_pricing_table',
'et_pb_pricing_tables',
'et_pb_search',
'et_pb_shop',
'et_pb_sidebar',
'et_pb_signup_custom_field',
'et_pb_signup',
'et_pb_slide_fullwidth',
'et_pb_slide',
'et_pb_slider',
'et_pb_social_media_follow',
'et_pb_tab',
'et_pb_tabs',
'et_pb_team_member',
'et_pb_testimonial',
'et_pb_text',
'et_pb_toggle',
'et_pb_video_slider',
'et_pb_video',
'et_pb_fullwidth_code',
'et_pb_fullwidth_header',
'et_pb_fullwidth_image',
'et_pb_fullwidth_map',
'et_pb_fullwidth_menu',
'et_pb_fullwidth_portfolio',
'et_pb_fullwidth_post_content',
'et_pb_fullwidth_post_slider',
'et_pb_fullwidth_post_title',
'et_pb_fullwidth_slider',
// WooCommerce Modules.
'et_pb_wc_add_to_cart',
'et_pb_wc_additional_info',
'et_pb_wc_breadcrumb',
'et_pb_wc_cart_notice',
'et_pb_wc_description',
'et_pb_wc_gallery',
'et_pb_wc_images',
'et_pb_wc_meta',
'et_pb_wc_price',
'et_pb_wc_rating',
'et_pb_wc_related_products',
'et_pb_wc_reviews',
'et_pb_wc_stock',
'et_pb_wc_tabs',
'et_pb_wc_title',
'et_pb_wc_upsells',
);
$button_bg = array(
// Divi Content Modules.
'et_pb_button',
'et_pb_comments',
'et_pb_contact_form',
'et_pb_cta',
'et_pb_login',
'et_pb_post_slider',
'et_pb_pricing_table',
'et_pb_pricing_tables',
'et_pb_signup',
'et_pb_slide_fullwidth',
'et_pb_slide',
'et_pb_slider',
'et_pb_social_media_follow',
'et_pb_fullwidth_slider',
// WooCommerce Modules.
'et_pb_wc_add_to_cart',
'et_pb_wc_cart_notice',
'et_pb_wc_reviews',
);
$fw_header_button_bg = array(
// Divi Content Modules.
'et_pb_fullwidth_header',
);
// Any modules not caught by the preceding lists (generally this will be 3rd-party modules).
$module_catchall = array_diff( $all_module_slugs, $module_bg, $button_bg, $fw_header_button_bg );
// Background.
if ( in_array( $attr, array( '', 'module_bg' ), true ) ) {
$modules = array_merge( $modules, $module_bg, $module_catchall );
}
// Button BG.
if ( in_array( $attr, array( '', 'button_bg' ), true ) ) {
$modules = array_merge( $modules, $button_bg, $module_catchall );
}
// Fullwidth Header Button One/Two BG.
if ( in_array( $attr, array( '', 'fw_header_button_bg' ), true ) ) {
$modules = array_merge( $modules, $fw_header_button_bg, $module_catchall );
}
// In the event that no match was made, pass *only* the filtered modules.
if ( empty( $modules ) ) {
$modules = $module_catchall;
}
return $modules;
}
/**
* Get fields that are affected by this migration.
*
* We need to write gradient stops into the new attribute even if they're
* built using default values for gradient start/end settings, so we want to
* find any case where a background gradient is used (regardless of whether
* or not a custom color or position has been defined). As long as some form
* of `use[_background]_color_gradient` is saved to the module, we want to
* load it and migrate its data for the new `_gradient_stops` field.
*
* @return array Collection of affected attributes.
*
* @since 4.16.0
*/
public function get_fields() {
// Gradient Stops fields.
$gradient_stops_fields = array(
// Core fields.
'background_color_gradient_stops' => array(
'affected_fields' => array(
'background_color_gradient_stops' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_stops' => array(
'affected_fields' => array(
'button_bg_color_gradient_stops' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_stops' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_stops' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_stops' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_stops' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_stops_1' => array(
'affected_fields' => array(
'background_color_gradient_stops_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops_2' => array(
'affected_fields' => array(
'background_color_gradient_stops_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops_3' => array(
'affected_fields' => array(
'background_color_gradient_stops_3' => $this->get_modules( 'module_bg' ),
),
),
// Tablet View.
'background_color_gradient_stops_tablet' => array(
'affected_fields' => array(
'background_color_gradient_stops_tablet' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_stops_tablet' => array(
'affected_fields' => array(
'button_bg_color_gradient_stops_tablet' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_stops_tablet' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_stops_tablet' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_stops_tablet' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_stops_tablet' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_stops_tablet_1' => array(
'affected_fields' => array(
'background_color_gradient_stops_tablet_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops_tablet_2' => array(
'affected_fields' => array(
'background_color_gradient_stops_tablet_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops_tablet_3' => array(
'affected_fields' => array(
'background_color_gradient_stops_tablet_3' => $this->get_modules( 'module_bg' ),
),
),
// Phone View.
'background_color_gradient_stops_phone' => array(
'affected_fields' => array(
'background_color_gradient_stops_phone' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_stops_phone' => array(
'affected_fields' => array(
'button_bg_color_gradient_stops_phone' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_stops_phone' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_stops_phone' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_stops_phone' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_stops_phone' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_stops_phone_1' => array(
'affected_fields' => array(
'background_color_gradient_stops_phone_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops_phone_2' => array(
'affected_fields' => array(
'background_color_gradient_stops_phone_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops_phone_3' => array(
'affected_fields' => array(
'background_color_gradient_stops_phone_3' => $this->get_modules( 'module_bg' ),
),
),
// Hover Mode.
'background_color_gradient_stops__hover' => array(
'affected_fields' => array(
'background_color_gradient_stops__hover' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_stops__hover' => array(
'affected_fields' => array(
'button_bg_color_gradient_stops__hover' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_stops__hover' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_stops__hover' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_stops__hover' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_stops__hover' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_stops__hover_1' => array(
'affected_fields' => array(
'background_color_gradient_stops__hover_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops__hover_2' => array(
'affected_fields' => array(
'background_color_gradient_stops__hover_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops__hover_3' => array(
'affected_fields' => array(
'background_color_gradient_stops__hover_3' => $this->get_modules( 'module_bg' ),
),
),
// Sticky Mode.
'background_color_gradient_stops__sticky' => array(
'affected_fields' => array(
'background_color_gradient_stops__sticky' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_stops__sticky' => array(
'affected_fields' => array(
'button_bg_color_gradient_stops__sticky' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_stops__sticky' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_stops__sticky' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_stops__sticky' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_stops__sticky' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_stops__sticky_1' => array(
'affected_fields' => array(
'background_color_gradient_stops__sticky_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops__sticky_2' => array(
'affected_fields' => array(
'background_color_gradient_stops__sticky_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_stops__sticky_3' => array(
'affected_fields' => array(
'background_color_gradient_stops__sticky_3' => $this->get_modules( 'module_bg' ),
),
),
);
// Gradient Type fields.
$gradient_type_fields = array(
// Core fields.
'background_color_gradient_type' => array(
'affected_fields' => array(
'background_color_gradient_type' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_type' => array(
'affected_fields' => array(
'button_bg_color_gradient_type' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_type' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_type' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_type' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_type' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_type_1' => array(
'affected_fields' => array(
'background_color_gradient_type_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type_2' => array(
'affected_fields' => array(
'background_color_gradient_type_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type_3' => array(
'affected_fields' => array(
'background_color_gradient_type_3' => $this->get_modules( 'module_bg' ),
),
),
// Tablet View.
'background_color_gradient_type_tablet' => array(
'affected_fields' => array(
'background_color_gradient_type_tablet' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_type_tablet' => array(
'affected_fields' => array(
'button_bg_color_gradient_type_tablet' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_type_tablet' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_type_tablet' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_type_tablet' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_type_tablet' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_type_tablet_1' => array(
'affected_fields' => array(
'background_color_gradient_type_tablet_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type_tablet_2' => array(
'affected_fields' => array(
'background_color_gradient_type_tablet_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type_tablet_3' => array(
'affected_fields' => array(
'background_color_gradient_type_tablet_3' => $this->get_modules( 'module_bg' ),
),
),
// Phone View.
'background_color_gradient_type_phone' => array(
'affected_fields' => array(
'background_color_gradient_type_phone' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_type_phone' => array(
'affected_fields' => array(
'button_bg_color_gradient_type_phone' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_type_phone' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_type_phone' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_type_phone' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_type_phone' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_type_phone_1' => array(
'affected_fields' => array(
'background_color_gradient_type_phone_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type_phone_2' => array(
'affected_fields' => array(
'background_color_gradient_type_phone_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type_phone_3' => array(
'affected_fields' => array(
'background_color_gradient_type_phone_3' => $this->get_modules( 'module_bg' ),
),
),
// Hover Mode.
'background_color_gradient_type__hover' => array(
'affected_fields' => array(
'background_color_gradient_type__hover' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_type__hover' => array(
'affected_fields' => array(
'button_bg_color_gradient_type__hover' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_type__hover' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_type__hover' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_type__hover' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_type__hover' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_type__hover_1' => array(
'affected_fields' => array(
'background_color_gradient_type__hover_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type__hover_2' => array(
'affected_fields' => array(
'background_color_gradient_type__hover_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type__hover_3' => array(
'affected_fields' => array(
'background_color_gradient_type__hover_3' => $this->get_modules( 'module_bg' ),
),
),
// Sticky Mode.
'background_color_gradient_type__sticky' => array(
'affected_fields' => array(
'background_color_gradient_type__sticky' => $this->get_modules( 'module_bg' ),
),
),
'button_bg_color_gradient_type__sticky' => array(
'affected_fields' => array(
'button_bg_color_gradient_type__sticky' => $this->get_modules( 'button_bg' ),
),
),
'button_one_bg_color_gradient_type__sticky' => array(
'affected_fields' => array(
'button_one_bg_color_gradient_type__sticky' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'button_two_bg_color_gradient_type__sticky' => array(
'affected_fields' => array(
'button_two_bg_color_gradient_type__sticky' => $this->get_modules( 'fw_header_button_bg' ),
),
),
'background_color_gradient_type__sticky_1' => array(
'affected_fields' => array(
'background_color_gradient_type__sticky_1' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type__sticky_2' => array(
'affected_fields' => array(
'background_color_gradient_type__sticky_2' => $this->get_modules( 'module_bg' ),
),
),
'background_color_gradient_type__sticky_3' => array(
'affected_fields' => array(
'background_color_gradient_type__sticky_3' => $this->get_modules( 'module_bg' ),
),
),
);
return array_merge( $gradient_stops_fields, $gradient_type_fields );
}
/**
* The various names of gradient *_type fields.
*
* @return array Collection of affected attributes.
*
* @since 4.16.0
*/
public function gradientTypeFields() {
return array(
// Core fields.
'background_color_gradient_type',
'button_bg_color_gradient_type',
'button_one_bg_color_gradient_type',
'button_two_bg_color_gradient_type',
'background_color_gradient_type_1',
'background_color_gradient_type_2',
'background_color_gradient_type_3',
// Tablet View.
'background_color_gradient_type_tablet',
'button_bg_color_gradient_type_tablet',
'button_one_bg_color_gradient_type_tablet',
'button_two_bg_color_gradient_type_tablet',
'background_color_gradient_type_tablet_1',
'background_color_gradient_type_tablet_2',
'background_color_gradient_type_tablet_3',
// Phone View.
'background_color_gradient_type_phone',
'button_bg_color_gradient_type_phone',
'button_one_bg_color_gradient_type_phone',
'button_two_bg_color_gradient_type_phone',
'background_color_gradient_type_phone_1',
'background_color_gradient_type_phone_2',
'background_color_gradient_type_phone_3',
// Hover Mode.
'background_color_gradient_type__hover',
'button_bg_color_gradient_type__hover',
'button_one_bg_color_gradient_type__hover',
'button_two_bg_color_gradient_type__hover',
'background_color_gradient_type__hover_1',
'background_color_gradient_type__hover_2',
'background_color_gradient_type__hover_3',
// Sticky Mode.
'background_color_gradient_type__sticky',
'button_bg_color_gradient_type__sticky',
'button_one_bg_color_gradient_type__sticky',
'button_two_bg_color_gradient_type__sticky',
'background_color_gradient_type__sticky_1',
'background_color_gradient_type__sticky_2',
'background_color_gradient_type__sticky_3',
);
}
/**
* Check if array key exists and has non-empty value.
*
* @param string $key Name of an attribute being searched.
* @param array $array Module attributes.
*
* @return bool Whether a matching attribute exists with a non-empty value.
*
* @since 4.16.0
*/
public function existsAndIsNotEmpty( $key, $array ) {
if ( ! array_key_exists( $key, $array ) ) {
return false;
}
return ! empty( $array[ $key ] );
}
/**
* Gradient Type: Replace any "radial" gradient types with "elliptical".
*
* "Gradient Type" has been updated.
*
* Previously, the options were:
* - linear [`linear-gradient(...)`]
* - radial [`radial-gradient(...)`] (defaults to 'ellipse at' unless circle is defined)
*
* The options now are:
* - linear [`linear-gradient(...)`]
* - elliptical [`radial-gradient( ellipse at...)`]
* - circular [`radial-gradient( circle at...)`]
* - conic [`conic-gradient(...)`]
*
* This means that the old "radial" type needs to be updated to "ellipse" wherever it appears.
*
* @param string $current_value The current value (which may need replacing).
*
* @return string Value to assign to the migrated field.
*
* @since 4.16.0
*/
public function migrateGradientType( $current_value ) {
switch ( $current_value ) {
case 'radial':
return 'circular';
default:
return $current_value;
}
}
/**
* Gradient Stops: Formatting information for the old start/end values to be migrated.
*
* `background_color_gradient_start_position`:
* `background_color_gradient_end_position`:
* string - percentage value (0%-100%); could also be a fraction of
* a percent (ex. '25.68%'). We will be rounding these to the
* nearest whole percent during migration, so:
* pre-migration '25.48%' = post-migration '25%'
* pre-migration '25.68%' = post-migration '26%'
*
* `background_color_gradient_start`:
* `background_color_gradient_end`:
* string - CSS color code. Should be one of:
* hex (ex. #ff00aa, #f0a)
* rgba (ex. rgba(255,0,170,0.54)
* Our color picker converts rgb(...) to hex and hsla(...)
* to rgba, so they don't appear naturally. Customized layout
* exports could have modified values, though, so we should
* be prepared to handle them.
*
* @param string $field_name Name of the field.
* @param string $current_value Current value.
* @param array $attrs The attrs.
*
* @return string Value to assign to the migrated field.
*
* @since 4.16.0 Added.
* @since 4.17.1 Check inheritance. If all values are inherited, unset the attribute.
*/
public function migrateGradientStops( $field_name, $current_value, $attrs ) {
// Grab system defaults to insert where needed (due to empty values).
$default_settings = array(
'start_color' => ET_Global_Settings::get_value( 'all_background_gradient_start' ),
'start_position' => ET_Global_Settings::get_value( 'all_background_gradient_start_position' ),
'end_color' => ET_Global_Settings::get_value( 'all_background_gradient_end' ),
'end_position' => ET_Global_Settings::get_value( 'all_background_gradient_end_position' ),
);
// This array will be populated with values from the old fields.
$old_values = array(
'start_color' => '',
'start_position' => '',
'end_color' => '',
'end_position' => '',
);
// This is used to avoid polluting with unnecessary settings.
$is_inherited = array(
'start_color' => false,
'start_position' => false,
'end_color' => false,
'end_position' => false,
);
// Collect the old gradient settings.
switch ( $field_name ) {
// Core fields.
case 'background_color_gradient_stops':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position'];
}
break;
case 'button_bg_color_gradient_stops':
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start'];
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position'];
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end'];
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position'];
}
break;
case 'button_one_bg_color_gradient_stops':
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start'];
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position'];
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end'];
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position'];
}
break;
case 'button_two_bg_color_gradient_stops':
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start'];
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position'];
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end'];
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position'];
}
break;
case 'background_color_gradient_stops_1':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_1'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_1'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_1'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_1'];
}
break;
case 'background_color_gradient_stops_2':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_2'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_2'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_2'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_2'];
}
break;
case 'background_color_gradient_stops_3':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_3'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_3'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_3'];
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_3'];
}
break;
// Tablet View.
// If tablet view settings are not found, check for desktop view settings and inherit (if found).
case 'background_color_gradient_stops_tablet':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_bg_color_gradient_stops_tablet':
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_one_bg_color_gradient_stops_tablet':
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_two_bg_color_gradient_stops_tablet':
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position_tablet'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops_tablet_1':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_1'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_1'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_1'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_1'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops_tablet_2':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_2'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_2'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_2'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_2'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops_tablet_3':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_3'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_3'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_3'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_3'];
$is_inherited['end_position'] = true;
}
break;
// Phone View.
// If phone view settings are not found, check for table view settings and inherit (if found).
// If tablet view settings are not found, check for desktop view settings and inherit (if found).
case 'background_color_gradient_stops_phone':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_phone', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_phone'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_phone', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_phone', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_phone'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_phone', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_bg_color_gradient_stops_phone':
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_phone', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start_tablet'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position_phone', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position_tablet'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_phone', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end_tablet'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position_phone', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position_tablet'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_one_bg_color_gradient_stops_phone':
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_phone', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start_tablet'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position_phone', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position_tablet'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_phone', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end_tablet'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position_phone', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position_tablet'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_two_bg_color_gradient_stops_phone':
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_phone', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_tablet', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start_tablet'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position_phone', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position_tablet', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position_tablet'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_phone', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_tablet', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end_tablet'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position_phone', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position_phone'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position_tablet', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position_tablet'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops_phone_1':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_phone_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_phone_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet_1'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_1'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_phone_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_phone_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet_1'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_1'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_phone_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_phone_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet_1'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_1'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_phone_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_phone_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet_1'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_1'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops_phone_2':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_phone_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_phone_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet_2'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_2'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_phone_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_phone_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet_2'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_2'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_phone_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_phone_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet_2'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_2'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_phone_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_phone_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet_2'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_2'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops_phone_3':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_phone_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_phone_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_tablet_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_tablet_3'];
$is_inherited['start_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_3'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_phone_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_phone_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_tablet_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_tablet_3'];
$is_inherited['start_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_3'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_phone_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_phone_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_tablet_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_tablet_3'];
$is_inherited['end_color'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_3'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_phone_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_phone_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_tablet_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_tablet_3'];
$is_inherited['end_position'] = true;
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_3'];
$is_inherited['end_position'] = true;
}
break;
// Hover Mode.
// If hover view settings are not found, check for desktop view settings and inherit (if found).
case 'background_color_gradient_stops__hover':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__hover', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__hover'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__hover', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__hover', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__hover'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__hover', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_bg_color_gradient_stops__hover':
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start__hover', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position__hover', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end__hover', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position__hover', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_one_bg_color_gradient_stops__hover':
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start__hover', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position__hover', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end__hover', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position__hover', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_two_bg_color_gradient_stops__hover':
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start__hover', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position__hover', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end__hover', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position__hover', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position__hover'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops__hover_1':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__hover_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__hover_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_1'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__hover_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__hover_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_1'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__hover_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__hover_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_1'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__hover_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__hover_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_1'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops__hover_2':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__hover_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__hover_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_2'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__hover_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__hover_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_2'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__hover_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__hover_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_2'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__hover_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__hover_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_2'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops__hover_3':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__hover_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__hover_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_3'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__hover_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__hover_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_3'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__hover_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__hover_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_3'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__hover_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__hover_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_3'];
$is_inherited['end_position'] = true;
}
break;
// Sticky Mode.
// If sticky view settings are not found, check for desktop view settings and inherit (if found).
case 'background_color_gradient_stops__sticky':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__sticky', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__sticky', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__sticky', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__sticky', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_bg_color_gradient_stops__sticky':
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start__sticky', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position__sticky', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end__sticky', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position__sticky', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_one_bg_color_gradient_stops__sticky':
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start__sticky', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_one_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position__sticky', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_one_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end__sticky', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_one_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position__sticky', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_one_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_one_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'button_two_bg_color_gradient_stops__sticky':
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start__sticky', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start', $attrs ) ) {
$old_values['start_color'] = $attrs['button_two_bg_color_gradient_start'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position__sticky', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_start_position', $attrs ) ) {
$old_values['start_position'] = $attrs['button_two_bg_color_gradient_start_position'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end__sticky', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end', $attrs ) ) {
$old_values['end_color'] = $attrs['button_two_bg_color_gradient_end'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position__sticky', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position__sticky'];
} elseif ( self::existsAndIsNotEmpty( 'button_two_bg_color_gradient_end_position', $attrs ) ) {
$old_values['end_position'] = $attrs['button_two_bg_color_gradient_end_position'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops__sticky_1':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__sticky_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__sticky_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_1', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_1'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__sticky_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__sticky_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_1', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_1'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__sticky_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__sticky_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_1', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_1'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__sticky_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__sticky_1'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_1', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_1'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops__sticky_2':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__sticky_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__sticky_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_2', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_2'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__sticky_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__sticky_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_2', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_2'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__sticky_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__sticky_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_2', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_2'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__sticky_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__sticky_2'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_2', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_2'];
$is_inherited['end_position'] = true;
}
break;
case 'background_color_gradient_stops__sticky_3':
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start__sticky_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start__sticky_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_3', $attrs ) ) {
$old_values['start_color'] = $attrs['background_color_gradient_start_3'];
$is_inherited['start_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position__sticky_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position__sticky_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_start_position_3', $attrs ) ) {
$old_values['start_position'] = $attrs['background_color_gradient_start_position_3'];
$is_inherited['start_position'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end__sticky_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end__sticky_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_3', $attrs ) ) {
$old_values['end_color'] = $attrs['background_color_gradient_end_3'];
$is_inherited['end_color'] = true;
}
if ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position__sticky_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position__sticky_3'];
} elseif ( self::existsAndIsNotEmpty( 'background_color_gradient_end_position_3', $attrs ) ) {
$old_values['end_position'] = $attrs['background_color_gradient_end_position_3'];
$is_inherited['end_position'] = true;
}
break;
default:
// Bail, nothing to process.
return $current_value;
}
// If we didn't find *any* old values, then bail--there's nothing to process here.
if ( empty( implode( '', $old_values ) ) ) {
return $current_value;
}
// If *all* settings have been inherited, then return `null` to unset this attribute (don't pollute).
if ( $is_inherited['start_color'] && $is_inherited['start_position'] && $is_inherited['end_color'] && $is_inherited['end_position'] ) {
return null;
}
// If colors or positions aren't defined, use the system default settings.
if ( empty( $old_values['start_color'] ) ) {
$old_values['start_color'] = $default_settings['start_color'];
}
if ( empty( $old_values['start_position'] ) ) {
$old_values['start_position'] = $default_settings['start_position'];
}
if ( empty( $old_values['end_color'] ) ) {
$old_values['end_color'] = $default_settings['end_color'];
}
if ( empty( $old_values['end_position'] ) ) {
$old_values['end_position'] = $default_settings['end_position'];
}
// Strip percent signs and round to nearest int for our calculations.
$pos_start = round( floatval( $old_values['start_position'] ) );
$pos_start_unit = trim( $old_values['start_position'], ',. 0..9' );
$pos_end = round( floatval( $old_values['end_position'] ) );
$pos_end_unit = trim( $old_values['end_position'], ',. 0..9' );
// Our sliders use percent values, but pixel values might be manually set.
$pos_units_match = ( $pos_start_unit === $pos_end_unit );
// If (and ONLY if) both values use the same unit of measurement,
// adjust the end position value to be no smaller than the start.
if ( $pos_units_match && $pos_end < $pos_start ) {
$pos_end = $pos_start;
}
// Prepare to receive the new gradient settings.
$new_values = array(
'start' => $old_values['start_color'] . ' ' . $pos_start . $pos_start_unit,
'end' => $old_values['end_color'] . ' ' . $pos_end . $pos_end_unit,
);
// Compile and return the migrated value for the Gradient Stops attribute.
return implode( '|', $new_values );
}
/**
* Migrate.
*
* @param string $to_field_name This migration's target field.
* @param string|array $affected_field_value Affected field reference value.
* @param string|number $module_slug Current module type.
* @param string $to_field_value Migration target's current value.
* @param string $affected_field_name Affected field attribute name.
* @param array $module_attrs Current module's full attributes.
* @param string $module_content Current module's content.
* @param string|number $module_address Current module's address.
*
* @return string
*
* @since 4.16.0
*/
public function migrate(
$to_field_name,
$affected_field_value,
$module_slug,
$to_field_value,
$affected_field_name,
$module_attrs,
$module_content,
$module_address
) {
if ( in_array( $affected_field_name, self::gradientTypeFields(), true ) ) {
// Migrate the gradient type.
$to_field_value = self::migrateGradientType( $affected_field_value );
} else {
// Migrate gradient stops.
$to_field_value = self::migrateGradientStops( $affected_field_name, $affected_field_value, $module_attrs );
}
return $to_field_value;
}
}
return new ET_Builder_Module_Settings_Migration_BackgroundGradientStops();