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.../admin/includes
File: class-overview-widgets.php
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
[0] Fix | Delete
[1] Fix | Delete
use AdvancedAds\Entities;
[2] Fix | Delete
[3] Fix | Delete
/**
[4] Fix | Delete
* Container class for callbacks for overview widgets
[5] Fix | Delete
*
[6] Fix | Delete
* @package WordPress
[7] Fix | Delete
* @subpackage Advanced Ads Plugin
[8] Fix | Delete
*/
[9] Fix | Delete
class Advanced_Ads_Overview_Widgets_Callbacks {
[10] Fix | Delete
/**
[11] Fix | Delete
* In case one wants to inject several dashboards into a page, we will prevent executing redundant javascript
[12] Fix | Delete
* with the help of this little bool
[13] Fix | Delete
*
[14] Fix | Delete
* @var mixed
[15] Fix | Delete
*/
[16] Fix | Delete
private static $processed_adsense_stats_js = false;
[17] Fix | Delete
[18] Fix | Delete
/**
[19] Fix | Delete
* When doing ajax request (refreshing the dashboard), we need to have a nonce.
[20] Fix | Delete
* one is enough, that's why we need to remember it.
[21] Fix | Delete
*
[22] Fix | Delete
* @var mixed
[23] Fix | Delete
*/
[24] Fix | Delete
private static $gadsense_dashboard_nonce = false;
[25] Fix | Delete
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* Register the plugin overview widgets
[29] Fix | Delete
*/
[30] Fix | Delete
public static function setup_overview_widgets() {
[31] Fix | Delete
[32] Fix | Delete
// initiate i18n notice.
[33] Fix | Delete
$promo = new Translation_Promo(
[34] Fix | Delete
[
[35] Fix | Delete
'textdomain' => 'advanced-ads',
[36] Fix | Delete
'plugin_name' => 'Advanced Ads',
[37] Fix | Delete
'hook' => 'advanced-ads-overview-below-support',
[38] Fix | Delete
'glotpress_logo' => false, // disables the plugin icon so we don’t need to keep up with potential changes.
[39] Fix | Delete
]
[40] Fix | Delete
);
[41] Fix | Delete
[42] Fix | Delete
// show errors.
[43] Fix | Delete
if ( Advanced_Ads_Ad_Health_Notices::notices_enabled()
[44] Fix | Delete
&& count( Advanced_Ads_Ad_Health_Notices::get_instance()->displayed_notices ) ) {
[45] Fix | Delete
self::add_meta_box( 'advads_overview_notices', false, 'full', 'render_notices' );
[46] Fix | Delete
}
[47] Fix | Delete
[48] Fix | Delete
self::add_meta_box(
[49] Fix | Delete
'advads_overview_news',
[50] Fix | Delete
__( 'Next steps', 'advanced-ads' ),
[51] Fix | Delete
'left',
[52] Fix | Delete
'render_next_steps'
[53] Fix | Delete
);
[54] Fix | Delete
self::add_meta_box(
[55] Fix | Delete
'advads_overview_support',
[56] Fix | Delete
__( 'Manual and Support', 'advanced-ads' ),
[57] Fix | Delete
'right',
[58] Fix | Delete
'render_support'
[59] Fix | Delete
);
[60] Fix | Delete
if ( Advanced_Ads_AdSense_Data::get_instance()->is_setup()
[61] Fix | Delete
&& ! Advanced_Ads_AdSense_Data::get_instance()->is_hide_stats() ) {
[62] Fix | Delete
$disable_link_markup = '<span class="advads-hndlelinks hndle"><a href="' . esc_url( admin_url( 'admin.php?page=advanced-ads-settings#top#adsense' ) ) . '" target="_blank">' . esc_attr__( 'Disable', 'advanced-ads' ) . '</a></span>';
[63] Fix | Delete
[64] Fix | Delete
self::add_meta_box(
[65] Fix | Delete
'advads_overview_adsense_stats',
[66] Fix | Delete
__( 'AdSense Earnings', 'advanced-ads' ) . $disable_link_markup,
[67] Fix | Delete
'full',
[68] Fix | Delete
'render_adsense_stats'
[69] Fix | Delete
);
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
// add widgets for pro add ons.
[73] Fix | Delete
self::add_meta_box( 'advads_overview_addons', __( 'Add-Ons', 'advanced-ads' ), 'full', 'render_addons' );
[74] Fix | Delete
[75] Fix | Delete
do_action( 'advanced-ads-overview-widgets-after' );
[76] Fix | Delete
}
[77] Fix | Delete
[78] Fix | Delete
/**
[79] Fix | Delete
* Loads a meta box into output
[80] Fix | Delete
*
[81] Fix | Delete
* @param string $id meta box ID.
[82] Fix | Delete
* @param string $title title of the meta box.
[83] Fix | Delete
* @param string $position context in which to show the box.
[84] Fix | Delete
* @param callable $callback function that fills the box with the desired content.
[85] Fix | Delete
*/
[86] Fix | Delete
public static function add_meta_box( $id, $title, $position, $callback ) {
[87] Fix | Delete
ob_start();
[88] Fix | Delete
call_user_func( [ 'Advanced_Ads_Overview_Widgets_Callbacks', $callback ] );
[89] Fix | Delete
do_action( 'advanced-ads-overview-widget-content-' . $id, $id );
[90] Fix | Delete
$content = ob_get_clean();
[91] Fix | Delete
[92] Fix | Delete
include ADVADS_ABSPATH . 'admin/views/overview-widget.php';
[93] Fix | Delete
}
[94] Fix | Delete
[95] Fix | Delete
/**
[96] Fix | Delete
* Render Ad Health notices widget
[97] Fix | Delete
*/
[98] Fix | Delete
public static function render_notices() {
[99] Fix | Delete
Advanced_Ads_Ad_Health_Notices::get_instance()->render_widget();
[100] Fix | Delete
?><script>jQuery( document ).ready( function(){ advads_ad_health_maybe_remove_list(); });</script>
[101] Fix | Delete
<?php
[102] Fix | Delete
}
[103] Fix | Delete
[104] Fix | Delete
/**
[105] Fix | Delete
* Render next steps widget
[106] Fix | Delete
*/
[107] Fix | Delete
public static function render_next_steps() {
[108] Fix | Delete
$primary_taken = false;
[109] Fix | Delete
[110] Fix | Delete
$model = Advanced_Ads::get_instance()->get_model();
[111] Fix | Delete
$recent_ads = $model->get_ads();
[112] Fix | Delete
if ( count( $recent_ads ) === 0 ) :
[113] Fix | Delete
echo '<p><a class="button button-primary" href="' . esc_url( admin_url( 'post-new.php?post_type=' . Entities::POST_TYPE_AD ) ) .
[114] Fix | Delete
'">' . esc_html( __( 'Create your first ad', 'advanced-ads' ) ) . '</a></p>';
[115] Fix | Delete
[116] Fix | Delete
// Connect to AdSense.
[117] Fix | Delete
echo '<p><a class="button button-primary" href="' . esc_url( admin_url( 'admin.php?page=advanced-ads-settings#top#adsense' ) ) .
[118] Fix | Delete
'">' . esc_attr__( 'Connect to AdSense', 'advanced-ads' ) . '</a></p>';
[119] Fix | Delete
$primary_taken = true;
[120] Fix | Delete
endif;
[121] Fix | Delete
[122] Fix | Delete
$is_subscribed = Advanced_Ads_Admin_Notices::get_instance()->is_subscribed();
[123] Fix | Delete
$can_subscribe = Advanced_Ads_Admin_Notices::get_instance()->user_can_subscribe();
[124] Fix | Delete
$options = Advanced_Ads_Admin_Notices::get_instance()->options();
[125] Fix | Delete
[126] Fix | Delete
$_notice = 'nl_free_addons';
[127] Fix | Delete
if ( $can_subscribe ) {
[128] Fix | Delete
?>
[129] Fix | Delete
<h3><?php esc_html_e( 'Join the newsletter for more benefits', 'advanced-ads' ); ?></h3>
[130] Fix | Delete
<ul>
[131] Fix | Delete
<li><?php esc_html_e( 'Get 2 free add-ons', 'advanced-ads' ); ?></li>
[132] Fix | Delete
<li><?php esc_html_e( 'Get the first steps and more tutorials to your inbox', 'advanced-ads' ); ?></li>
[133] Fix | Delete
<li><?php esc_html_e( 'How to earn more with AdSense', 'advanced-ads' ); ?></li>
[134] Fix | Delete
</ul>
[135] Fix | Delete
<div class="advads-admin-notice">
[136] Fix | Delete
<p>
[137] Fix | Delete
<button type="button" class="button-<?php echo ( $primary_taken ) ? 'secondary' : 'primary'; ?> advads-notices-button-subscribe" data-notice="<?php echo esc_attr( $_notice ); ?>">
[138] Fix | Delete
<?php esc_html_e( 'Join now', 'advanced-ads' ); ?>
[139] Fix | Delete
</button>
[140] Fix | Delete
</p>
[141] Fix | Delete
</div>
[142] Fix | Delete
<?php
[143] Fix | Delete
} elseif ( count( $recent_ads ) > 3
[144] Fix | Delete
&& ! isset( $options['closed']['review'] ) ) {
[145] Fix | Delete
/**
[146] Fix | Delete
* Ask for a review if the review message was not closed before
[147] Fix | Delete
*/
[148] Fix | Delete
?>
[149] Fix | Delete
<div class="advads-admin-notice" data-notice="review">
[150] Fix | Delete
<p><?php esc_html_e( 'Do you find Advanced Ads useful and would like to keep us motivated? Please help us with a review.', 'advanced-ads' ); ?>
[151] Fix | Delete
<p><span class="dashicons dashicons-external"></span>&nbsp;<strong><a href="https://wordpress.org/support/plugin/advanced-ads/reviews/?rate=5#new-post" target=_"blank">
[152] Fix | Delete
<?php esc_html_e( 'Sure, I’ll rate the plugin', 'advanced-ads' ); ?></a></strong>
[153] Fix | Delete
&nbsp;&nbsp;<span class="dashicons dashicons-smiley"></span>&nbsp;<a href="javascript:void(0)" target=_"blank" class="advads-notice-dismiss">
[154] Fix | Delete
<?php esc_html_e( 'I already did', 'advanced-ads' ); ?></a>
[155] Fix | Delete
</p>
[156] Fix | Delete
</div>
[157] Fix | Delete
<?php
[158] Fix | Delete
} elseif ( count( $recent_ads ) > 0 ) {
[159] Fix | Delete
// link to manage ads.
[160] Fix | Delete
echo '<p><a class="button button-secondary" href="' . esc_url( admin_url( 'edit.php?post_type=' . Entities::POST_TYPE_AD ) ) .
[161] Fix | Delete
'">' . esc_html__( 'Manage your ads', 'advanced-ads' ) . '</a></p>';
[162] Fix | Delete
}
[163] Fix | Delete
[164] Fix | Delete
$all_access = Advanced_Ads_Admin_Licenses::get_instance()->get_probably_all_access();
[165] Fix | Delete
if ( $is_subscribed && ! $all_access ) {
[166] Fix | Delete
?>
[167] Fix | Delete
<a class="button button-primary" href="https://wpadvancedads.com/add-ons/all-access/?utm_source=advanced-ads&utm_medium=link&utm_campaign=pitch-bundle" target="_blank"><?php esc_html_e( 'Get the All Access pass', 'advanced-ads' ); ?></a>
[168] Fix | Delete
<?php
[169] Fix | Delete
}
[170] Fix | Delete
}
[171] Fix | Delete
[172] Fix | Delete
/**
[173] Fix | Delete
* Support widget
[174] Fix | Delete
*/
[175] Fix | Delete
public static function render_support() {
[176] Fix | Delete
?>
[177] Fix | Delete
<ul>
[178] Fix | Delete
<li><a href="https://wpadvancedads.com/manual/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-manual" target="_blank">
[179] Fix | Delete
<?php esc_html_e( 'Manual', 'advanced-ads' ); ?>
[180] Fix | Delete
</a>
[181] Fix | Delete
</li>
[182] Fix | Delete
<li><a href="https://wpadvancedads.com/support/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-support" target="_blank">
[183] Fix | Delete
<?php esc_html_e( 'FAQ and Support', 'advanced-ads' ); ?>
[184] Fix | Delete
</a>
[185] Fix | Delete
</li>
[186] Fix | Delete
<li>
[187] Fix | Delete
<?php
[188] Fix | Delete
printf(
[189] Fix | Delete
wp_kses(
[190] Fix | Delete
// translators: %s is a URL.
[191] Fix | Delete
__( 'Thank the developer with a &#9733;&#9733;&#9733;&#9733;&#9733; review on <a href="%s" target="_blank">wordpress.org</a>', 'advanced-ads' ),
[192] Fix | Delete
[
[193] Fix | Delete
'a' => [
[194] Fix | Delete
'href' => [],
[195] Fix | Delete
'target' => [],
[196] Fix | Delete
],
[197] Fix | Delete
]
[198] Fix | Delete
),
[199] Fix | Delete
'https://wordpress.org/support/plugin/advanced-ads/reviews/#new-post'
[200] Fix | Delete
);
[201] Fix | Delete
?>
[202] Fix | Delete
</li>
[203] Fix | Delete
</ul>
[204] Fix | Delete
<?php
[205] Fix | Delete
[206] Fix | Delete
$ignored_count = count( Advanced_Ads_Ad_Health_Notices::get_instance()->ignore );
[207] Fix | Delete
$displayed_count = count( Advanced_Ads_Ad_Health_Notices::get_instance()->displayed_notices );
[208] Fix | Delete
if ( ! $displayed_count && $ignored_count ) {
[209] Fix | Delete
?>
[210] Fix | Delete
<p><span class="dashicons dashicons-warning"></span>&nbsp;<a href="<?php echo esc_url( wp_nonce_url( admin_url( 'admin.php?page=advanced-ads&advads-show-hidden-notices=true' ), 'advanced-ads-show-hidden-notices', 'advads_nonce' ) ); ?>">
[211] Fix | Delete
<?php
[212] Fix | Delete
printf(
[213] Fix | Delete
// translators: %s is the number of hidden notices.
[214] Fix | Delete
esc_html__( 'Show %s hidden notices', 'advanced-ads' ),
[215] Fix | Delete
absint( $ignored_count )
[216] Fix | Delete
);
[217] Fix | Delete
?>
[218] Fix | Delete
</a></p>
[219] Fix | Delete
<?php
[220] Fix | Delete
}
[221] Fix | Delete
[222] Fix | Delete
do_action( 'advanced-ads-overview-below-support' );
[223] Fix | Delete
}
[224] Fix | Delete
[225] Fix | Delete
/**
[226] Fix | Delete
* Adsense stats widget
[227] Fix | Delete
*/
[228] Fix | Delete
public static function render_adsense_stats() {
[229] Fix | Delete
$filter_value = get_option( 'advanced-ads-adsense-dashboard-filter', '' );
[230] Fix | Delete
if ( ! $filter_value ) {
[231] Fix | Delete
$filter_value = self::get_site_domain();
[232] Fix | Delete
}
[233] Fix | Delete
if ( '*' === $filter_value ) {
[234] Fix | Delete
$filter_value = '';
[235] Fix | Delete
}
[236] Fix | Delete
$report_type = 'domain';
[237] Fix | Delete
$report_filter = $filter_value;
[238] Fix | Delete
$pub_id = Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id();
[239] Fix | Delete
include ADVADS_ABSPATH . 'admin/views/gadsense-dashboard.php';
[240] Fix | Delete
}
[241] Fix | Delete
[242] Fix | Delete
/**
[243] Fix | Delete
* JavaScript loaded in AdSense stats widget.
[244] Fix | Delete
*
[245] Fix | Delete
* @param string $pub_id AdSense publisher ID.
[246] Fix | Delete
*
[247] Fix | Delete
* @return string
[248] Fix | Delete
* @todo move to JS file.
[249] Fix | Delete
*/
[250] Fix | Delete
final public static function adsense_stats_js( $pub_id ) {
[251] Fix | Delete
if ( self::$processed_adsense_stats_js ) {
[252] Fix | Delete
return;
[253] Fix | Delete
}
[254] Fix | Delete
self::$processed_adsense_stats_js = true;
[255] Fix | Delete
$nonce = self::get_adsense_dashboard_nonce();
[256] Fix | Delete
?>
[257] Fix | Delete
<script>
[258] Fix | Delete
window.gadsenseData = window.gadsenseData || {};
[259] Fix | Delete
window.Advanced_Ads_Adsense_Report_Helper = window.Advanced_Ads_Adsense_Report_Helper || {};
[260] Fix | Delete
window.Advanced_Ads_Adsense_Report_Helper.nonce = '<?php echo esc_html( $nonce ); ?>';
[261] Fix | Delete
gadsenseData['pubId'] = '<?php echo esc_html( $pub_id ); ?>';
[262] Fix | Delete
</script>
[263] Fix | Delete
<?php
[264] Fix | Delete
}
[265] Fix | Delete
[266] Fix | Delete
/**
[267] Fix | Delete
* Return a nonce used in the AdSense stats widget.
[268] Fix | Delete
*
[269] Fix | Delete
* @return false|mixed|string
[270] Fix | Delete
*/
[271] Fix | Delete
final public static function get_adsense_dashboard_nonce() {
[272] Fix | Delete
if ( ! self::$gadsense_dashboard_nonce ) {
[273] Fix | Delete
self::$gadsense_dashboard_nonce = wp_create_nonce( 'advads-gadsense-dashboard' );
[274] Fix | Delete
}
[275] Fix | Delete
return self::$gadsense_dashboard_nonce;
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
/**
[279] Fix | Delete
* Extracts the domain from the site url
[280] Fix | Delete
*
[281] Fix | Delete
* @return string the domain, that was extracted from get_site_url()
[282] Fix | Delete
*/
[283] Fix | Delete
public static function get_site_domain() {
[284] Fix | Delete
$site = get_site_url();
[285] Fix | Delete
preg_match( '|^([\d\w]+://)?([^/]+)|', $site, $matches );
[286] Fix | Delete
$domain = count( $matches ) > 1 ? $matches[2] : null;
[287] Fix | Delete
return $domain;
[288] Fix | Delete
}
[289] Fix | Delete
[290] Fix | Delete
/**
[291] Fix | Delete
* This method is called when the dashboard data is requested via ajax
[292] Fix | Delete
* it prints the relevant data as json, then dies.
[293] Fix | Delete
*/
[294] Fix | Delete
public static function ajax_gadsense_dashboard() {
[295] Fix | Delete
$post_data = wp_unslash( $_POST );
[296] Fix | Delete
if ( wp_verify_nonce( $post_data['nonce'], 'advads-gadsense-dashboard' ) === false ) {
[297] Fix | Delete
wp_send_json_error( 'Unauthorized request', 401 );
[298] Fix | Delete
}
[299] Fix | Delete
$report_type = in_array( $post_data['type'], [ 'domain', 'unit' ], true ) ? $post_data['type'] : false;
[300] Fix | Delete
[301] Fix | Delete
if ( ! $report_type ) {
[302] Fix | Delete
wp_send_json_error( 'Invalid arguments', 400 );
[303] Fix | Delete
}
[304] Fix | Delete
[305] Fix | Delete
$report_filter = wp_strip_all_tags( $post_data['filter'] );
[306] Fix | Delete
$report = new Advanced_Ads_AdSense_Report( $report_type, $report_filter );
[307] Fix | Delete
[308] Fix | Delete
if ( $report->get_data()->is_valid() ) {
[309] Fix | Delete
wp_send_json_success( [ 'html' => $report->get_markup() ] );
[310] Fix | Delete
}
[311] Fix | Delete
[312] Fix | Delete
if ( $report->refresh_report() ) {
[313] Fix | Delete
wp_send_json_success( [ 'html' => $report->get_markup() ] );
[314] Fix | Delete
}
[315] Fix | Delete
[316] Fix | Delete
$error_message = $report->get_last_api_error();
[317] Fix | Delete
// Send markup with error info.
[318] Fix | Delete
wp_send_json_success( [ 'html' => '<div class="error"><p>' . wp_kses_post( $error_message ) . '</p></div>' ] );
[319] Fix | Delete
}
[320] Fix | Delete
[321] Fix | Delete
/**
[322] Fix | Delete
* Render stats box
[323] Fix | Delete
*
[324] Fix | Delete
* @param string $title title of the box.
[325] Fix | Delete
* @param string $main main content.
[326] Fix | Delete
* @param string $footer footer content.
[327] Fix | Delete
*
[328] Fix | Delete
* @deprecated ?
[329] Fix | Delete
*/
[330] Fix | Delete
final public static function render_stats_box( $title, $main, $footer ) {
[331] Fix | Delete
?>
[332] Fix | Delete
<div class="advanced-ads-stats-box flex1">
[333] Fix | Delete
<?php echo $title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
[334] Fix | Delete
<div class="advanced-ads-stats-box-main">
[335] Fix | Delete
<?php
[336] Fix | Delete
// phpcs:ignore
[337] Fix | Delete
echo $main;
[338] Fix | Delete
?>
[339] Fix | Delete
</div>
[340] Fix | Delete
<?php echo $footer; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
[341] Fix | Delete
</div>
[342] Fix | Delete
<?php
[343] Fix | Delete
}
[344] Fix | Delete
[345] Fix | Delete
/**
[346] Fix | Delete
* Pro addons widget
[347] Fix | Delete
*
[348] Fix | Delete
* @param bool $hide_activated if true, hide activated add-ons.
[349] Fix | Delete
*/
[350] Fix | Delete
public static function render_addons( $hide_activated = false ) {
[351] Fix | Delete
if ( ! $hide_activated ) :
[352] Fix | Delete
?>
[353] Fix | Delete
<p><a href="https://wpadvancedads.com/manual/how-to-install-an-add-on/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-install-add-ons" target="_blank"><?php echo esc_attr__( 'How to download, install and activate an add-on.', 'advanced-ads' ); ?></a></p>
[354] Fix | Delete
<?php
[355] Fix | Delete
endif;
[356] Fix | Delete
[357] Fix | Delete
$caching_used = Advanced_Ads_Checks::cache();
[358] Fix | Delete
[359] Fix | Delete
ob_start();
[360] Fix | Delete
?>
[361] Fix | Delete
<p><?php esc_html_e( 'The solution for professional websites.', 'advanced-ads' ); ?></p><ul class='list'>
[362] Fix | Delete
<li>
[363] Fix | Delete
<?php
[364] Fix | Delete
if ( $caching_used ) :
[365] Fix | Delete
[366] Fix | Delete
?>
[367] Fix | Delete
<strong>
[368] Fix | Delete
<?php
[369] Fix | Delete
endif;
[370] Fix | Delete
esc_html_e( 'support for cached sites', 'advanced-ads' );
[371] Fix | Delete
if ( $caching_used ) :
[372] Fix | Delete
[373] Fix | Delete
?>
[374] Fix | Delete
</strong>
[375] Fix | Delete
<?php
[376] Fix | Delete
endif;
[377] Fix | Delete
?>
[378] Fix | Delete
</li>
[379] Fix | Delete
<?php
[380] Fix | Delete
if ( class_exists( 'bbPress', false ) ) :
[381] Fix | Delete
?>
[382] Fix | Delete
<li>
[383] Fix | Delete
<?php
[384] Fix | Delete
printf(
[385] Fix | Delete
// translators: %s is the name of another plugin.
[386] Fix | Delete
wp_kses( __( 'integrates with <strong>%s</strong>', 'advanced-ads' ), [ 'strong' => [] ] ),
[387] Fix | Delete
'bbPress'
[388] Fix | Delete
);
[389] Fix | Delete
?>
[390] Fix | Delete
</li><?php endif; /* bbPress */ ?>
[391] Fix | Delete
<?php
[392] Fix | Delete
if ( class_exists( 'BuddyPress', false ) ) : // BuddyPress or BuddyBoss.
[393] Fix | Delete
?>
[394] Fix | Delete
<li>
[395] Fix | Delete
<?php
[396] Fix | Delete
printf(
[397] Fix | Delete
// translators: %s is the name of another plugin.
[398] Fix | Delete
wp_kses( __( 'integrates with <strong>%s</strong>', 'advanced-ads' ), [ 'strong' => [] ] ),
[399] Fix | Delete
defined( 'BP_PLATFORM_VERSION' ) ? 'BuddyBoss' : 'BuddyPress'
[400] Fix | Delete
);
[401] Fix | Delete
?>
[402] Fix | Delete
</li><?php endif; /* BuddyPress */ ?>
[403] Fix | Delete
<?php
[404] Fix | Delete
if ( defined( 'PMPRO_VERSION' ) ) :
[405] Fix | Delete
?>
[406] Fix | Delete
<li>
[407] Fix | Delete
<?php
[408] Fix | Delete
printf(
[409] Fix | Delete
// translators: %s is the name of another plugin.
[410] Fix | Delete
wp_kses( __( 'integrates with <strong>%s</strong>', 'advanced-ads' ), [ 'strong' => [] ] ),
[411] Fix | Delete
'Paid Memberships Pro'
[412] Fix | Delete
);
[413] Fix | Delete
?>
[414] Fix | Delete
</li><?php endif; /* Paid Memberships Pro */ ?>
[415] Fix | Delete
<?php
[416] Fix | Delete
if ( defined( 'ICL_SITEPRESS_VERSION' ) ) :
[417] Fix | Delete
?>
[418] Fix | Delete
<li>
[419] Fix | Delete
<?php
[420] Fix | Delete
printf(
[421] Fix | Delete
// translators: %s is the name of another plugin.
[422] Fix | Delete
wp_kses( __( 'integrates with <strong>%s</strong>', 'advanced-ads' ), [ 'strong' => [] ] ),
[423] Fix | Delete
'WPML'
[424] Fix | Delete
);
[425] Fix | Delete
?>
[426] Fix | Delete
</li><?php endif; /* WPML */ ?>
[427] Fix | Delete
<li><?php esc_html_e( 'click fraud protection, lazy load, ad-block ads', 'advanced-ads' ); ?></li>
[428] Fix | Delete
<li><?php esc_html_e( '11 more display and visitor conditions', 'advanced-ads' ); ?></li>
[429] Fix | Delete
<li><?php esc_html_e( '6 more placements', 'advanced-ads' ); ?></li>
[430] Fix | Delete
<li><?php esc_html_e( 'placement tests for ad optimization', 'advanced-ads' ); ?></li>
[431] Fix | Delete
<li><?php esc_html_e( 'Geo Targeting', 'advanced-ads' ); ?></li>
[432] Fix | Delete
<li><?php esc_html_e( 'ad grids and many more advanced features', 'advanced-ads' ); ?></li>
[433] Fix | Delete
</ul>
[434] Fix | Delete
<?php
[435] Fix | Delete
$pro_content = ob_get_clean();
[436] Fix | Delete
[437] Fix | Delete
$add_ons = [
[438] Fix | Delete
'pro' => [
[439] Fix | Delete
'title' => 'Advanced Ads Pro',
[440] Fix | Delete
'desc' => $pro_content,
[441] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/advanced-ads-pro/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[442] Fix | Delete
'order' => 4,
[443] Fix | Delete
'class' => 'recommended',
[444] Fix | Delete
],
[445] Fix | Delete
'tracking' => [
[446] Fix | Delete
'title' => 'Tracking',
[447] Fix | Delete
'desc' => __( 'Analyze clicks and impressions of your ads locally or in Google Analytics, share reports, and limit ads to a specific number of impressions or clicks.', 'advanced-ads' ),
[448] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/tracking/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[449] Fix | Delete
'order' => 4,
[450] Fix | Delete
],
[451] Fix | Delete
'responsive' => [
[452] Fix | Delete
'title' => 'AMP Ads',
[453] Fix | Delete
'desc' => __( 'Effortlessly integrate your ads on AMP (Accelerated Mobile Pages) and auto-convert your Google AdSense ad units.', 'advanced-ads' ),
[454] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/responsive-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[455] Fix | Delete
'order' => 4,
[456] Fix | Delete
],
[457] Fix | Delete
'gam' => [
[458] Fix | Delete
'title' => 'Google Ad Manager Integration',
[459] Fix | Delete
'desc' => __( 'A quick and error-free way of implementing ad units from your Google Ad Manager account.', 'advanced-ads' ),
[460] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/google-ad-manager/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[461] Fix | Delete
'order' => 5,
[462] Fix | Delete
],
[463] Fix | Delete
'sticky' => [
[464] Fix | Delete
'title' => 'Sticky ads',
[465] Fix | Delete
'desc' => __( 'Increase click rates on your ads by placing them in sticky positions above, next or below your site.', 'advanced-ads' ),
[466] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/sticky-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[467] Fix | Delete
'order' => 5,
[468] Fix | Delete
],
[469] Fix | Delete
'layer' => [
[470] Fix | Delete
'title' => 'PopUps and Layers',
[471] Fix | Delete
'desc' => __( 'Users will never miss an ad or other information in a PopUp. Choose when it shows up and for how long a user can close it.', 'advanced-ads' ),
[472] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/popup-and-layer-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[473] Fix | Delete
'order' => 5,
[474] Fix | Delete
],
[475] Fix | Delete
'selling' => [
[476] Fix | Delete
'title' => 'Selling Ads',
[477] Fix | Delete
'desc' => __( 'Earn more money and let advertisers pay for ad space directly on the frontend of your site.', 'advanced-ads' ),
[478] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/selling-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[479] Fix | Delete
'order' => 6,
[480] Fix | Delete
],
[481] Fix | Delete
'slider' => [
[482] Fix | Delete
'title' => 'Ad Slider',
[483] Fix | Delete
'desc' => __( 'Create a beautiful and simple slider from your ads to show more information on less space.', 'advanced-ads' ),
[484] Fix | Delete
'link' => 'https://wpadvancedads.com/add-ons/slider/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
[485] Fix | Delete
'order' => 6,
[486] Fix | Delete
],
[487] Fix | Delete
'adsense-in-feed' => [
[488] Fix | Delete
'title' => 'AdSense In-feed',
[489] Fix | Delete
'desc' => __( 'Place AdSense In-feed ads between posts on homepage, category, and archive pages.', 'advanced-ads' ),
[490] Fix | Delete
'class' => 'free',
[491] Fix | Delete
'link' => wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=advanced-ads-adsense-in-feed' ), 'install-plugin_advanced-ads-adsense-in-feed' ),
[492] Fix | Delete
'link_title' => __( 'Install now', 'advanced-ads' ),
[493] Fix | Delete
'order' => 9,
[494] Fix | Delete
],
[495] Fix | Delete
];
[496] Fix | Delete
[497] Fix | Delete
// get all installed plugins; installed is not activated.
[498] Fix | Delete
$installed_plugins = get_plugins();
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function