| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- /**
- * Cron operations for the plugin.
- *
- * This class handles all cron operations, including scheduling and executing
- * tasks.
- *
- * @package QDR_Temporary_Shared_Storage
- * @since 1.0.0
- */
- class QDR_TSS_Cron_Manager {
- /**
- * The plugin name.
- *
- * @since 1.0.0
- * @access private
- * @var string $plugin_name The name of this plugin.
- */
- private $plugin_name;
- /**
- * The plugin version.
- *
- * @since 1.0.0
- * @access private
- * @var string $version The version of this plugin.
- */
- private $version;
- /**
- * Initialize the class and set its properties.
- *
- * @since 1.0.0
- * @param string $plugin_name The name of this plugin.
- * @param string $version The version of this plugin.
- */
- public function __construct($plugin_name, $version) {
- $this->plugin_name = $plugin_name;
- $this->version = $version;
-
- // Schedule the purge event if not scheduled
- if (!wp_next_scheduled('qdr_tss_purge_expired_files')) {
- wp_schedule_event(time(), 'hourly', 'qdr_tss_purge_expired_files');
- }
- }
- /**
- * Purge expired files.
- *
- * @since 1.0.0
- * @return int Number of files purged.
- */
- public function purge_expired_files() {
- // Get database manager
- $db_manager = QDR_TSS_DB_Manager::instance();
-
- // Get file manager
- $file_manager = QDR_TSS_File_Manager::instance();
-
- // Get expired items
- $expired_items = $db_manager->get_expired_items();
-
- $purged_count = 0;
-
- // Delete files and database records
- foreach ($expired_items as $item) {
- // Delete file
- $file_manager->delete_file($item->file_path);
-
- // Delete from database
- $db_manager->delete_item($item->id);
-
- $purged_count++;
- }
-
- // Clean up empty directories
- $file_manager->cleanup_empty_directories();
-
- return $purged_count;
- }
- /**
- * Manually purge expired files.
- *
- * @since 1.0.0
- * @return int Number of files purged.
- */
- public function manual_purge_expired_files() {
- return $this->purge_expired_files();
- }
- /**
- * Schedule the purge event.
- *
- * @since 1.0.0
- * @return void
- */
- public function schedule_purge_event() {
- if (!wp_next_scheduled('qdr_tss_purge_expired_files')) {
- wp_schedule_event(time(), 'hourly', 'qdr_tss_purge_expired_files');
- }
- }
- /**
- * Unschedule the purge event.
- *
- * @since 1.0.0
- * @return void
- */
- public function unschedule_purge_event() {
- $timestamp = wp_next_scheduled('qdr_tss_purge_expired_files');
- if ($timestamp) {
- wp_unschedule_event($timestamp, 'qdr_tss_purge_expired_files');
- }
- }
- }
|