1. <?php
  2. /**
  3. * Cleans up metadata artifacts for non-production environments
  4. * with manual overrides.
  5. */
  6. /**
  7. * Configuration settings.
  8. */
  9. $cleanup_mode = isset($_GET['mode']) ? $_GET['mode'] : 'normal'; // 'normal' or 'force'
  10. $override_ids = isset($_GET['ids']) ? explode(',', $_GET['ids']) : []; // Array of IDs to preserve
  11. $log_file = 'cleanup.log'; // Log file path
  12. /**
  13. * Function to log messages.
  14. *
  15. * @param string $message The message to log.
  16. */
  17. function log_message(string $message): void
  18. {
  19. global $log_file;
  20. $timestamp = date('Y-m-d H:i:s');
  21. error_log("[$timestamp] $message", 3, $log_file); // Log to file
  22. }
  23. /**
  24. * Cleans up metadata artifacts.
  25. */
  26. function cleanup_metadata(): void
  27. {
  28. log_message("Starting metadata cleanup...");
  29. //Database connection details (replace with your actual credentials)
  30. $db_host = 'localhost';
  31. $db_user = 'your_db_user';
  32. $db_pass = 'your_db_password';
  33. $db_name = 'your_db_name';
  34. try {
  35. $conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
  36. $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  37. } catch (PDOException $e) {
  38. log_message("Database connection failed: " . $e->getMessage());
  39. return;
  40. }
  41. // Example: Clean up old metadata records (adjust query as needed)
  42. $sql = "DELETE FROM metadata WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY) AND status = 'inactive'";
  43. $stmt = $conn->prepare($sql);
  44. $stmt->execute();
  45. log_message("Deleted old metadata records.");
  46. // Example: Clean up orphaned metadata files (adjust logic as needed)
  47. $sql = "DELETE FROM metadata_files WHERE file_path NOT IN (SELECT file_path FROM metadata WHERE status = 'active')";
  48. $stmt = $conn->prepare($sql);
  49. $stmt->execute();
  50. log_message("Deleted orphaned metadata files.");
  51. //Manual override logic
  52. if ($cleanup_mode == 'force') {
  53. log_message("Performing forced cleanup. Proceed with caution!");
  54. }
  55. if (!empty($override_ids)) {
  56. log_message("Preserving metadata IDs: " . implode(',', $override_ids));
  57. $sql = "UPDATE metadata SET status = 'active' WHERE id IN (" . implode(',', $override_ids) . ")";
  58. $stmt = $conn->prepare($sql);
  59. $stmt->execute();
  60. log_message("Marked IDs as active.");
  61. }
  62. log_message("Metadata cleanup completed.");
  63. }
  64. // Main execution
  65. cleanup_metadata();
  66. ?>

Add your comment