<?php
/**
* Cleans up metadata artifacts for non-production environments
* with manual overrides.
*/
/**
* Configuration settings.
*/
$cleanup_mode = isset($_GET['mode']) ? $_GET['mode'] : 'normal'; // 'normal' or 'force'
$override_ids = isset($_GET['ids']) ? explode(',', $_GET['ids']) : []; // Array of IDs to preserve
$log_file = 'cleanup.log'; // Log file path
/**
* Function to log messages.
*
* @param string $message The message to log.
*/
function log_message(string $message): void
{
global $log_file;
$timestamp = date('Y-m-d H:i:s');
error_log("[$timestamp] $message", 3, $log_file); // Log to file
}
/**
* Cleans up metadata artifacts.
*/
function cleanup_metadata(): void
{
log_message("Starting metadata cleanup...");
//Database connection details (replace with your actual credentials)
$db_host = 'localhost';
$db_user = 'your_db_user';
$db_pass = 'your_db_password';
$db_name = 'your_db_name';
try {
$conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
log_message("Database connection failed: " . $e->getMessage());
return;
}
// Example: Clean up old metadata records (adjust query as needed)
$sql = "DELETE FROM metadata WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY) AND status = 'inactive'";
$stmt = $conn->prepare($sql);
$stmt->execute();
log_message("Deleted old metadata records.");
// Example: Clean up orphaned metadata files (adjust logic as needed)
$sql = "DELETE FROM metadata_files WHERE file_path NOT IN (SELECT file_path FROM metadata WHERE status = 'active')";
$stmt = $conn->prepare($sql);
$stmt->execute();
log_message("Deleted orphaned metadata files.");
//Manual override logic
if ($cleanup_mode == 'force') {
log_message("Performing forced cleanup. Proceed with caution!");
}
if (!empty($override_ids)) {
log_message("Preserving metadata IDs: " . implode(',', $override_ids));
$sql = "UPDATE metadata SET status = 'active' WHERE id IN (" . implode(',', $override_ids) . ")";
$stmt = $conn->prepare($sql);
$stmt->execute();
log_message("Marked IDs as active.");
}
log_message("Metadata cleanup completed.");
}
// Main execution
cleanup_metadata();
?>
Add your comment