elementor
/
modules
/
atomic-widgets
/
props-resolver
/
transformers
/
styles
/
background-image-overlay-transformer.php
background-image-overlay-transformer.php in Elementor Website Builder – more than just a page builder 3.28.4, at modules/atomic-widgets/props-resolver/transformers/styles/background-image-overlay-transformer.php
| 1 | <?php |
| 2 | |
| 3 | namespace Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles; |
| 4 | |
| 5 | use Elementor\Modules\AtomicWidgets\PropsResolver\Transformer_Base; |
| 6 | |
| 7 | if ( ! defined( 'ABSPATH' ) ) { |
| 8 | exit; // Exit if accessed directly. |
| 9 | } |
| 10 | |
| 11 | class Background_Image_Overlay_Transformer extends Transformer_Base { |
| 12 | const DEFAULT_POSITION = '0% 0%'; |
| 13 | |
| 14 | public function transform( $value, $key ) { |
| 15 | if ( ! isset( $value['image'] ) ) { |
| 16 | return ''; |
| 17 | } |
| 18 | |
| 19 | $image_url = $value['image']['src']; |
| 20 | |
| 21 | $background_style = "url(\" $image_url \")"; |
| 22 | |
| 23 | if ( ! empty( $value['repeat'] ) ) { |
| 24 | $background_style .= ' ' . $value['repeat']; |
| 25 | } |
| 26 | |
| 27 | if ( ! empty( $value['attachment'] ) ) { |
| 28 | $background_style .= ' ' . $value['attachment']; |
| 29 | } |
| 30 | |
| 31 | $position_and_size_style = $this->get_position_and_size_style( $value ); |
| 32 | |
| 33 | if ( ! empty( $position_and_size_style ) ) { |
| 34 | $background_style .= ' ' . $position_and_size_style; |
| 35 | } |
| 36 | |
| 37 | return $background_style; |
| 38 | } |
| 39 | |
| 40 | private function get_position_and_size_style( array $value ): string { |
| 41 | if ( ! isset( $value['size'] ) && ! isset( $value['position'] ) ) { |
| 42 | return ''; |
| 43 | } |
| 44 | |
| 45 | if ( ! isset( $value['size'] ) ) { |
| 46 | return $value['position']; |
| 47 | } |
| 48 | |
| 49 | $position = $value['position'] ?? self::DEFAULT_POSITION; |
| 50 | |
| 51 | return $position . ' / ' . $value['size']; |
| 52 | } |
| 53 | } |
| 54 |