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

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/advanced.../admin/includes
File: class-meta-box.php
public function save_post_meta_box( $post_id ) {
[500] Fix | Delete
[501] Fix | Delete
if ( ! WordPress::user_can( 'advanced_ads_edit_ads' ) ) {
[502] Fix | Delete
return;
[503] Fix | Delete
}
[504] Fix | Delete
[505] Fix | Delete
// check nonce.
[506] Fix | Delete
if ( ! isset( $_POST['advads_post_meta_box_nonce'] ) ) {
[507] Fix | Delete
return $post_id; }
[508] Fix | Delete
[509] Fix | Delete
$nonce = $_POST['advads_post_meta_box_nonce'];
[510] Fix | Delete
[511] Fix | Delete
// Verify that the nonce is valid.
[512] Fix | Delete
if ( ! wp_verify_nonce( $nonce, 'advads_post_meta_box' ) ) {
[513] Fix | Delete
return $post_id; }
[514] Fix | Delete
[515] Fix | Delete
// don’t save on autosave.
[516] Fix | Delete
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
[517] Fix | Delete
return $post_id; }
[518] Fix | Delete
[519] Fix | Delete
// check the user's permissions.
[520] Fix | Delete
if ( 'page' === $_POST['post_type'] ) {
[521] Fix | Delete
if ( ! current_user_can( 'edit_page', $post_id ) ) {
[522] Fix | Delete
return $post_id; }
[523] Fix | Delete
} else {
[524] Fix | Delete
if ( ! current_user_can( 'edit_post', $post_id ) ) {
[525] Fix | Delete
return $post_id; }
[526] Fix | Delete
}
[527] Fix | Delete
[528] Fix | Delete
// sanitize the user input.
[529] Fix | Delete
$_data['disable_ads'] = isset( $_POST['advanced_ads']['disable_ads'] ) ? absint( $_POST['advanced_ads']['disable_ads'] ) : 0;
[530] Fix | Delete
[531] Fix | Delete
$_data = apply_filters( 'advanced_ads_save_post_meta_box', $_data );
[532] Fix | Delete
[533] Fix | Delete
// update the meta field.
[534] Fix | Delete
update_post_meta( $post_id, '_advads_ad_settings', $_data );
[535] Fix | Delete
}
[536] Fix | Delete
[537] Fix | Delete
/**
[538] Fix | Delete
* Add "close" class to collapse the ad-type metabox after ad was saved first
[539] Fix | Delete
*
[540] Fix | Delete
* @param array $classes class attributes.
[541] Fix | Delete
* @return array $classes
[542] Fix | Delete
*/
[543] Fix | Delete
public function close_ad_type_metabox( $classes = [] ) {
[544] Fix | Delete
global $post;
[545] Fix | Delete
if ( isset( $post->ID ) && 'publish' === $post->post_status ) {
[546] Fix | Delete
if ( ! in_array( 'closed', $classes, true ) ) {
[547] Fix | Delete
$classes[] = 'closed';
[548] Fix | Delete
}
[549] Fix | Delete
} else {
[550] Fix | Delete
$classes = [];
[551] Fix | Delete
}
[552] Fix | Delete
return $classes;
[553] Fix | Delete
}
[554] Fix | Delete
[555] Fix | Delete
/**
[556] Fix | Delete
* Add dashboard widget with ad stats and additional information
[557] Fix | Delete
*/
[558] Fix | Delete
public function add_dashboard_widget() {
[559] Fix | Delete
// display dashboard widget only to authors and higher roles.
[560] Fix | Delete
if ( ! WordPress::user_can( 'advanced_ads_see_interface' ) ) {
[561] Fix | Delete
return;
[562] Fix | Delete
}
[563] Fix | Delete
add_meta_box( 'advads_dashboard_widget', __( 'Advanced Ads', 'advanced-ads' ), [ $this, 'dashboard_widget_function' ], 'dashboard', 'side', 'high' );
[564] Fix | Delete
}
[565] Fix | Delete
[566] Fix | Delete
/**
[567] Fix | Delete
* Display widget functions
[568] Fix | Delete
*
[569] Fix | Delete
* @param WP_Post $post post object.
[570] Fix | Delete
* @param array $callback_args callback arguments.
[571] Fix | Delete
*/
[572] Fix | Delete
public static function dashboard_widget_function( $post, $callback_args ) {
[573] Fix | Delete
// get number of ads.
[574] Fix | Delete
$ads_count = Advanced_Ads::get_number_of_ads();
[575] Fix | Delete
if ( WordPress::user_can( 'advanced_ads_edit_ads' ) ) {
[576] Fix | Delete
echo '<p>';
[577] Fix | Delete
printf(
[578] Fix | Delete
// translators: %1$d is the number of ads, %2$s and %3$s are URLs.
[579] Fix | Delete
wp_kses( __( '%1$d ads – <a href="%2$s">manage</a> - <a href="%3$s">new</a>', 'advanced-ads' ), [ 'a' => [ 'href' => [] ] ] ),
[580] Fix | Delete
absint( $ads_count ),
[581] Fix | Delete
'edit.php?post_type=' . esc_attr( Entities::POST_TYPE_AD ),
[582] Fix | Delete
'post-new.php?post_type=' . esc_attr( Entities::POST_TYPE_AD )
[583] Fix | Delete
);
[584] Fix | Delete
echo '</p>';
[585] Fix | Delete
}
[586] Fix | Delete
[587] Fix | Delete
$notice_options = Advanced_Ads_Admin_Notices::get_instance()->options();
[588] Fix | Delete
$_notice = 'nl_first_steps';
[589] Fix | Delete
if ( ! isset( $notice_options['closed'][ $_notice ] ) ) {
[590] Fix | Delete
?>
[591] Fix | Delete
<div class="advads-admin-notice">
[592] Fix | Delete
<p><button type="button" class="button-primary advads-notices-button-subscribe" data-notice="<?php echo esc_attr( $_notice ); ?>"><?php esc_html_e( 'Get the tutorial via email', 'advanced-ads' ); ?></button></p>
[593] Fix | Delete
</div>
[594] Fix | Delete
<?php
[595] Fix | Delete
}
[596] Fix | Delete
[597] Fix | Delete
$_notice = 'nl_adsense';
[598] Fix | Delete
if ( ! isset( $notice_options['closed'][ $_notice ] ) ) {
[599] Fix | Delete
?>
[600] Fix | Delete
<div class="advads-admin-notice">
[601] Fix | Delete
<p><button type="button" class="button-primary advads-notices-button-subscribe" data-notice="<?php echo esc_attr( $_notice ); ?>"><?php esc_html_e( 'Get AdSense tips via email', 'advanced-ads' ); ?></button></p>
[602] Fix | Delete
</div>
[603] Fix | Delete
<?php
[604] Fix | Delete
}
[605] Fix | Delete
[606] Fix | Delete
// RSS feed.
[607] Fix | Delete
self::dashboard_cached_rss_widget();
[608] Fix | Delete
[609] Fix | Delete
?>
[610] Fix | Delete
<p><a href="https://wpadvancedads.com/category/tutorials/?utm_source=advanced-ads&utm_medium=link&utm_campaign=dashboard" target="_blank"><?php esc_html_e( 'Visit our blog for more articles about ad optimization', 'advanced-ads' ); ?></a></p>
[611] Fix | Delete
<?php
[612] Fix | Delete
[613] Fix | Delete
// add markup for utm variables.
[614] Fix | Delete
// todo: move to js file.
[615] Fix | Delete
?>
[616] Fix | Delete
<script>jQuery('#advads_dashboard_widget .rss-widget a').each(function(){ this.href = this.href + '?utm_source=advanced-ads&utm_medium=rss-link&utm_campaign=dashboard'; })</script>
[617] Fix | Delete
<?php
[618] Fix | Delete
}
[619] Fix | Delete
[620] Fix | Delete
/**
[621] Fix | Delete
* Checks to see if there are feed urls in transient cache; if not, load them
[622] Fix | Delete
* built using a lot of https://developer.wordpress.org/reference/functions/wp_dashboard_cached_rss_widget/
[623] Fix | Delete
*
[624] Fix | Delete
* @return bool False on failure. True on success.
[625] Fix | Delete
*/
[626] Fix | Delete
public static function dashboard_cached_rss_widget() {
[627] Fix | Delete
[628] Fix | Delete
$cache_key = 'dash_' . md5( 'advads_dashboard_widget' );
[629] Fix | Delete
[630] Fix | Delete
$output = get_transient( $cache_key );
[631] Fix | Delete
if ( false !== ( $output ) ) {
[632] Fix | Delete
// phpcs:ignore
[633] Fix | Delete
echo $output; // complex HTML widget.
[634] Fix | Delete
return true;
[635] Fix | Delete
}
[636] Fix | Delete
[637] Fix | Delete
/**
[638] Fix | Delete
* Only display dummy output which then loads the content via AJAX
[639] Fix | Delete
*/
[640] Fix | Delete
?>
[641] Fix | Delete
<div id="advads-dashboard-widget-placeholder">
[642] Fix | Delete
<img src="<?php echo esc_url( admin_url( 'images/spinner.gif' ) ); ?>" width="20" height="20" alt="spinner"/>
[643] Fix | Delete
<script>window.addEventListener( 'load', function() { advads_load_dashboard_rss_widget_content() } );</script>
[644] Fix | Delete
</div>
[645] Fix | Delete
<?php
[646] Fix | Delete
[647] Fix | Delete
return true;
[648] Fix | Delete
}
[649] Fix | Delete
[650] Fix | Delete
/**
[651] Fix | Delete
* Create the rss output of the widget
[652] Fix | Delete
*/
[653] Fix | Delete
public static function dashboard_widget_function_output() {
[654] Fix | Delete
[655] Fix | Delete
check_ajax_referer( 'advanced-ads-admin-ajax-nonce', 'nonce' );
[656] Fix | Delete
[657] Fix | Delete
$cache_key = 'dash_' . md5( 'advads_dashboard_widget' );
[658] Fix | Delete
[659] Fix | Delete
$feeds = [
[660] Fix | Delete
[
[661] Fix | Delete
'link' => 'https://wpadvancedads.com/',
[662] Fix | Delete
'url' => 'https://wpadvancedads.com/category/tutorials/feed/',
[663] Fix | Delete
'title' => sprintf(
[664] Fix | Delete
// translators: %s is our URL.
[665] Fix | Delete
__( 'Latest posts on wpadvancedads.com', 'advanced-ads' ),
[666] Fix | Delete
'https://wpadvancedads.com/'
[667] Fix | Delete
),
[668] Fix | Delete
'items' => 2,
[669] Fix | Delete
'show_summary' => 1,
[670] Fix | Delete
'show_author' => 0,
[671] Fix | Delete
'show_date' => 0,
[672] Fix | Delete
],
[673] Fix | Delete
];
[674] Fix | Delete
[675] Fix | Delete
// create output and also cache it.
[676] Fix | Delete
[677] Fix | Delete
ob_start();
[678] Fix | Delete
foreach ( $feeds as $_feed ) {
[679] Fix | Delete
echo '<div class="rss-widget">';
[680] Fix | Delete
echo '<h4>' . esc_html( $_feed['title'] ) . '</h4>';
[681] Fix | Delete
wp_widget_rss_output( $_feed['url'], $_feed );
[682] Fix | Delete
echo '</div>';
[683] Fix | Delete
}
[684] Fix | Delete
[685] Fix | Delete
$feed_content = ob_get_clean();
[686] Fix | Delete
$error_string = '<strong>' . __( 'RSS Error:' ) . '</strong> ';
[687] Fix | Delete
[688] Fix | Delete
// empty the widget content, if we find the error string in it.
[689] Fix | Delete
if ( strpos( $feed_content, $error_string ) ) {
[690] Fix | Delete
$feed_content = '';
[691] Fix | Delete
}
[692] Fix | Delete
[693] Fix | Delete
// phpcs:ignore
[694] Fix | Delete
echo $feed_content;
[695] Fix | Delete
[696] Fix | Delete
set_transient( $cache_key, $feed_content, 48 * HOUR_IN_SECONDS ); // Default lifetime in cache of 48 hours.
[697] Fix | Delete
die();
[698] Fix | Delete
}
[699] Fix | Delete
[700] Fix | Delete
/**
[701] Fix | Delete
* Fixes a WP QUADS PRO compatibility issue
[702] Fix | Delete
* they inject their ad optimization meta box into our ad page, even though it is not a public post type
[703] Fix | Delete
* using they filter, we remove AA from the list of post types they inject this box into
[704] Fix | Delete
*
[705] Fix | Delete
* @param array $allowed_post_types array of allowed post types.
[706] Fix | Delete
* @return array
[707] Fix | Delete
*/
[708] Fix | Delete
public function fix_wpquadspro_issue( $allowed_post_types ) {
[709] Fix | Delete
unset( $allowed_post_types['advanced_ads'] );
[710] Fix | Delete
return $allowed_post_types;
[711] Fix | Delete
}
[712] Fix | Delete
[713] Fix | Delete
/**
[714] Fix | Delete
* Render meta box for ad settings notice when ads disabled for post type
[715] Fix | Delete
*
[716] Fix | Delete
* @param WP_Post $post The post object.
[717] Fix | Delete
*/
[718] Fix | Delete
public function render_disable_post_type_notice( $post ) {
[719] Fix | Delete
$labels = get_post_type_object( $post->post_type )->labels;
[720] Fix | Delete
// load the view.
[721] Fix | Delete
include ADVADS_ABSPATH . 'admin/views/post-ad-settings-hint-metabox.php';
[722] Fix | Delete
}
[723] Fix | Delete
[724] Fix | Delete
}
[725] Fix | Delete
[726] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function