class-qdr-tss-cron-manager.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. /**
  3. * Cron operations for the plugin.
  4. *
  5. * This class handles all cron operations, including scheduling and executing
  6. * tasks.
  7. *
  8. * @package QDR_Temporary_Shared_Storage
  9. * @since 1.0.0
  10. */
  11. class QDR_TSS_Cron_Manager {
  12. /**
  13. * The plugin name.
  14. *
  15. * @since 1.0.0
  16. * @access private
  17. * @var string $plugin_name The name of this plugin.
  18. */
  19. private $plugin_name;
  20. /**
  21. * The plugin version.
  22. *
  23. * @since 1.0.0
  24. * @access private
  25. * @var string $version The version of this plugin.
  26. */
  27. private $version;
  28. /**
  29. * Initialize the class and set its properties.
  30. *
  31. * @since 1.0.0
  32. * @param string $plugin_name The name of this plugin.
  33. * @param string $version The version of this plugin.
  34. */
  35. public function __construct($plugin_name, $version) {
  36. $this->plugin_name = $plugin_name;
  37. $this->version = $version;
  38. // Schedule the purge event if not scheduled
  39. if (!wp_next_scheduled('qdr_tss_purge_expired_files')) {
  40. wp_schedule_event(time(), 'hourly', 'qdr_tss_purge_expired_files');
  41. }
  42. }
  43. /**
  44. * Purge expired files.
  45. *
  46. * @since 1.0.0
  47. * @return int Number of files purged.
  48. */
  49. public function purge_expired_files() {
  50. // Get database manager
  51. $db_manager = QDR_TSS_DB_Manager::instance();
  52. // Get file manager
  53. $file_manager = QDR_TSS_File_Manager::instance();
  54. // Get expired items
  55. $expired_items = $db_manager->get_expired_items();
  56. $purged_count = 0;
  57. // Delete files and database records
  58. foreach ($expired_items as $item) {
  59. // Delete file
  60. $file_manager->delete_file($item->file_path);
  61. // Delete from database
  62. $db_manager->delete_item($item->id);
  63. $purged_count++;
  64. }
  65. // Clean up empty directories
  66. $file_manager->cleanup_empty_directories();
  67. return $purged_count;
  68. }
  69. /**
  70. * Manually purge expired files.
  71. *
  72. * @since 1.0.0
  73. * @return int Number of files purged.
  74. */
  75. public function manual_purge_expired_files() {
  76. return $this->purge_expired_files();
  77. }
  78. /**
  79. * Schedule the purge event.
  80. *
  81. * @since 1.0.0
  82. * @return void
  83. */
  84. public function schedule_purge_event() {
  85. if (!wp_next_scheduled('qdr_tss_purge_expired_files')) {
  86. wp_schedule_event(time(), 'hourly', 'qdr_tss_purge_expired_files');
  87. }
  88. }
  89. /**
  90. * Unschedule the purge event.
  91. *
  92. * @since 1.0.0
  93. * @return void
  94. */
  95. public function unschedule_purge_event() {
  96. $timestamp = wp_next_scheduled('qdr_tss_purge_expired_files');
  97. if ($timestamp) {
  98. wp_unschedule_event($timestamp, 'qdr_tss_purge_expired_files');
  99. }
  100. }
  101. }