';
echo '
Site Healthcheck
';
if (!$session) {
wph_render_start_panel();
echo '';
return;
}
if ($session->is_finished()) {
wph_render_finished_panel($session);
echo '';
return;
}
wph_render_active_session($session);
echo '';
}
function wph_render_start_panel(): void {
?>
Start a healthcheck
This will create a new in-progress session for . One session per site at a time.
progress();
$tech = get_userdata($session->technician_id());
?>
Session: id()); ?> ·
Started: started_at())); ?> ·
Technician: display_name : '#' . $session->technician_id()); ?> ·
/ steps
WP wp_version()); ?> · PHP php_version()); ?> · Site site_url()); ?>
all() as $step) {
wph_render_step_card($session, $step);
}
}
function wph_render_step_card(WPH_Session $session, WPH_Step $step): void {
$state = $session->step_state($step->id());
$status = $state['status'];
$notes = $state['notes'];
?>
Healthcheck finished
Started started_at())); ?> · Finished finished_at())); ?>
is_finished()) wp_die('No active session.');
if (!WPH_Steps::instance()->get($step_id)) wp_die('Unknown step.');
$status = isset($_POST['status']) ? sanitize_key((string) $_POST['status']) : WPH_Session::STATUS_NOT_STARTED;
$notes = isset($_POST['notes']) ? wp_unslash((string) $_POST['notes']) : '';
$session->update_step($step_id, $status, $notes);
wp_safe_redirect(admin_url('tools.php?page=site-healthcheck#step-' . rawurlencode($step_id)));
exit;
}
function wph_handle_finish(): void {
if (!current_user_can('manage_options')) wp_die('Forbidden');
check_admin_referer('wph_finish');
$session = WPH_Session::current();
if (!$session) wp_die('No active session.');
$session->finish();
wp_safe_redirect(admin_url('tools.php?page=site-healthcheck'));
exit;
}
function wph_handle_discard(): void {
if (!current_user_can('manage_options')) wp_die('Forbidden');
check_admin_referer('wph_discard');
WPH_Session::discard();
wp_safe_redirect(admin_url('tools.php?page=site-healthcheck'));
exit;
}
function wph_render_autocheck(WPH_Session $session, WPH_Step $step): void {
if (!$step->has_autocheck()) return;
$result = $session->get_autocheck($step->id());
?>
Automated checks
No automated checks have been run for this step yet.
'✓', 'warn' => '⚠', 'bad' => '✗', 'info' => '·'][$finding['level']] ?? '·';
?>
|
|
|
|
Checked ago ()
is_finished()) wp_die('No active session.');
$step = WPH_Steps::instance()->get($step_id);
if (!$step) wp_die('Unknown step.');
@set_time_limit(60);
$findings = $step->autocheck($session->data());
$session->set_autocheck($step_id, $findings);
wp_safe_redirect(admin_url('tools.php?page=site-healthcheck#step-' . rawurlencode($step_id)));
exit;
}
function wph_handle_download_report(): void {
if (!current_user_can('manage_options')) wp_die('Forbidden');
check_admin_referer('wph_download_report');
$session = WPH_Session::current();
if (!$session) wp_die('No session.');
$report = wph_build_markdown_report($session);
$host = parse_url(get_site_url(), PHP_URL_HOST) ?: 'site';
$host = preg_replace('/[^a-z0-9.-]/i', '', (string) $host);
$stamp = date('Ymd', $session->started_at() ?: time());
$filename = 'wph-report-' . $host . '-' . $stamp . '.md';
nocache_headers();
header('Content-Type: text/markdown; charset=UTF-8');
header('Content-Disposition: attachment; filename="' . $filename . '"');
echo $report;
exit;
}