astra_get_responsive_background_obj( array $bg_obj_res, string $device )
Generate Responsive Background Color CSS.
Description
Parameters
- $bg_obj_res
-
(array) (Required) array of background object.
- $device
-
(string) (Required) CSS for which device.
Return
(array)
Source
File: inc/core/common-functions.php
function astra_get_responsive_background_obj( $bg_obj_res, $device ) {
$gen_bg_css = array();
if ( ! is_array( $bg_obj_res ) ) {
return;
}
$bg_obj = $bg_obj_res[ $device ];
$bg_img = isset( $bg_obj['background-image'] ) ? $bg_obj['background-image'] : '';
$bg_tab_img = isset( $bg_obj_res['tablet']['background-image'] ) ? $bg_obj_res['tablet']['background-image'] : '';
$bg_desk_img = isset( $bg_obj_res['desktop']['background-image'] ) ? $bg_obj_res['desktop']['background-image'] : '';
$bg_color = isset( $bg_obj['background-color'] ) ? $bg_obj['background-color'] : '';
$tablet_css = ( isset( $bg_obj_res['tablet']['background-image'] ) && $bg_obj_res['tablet']['background-image'] ) ? true : false;
$desktop_css = ( isset( $bg_obj_res['desktop']['background-image'] ) && $bg_obj_res['desktop']['background-image'] ) ? true : false;
$bg_type = ( isset( $bg_obj['background-type'] ) && $bg_obj['background-type'] ) ? $bg_obj['background-type'] : '';
if ( '' !== $bg_type ) {
switch ( $bg_type ) {
case 'color':
if ( '' !== $bg_img && '' !== $bg_color ) {
$gen_bg_css['background-image'] = 'linear-gradient(to right, ' . $bg_color . ', ' . $bg_color . '), url(' . $bg_img . ');';
} elseif ( 'mobile' === $device ) {
if ( $desktop_css ) {
$gen_bg_css['background-image'] = 'linear-gradient(to right, ' . $bg_color . ', ' . $bg_color . '), url(' . $bg_desk_img . ');';
} elseif ( $tablet_css ) {
$gen_bg_css['background-image'] = 'linear-gradient(to right, ' . $bg_color . ', ' . $bg_color . '), url(' . $bg_tab_img . ');';
} else {
$gen_bg_css['background-color'] = $bg_color . ';';
$gen_bg_css['background-image'] = 'none;';
}
} elseif ( 'tablet' === $device ) {
if ( $desktop_css ) {
$gen_bg_css['background-image'] = 'linear-gradient(to right, ' . $bg_color . ', ' . $bg_color . '), url(' . $bg_desk_img . ');';
} else {
$gen_bg_css['background-color'] = $bg_color . ';';
$gen_bg_css['background-image'] = 'none;';
}
} elseif ( '' === $bg_img ) {
$gen_bg_css['background-color'] = $bg_color . ';';
$gen_bg_css['background-image'] = 'none;';
}
break;
case 'image':
if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) {
$gen_bg_css['background-image'] = 'linear-gradient(to right, ' . $bg_color . ', ' . $bg_color . '), url(' . $bg_img . ');';
}
if ( '' === $bg_color || is_numeric( strpos( $bg_color, 'linear-gradient' ) ) || is_numeric( strpos( $bg_color, 'radial-gradient' ) ) && '' !== $bg_img ) {
$gen_bg_css['background-image'] = 'url(' . $bg_img . ');';
}
break;
case 'gradient':
if ( isset( $bg_color ) ) {
$gen_bg_css['background-image'] = $bg_color . ';';
}
break;
default:
break;
}
} elseif ( '' !== $bg_color ) {
$gen_bg_css['background-color'] = $bg_color . ';';
}
if ( '' !== $bg_img ) {
if ( isset( $bg_obj['background-repeat'] ) ) {
$gen_bg_css['background-repeat'] = esc_attr( $bg_obj['background-repeat'] );
}
if ( isset( $bg_obj['background-position'] ) ) {
$gen_bg_css['background-position'] = esc_attr( $bg_obj['background-position'] );
}
if ( isset( $bg_obj['background-size'] ) ) {
$gen_bg_css['background-size'] = esc_attr( $bg_obj['background-size'] );
}
if ( isset( $bg_obj['background-attachment'] ) ) {
$gen_bg_css['background-attachment'] = esc_attr( $bg_obj['background-attachment'] );
}
}
return $gen_bg_css;
}
Expand full source code Collapse full source code View on Trac