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.../plugins/advanced.../classes
File: inline-css.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* Handles Advanced Ads Inline CSS settings.
[3] Fix | Delete
*/
[4] Fix | Delete
class Advanced_Ads_Inline_Css {
[5] Fix | Delete
/**
[6] Fix | Delete
* Holds the state if inline css should be output or not.
[7] Fix | Delete
*
[8] Fix | Delete
* @var bool
[9] Fix | Delete
*/
[10] Fix | Delete
protected $add_inline_css;
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* Initialize the module.
[14] Fix | Delete
*/
[15] Fix | Delete
public function __construct() {
[16] Fix | Delete
[17] Fix | Delete
/**
[18] Fix | Delete
* Filters the state if inline css should be output or not.
[19] Fix | Delete
* Ajax CB container could have added inline css already.
[20] Fix | Delete
*
[21] Fix | Delete
* Set to false if an addon output inline css before the main plugin.
[22] Fix | Delete
*
[23] Fix | Delete
* @param bool Contains the state.
[24] Fix | Delete
*/
[25] Fix | Delete
$this->add_inline_css = apply_filters( 'advanced-ads-output-inline-css', true );
[26] Fix | Delete
if ( ! $this->add_inline_css ) {
[27] Fix | Delete
return;
[28] Fix | Delete
}
[29] Fix | Delete
[30] Fix | Delete
// Add inline css to the tcf container.
[31] Fix | Delete
$this->check_tcf_option();
[32] Fix | Delete
}
[33] Fix | Delete
[34] Fix | Delete
/**
[35] Fix | Delete
* Adds inline css.
[36] Fix | Delete
*
[37] Fix | Delete
* @param array $wrapper Add wrapper array.
[38] Fix | Delete
* @param string $css Custom inline css.
[39] Fix | Delete
* @param bool|null $global_output Whether this ad is using cache-busting.
[40] Fix | Delete
*
[41] Fix | Delete
* @return array
[42] Fix | Delete
*/
[43] Fix | Delete
public function add_css( $wrapper, $css, $global_output ) {
[44] Fix | Delete
$this->add_inline_css = $this->add_inline_css && $global_output !== false;
[45] Fix | Delete
if ( ! $this->add_inline_css ) {
[46] Fix | Delete
return $wrapper;
[47] Fix | Delete
}
[48] Fix | Delete
[49] Fix | Delete
$styles = $this->get_styles_by_string( $css );
[50] Fix | Delete
$wrapper['style'] = empty( $wrapper['style'] ) ? $styles : array_merge( $wrapper['style'], $styles );
[51] Fix | Delete
$this->add_inline_css = false;
[52] Fix | Delete
[53] Fix | Delete
return $wrapper;
[54] Fix | Delete
}
[55] Fix | Delete
[56] Fix | Delete
/**
[57] Fix | Delete
* Extend TCF output with a container containing inline css.
[58] Fix | Delete
*
[59] Fix | Delete
* @param string $output The output string.
[60] Fix | Delete
* @param Advanced_Ads_Ad $ad The ad object.
[61] Fix | Delete
*
[62] Fix | Delete
* @return string
[63] Fix | Delete
*/
[64] Fix | Delete
public function add_tcf_container( $output, Advanced_Ads_Ad $ad ) {
[65] Fix | Delete
$inline_css = $ad->options( 'inline-css' );
[66] Fix | Delete
[67] Fix | Delete
if (
[68] Fix | Delete
! $ad->global_output
[69] Fix | Delete
|| empty( $inline_css )
[70] Fix | Delete
|| strpos( $output, '<div class="tcf-container"' ) === 0
[71] Fix | Delete
) {
[72] Fix | Delete
return $output;
[73] Fix | Delete
}
[74] Fix | Delete
[75] Fix | Delete
return sprintf(
[76] Fix | Delete
'<div class="tcf-container" style="' . $inline_css . '">%s</div>',
[77] Fix | Delete
$output
[78] Fix | Delete
);
[79] Fix | Delete
}
[80] Fix | Delete
[81] Fix | Delete
/**
[82] Fix | Delete
* Reformat css styles string to array.
[83] Fix | Delete
*
[84] Fix | Delete
* @param string $string CSS-Style.
[85] Fix | Delete
*
[86] Fix | Delete
* @return array
[87] Fix | Delete
*/
[88] Fix | Delete
private function get_styles_by_string( string $string ): array {
[89] Fix | Delete
$chunks = array_chunk( preg_split( '/[:;]/', $string ), 2 );
[90] Fix | Delete
array_walk_recursive( $chunks, function( &$value ) {
[91] Fix | Delete
$value = trim( $value );
[92] Fix | Delete
} );
[93] Fix | Delete
[94] Fix | Delete
$keys = array_filter( array_column( $chunks, 0 ) );
[95] Fix | Delete
$values = array_filter( array_column( $chunks, 1 ) );
[96] Fix | Delete
[97] Fix | Delete
$length = min( count( $keys ), count( $values ) );
[98] Fix | Delete
[99] Fix | Delete
return array_combine( array_slice( $keys, 0, $length ), array_slice( $values, 0, $length ) );
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
/**
[103] Fix | Delete
* If TCF is active, i.e. there is a TCF container, add the options to this container.
[104] Fix | Delete
*/
[105] Fix | Delete
private function check_tcf_option() {
[106] Fix | Delete
static $privacy_options;
[107] Fix | Delete
if ( $privacy_options === null ) {
[108] Fix | Delete
$privacy_options = Advanced_Ads_Privacy::get_instance()->options();
[109] Fix | Delete
}
[110] Fix | Delete
[111] Fix | Delete
if ( ! empty( $privacy_options['enabled'] ) && $privacy_options['enabled'] === 'on' && $privacy_options['consent-method'] === 'iab_tcf_20' ) {
[112] Fix | Delete
add_filter( 'advanced-ads-output-final', [ $this, 'add_tcf_container' ], 20, 2 );
[113] Fix | Delete
$this->add_inline_css = false;
[114] Fix | Delete
}
[115] Fix | Delete
}
[116] Fix | Delete
}
[117] Fix | Delete
[118] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function