126 lines
5.1 KiB
PHP
126 lines
5.1 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/app.php';
|
|
|
|
ensure_kyc_table();
|
|
|
|
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
|
$record = null;
|
|
$notice = null;
|
|
|
|
if ($id > 0) {
|
|
$stmt = db()->prepare('SELECT * FROM kyc_applications WHERE id = :id LIMIT 1');
|
|
$stmt->execute([':id' => $id]);
|
|
$record = $stmt->fetch();
|
|
}
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $record) {
|
|
$status = $_POST['status'] ?? 'pending';
|
|
$allowed = ['pending', 'approved', 'rejected'];
|
|
if (!in_array($status, $allowed, true)) {
|
|
$status = 'pending';
|
|
}
|
|
$stmt = db()->prepare('UPDATE kyc_applications SET status = :status WHERE id = :id');
|
|
$stmt->execute([':status' => $status, ':id' => $record['id']]);
|
|
$notice = 'Status updated.';
|
|
$record['status'] = $status;
|
|
}
|
|
|
|
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? '';
|
|
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
|
|
?>
|
|
<!doctype html>
|
|
<html lang="<?= h($lang) ?>">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title><?= h(t('admin_detail_title')) ?> · <?= h(t('site_name')) ?></title>
|
|
<?php if ($projectDescription): ?>
|
|
<meta name="description" content="<?= h($projectDescription) ?>" />
|
|
<meta property="og:description" content="<?= h($projectDescription) ?>" />
|
|
<meta property="twitter:description" content="<?= h($projectDescription) ?>" />
|
|
<?php endif; ?>
|
|
<?php if ($projectImageUrl): ?>
|
|
<meta property="og:image" content="<?= h($projectImageUrl) ?>" />
|
|
<meta property="twitter:image" content="<?= h($projectImageUrl) ?>" />
|
|
<?php endif; ?>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<link rel="stylesheet" href="assets/css/custom.css?v=<?= h((string) time()) ?>">
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-expand-lg navbar-light">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="<?= h(url_with_lang('index.php')) ?>"><?= h(t('site_name')) ?></a>
|
|
<div class="ms-auto lang-toggle btn-group" role="group">
|
|
<a class="btn btn-sm <?= $lang === 'zh' ? 'active' : '' ?>" href="<?= h(url_with_lang('admin_kyc_view.php', ['lang' => 'zh', 'id' => $id])) ?>">中文</a>
|
|
<a class="btn btn-sm <?= $lang === 'en' ? 'active' : '' ?>" href="<?= h(url_with_lang('admin_kyc_view.php', ['lang' => 'en', 'id' => $id])) ?>">EN</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container my-5">
|
|
<div class="section-card">
|
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
<div>
|
|
<h1 class="section-title mb-1"><?= h(t('admin_detail_title')) ?></h1>
|
|
<p class="text-muted mb-0">ID <?= h((string) $id) ?></p>
|
|
</div>
|
|
<a class="ghost-btn text-decoration-none" href="<?= h(url_with_lang('admin_kyc_list.php')) ?>"><?= h(t('admin_back')) ?></a>
|
|
</div>
|
|
|
|
<?php if ($notice): ?>
|
|
<div class="alert alert-success"><?= h($notice) ?></div>
|
|
<?php endif; ?>
|
|
|
|
<?php if (!$record): ?>
|
|
<div class="alert alert-warning">Record not found.</div>
|
|
<?php else: ?>
|
|
<div class="row g-3 mb-4">
|
|
<div class="col-md-6">
|
|
<div class="text-muted">Name</div>
|
|
<div class="fw-semibold"><?= h($record['full_name']) ?></div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="text-muted">Email</div>
|
|
<div class="fw-semibold"><?= h($record['email']) ?></div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="text-muted">Phone</div>
|
|
<div class="fw-semibold"><?= h($record['phone']) ?></div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="text-muted">ID Number</div>
|
|
<div class="fw-semibold"><?= h($record['id_number']) ?></div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="text-muted">Address</div>
|
|
<div class="fw-semibold"><?= h($record['address']) ?></div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="text-muted">Document</div>
|
|
<a href="<?= h($record['doc_url']) ?>" target="_blank" rel="noopener noreferrer"><?= h($record['doc_url']) ?></a>
|
|
</div>
|
|
</div>
|
|
|
|
<form method="post" class="row g-3 align-items-end">
|
|
<div class="col-md-4">
|
|
<label class="form-label"><?= h(t('admin_update')) ?></label>
|
|
<select name="status" class="form-select">
|
|
<option value="pending" <?= $record['status'] === 'pending' ? 'selected' : '' ?>>pending</option>
|
|
<option value="approved" <?= $record['status'] === 'approved' ? 'selected' : '' ?>>approved</option>
|
|
<option value="rejected" <?= $record['status'] === 'rejected' ? 'selected' : '' ?>>rejected</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<button type="submit" class="cta-btn">Save</button>
|
|
</div>
|
|
</form>
|
|
<?php endif; ?>
|
|
</div>
|
|
</main>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="assets/js/main.js?v=<?= h((string) time()) ?>"></script>
|
|
</body>
|
|
</html>
|