* @since 1.48.2
*/
namespace AdvancedAds\Admin;
use AdvancedAds\Options;
use Advanced_Ads_AdSense_Data;
use AdvancedAds\Utilities\WordPress;
use AdvancedAds\Utilities\Conditional;
use Advanced_Ads_Overview_Widgets_Callbacks;
use AdvancedAds\Framework\Interfaces\Integration_Interface;
defined( 'ABSPATH' ) || exit;
/**
* WordPress Dashboard.
*/
class WordPress_Dashboard implements Integration_Interface {
/**
* Hook into WordPress.
*
* @return void
*/
public function hooks(): void {
add_action( 'wp_dashboard_setup', [ $this, 'add_adsense_widget' ] );
add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widget' ] );
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue' ], 10, 0 );
add_action( 'advanced-ads-dashbaord-widget', [ $this, 'display_performing_ads' ] );
add_action( 'advanced-ads-dashbaord-widget', [ $this, 'display_rss_widget' ] );
}
/**
* Enqueue styles and scripts for current screen
*
* @return void
*/
public function enqueue(): void {
// Early bail!!
$wp_screen = get_current_screen();
if ( 'dashboard' !== $wp_screen->id ) {
return;
}
wp_advads()->registry->enqueue_style( 'wp-dashboard' );
wp_advads()->registry->enqueue_script( 'wp-dashboard' );
}
/**
* Add dashboard widget with ad stats and additional information
*
* @return void
*/
public function add_dashboard_widget(): void {
if ( ! Conditional::user_can( 'advanced_ads_see_interface' ) ) {
return;
}
$icon = WordPress::get_svg( 'logo.svg' );
$icon = '' . $icon . '';
wp_add_dashboard_widget(
'advads-dashboard-widget',
$icon . '' . __( 'Advanced Ads', 'advanced-ads' ) . '',
[ $this, 'display_dashboard_widget' ],
null,
null,
'side',
'high'
);
}
/**
* Adds an AdSense widget to the WordPress dashboard.
*
* @return void
*/
public function add_adsense_widget(): void {
if (
Advanced_Ads_AdSense_Data::get_instance()->is_setup() &&
! Advanced_Ads_AdSense_Data::get_instance()->is_hide_stats() &&
Options::instance()->get( 'adsense.adsense-wp-widget' )
) {
wp_add_dashboard_widget(
'advads-adsense-widget',
__( 'AdSense Earnings', 'advanced-ads' ),
[ $this, 'display_adsense_widget' ],
null,
null,
'side'
);
}
}
/**
* Display widget functions
*
* @return void
*/
public function display_dashboard_widget(): void {
if ( Conditional::user_can( 'advanced_ads_edit_ads' ) ) {
include ADVADS_ABSPATH . 'views/admin/widgets/wordpress-dashboard/header.php';
}
if ( Conditional::user_can_subscribe( 'nl_first_steps' ) || Conditional::user_can_subscribe( 'nl_adsense' ) ) {
include ADVADS_ABSPATH . 'views/admin/widgets/wordpress-dashboard/newsletter.php';
}
/**
* Let developer add KPIs and info into dashabord
*
* @param WordPress_Dashboard $this Dashabord widget instance.
*/
do_action( 'advanced-ads-dashbaord-widget', $this );
include ADVADS_ABSPATH . 'views/admin/widgets/wordpress-dashboard/footer.php';
}
/**
* Display the AdSense widget on the WordPress dashboard.
*
* @return void
*/
public function display_adsense_widget(): void {
Advanced_Ads_Overview_Widgets_Callbacks::render_adsense_stats();
}
/**
* Display performing ads widget
*
* @return void
*/
public function display_performing_ads(): void {
include_once ADVADS_ABSPATH . 'views/admin/widgets/wordpress-dashboard/performing-ads.php';
}
/**
* Display rss widget
*
* @return void
*/
public function display_rss_widget(): void {
include_once ADVADS_ABSPATH . 'views/admin/widgets/wordpress-dashboard/rss.php';
}
}