| Server IP : 172.67.201.108 / Your IP : 216.73.216.55 Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/home2/mommybites/wp-content/plugins/advanced-ads/classes/ |
Upload File : |
<?php
/**
* Handles Advanced Ads Inline CSS settings.
*/
class Advanced_Ads_Inline_Css {
/**
* Holds the state if inline css should be output or not.
*
* @var bool
*/
protected $add_inline_css;
/**
* Initialize the module.
*/
public function __construct() {
/**
* Filters the state if inline css should be output or not.
* Ajax CB container could have added inline css already.
*
* Set to false if an addon output inline css before the main plugin.
*
* @param bool Contains the state.
*/
$this->add_inline_css = apply_filters( 'advanced-ads-output-inline-css', true );
if ( ! $this->add_inline_css ) {
return;
}
// Add inline css to the tcf container.
$this->check_tcf_option();
}
/**
* Adds inline css.
*
* @param array $wrapper Add wrapper array.
* @param string $css Custom inline css.
* @param bool|null $global_output Whether this ad is using cache-busting.
*
* @return array
*/
public function add_css( $wrapper, $css, $global_output ) {
$this->add_inline_css = $this->add_inline_css && $global_output !== false;
if ( ! $this->add_inline_css ) {
return $wrapper;
}
$styles = $this->get_styles_by_string( $css );
$wrapper['style'] = empty( $wrapper['style'] ) ? $styles : array_merge( $wrapper['style'], $styles );
$this->add_inline_css = false;
return $wrapper;
}
/**
* Extend TCF output with a container containing inline css.
*
* @param string $output The output string.
* @param Advanced_Ads_Ad $ad The ad object.
*
* @return string
*/
public function add_tcf_container( $output, Advanced_Ads_Ad $ad ) {
$inline_css = $ad->options( 'inline-css' );
if (
! $ad->global_output
|| empty( $inline_css )
|| strpos( $output, '<div class="tcf-container"' ) === 0
) {
return $output;
}
return sprintf(
'<div class="tcf-container" style="' . $inline_css . '">%s</div>',
$output
);
}
/**
* Reformat css styles string to array.
*
* @param string $string CSS-Style.
*
* @return array
*/
private function get_styles_by_string( $string ) {
$chunks = array_chunk( preg_split( '/[:;]/', $string ), 2 );
array_walk_recursive( $chunks, function( &$value ) {
$value = trim( $value );
} );
return array_combine( array_filter( array_column( $chunks, 0 ) ), array_filter( array_column( $chunks, 1 ) ) );
}
/**
* If TCF is active, i.e. there is a TCF container, add the options to this container.
*/
private function check_tcf_option() {
static $privacy_options;
if ( $privacy_options === null ) {
$privacy_options = Advanced_Ads_Privacy::get_instance()->options();
}
if ( ! empty( $privacy_options['enabled'] ) && $privacy_options['enabled'] === 'on' && $privacy_options['consent-method'] === 'iab_tcf_20' ) {
add_filter( 'advanced-ads-output-final', array( $this, 'add_tcf_container' ), 20, 2 );
$this->add_inline_css = false;
}
}
}