1. <?php
  2. /**
  3. * Validates configuration for scheduled records.
  4. * Logs errors to a file.
  5. *
  6. * @param array $config Configuration array.
  7. * @return bool True if configuration is valid, false otherwise.
  8. */
  9. function validateScheduledRecordConfig(array $config): bool
  10. {
  11. $logFile = 'config_validation.log'; // Log file path
  12. // Function to log errors
  13. function logError(string $message): void
  14. {
  15. global $logFile;
  16. $timestamp = date('Y-m-d H:i:s');
  17. error_log("[$timestamp] ERROR: $message", 3, $logFile);
  18. }
  19. // Validate required fields
  20. if (empty($config['record_id'])) {
  21. logError("Missing record_id configuration.");
  22. return false;
  23. }
  24. if (empty($config['data_source'])) {
  25. logError("Missing data_source configuration.");
  26. return false;
  27. }
  28. if (empty($config['schedule']['frequency'])) {
  29. logError("Missing schedule.frequency configuration.");
  30. return false;
  31. }
  32. if (empty($config['schedule']['time'])) {
  33. logError("Missing schedule.time configuration.");
  34. return false;
  35. }
  36. // Validate data source type
  37. if (!in_array($config['data_source'], ['database', 'api', 'file'])) {
  38. logError("Invalid data_source: " . $config['data_source']);
  39. return false;
  40. }
  41. // Validate schedule frequency
  42. if (!in_array($config['schedule']['frequency'], ['hourly', 'daily', 'weekly', 'monthly'])) {
  43. logError("Invalid schedule.frequency: " . $config['schedule']['frequency']);
  44. return false;
  45. }
  46. // Validate time format (example, adjust as needed)
  47. if (!preg_match('/^\d{2}:\d{2}$/', $config['schedule']['time'])) {
  48. logError("Invalid schedule.time format. Expected HH:MM");
  49. return false;
  50. }
  51. //Additional validation as needed. Example: Validate data_source specific parameters.
  52. if ($config['data_source'] === 'database') {
  53. if (empty($config['database']['host']) || empty($config['database']['user']) || empty($config['database']['password']) || empty($config['database']['name'])) {
  54. logError("Missing required database parameters.");
  55. return false;
  56. }
  57. }
  58. // Configuration is valid
  59. return true;
  60. }
  61. // Example usage:
  62. $config = [
  63. 'record_id' => 123,
  64. 'data_source' => 'database',
  65. 'schedule' => [
  66. 'frequency' => 'daily',
  67. 'time' => '03:00',
  68. ],
  69. 'database' => [
  70. 'host' => 'localhost',
  71. 'user' => 'dbuser',
  72. 'password' => 'dbpassword',
  73. 'name' => 'mydb'
  74. ]
  75. ];
  76. if (validateScheduledRecordConfig($config)) {
  77. echo "Configuration is valid.\n";
  78. } else {
  79. echo "Configuration is invalid. See config_validation.log for details.\n";
  80. }
  81. ?>

Add your comment