PluginProbe ʕ •ᴥ•ʔ
Download Manager / 3.3.63
Download Manager v3.3.63
3.3.63 3.3.62 3.3.61 3.3.60 3.3.59 3.3.58 3.3.57 3.3.56 trunk 2.1.3 2.3.0 2.5.96 2.5.97 2.6.2 2.6.96 2.8.3 2.9.99 3.0.4 3.1.05 3.1.07 3.1.08 3.1.11 3.1.12 3.1.14 3.1.17 3.1.18 3.1.22 3.1.23 3.1.24 3.1.25 3.1.26 3.1.27 3.1.28 3.2.04 3.2.13 3.2.14 3.2.16 3.2.18 3.2.19 3.2.21 3.2.22 3.2.23 3.2.24 3.2.25 3.2.27 3.2.28 3.2.29 3.2.30 3.2.31 3.2.32 3.2.33 3.2.34 3.2.35 3.2.37 3.2.38 3.2.39 3.2.40 3.2.41 3.2.42 3.2.43 3.2.44 3.2.45 3.2.46 3.2.47 3.2.48 3.2.49 3.2.50 3.2.51 3.2.52 3.2.53 3.2.54 3.2.55 3.2.56 3.2.57 3.2.58 3.2.59 3.2.60 3.2.61 3.2.63 3.2.64 3.2.65 3.2.66 3.2.67 3.2.68 3.2.69 3.2.70 3.2.71 3.2.72 3.2.73 3.2.74 3.2.75 3.2.76 3.2.77 3.2.78 3.2.79 3.2.80 3.2.81 3.2.82 3.2.83 3.2.84 3.2.85 3.2.86 3.2.87 3.2.88 3.2.89 3.2.90 3.2.91 3.2.92 3.2.93 3.2.94 3.2.95 3.2.96 3.2.97 3.2.98 3.2.99 3.3.00 3.3.01 3.3.02 3.3.03 3.3.04 3.3.05 3.3.06 3.3.07 3.3.08 3.3.09 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.15 3.3.16 3.3.17 3.3.18 3.3.19 3.3.20 3.3.21 3.3.22 3.3.23 3.3.24 3.3.25 3.3.26 3.3.27 3.3.28 3.3.29 3.3.30 3.3.31 3.3.32 3.3.33 3.3.34 3.3.35 3.3.36 3.3.37 3.3.38 3.3.39 3.3.40 3.3.41 3.3.42 3.3.43 3.3.44 3.3.45 3.3.46 3.3.47 3.3.48 3.3.49 3.3.50 3.3.51 3.3.52 3.3.53 3.3.54 3.3.55
download-manager / src / __ / Jobs / CleanupJob.php
download-manager / src / __ / Jobs Last commit date
ActivityReportJob.php 2 days ago CleanupJob.php 2 days ago DeleteExpiredJob.php 2 days ago Job.php 2 days ago JobBuilder.php 2 days ago JobHandler.php 2 days ago SendEmailJob.php 2 days ago
CleanupJob.php
122 lines
1 <?php
2 /**
3 * Cleanup Job
4 *
5 * Handles cleanup of expired sessions and cache files.
6 *
7 * @package WPDM\__\Jobs
8 * @since 7.0.1
9 */
10
11 namespace WPDM\__\Jobs;
12
13 use WPDM\__\FileSystem;
14
15 class CleanupJob extends Job
16 {
17 /**
18 * Execute the cleanup job
19 *
20 * @param object|array $data Job payload
21 * @return bool
22 */
23 public function handle($data): bool
24 {
25 $this->log('Starting cleanup job');
26
27 // Clean up expired sessions
28 $sessionsDeleted = $this->cleanupSessions();
29 $this->log("Deleted {$sessionsDeleted} expired sessions");
30
31 // Clean up cache files
32 $this->cleanupCache();
33 $this->log('Cache cleanup completed');
34
35 // Clean up old download stats (optional, based on settings)
36 if ($this->get('cleanup_stats', false)) {
37 $statsDeleted = $this->cleanupOldStats();
38 $this->log("Deleted {$statsDeleted} old download stats");
39 }
40
41 return true;
42 }
43
44 /**
45 * Clean up expired sessions
46 *
47 * @return int Number of deleted sessions
48 */
49 private function cleanupSessions(): int
50 {
51 global $wpdb;
52
53 $deleted = $wpdb->query($wpdb->prepare(
54 "DELETE FROM {$wpdb->prefix}ahm_sessions WHERE `expire` < %d",
55 time()
56 ));
57
58 return $deleted !== false ? $deleted : 0;
59 }
60
61 /**
62 * Clean up cache files
63 *
64 * @return void
65 */
66 private function cleanupCache(): void
67 {
68 if (!defined('WPDM_CACHE_DIR')) {
69 return;
70 }
71
72 // Delete zip files in cache
73 FileSystem::deleteFiles(WPDM_CACHE_DIR, false, '.zip');
74
75 // Delete old txt files (older than 1 hour)
76 FileSystem::deleteFiles(WPDM_CACHE_DIR, false, [
77 'filetime' => time() - 3600,
78 'ext' => '.txt'
79 ]);
80 }
81
82 /**
83 * Clean up old download statistics
84 *
85 * @return int Number of deleted records
86 */
87 private function cleanupOldStats(): int
88 {
89 global $wpdb;
90
91 $daysToKeep = $this->get('stats_retention_days', 365);
92 $cutoff = time() - ($daysToKeep * 86400);
93
94 $deleted = $wpdb->query($wpdb->prepare(
95 "DELETE FROM {$wpdb->prefix}ahm_download_stats WHERE `timestamp` < %d",
96 $cutoff
97 ));
98
99 return $deleted !== false ? $deleted : 0;
100 }
101
102 /**
103 * Get job name
104 *
105 * @return string
106 */
107 public static function getName(): string
108 {
109 return 'Cleanup';
110 }
111
112 /**
113 * Get job description
114 *
115 * @return string
116 */
117 public static function getDescription(): string
118 {
119 return 'Cleans up expired sessions and cache files';
120 }
121 }
122