handle_test_request();
$recent_logs = $this->get_recent_logs();
echo '
';
echo '
Adaire Deactivation Logs
';
$this->render_test_result_notice($test_result);
$this->render_test_form();
$this->render_log_table($recent_logs);
echo '';
}
// Step 2a: handle the SendGrid test submission.
private function handle_test_request()
{
if (!isset($_POST['adaire_send_test'])) {
return null;
}
check_admin_referer('adaire_send_test');
$test_recipient_email = defined('ADAIRE_FEEDBACK_EMAIL') ? ADAIRE_FEEDBACK_EMAIL : get_option('admin_email');
$subject = 'Adaire SendGrid Test ' . current_time('mysql');
$message = "Adaire SendGrid test message.\n\nTime: " . current_time('mysql') . "\nSite: " . get_bloginfo('url') . "\n";
$sendgrid_result = [
'sent' => false,
'provider' => 'sendgrid',
'status' => null,
'error' => 'SendGrid not configured',
'from_email' => null,
];
if (function_exists('adaire_blocks_get_sendgrid_api_key') && adaire_blocks_get_sendgrid_api_key()) {
$sendgrid_result = adaire_blocks_send_via_sendgrid($test_recipient_email, $subject, $message, null);
}
$this->append_test_log($sendgrid_result, $test_recipient_email);
return $sendgrid_result;
}
// Step 2b: store the test result in the log.
private function append_test_log(array $result, $to_email)
{
$existing = get_option('adaire_deact_log', []);
if (!is_array($existing)) {
$existing = [];
}
$existing[] = [
'date' => current_time('mysql'),
'reason' => 'test',
'email' => '',
'details' => '',
'site' => get_bloginfo('url'),
'mail_sent' => (bool) ($result['sent'] ?? false),
'from_email' => $result['from_email'] ?? null,
'mail_provider' => $result['provider'] ?? null,
'mail_status' => $result['status'] ?? null,
'mail_error' => $result['error'] ?? null,
'to_email' => $to_email,
];
update_option('adaire_deact_log', $existing);
}
// Step 2c: fetch the most recent log entries.
private function get_recent_logs()
{
$logs = get_option('adaire_deact_log', []);
if (!is_array($logs)) {
return [];
}
$logs = array_reverse($logs);
return array_slice($logs, 0, 30);
}
// Step 2d: show the test result summary.
private function render_test_result_notice($test_result)
{
if (!is_array($test_result)) {
return;
}
$sent = !empty($test_result['sent']) ? 'yes' : 'no';
$provider = esc_html($test_result['provider'] ?? '');
$status = esc_html((string)($test_result['status'] ?? ''));
$from = esc_html($test_result['from_email'] ?? '');
$error = $test_result['error'] ?? '';
if (is_array($error)) {
$error = wp_json_encode($error);
}
$error = esc_html((string)$error);
echo '';
echo 'Test sent: ' . esc_html($sent) . ' | Provider: ' . $provider . ' | Status: ' . $status . ' | From: ' . $from . '';
if ($error !== '') {
echo ' | Error: ' . $error . '';
}
echo '
';
}
// Step 2e: show the SendGrid test form.
private function render_test_form()
{
echo '';
}
// Step 2f: render the logs table.
private function render_log_table(array $logs)
{
if (!$logs) {
echo 'No logs found.
';
return;
}
echo '';
echo '';
echo '| Date | Site | Reason | Sent | Provider | Status | From | To | Error | ';
echo '
';
foreach ($logs as $row) {
$date = esc_html($row['date'] ?? '');
$site = esc_html($row['site'] ?? '');
$reason = esc_html($row['reason'] ?? '');
$sent = !empty($row['mail_sent']) ? 'yes' : 'no';
$provider = esc_html($row['mail_provider'] ?? 'sendgrid');
$status = esc_html((string)($row['mail_status'] ?? ''));
$from = esc_html($row['from_email'] ?? '');
$to = esc_html($row['to_email'] ?? '');
$error = $row['mail_error'] ?? '';
if (is_array($error)) {
$error = wp_json_encode($error);
}
$error = esc_html((string)$error);
echo '';
echo '| ' . $date . ' | ';
echo '' . $site . ' | ';
echo '' . $reason . ' | ';
echo '' . esc_html($sent) . ' | ';
echo '' . $provider . ' | ';
echo '' . $status . ' | ';
echo '' . $from . ' | ';
echo '' . $to . ' | ';
echo '' . $error . ' | ';
echo '
';
}
echo '
';
}
}