23 lines
1.0 KiB
PHP
23 lines
1.0 KiB
PHP
<?php
|
|
// /admin/tools/_lib_audit.php
|
|
if (!class_exists('AdminAudit')) {
|
|
final class AdminAudit {
|
|
public static function log(PDO $pdo, array $d): void {
|
|
// $d: admin_id, action, scope?, target_table?, target_id?, meta?(array), ip?, ua?
|
|
$sql = "INSERT INTO admin_audit(admin_id, action, scope, target_table, target_id, meta_json, ip, user_agent)
|
|
VALUES (:admin_id,:action,:scope,:tt,:tid,:meta,:ip,:ua)";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([
|
|
':admin_id' => (int)($d['admin_id'] ?? 0),
|
|
':action' => (string)($d['action'] ?? 'unknown'),
|
|
':scope' => $d['scope'] ?? null,
|
|
':tt' => $d['target_table'] ?? null,
|
|
':tid' => isset($d['target_id']) ? (int)$d['target_id'] : null,
|
|
':meta' => isset($d['meta']) ? json_encode($d['meta'], JSON_UNESCAPED_UNICODE) : null,
|
|
':ip' => isset($_SERVER['REMOTE_ADDR']) ? inet_pton($_SERVER['REMOTE_ADDR']) : null,
|
|
':ua' => substr($_SERVER['HTTP_USER_AGENT'] ?? '', 0, 255),
|
|
]);
|
|
}
|
|
}
|
|
}
|