51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
#!/usr/bin/env php
|
|||
|
|
<?php
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Audit Log Retention Cron Job
|
||
|
|
*
|
||
|
|
* Deletes audit_log rows older than AUDIT_LOG_RETENTION_DAYS (config, default 90).
|
||
|
|
* Recommended: run once daily.
|
||
|
|
*
|
||
|
|
* Example crontab entry (03:30 every day):
|
||
|
|
* 30 3 * * * /usr/bin/php /path/to/cron/cleanup_audit_log.php >> /var/log/audit_log_cleanup.log 2>&1
|
||
|
|
*/
|
||
|
|
|
||
|
|
// Prevent web access
|
||
|
|
if (php_sapi_name() !== 'cli') {
|
||
|
|
http_response_code(403);
|
||
|
|
exit('CLI access only');
|
||
|
|
}
|
||
|
|
|
||
|
|
// Change to project root directory
|
||
|
|
chdir(dirname(__DIR__));
|
||
|
|
|
||
|
|
// Include required files
|
||
|
|
require_once 'config/config.php';
|
||
|
|
require_once 'helpers/Database.php';
|
||
|
|
require_once 'models/AuditLogModel.php';
|
||
|
|
|
||
|
|
// Log function
|
||
|
|
function logMessage($message)
|
||
|
|
{
|
||
|
|
echo '[' . date('Y-m-d H:i:s') . '] ' . $message . "\n";
|
||
|
|
}
|
||
|
|
|
||
|
|
$retentionDays = (int)($GLOBALS['config']['AUDIT_LOG_RETENTION_DAYS'] ?? 90);
|
||
|
|
|
||
|
|
logMessage("Starting audit log cleanup (retention: {$retentionDays} days)");
|
||
|
|
|
||
|
|
try {
|
||
|
|
$conn = Database::getConnection();
|
||
|
|
|
||
|
|
$auditLog = new AuditLogModel($conn);
|
||
|
|
$deleted = $auditLog->deleteOldLogs($retentionDays);
|
||
|
|
|
||
|
|
logMessage("Removed {$deleted} audit log row(s) older than {$retentionDays} days");
|
||
|
|
|
||
|
|
Database::close();
|
||
|
|
} catch (Exception $e) {
|
||
|
|
logMessage('FATAL ERROR: ' . $e->getMessage());
|
||
|
|
exit(1);
|
||
|
|
}
|