Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../themes/Divi/includes/builder/module/helpers
File: ResponsiveOptions.php
<?php
[0] Fix | Delete
[1] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[2] Fix | Delete
die( 'Direct access forbidden.' );
[3] Fix | Delete
}
[4] Fix | Delete
[5] Fix | Delete
/**
[6] Fix | Delete
* Responsive options helper methods.
[7] Fix | Delete
*
[8] Fix | Delete
* @since 3.23 Add more helper functions. Originally, this class is introduced on Options Harmony v2.
[9] Fix | Delete
* @since 3.22
[10] Fix | Delete
*
[11] Fix | Delete
* Class ET_Builder_Module_Helper_ResponsiveOptions
[12] Fix | Delete
*/
[13] Fix | Delete
class ET_Builder_Module_Helper_ResponsiveOptions {
[14] Fix | Delete
[15] Fix | Delete
const DESKTOP = 'desktop';
[16] Fix | Delete
const TABLET = 'tablet';
[17] Fix | Delete
const PHONE = 'phone';
[18] Fix | Delete
[19] Fix | Delete
public static function instance() {
[20] Fix | Delete
static $instance;
[21] Fix | Delete
[22] Fix | Delete
return $instance ? $instance : $instance = new self();
[23] Fix | Delete
}
[24] Fix | Delete
[25] Fix | Delete
private function __construct() {
[26] Fix | Delete
// Now call me if you can
[27] Fix | Delete
}
[28] Fix | Delete
[29] Fix | Delete
/**
[30] Fix | Delete
* Get value from an array based on key. However, we can force to return default value if key
[31] Fix | Delete
* doesn't exist or value is empty.
[32] Fix | Delete
*
[33] Fix | Delete
* @since 3.23
[34] Fix | Delete
*
[35] Fix | Delete
* @param array $list Array of values.
[36] Fix | Delete
* @param string $key Target key.
[37] Fix | Delete
* @param mixed $default Default value, return if the target doesn't exist.
[38] Fix | Delete
* @param mixed $default_on_empty Force to return default if value is empty.
[39] Fix | Delete
* @return mixed Value.
[40] Fix | Delete
*/
[41] Fix | Delete
private function get( $list, $key, $default = null, $default_on_empty = false ) {
[42] Fix | Delete
$value = isset( $list[ $key ] ) ? $list[ $key ] : $default;
[43] Fix | Delete
[44] Fix | Delete
// Return default if we need non empty value to be used.
[45] Fix | Delete
if ( $default_on_empty && empty( $value ) ) {
[46] Fix | Delete
$value = $default;
[47] Fix | Delete
}
[48] Fix | Delete
[49] Fix | Delete
return $value;
[50] Fix | Delete
}
[51] Fix | Delete
[52] Fix | Delete
/**
[53] Fix | Delete
* Check if responsive settings is enabled or not on the option.
[54] Fix | Delete
*
[55] Fix | Delete
* Mostly used by FE.
[56] Fix | Delete
*
[57] Fix | Delete
* @since 3.23
[58] Fix | Delete
*
[59] Fix | Delete
* @param array $attrs All module attributes.
[60] Fix | Delete
* @param string $name Option name.
[61] Fix | Delete
* @return boolean Responsive settings status.
[62] Fix | Delete
*/
[63] Fix | Delete
public function is_responsive_enabled( $attrs, $name ) {
[64] Fix | Delete
$last_edited = $this->get( $attrs, "{$name}_last_edited", '' );
[65] Fix | Delete
return $this->get_responsive_status( $last_edited );
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
/**
[69] Fix | Delete
* Check if responsive settings are enabled on one of the options list.
[70] Fix | Delete
*
[71] Fix | Delete
* @since 3.23
[72] Fix | Delete
*
[73] Fix | Delete
* @param array $attrs All module attributes.
[74] Fix | Delete
* @param array $list Options list.
[75] Fix | Delete
* @return boolean Responsive styles status.
[76] Fix | Delete
*/
[77] Fix | Delete
public function is_any_responsive_enabled( $attrs, $list ) {
[78] Fix | Delete
// Ensure list is not empty and valid array.
[79] Fix | Delete
if ( empty( $list ) || ! is_array( $list ) ) {
[80] Fix | Delete
return false;
[81] Fix | Delete
}
[82] Fix | Delete
[83] Fix | Delete
// Check the responsive status one by one.
[84] Fix | Delete
$is_responsive_enabled = false;
[85] Fix | Delete
foreach ( $list as $name ) {
[86] Fix | Delete
if ( $this->is_responsive_enabled( $attrs, $name ) ) {
[87] Fix | Delete
// Break early if current field enabled responsive is found.
[88] Fix | Delete
$is_responsive_enabled = true;
[89] Fix | Delete
break;
[90] Fix | Delete
}
[91] Fix | Delete
}
[92] Fix | Delete
[93] Fix | Delete
return $is_responsive_enabled;
[94] Fix | Delete
}
[95] Fix | Delete
[96] Fix | Delete
/**
[97] Fix | Delete
* Get responsive status based one last edited value.
[98] Fix | Delete
*
[99] Fix | Delete
* Parsed *_last_edited value and determine wheter the passed string means it has responsive value
[100] Fix | Delete
* or not. *_last_edited holds two values (responsive status and last opened tabs) in the following
[101] Fix | Delete
* format: status|last_opened_tab.
[102] Fix | Delete
*
[103] Fix | Delete
* Copy of et_pb_get_responsive_status() with a little modified and to organize the code.
[104] Fix | Delete
*
[105] Fix | Delete
* @param string $last_edited Last edited field value.
[106] Fix | Delete
* @return bool Responsive field status.
[107] Fix | Delete
*/
[108] Fix | Delete
public function get_responsive_status( $last_edited ) {
[109] Fix | Delete
if ( empty( $last_edited ) || ! is_string( $last_edited ) ) {
[110] Fix | Delete
return false;
[111] Fix | Delete
}
[112] Fix | Delete
[113] Fix | Delete
$parsed_last_edited = explode( '|', $last_edited );
[114] Fix | Delete
[115] Fix | Delete
return isset( $parsed_last_edited[0] ) ? 'on' === $parsed_last_edited[0] : false;
[116] Fix | Delete
}
[117] Fix | Delete
[118] Fix | Delete
/**
[119] Fix | Delete
* Generate video background markup.
[120] Fix | Delete
*
[121] Fix | Delete
* When background support responsive settings, the default callback will be replaced with
[122] Fix | Delete
* get_video_background() function to retrieve all video values for desktop, hover, tablet,
[123] Fix | Delete
* and phone.
[124] Fix | Delete
*
[125] Fix | Delete
* @since 3.23
[126] Fix | Delete
*
[127] Fix | Delete
* @param array $args Background values.
[128] Fix | Delete
* @param array $conditional_tags Conditional tags.
[129] Fix | Delete
* @param array $current_page Current page info.
[130] Fix | Delete
* @return mixed Mixed background content generated as video markup.
[131] Fix | Delete
*/
[132] Fix | Delete
public static function get_video_background( $args = array(), $conditional_tags = array(), $current_page = array() ) {
[133] Fix | Delete
$base_name = isset( $args['computed_variables'] ) && isset( $args['computed_variables']['base_name'] ) ? $args['computed_variables']['base_name'] : 'background';
[134] Fix | Delete
$attr_prefix = "{$base_name}_";
[135] Fix | Delete
[136] Fix | Delete
// Build custom args.
[137] Fix | Delete
$default_args = array(
[138] Fix | Delete
"{$attr_prefix}video_mp4" => isset( $args["{$attr_prefix}video_mp4"] ) ? $args["{$attr_prefix}video_mp4"] : '',
[139] Fix | Delete
"{$attr_prefix}video_webm" => isset( $args["{$attr_prefix}video_webm"] ) ? $args["{$attr_prefix}video_webm"] : '',
[140] Fix | Delete
"{$attr_prefix}video_width" => isset( $args["{$attr_prefix}video_width"] ) ? $args["{$attr_prefix}video_width"] : '',
[141] Fix | Delete
"{$attr_prefix}video_height" => isset( $args["{$attr_prefix}video_height"] ) ? $args["{$attr_prefix}video_height"] : '',
[142] Fix | Delete
'computed_variables' => array(
[143] Fix | Delete
'base_name' => $base_name,
[144] Fix | Delete
),
[145] Fix | Delete
);
[146] Fix | Delete
[147] Fix | Delete
$hover_args = array(
[148] Fix | Delete
"{$attr_prefix}video_mp4__hover" => isset( $args["{$attr_prefix}video_mp4__hover"] ) ? $args["{$attr_prefix}video_mp4__hover"] : '',
[149] Fix | Delete
"{$attr_prefix}video_webm__hover" => isset( $args["{$attr_prefix}video_webm__hover"] ) ? $args["{$attr_prefix}video_webm__hover"] : '',
[150] Fix | Delete
"{$attr_prefix}video_width__hover" => isset( $args["{$attr_prefix}video_width__hover"] ) ? $args["{$attr_prefix}video_width__hover"] : '',
[151] Fix | Delete
"{$attr_prefix}video_height__hover" => isset( $args["{$attr_prefix}video_height__hover"] ) ? $args["{$attr_prefix}video_height__hover"] : '',
[152] Fix | Delete
'computed_variables' => array(
[153] Fix | Delete
'base_name' => $base_name,
[154] Fix | Delete
'device' => '_hover',
[155] Fix | Delete
),
[156] Fix | Delete
);
[157] Fix | Delete
[158] Fix | Delete
$tablet_args = array(
[159] Fix | Delete
"{$attr_prefix}video_mp4_tablet" => isset( $args["{$attr_prefix}video_mp4_tablet"] ) ? $args["{$attr_prefix}video_mp4_tablet"] : '',
[160] Fix | Delete
"{$attr_prefix}video_webm_tablet" => isset( $args["{$attr_prefix}video_webm_tablet"] ) ? $args["{$attr_prefix}video_webm_tablet"] : '',
[161] Fix | Delete
"{$attr_prefix}video_width_tablet" => isset( $args["{$attr_prefix}video_width_tablet"] ) ? $args["{$attr_prefix}video_width_tablet"] : '',
[162] Fix | Delete
"{$attr_prefix}video_height_tablet" => isset( $args["{$attr_prefix}video_height_tablet"] ) ? $args["{$attr_prefix}video_height_tablet"] : '',
[163] Fix | Delete
'computed_variables' => array(
[164] Fix | Delete
'base_name' => $base_name,
[165] Fix | Delete
'device' => 'tablet',
[166] Fix | Delete
),
[167] Fix | Delete
);
[168] Fix | Delete
[169] Fix | Delete
$phone_args = array(
[170] Fix | Delete
"{$attr_prefix}video_mp4_phone" => isset( $args["{$attr_prefix}video_mp4_phone"] ) ? $args["{$attr_prefix}video_mp4_phone"] : '',
[171] Fix | Delete
"{$attr_prefix}video_webm_phone" => isset( $args["{$attr_prefix}video_webm_phone"] ) ? $args["{$attr_prefix}video_webm_phone"] : '',
[172] Fix | Delete
"{$attr_prefix}video_width_phone" => isset( $args["{$attr_prefix}video_width_phone"] ) ? $args["{$attr_prefix}video_width_phone"] : '',
[173] Fix | Delete
"{$attr_prefix}video_height_phone" => isset( $args["{$attr_prefix}video_height_phone"] ) ? $args["{$attr_prefix}video_height_phone"] : '',
[174] Fix | Delete
'computed_variables' => array(
[175] Fix | Delete
'base_name' => $base_name,
[176] Fix | Delete
'device' => 'phone',
[177] Fix | Delete
),
[178] Fix | Delete
);
[179] Fix | Delete
[180] Fix | Delete
$video_backgrounds = array();
[181] Fix | Delete
[182] Fix | Delete
// Get video background markup.
[183] Fix | Delete
$background_video = ET_Builder_Element::get_video_background( $default_args );
[184] Fix | Delete
if ( $background_video ) {
[185] Fix | Delete
$video_backgrounds['desktop'] = $background_video;
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
$background_video_hover = ET_Builder_Element::get_video_background( $hover_args );
[189] Fix | Delete
if ( $background_video_hover ) {
[190] Fix | Delete
$video_backgrounds['hover'] = $background_video_hover;
[191] Fix | Delete
}
[192] Fix | Delete
[193] Fix | Delete
$background_video_tablet = ET_Builder_Element::get_video_background( $tablet_args );
[194] Fix | Delete
if ( $background_video_tablet ) {
[195] Fix | Delete
$video_backgrounds['tablet'] = $background_video_tablet;
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
$background_video_phone = ET_Builder_Element::get_video_background( $phone_args );
[199] Fix | Delete
if ( $background_video_phone ) {
[200] Fix | Delete
$video_backgrounds['phone'] = $background_video_phone;
[201] Fix | Delete
}
[202] Fix | Delete
[203] Fix | Delete
return $video_backgrounds;
[204] Fix | Delete
}
[205] Fix | Delete
[206] Fix | Delete
/**
[207] Fix | Delete
* Returns the field original name by removing the `_tablet` or `_phone` suffix if it exists.
[208] Fix | Delete
*
[209] Fix | Delete
* Only remove tablet/phone string of the last setting name. Doesn't work for other format.
[210] Fix | Delete
*
[211] Fix | Delete
* @since 3.23
[212] Fix | Delete
*
[213] Fix | Delete
* @param string $name Setting name.
[214] Fix | Delete
* @return string Base setting name.
[215] Fix | Delete
*/
[216] Fix | Delete
public function get_field_base_name( $name ) {
[217] Fix | Delete
// Do not use rtim as it removes by character not by string. So, cases like `key_tablets`
[218] Fix | Delete
// will be reduced to `key`.
[219] Fix | Delete
$regex = "/(.*)(_tablet|_phone)$/";
[220] Fix | Delete
$replace = '${1}';
[221] Fix | Delete
return preg_replace( $regex, $replace, $name );
[222] Fix | Delete
}
[223] Fix | Delete
[224] Fix | Delete
/**
[225] Fix | Delete
* Returns the field responsive name by adding the `_tablet` or `_phone` suffix if it exists.
[226] Fix | Delete
*
[227] Fix | Delete
* @since 3.27.4
[228] Fix | Delete
*
[229] Fix | Delete
* @param string $name Setting name.
[230] Fix | Delete
* @param string $device Device name.
[231] Fix | Delete
* @return string Field setting name.
[232] Fix | Delete
*/
[233] Fix | Delete
public function get_field_name( $name, $device = 'desktop' ) {
[234] Fix | Delete
// Field name should not be empty.
[235] Fix | Delete
if ( empty( $name ) ) {
[236] Fix | Delete
return $name;
[237] Fix | Delete
}
[238] Fix | Delete
[239] Fix | Delete
// Ensure device is not empty.
[240] Fix | Delete
$device = '' === $device ? 'desktop' : $device;
[241] Fix | Delete
[242] Fix | Delete
// Get device name.
[243] Fix | Delete
return 'desktop' !== $device ? "{$name}_{$device}" : $name;
[244] Fix | Delete
}
[245] Fix | Delete
[246] Fix | Delete
/**
[247] Fix | Delete
* Returns the device name by removing the `name` prefix. If the result is one of tablet or phone,
[248] Fix | Delete
* return it. But, if it's empty, return desktop.
[249] Fix | Delete
*
[250] Fix | Delete
* @since 3.23
[251] Fix | Delete
*
[252] Fix | Delete
* @param string $name Setting name.
[253] Fix | Delete
* @return string Device name.
[254] Fix | Delete
*/
[255] Fix | Delete
public function get_device_name( $name ) {
[256] Fix | Delete
// Do not use rtim as it removes by character not by string. So, cases like `key_tablets`
[257] Fix | Delete
// will be reduced to `key`.
[258] Fix | Delete
$regex = "/(.*)(tablet|phone)$/";
[259] Fix | Delete
$replace = '${2}';
[260] Fix | Delete
$result = preg_replace( $regex, $replace, $name );
[261] Fix | Delete
return in_array( $result, array( 'tablet', 'phone' ) ) ? $result : 'desktop';
[262] Fix | Delete
}
[263] Fix | Delete
[264] Fix | Delete
/**
[265] Fix | Delete
* Get responsive value based on field base name and device.
[266] Fix | Delete
*
[267] Fix | Delete
* NOTE: Function get_single_value() is different with get_any_value(). It will return only
[268] Fix | Delete
* current field value without checking the previous device value.
[269] Fix | Delete
*
[270] Fix | Delete
* For example: We have Title Text Font Size -> desktop 30px, tablet 10px, phone 10px. Fetch
[271] Fix | Delete
* the value for phone, it will return pure 10px even the value is same with tablet.
[272] Fix | Delete
* We have Subtitle Text Font Size -> desktop 20px, tablet 15px, phone ''. Fetch
[273] Fix | Delete
* the value for phone, it will return pure '' or default even the value is empty.
[274] Fix | Delete
*
[275] Fix | Delete
* To get tablet or phone value:
[276] Fix | Delete
* 1. You can pass only field base name and device name as the 4th argument. The parameters
[277] Fix | Delete
* structure it's made like that to make it similar with other get* method we already have.
[278] Fix | Delete
* For example: get_single_value( $this->props, 'title_text_font_size', '', 'tablet' ).
[279] Fix | Delete
*
[280] Fix | Delete
* 2. Or you can pass the actual field name with device. If the field name is already contains
[281] Fix | Delete
* _tablet and _phone, don't pass device parameter because it will be added as suffix.
[282] Fix | Delete
* For example: get_single_value( $this->props, 'title_text_font_size_tablet', '' ).
[283] Fix | Delete
*
[284] Fix | Delete
* @since 3.23
[285] Fix | Delete
*
[286] Fix | Delete
* @param array $attrs All module attributes.
[287] Fix | Delete
* @param string $name Option name.
[288] Fix | Delete
* @param array $default_value Default value.
[289] Fix | Delete
* @param string $device Current device name.
[290] Fix | Delete
* @return mixed Current option value based on active device.
[291] Fix | Delete
*/
[292] Fix | Delete
public function get_single_value( $attrs, $name = '', $default_value = '', $device = 'desktop' ) {
[293] Fix | Delete
// Ensure $device is not empty.
[294] Fix | Delete
$device = '' === $device ? 'desktop' : $device;
[295] Fix | Delete
[296] Fix | Delete
// Ensure always use device as suffix if device is not desktop or empty.
[297] Fix | Delete
if ( 'desktop' !== $device ) {
[298] Fix | Delete
$base_name = $this->get_field_base_name( $name );
[299] Fix | Delete
$name = "{$base_name}_{$device}";
[300] Fix | Delete
}
[301] Fix | Delete
[302] Fix | Delete
return $this->get( $attrs, $name, $default_value, true );
[303] Fix | Delete
}
[304] Fix | Delete
[305] Fix | Delete
/**
[306] Fix | Delete
* Get current active device value from attributes.
[307] Fix | Delete
*
[308] Fix | Delete
* NOTE: Function get_any_value() is different with get_value(). It also compare the value
[309] Fix | Delete
* with the previous device value to avoid duplication. Or you can also force to return
[310] Fix | Delete
* either current or previous default value if needed.
[311] Fix | Delete
*
[312] Fix | Delete
* For example: We have Title Text Font Size -> desktop 30px, tablet 30px, phone 10px. When
[313] Fix | Delete
* we fetch the value for tablet, it will return pure empty string ('') because
[314] Fix | Delete
* tablet value is equal with desktop value.
[315] Fix | Delete
*
[316] Fix | Delete
* We have Title Text Font Size -> desktop 30px, tablet '', phone ''. When
[317] Fix | Delete
* we fetch the value for phone and force it to return any value, it will
[318] Fix | Delete
* return 30px because phone and tablet value is empty and the function will
[319] Fix | Delete
* look up to tablet or even desktop value.
[320] Fix | Delete
*
[321] Fix | Delete
* To get tablet or phone value:
[322] Fix | Delete
* 1. You can pass only field base name and device name as the 4th argument. The parameters
[323] Fix | Delete
* structure it's made like that to make it similar with other get* method we already have.
[324] Fix | Delete
* For example: get_any_value( $this->props, 'title_text_font_size', '', 'tablet' ).
[325] Fix | Delete
*
[326] Fix | Delete
* 2. Or you can pass the actual field name with device. If the field name is already contains
[327] Fix | Delete
* _tablet and _phone, don't pass device parameter because it will be added as suffix.
[328] Fix | Delete
* For example: get_any_value( $this->props, 'title_text_font_size_tablet', '' ).
[329] Fix | Delete
*
[330] Fix | Delete
* 3. You can also force to return any value by passing true on the 5th argument. In some cases
[331] Fix | Delete
* we need this to fill missing tablet/phone value with desktop value.
[332] Fix | Delete
*
[333] Fix | Delete
* @since 3.23
[334] Fix | Delete
*
[335] Fix | Delete
* @param array $attrs All module attributes.
[336] Fix | Delete
* @param string $name Option name.
[337] Fix | Delete
* @param array $default_value Default value.
[338] Fix | Delete
* @param bool $force_return Force to return any value.
[339] Fix | Delete
* @param string $device Current device name.
[340] Fix | Delete
* @return mixed Current option value based on active device.
[341] Fix | Delete
*/
[342] Fix | Delete
public function get_any_value( $attrs, $name = '', $default_value = '', $force_return = false, $device = 'desktop' ) {
[343] Fix | Delete
// Ensure $device is not empty.
[344] Fix | Delete
$device = '' === $device ? 'desktop' : $device;
[345] Fix | Delete
[346] Fix | Delete
// Ensure always use device as suffix if device is not desktop/empty.
[347] Fix | Delete
if ( 'desktop' !== $device ) {
[348] Fix | Delete
$base_name = $this->get_field_base_name( $name );
[349] Fix | Delete
$name = "{$base_name}_{$device}";
[350] Fix | Delete
}
[351] Fix | Delete
[352] Fix | Delete
// Get current value.
[353] Fix | Delete
$current_value = $this->get( $attrs, $name, '' );
[354] Fix | Delete
[355] Fix | Delete
// Get previous value to be compared.
[356] Fix | Delete
$prev_value = $this->get_default_value( $attrs, $name, $default_value );
[357] Fix | Delete
[358] Fix | Delete
// Force to return any values given.
[359] Fix | Delete
if ( $force_return ) {
[360] Fix | Delete
return ! empty( $current_value ) ? $current_value : $prev_value;
[361] Fix | Delete
}
[362] Fix | Delete
[363] Fix | Delete
// Ensure current value is different with the previous device or default.
[364] Fix | Delete
if ( $current_value === $prev_value ) {
[365] Fix | Delete
return '';
[366] Fix | Delete
}
[367] Fix | Delete
[368] Fix | Delete
return $current_value;
[369] Fix | Delete
}
[370] Fix | Delete
[371] Fix | Delete
/**
[372] Fix | Delete
* Get property's values for requested device.
[373] Fix | Delete
*
[374] Fix | Delete
* This function is added to summarize how we fetch desktop/hover/tablet/phone value. This
[375] Fix | Delete
* function still uses get_any_value to get current device values.
[376] Fix | Delete
*
[377] Fix | Delete
* @since 3.23
[378] Fix | Delete
*
[379] Fix | Delete
* @param array $attrs List of all attributes and values.
[380] Fix | Delete
* @param string $name Property name.
[381] Fix | Delete
* @param mixed $default_value Default value.
[382] Fix | Delete
* @param string $device Device name.
[383] Fix | Delete
* @param boolean $force_return Force to return any values found.
[384] Fix | Delete
*
[385] Fix | Delete
* @return array Pair of devices and the values.
[386] Fix | Delete
*/
[387] Fix | Delete
public function get_property_value( $attrs, $name, $default_value = '', $device = 'desktop', $force_return = false ) {
[388] Fix | Delete
// Default values.
[389] Fix | Delete
$default_value = esc_attr( $default_value );
[390] Fix | Delete
[391] Fix | Delete
// Ensure $device is not empty.
[392] Fix | Delete
$device = '' === $device ? 'desktop' : $device;
[393] Fix | Delete
[394] Fix | Delete
// Ensure attrs (values list) and name (property name) are not empty.
[395] Fix | Delete
if ( empty( $attrs ) || '' === $name ) {
[396] Fix | Delete
return $default_value;
[397] Fix | Delete
}
[398] Fix | Delete
[399] Fix | Delete
$is_enabled = 'desktop' !== $device ? $this->is_responsive_enabled( $attrs, $name ) : true;
[400] Fix | Delete
$suffix = 'desktop' !== $device ? "_{$device}" : '';
[401] Fix | Delete
$value = $is_enabled ? $this->get_any_value( $attrs, "{$name}{$suffix}", $default_value, $force_return ) : $default_value;
[402] Fix | Delete
[403] Fix | Delete
return esc_attr( $value );
[404] Fix | Delete
}
[405] Fix | Delete
[406] Fix | Delete
/**
[407] Fix | Delete
* Get all properties values for all devices.
[408] Fix | Delete
*
[409] Fix | Delete
* This function is added to summarize how we fetch desktop/hover, tablet, and phone values. This
[410] Fix | Delete
* function still use get_any_value to get current device values.
[411] Fix | Delete
*
[412] Fix | Delete
* @since 3.23
[413] Fix | Delete
*
[414] Fix | Delete
* @param array $attrs List of all attributes and values.
[415] Fix | Delete
* @param string $name Property name.
[416] Fix | Delete
* @param mixed $default_value Default value.
[417] Fix | Delete
* @param boolean $force_return Force to return any values found.
[418] Fix | Delete
*
[419] Fix | Delete
* @return array Pair of devices and the values.
[420] Fix | Delete
*/
[421] Fix | Delete
public function get_property_values( $attrs, $name, $default_value = '', $force_return = false ) {
[422] Fix | Delete
// Default values.
[423] Fix | Delete
$default_value = esc_attr( $default_value );
[424] Fix | Delete
$values = array(
[425] Fix | Delete
'desktop' => $default_value,
[426] Fix | Delete
'tablet' => $default_value,
[427] Fix | Delete
'phone' => $default_value,
[428] Fix | Delete
);
[429] Fix | Delete
[430] Fix | Delete
// Ensure attrs (values list) and name (property name) are not empty.
[431] Fix | Delete
if ( empty( $attrs ) || '' === $name ) {
[432] Fix | Delete
return $values;
[433] Fix | Delete
}
[434] Fix | Delete
[435] Fix | Delete
$is_responsive = $this->is_responsive_enabled( $attrs, $name );
[436] Fix | Delete
[437] Fix | Delete
// Get values for each devices.
[438] Fix | Delete
$values['desktop'] = esc_html( $this->get_any_value( $attrs, $name, $default_value, $force_return ) );
[439] Fix | Delete
if ( $is_responsive ) {
[440] Fix | Delete
$values['tablet'] = esc_html( $this->get_any_value( $attrs, "{$name}_tablet", $default_value, $force_return ) );
[441] Fix | Delete
$values['phone'] = esc_html( $this->get_any_value( $attrs, "{$name}_phone", $default_value, $force_return ) );
[442] Fix | Delete
}
[443] Fix | Delete
[444] Fix | Delete
return $values;
[445] Fix | Delete
}
[446] Fix | Delete
[447] Fix | Delete
/**
[448] Fix | Delete
* Get composite property's value for requested device.
[449] Fix | Delete
*
[450] Fix | Delete
* This function is added to summarize how we fetch desktop/hover/tablet/phone value. This
[451] Fix | Delete
* function still uses get_any_value to get current device values.
[452] Fix | Delete
*
[453] Fix | Delete
* @since 3.27.4
[454] Fix | Delete
*
[455] Fix | Delete
* @param array $attrs List of all attributes and values.
[456] Fix | Delete
* @param string $composite_name Composite property name.
[457] Fix | Delete
* @param string $name Property name.
[458] Fix | Delete
* @param mixed $default_value Default value.
[459] Fix | Delete
* @param string $device Device name.
[460] Fix | Delete
* @param boolean $force_return Force to return any values found.
[461] Fix | Delete
*
[462] Fix | Delete
* @return array Pair of devices and the values.
[463] Fix | Delete
*/
[464] Fix | Delete
public function get_composite_property_value( $attrs, $composite_name, $name, $default_value = '', $device = 'desktop', $force_return = false ) {
[465] Fix | Delete
// Default values.
[466] Fix | Delete
$default_value = esc_attr( $default_value );
[467] Fix | Delete
[468] Fix | Delete
// Ensure $device is not empty.
[469] Fix | Delete
$device = '' === $device ? 'desktop' : $device;
[470] Fix | Delete
[471] Fix | Delete
// Ensure attrs, composite name (parent property name), name (property name) are not empty.
[472] Fix | Delete
if ( empty( $attrs ) || '' === $composite_name || '' === $name ) {
[473] Fix | Delete
return $default_value;
[474] Fix | Delete
}
[475] Fix | Delete
[476] Fix | Delete
$is_enabled = 'desktop' !== $device ? $this->is_responsive_enabled( $attrs, $composite_name ) : true;
[477] Fix | Delete
$suffix = 'desktop' !== $device ? "_{$device}" : '';
[478] Fix | Delete
$value = $is_enabled ? $this->get_any_value( $attrs, "{$name}{$suffix}", $default_value, $force_return ) : $default_value;
[479] Fix | Delete
[480] Fix | Delete
return esc_attr( $value );
[481] Fix | Delete
}
[482] Fix | Delete
[483] Fix | Delete
/**
[484] Fix | Delete
* Get all composite properties values for all devices.
[485] Fix | Delete
*
[486] Fix | Delete
* This function is added to summarize how we fetch desktop/hover, tablet, and phone values. This
[487] Fix | Delete
* function still use get_any_value to get current device values.
[488] Fix | Delete
*
[489] Fix | Delete
* @since 3.27.4
[490] Fix | Delete
*
[491] Fix | Delete
* @param array $attrs List of all attributes and values.
[492] Fix | Delete
* @param string $composite_name Composite property name.
[493] Fix | Delete
* @param string $name Property name.
[494] Fix | Delete
* @param mixed $default_value Default value.
[495] Fix | Delete
* @param boolean $force_return Force to return any values found.
[496] Fix | Delete
*
[497] Fix | Delete
* @return array Pair of devices and the values.
[498] Fix | Delete
*/
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function