Initial commit: PRAutoBlogger v0.1.0 with frontend posts widget

This commit is contained in:
Terence Ong
2026-04-10 23:33:42 +07:00
parent 68c6f67bcf
commit 88d674d679
65 changed files with 2178 additions and 1084 deletions

View File

@@ -6,29 +6,29 @@ declare(strict_types=1);
*
* Provides level filtering (error/warning/info/debug), text search,
* pagination, and a one-click "Clear Old Logs" action. Reads from the
* ab_event_log table via Autoblogger_Logger::query().
* prab_event_log table via PRAutoBlogger_Logger::query().
*
* Triggered by: Autoblogger::register_admin_hooks() on `admin_menu`.
* Dependencies: Autoblogger_Logger.
* Triggered by: PRAutoBlogger::register_admin_hooks() on `admin_menu`.
* Dependencies: PRAutoBlogger_Logger.
*
* @see core/class-logger.php — Writes log entries and provides query().
* @see templates/admin/log-viewer.php — Renders the HTML.
* @see class-autoblogger.php — Registers the AJAX clear action.
* @see class-prautoblogger.php — Registers the AJAX clear action.
*/
class Autoblogger_Log_Viewer {
class PRAutoBlogger_Log_Viewer {
/**
* Register the log viewer submenu page under AutoBlogger.
* Register the log viewer submenu page under PRAutoBlogger.
*
* @return void
*/
public function on_register_menu(): void {
add_submenu_page(
'autoblogger-settings',
__( 'Activity Log', 'autoblogger' ),
__( 'Activity Log', 'autoblogger' ),
'prautoblogger-settings',
__( 'Activity Log', 'prautoblogger' ),
__( 'Activity Log', 'prautoblogger' ),
'manage_options',
'autoblogger-logs',
'prautoblogger-logs',
[ $this, 'render_page' ]
);
}
@@ -47,36 +47,36 @@ class Autoblogger_Log_Viewer {
$search = isset( $_GET['s'] ) ? sanitize_text_field( wp_unslash( $_GET['s'] ) ) : '';
$paged = isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
$result = Autoblogger_Logger::query( $level, $search, $paged, 50 );
$result = PRAutoBlogger_Logger::query( $level, $search, $paged, 50 );
$rows = $result['rows'];
$total = $result['total'];
$total_pages = (int) ceil( $total / 50 );
include AUTOBLOGGER_PLUGIN_DIR . 'templates/admin/log-viewer.php';
include PRAUTOBLOGGER_PLUGIN_DIR . 'templates/admin/log-viewer.php';
}
/**
* AJAX handler: clear logs older than 30 days.
*
* Side effects: deletes rows from ab_event_log.
* Side effects: deletes rows from prab_event_log.
*
* @return void
*/
public function on_ajax_clear_logs(): void {
check_ajax_referer( 'autoblogger_clear_logs', 'nonce' );
check_ajax_referer( 'prautoblogger_clear_logs', 'nonce' );
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error( [ 'message' => __( 'Insufficient permissions.', 'autoblogger' ) ], 403 );
wp_send_json_error( [ 'message' => __( 'Insufficient permissions.', 'prautoblogger' ) ], 403 );
return;
}
$days = isset( $_POST['days'] ) ? absint( $_POST['days'] ) : 30;
$deleted = Autoblogger_Logger::prune( $days );
$deleted = PRAutoBlogger_Logger::prune( $days );
wp_send_json_success( [
'message' => sprintf(
/* translators: %d: number of entries deleted */
__( '%d log entries cleared.', 'autoblogger' ),
__( '%d log entries cleared.', 'prautoblogger' ),
$deleted
),
] );