Files
prautoblogger/includes/admin/class-dashboard-widget.php

68 lines
1.7 KiB
PHP
Executable File

<?php
declare(strict_types=1);
/**
* WordPress Dashboard widget showing PRAutoBlogger generation status at a glance.
*
* Displays: last generation time, articles generated today, monthly cost,
* and budget utilization.
*
* Triggered by: Could be registered via wp_dashboard_setup hook.
* Dependencies: PRAutoBlogger_Cost_Tracker.
*
* @see class-prautoblogger.php — Can register this on wp_dashboard_setup.
*/
class PRAutoBlogger_Dashboard_Widget {
/**
* Register the dashboard widget.
*
* @return void
*/
public function on_register_widget(): void {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
wp_add_dashboard_widget(
'prautoblogger_status',
__( 'PRAutoBlogger Status', 'prautoblogger' ),
[ $this, 'render_widget' ]
);
}
/**
* Render the widget content.
*
* @return void
*/
public function render_widget(): void {
$cost_tracker = new PRAutoBlogger_Cost_Tracker();
$monthly_spend = $cost_tracker->get_monthly_spend();
$budget = (float) get_option( 'prautoblogger_monthly_budget_usd', 50.00 );
$utilization = $cost_tracker->get_budget_utilization();
$next_run = wp_next_scheduled( 'prautoblogger_daily_generation' );
printf( '<p><strong>%s</strong> $%.2f / $%.2f (%.0f%%)</p>',
esc_html__( 'Monthly Spend:', 'prautoblogger' ),
$monthly_spend,
$budget,
$utilization
);
if ( false !== $next_run ) {
printf( '<p><strong>%s</strong> %s</p>',
esc_html__( 'Next Generation:', 'prautoblogger' ),
esc_html( wp_date( 'M j, Y g:i A', $next_run ) )
);
}
printf(
'<p><a href="%s" class="button button-secondary">%s</a></p>',
esc_url( admin_url( 'admin.php?page=prautoblogger-metrics' ) ),
esc_html__( 'View Full Metrics', 'prautoblogger' )
);
}
}