Adds a PHP/SQLite history server in server/ and refactors the plugin to write every session change through it. Healthcheck history now survives plugin uninstall and groups across dev + live URLs for the same engagement via an editable site_key (defaults to the normalised host). Server (server/): - Front controller + hand-rolled autoloader, no framework, no composer - SQLite default DSN; swap to MySQL by changing config.php - Schema: healthchecks (PK id, UNIQUE (site_key, started_at)) + step_updates (PK (healthcheck_id, step_id)) + request_log; auto-migration runner - 8 endpoints: POST/GET/PUT healthchecks, PUT/GET step rows, GET step history with exclude_id, GET /sites (recent), GET /step-counts (badge data) - Bearer auth via hash_equals; HTTPS expected (plugin enforces client-side) - DEPLOY.md with Apache/nginx vhosts, Let's Encrypt, SQLite backup cron, and the /home/www/ perm gotcha - dev-router.php works around PHP -S 405-ing dotted uniqid paths Plugin: - ATT_HC_Api HTTP client reads ATT_HC_API_URL/ATT_HC_API_KEY constants from wp-config.php; refuses non-HTTPS with a loopback dev exception - ATT_HC_Session is now write-through: every start/update_step/finish/ set_autocheck POSTs or PUTs to the server first, then updates the local WP option cache. No drift possible — failures throw ATT_HC_Api_Exception - previous() now reads from /healthchecks?include=steps and reconstructs; the old att_hc_previous_session local option is gone - ATT_HC_Session::resume(id) hydrates a server session into the local cache - Start screen: editable site_key (defaults to normalise_site_url()), datalist of recent engagements, table of in-progress sessions for the chosen key with Resume buttons. Double-click guard on start + resume handlers short-circuits if a session is already active - Per-step <details> disclosure shows "Previous notes (N)" badge from /step-counts; lazy-loads detail rows on first expand via admin-ajax, caches via data-loaded, resets on error so user can retry - All admin handlers catch ATT_HC_Api_Exception and surface via att_hc_api_error transient → admin notice - Hard config-error gate at the top of the admin page blocks the UI when ATT_HC_API_URL/ATT_HC_API_KEY are missing or malformed Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
36 lines
1.4 KiB
PHP
36 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Name: ATT Site Healthcheck
|
|
* Description: Walks a technician through a structured WordPress site healthcheck. Steps are drop-in PHP files so adding/removing one is a single file change.
|
|
* Version: 0.1.0
|
|
* Author: Steve Hanlon
|
|
* License: GPL-2.0-or-later
|
|
* Requires PHP: 7.4
|
|
*
|
|
* Internal/agency tool — not distributed via WP.org. See beads decision hc-5ix.26.
|
|
*/
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
define('ATT_HC_VERSION', '0.1.0');
|
|
define('ATT_HC_PLUGIN_FILE', __FILE__);
|
|
define('ATT_HC_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
|
define('ATT_HC_PLUGIN_URL', plugin_dir_url(__FILE__));
|
|
define('ATT_HC_OPT_SESSION', 'att_hc_session');
|
|
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/class-att-hc-step.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/class-att-hc-steps.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/class-att-hc-api-exception.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/class-att-hc-api.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/class-att-hc-session.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/recovery-bootstrap.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/recovery-installer.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/admin-page.php';
|
|
require_once ATT_HC_PLUGIN_DIR . 'includes/report.php';
|
|
|
|
add_action('plugins_loaded', function () {
|
|
ATT_HC_Steps::instance()->discover(ATT_HC_PLUGIN_DIR . 'includes/steps/');
|
|
});
|