First Commit
This commit is contained in:
1 parent
5eb9dd037d
commit
2e62c0e60b
11877 files changed
+2035312
No files matched your search
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/**
|
||||
* square_check.php — TEMPORARY diagnostic: one school's Square row + the latest
|
||||
* onboarding attempts, shown whether or not the school is connected.
|
||||
*
|
||||
* Read-only. NEVER displays access/refresh tokens — only whether one is present.
|
||||
*
|
||||
* ⚠️ DELETE THIS FILE FROM THE SERVER when you're done. It is gated by a key
|
||||
* below to avoid casual exposure, but it is not part of the real app.
|
||||
*
|
||||
* Usage: https://dev.hotlunches.net/square/square_check.php?key=sq-check-4b9e2d
|
||||
* (optional) &school=Other%20School%20Name
|
||||
*/
|
||||
|
||||
ini_set('display_errors', 0);
|
||||
|
||||
// ── Simple access gate ───────────────────────────────────────────────────────
|
||||
$ACCESS_KEY = 'sq-check-4b9e2d';
|
||||
if (($_GET['key'] ?? '') !== $ACCESS_KEY) {
|
||||
http_response_code(403);
|
||||
header('Content-Type: text/plain; charset=utf-8');
|
||||
echo "Forbidden. Append ?key=YOUR_KEY (see the top of square_check.php).";
|
||||
exit;
|
||||
}
|
||||
|
||||
// ── Bootstrap the DB layer (MerchantStore loads the host include/database.php) ─
|
||||
require_once __DIR__ . '/lib/MerchantStore.php';
|
||||
$config = require __DIR__ . '/config.php';
|
||||
$store = new MerchantStore($config); // constructor bootstraps the db_* layer
|
||||
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
function h($v) { return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); }
|
||||
|
||||
/** Run a query and print its rows as a table (NULL shown as NULL). */
|
||||
function showQuery(string $title, string $sql, array $truncate = []): void {
|
||||
echo '<h2>' . h($title) . '</h2><pre class="sql">' . h($sql) . '</pre>';
|
||||
$r = db_query($sql);
|
||||
if (!$r) {
|
||||
echo '<p class="err">Query failed' . (function_exists('db_error') ? ': ' . h(db_error()) : '') . '</p>';
|
||||
return;
|
||||
}
|
||||
$rows = [];
|
||||
while ($row = db_fetch_assoc($r)) {
|
||||
$rows[] = $row;
|
||||
}
|
||||
if (!$rows) {
|
||||
echo '<p class="err">No rows.</p>';
|
||||
return;
|
||||
}
|
||||
echo '<table><thead><tr>';
|
||||
foreach (array_keys($rows[0]) as $col) {
|
||||
echo '<th>' . h($col) . '</th>';
|
||||
}
|
||||
echo '</tr></thead><tbody>';
|
||||
foreach ($rows as $row) {
|
||||
echo '<tr>';
|
||||
foreach ($row as $col => $val) {
|
||||
if ($val === null) {
|
||||
echo '<td class="muted">NULL</td>';
|
||||
} elseif (in_array($col, $truncate, true)) {
|
||||
echo '<td>' . h(substr((string)$val, 0, 12)) . '…</td>';
|
||||
} else {
|
||||
echo '<td>' . nl2br(h($val)) . '</td>';
|
||||
}
|
||||
}
|
||||
echo '</tr>';
|
||||
}
|
||||
echo '</tbody></table>';
|
||||
}
|
||||
|
||||
$school = trim((string)($_GET['school'] ?? 'Development School'));
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Square — Check</title>
|
||||
<style>
|
||||
body { font-family: system-ui, -apple-system, Segoe UI, Arial, sans-serif; margin: 0; background: #f7fafc; color: #1a202c; }
|
||||
.wrap { max-width: 1200px; margin: 0 auto; padding: 28px 20px 60px; }
|
||||
h1 { font-size: 22px; margin: 0 0 20px; }
|
||||
h2 { font-size: 16px; margin: 28px 0 8px; }
|
||||
.warn { background: #fffaf0; border: 1px solid #fbd38d; color: #7b341e; padding: 10px 14px; border-radius: 8px; font-size: 13px; }
|
||||
.err { color: #c53030; font-size: 13px; }
|
||||
pre.sql { background: #f1f5f9; padding: 10px 12px; border-radius: 6px; font-size: 12px; white-space: pre-wrap; margin: 0 0 10px; }
|
||||
table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid #e2e8f0; font-size: 13px; }
|
||||
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #edf2f7; vertical-align: top; }
|
||||
th { background: #f1f5f9; font-weight: 600; color: #475569; white-space: nowrap; }
|
||||
.muted { color: #a0aec0; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<h1>Square — Check</h1>
|
||||
<div class="warn">⚠️ Temporary diagnostic page — delete <code>square_check.php</code> from the server when finished.</div>
|
||||
<?php
|
||||
if (!function_exists('db_query')) {
|
||||
echo '<p class="err">Host database layer (db_query) is not available — cannot read.</p>';
|
||||
} else {
|
||||
$s = db_escape_string($school);
|
||||
showQuery('School row', "SELECT record_num, school_name, square_merchant_id,
|
||||
square_access_token IS NOT NULL AS has_token,
|
||||
square_ready, square_location_id,
|
||||
square_authorization_revoked, square_status_issues
|
||||
FROM schools WHERE school_name = '$s'");
|
||||
|
||||
showQuery('Latest onboarding attempts', "SELECT state, school_num, status, merchant_id,
|
||||
FROM_UNIXTIME(created_at) AS created, FROM_UNIXTIME(last_callback) AS callback
|
||||
FROM square_pending_onboarding ORDER BY created_at DESC LIMIT 5", ['state']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user