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'); } } }