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.../modules/gadsense/public
File: public.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* Class Advanced_Ads_AdSense_Public.
[3] Fix | Delete
*/
[4] Fix | Delete
class Advanced_Ads_AdSense_Public {
[5] Fix | Delete
[6] Fix | Delete
/**
[7] Fix | Delete
* AdSense account related data
[8] Fix | Delete
*
[9] Fix | Delete
* @var Advanced_Ads_AdSense_Data
[10] Fix | Delete
*/
[11] Fix | Delete
private $data;
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Instance of Advanced_Ads_AdSense_Public
[15] Fix | Delete
*
[16] Fix | Delete
* @var Advanced_Ads_AdSense_Public
[17] Fix | Delete
*/
[18] Fix | Delete
private static $instance;
[19] Fix | Delete
[20] Fix | Delete
/**
[21] Fix | Delete
* Advanced_Ads_AdSense_Public constructor.
[22] Fix | Delete
*/
[23] Fix | Delete
private function __construct() {
[24] Fix | Delete
$this->data = Advanced_Ads_AdSense_Data::get_instance();
[25] Fix | Delete
add_action( 'wp_head', [ $this, 'inject_header' ], 20 );
[26] Fix | Delete
// Fires before cache-busting frontend is initialized and tracking method is set
[27] Fix | Delete
add_action( 'wp', [ $this, 'inject_amp_code' ], 20 );
[28] Fix | Delete
}
[29] Fix | Delete
[30] Fix | Delete
/**
[31] Fix | Delete
* Get singleton instance.
[32] Fix | Delete
*
[33] Fix | Delete
* @return self
[34] Fix | Delete
*/
[35] Fix | Delete
public static function get_instance() {
[36] Fix | Delete
if ( is_null( self::$instance ) ) {
[37] Fix | Delete
self::$instance = new self();
[38] Fix | Delete
}
[39] Fix | Delete
[40] Fix | Delete
return self::$instance;
[41] Fix | Delete
}
[42] Fix | Delete
[43] Fix | Delete
/**
[44] Fix | Delete
* Print data in the head tag on the front end.
[45] Fix | Delete
*/
[46] Fix | Delete
public function inject_header() {
[47] Fix | Delete
$options = $this->data->get_options();
[48] Fix | Delete
[49] Fix | Delete
// Inject CSS to make AdSense background transparent.
[50] Fix | Delete
if ( ! empty( $options['background'] ) ) {
[51] Fix | Delete
// Some themes not only get the background wrong, but also add some padding to ins element.
[52] Fix | Delete
echo '<style>ins.adsbygoogle { background-color: transparent; padding: 0; }</style>';
[53] Fix | Delete
}
[54] Fix | Delete
[55] Fix | Delete
if ( defined( 'ADVADS_ADS_DISABLED' ) || advads_is_amp() ) {
[56] Fix | Delete
return;
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
$privacy = Advanced_Ads_Privacy::get_instance();
[60] Fix | Delete
$privacy_options = $privacy->options();
[61] Fix | Delete
$privacy_enabled = $privacy->get_state() !== 'not_needed';
[62] Fix | Delete
$npa_enabled = ( ! empty( $privacy_options['enabled'] ) && $privacy_options['consent-method'] === 'custom' ) && ! empty( $privacy_options['show-non-personalized-adsense'] );
[63] Fix | Delete
[64] Fix | Delete
// Show non-personalized Adsense ads if non-personalized ads are enabled and consent was not given.
[65] Fix | Delete
if ( $privacy_enabled && $npa_enabled ) {
[66] Fix | Delete
echo '<script>';
[67] Fix | Delete
// If the page is not from a cache.
[68] Fix | Delete
if ( $privacy->get_state() === 'unknown' ) {
[69] Fix | Delete
echo '(adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1;';
[70] Fix | Delete
}
[71] Fix | Delete
// If the page is from a cache, wait until 'advads.privacy' is available. Execute before cache-busting.
[72] Fix | Delete
echo '( window.advanced_ads_ready || jQuery( document ).ready ).call( null, function() {
[73] Fix | Delete
var state = ( advads.privacy ) ? advads.privacy.get_state() : "";
[74] Fix | Delete
var use_npa = ( state === "unknown" ) ? 1 : 0;
[75] Fix | Delete
(adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=use_npa;
[76] Fix | Delete
} )';
[77] Fix | Delete
echo '</script>';
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
if ( ! apply_filters( 'advanced-ads-can-display-ads-in-header', true ) ) {
[81] Fix | Delete
return;
[82] Fix | Delete
}
[83] Fix | Delete
[84] Fix | Delete
$pub_id = trim( $this->data->get_adsense_id() );
[85] Fix | Delete
[86] Fix | Delete
if ( $pub_id && isset( $options['page-level-enabled'] ) && $options['page-level-enabled'] ) {
[87] Fix | Delete
$pub_id = $this->data->get_adsense_id();
[88] Fix | Delete
$client_id = 'ca-' . $pub_id;
[89] Fix | Delete
$top_anchor = isset( $options['top-anchor-ad'] ) && $options['top-anchor-ad'];
[90] Fix | Delete
$top_anchor_code = sprintf(
[91] Fix | Delete
'(adsbygoogle = window.adsbygoogle || []).push({
[92] Fix | Delete
google_ad_client: "%s",
[93] Fix | Delete
enable_page_level_ads: true,
[94] Fix | Delete
overlays: {bottom: true}
[95] Fix | Delete
});',
[96] Fix | Delete
esc_attr( $client_id )
[97] Fix | Delete
);
[98] Fix | Delete
/**
[99] Fix | Delete
* Filter the output of the publisher ID appended to the AdSense JavaScript Code.
[100] Fix | Delete
*
[101] Fix | Delete
* @param boolean
[102] Fix | Delete
*/
[103] Fix | Delete
$add_publisher_id = apply_filters( 'advanced-ads-adsense-publisher-id', true );
[104] Fix | Delete
$script_src = add_query_arg( [
[105] Fix | Delete
'client' => $add_publisher_id ? esc_attr( $client_id ) : false,
[106] Fix | Delete
], 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js' );
[107] Fix | Delete
[108] Fix | Delete
/**
[109] Fix | Delete
* Allows to override the page-level code.
[110] Fix | Delete
*
[111] Fix | Delete
* The Pro add-on uses this filter to inject a drop-in replacement for the page-level header code.
[112] Fix | Delete
*
[113] Fix | Delete
* @param string $code Existing page level code.
[114] Fix | Delete
* @param array $parameters {
[115] Fix | Delete
* Parameters of the AdSense code.
[116] Fix | Delete
*
[117] Fix | Delete
* @type string $client_id The Google AdSense client ID.
[118] Fix | Delete
* @type bool $top_anchor AdSense anchor ad on top of pages.
[119] Fix | Delete
* @type string $top_anchor_code The code for top anchor ads.
[120] Fix | Delete
* @type string $script_src AdSense script url.
[121] Fix | Delete
* }
[122] Fix | Delete
*/
[123] Fix | Delete
$custom_code = apply_filters(
[124] Fix | Delete
'advanced-ads-gadsense-page-level-code',
[125] Fix | Delete
'',
[126] Fix | Delete
compact( [ 'client_id', 'top_anchor', 'top_anchor_code', 'script_src' ] )
[127] Fix | Delete
);
[128] Fix | Delete
[129] Fix | Delete
if ( $custom_code ) {
[130] Fix | Delete
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- the snippet has already been escaped.
[131] Fix | Delete
echo $custom_code;
[132] Fix | Delete
return;
[133] Fix | Delete
}
[134] Fix | Delete
[135] Fix | Delete
// inject page-level header code.
[136] Fix | Delete
include GADSENSE_BASE_PATH . 'public/templates/page-level.php';
[137] Fix | Delete
}
[138] Fix | Delete
}
[139] Fix | Delete
[140] Fix | Delete
/**
[141] Fix | Delete
* Handle AdSense AMP code
[142] Fix | Delete
*/
[143] Fix | Delete
public function inject_amp_code() {
[144] Fix | Delete
// for non-AMP pages we do this on the `template_redirect` hook, this has not fired yet.
[145] Fix | Delete
Advanced_Ads::get_instance()->set_disabled_constant();
[146] Fix | Delete
[147] Fix | Delete
if (
[148] Fix | Delete
// check if ads are disabled.
[149] Fix | Delete
( defined( 'ADVADS_ADS_DISABLED' ) && ADVADS_ADS_DISABLED )
[150] Fix | Delete
// check if this an AMP page, we're inside `wp` action so it's safe to use.
[151] Fix | Delete
|| ( ! function_exists( 'advads_is_amp' ) || ! advads_is_amp() )
[152] Fix | Delete
) {
[153] Fix | Delete
return;
[154] Fix | Delete
}
[155] Fix | Delete
// The is_amp_endpoint function is used for multiple plugins.
[156] Fix | Delete
if ( function_exists( 'is_amp_endpoint' ) ) {
[157] Fix | Delete
$adsense_data = Advanced_Ads_AdSense_Data::get_instance();
[158] Fix | Delete
$adsense_options = $adsense_data->get_options();
[159] Fix | Delete
[160] Fix | Delete
// AMP Auto ads was removed from Responsive add-on version 1.10.0
[161] Fix | Delete
if ( defined( 'AAR_VERSION' ) && 1 === version_compare( '1.10.0', AAR_VERSION )
[162] Fix | Delete
|| empty( $adsense_options['amp']['auto_ads_enabled'] ) ) {
[163] Fix | Delete
return;
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
// Adds the AdSense Auto ads AMP code to the page (head) in "Reader" mode.
[167] Fix | Delete
add_action( 'amp_post_template_data', [ $this, 'add_auto_ads_amp_head_script' ] );
[168] Fix | Delete
[169] Fix | Delete
// SmartMag theme (http://theme-sphere.com/smart-mag/documentation/).
[170] Fix | Delete
add_action( 'bunyad_amp_pre_main', [ $this, 'add_auto_ads_amp_body_script' ] );
[171] Fix | Delete
[172] Fix | Delete
/**
[173] Fix | Delete
* Add AMP Auto ads body code to footer for `AMP` plugin ( https://wordpress.org/plugins/amp/ )
[174] Fix | Delete
*
[175] Fix | Delete
* Adds the Auto ads `body` tag to `wp_footer` because there is no WordPress right hook after `body`
[176] Fix | Delete
* The AdSense Auto ads code is added automatically to the `head` section using the amp_post_template_data hook above.
[177] Fix | Delete
*
[178] Fix | Delete
* use `wp_footer` in Transition and Standard mode
[179] Fix | Delete
* use `amp_post_template_footer` in Reader mode
[180] Fix | Delete
*/
[181] Fix | Delete
add_action( 'wp_footer', [ $this, 'add_auto_ads_amp_body_script' ] );
[182] Fix | Delete
add_action( 'amp_post_template_footer', [ $this, 'add_auto_ads_amp_body_script' ] );
[183] Fix | Delete
[184] Fix | Delete
// Other AMP plugins.
[185] Fix | Delete
}
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
/**
[189] Fix | Delete
* Add AdSense AMP Auto ads code to the header.
[190] Fix | Delete
*
[191] Fix | Delete
* @param array $data AMP components.
[192] Fix | Delete
*/
[193] Fix | Delete
public function add_auto_ads_amp_head_script( $data ) {
[194] Fix | Delete
$data['amp_component_scripts']['amp-auto-ads'] = 'https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js';
[195] Fix | Delete
[196] Fix | Delete
return $data;
[197] Fix | Delete
}
[198] Fix | Delete
[199] Fix | Delete
/**
[200] Fix | Delete
* Add Adsense Auto Ads body script.
[201] Fix | Delete
*/
[202] Fix | Delete
public function add_auto_ads_amp_body_script() {
[203] Fix | Delete
$pub_id = $this->data->get_adsense_id();
[204] Fix | Delete
if ( $pub_id ) {
[205] Fix | Delete
printf( '<amp-auto-ads type="adsense" data-ad-client="ca-%s"></amp-auto-ads>', esc_attr( $pub_id ) );
[206] Fix | Delete
}
[207] Fix | Delete
}
[208] Fix | Delete
}
[209] Fix | Delete
[210] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function