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 / DeleteExpiredJob.php
download-manager / src / __ / Jobs Last commit date
ActivityReportJob.php 1 day ago CleanupJob.php 1 day ago DeleteExpiredJob.php 1 day ago Job.php 1 day ago JobBuilder.php 1 day ago JobHandler.php 1 day ago SendEmailJob.php 1 day ago
DeleteExpiredJob.php
132 lines
1 <?php
2 /**
3 * Delete Expired Packages Job
4 *
5 * Handles deletion/trashing of expired packages.
6 *
7 * @package WPDM\__\Jobs
8 * @since 7.0.1
9 */
10
11 namespace WPDM\__\Jobs;
12
13 class DeleteExpiredJob extends Job
14 {
15 /**
16 * Execute the delete expired job
17 *
18 * @param object|array $data Job payload
19 * @return bool
20 */
21 public function handle($data): bool
22 {
23 // Check if feature is enabled
24 if (!(int) get_option('__wpdm_delete_expired', 0)) {
25 $this->log('Delete expired packages feature is disabled');
26 return true; // Not an error, just disabled
27 }
28
29 $this->log('Starting delete expired packages job');
30
31 $deleted = $this->deleteExpiredPackages();
32 $this->log("Trashed {$deleted} expired packages");
33
34 // Send notification if packages were deleted
35 if ($deleted > 0 && $this->get('notify_admin', false)) {
36 $this->notifyAdmin($deleted);
37 }
38
39 return true;
40 }
41
42 /**
43 * Delete expired packages
44 *
45 * @return int Number of deleted packages
46 */
47 private function deleteExpiredPackages(): int
48 {
49 global $wpdb;
50
51 $results = $wpdb->get_results($wpdb->prepare(
52 "SELECT post_id, meta_value as expire_date
53 FROM {$wpdb->prefix}postmeta
54 WHERE meta_key = %s AND meta_value <> ''",
55 '__wpdm_expire_date'
56 ));
57
58 $deleted = 0;
59 foreach ($results as $item) {
60 $expireTime = strtotime($item->expire_date);
61
62 if (!$expireTime) {
63 continue;
64 }
65
66 if ($expireTime < time() && get_post_status($item->post_id) === 'publish') {
67 // Check if we should permanently delete or just trash
68 $permanentDelete = $this->get('permanent_delete', false);
69
70 if ($permanentDelete) {
71 wp_delete_post($item->post_id, true);
72 } else {
73 wp_trash_post($item->post_id);
74 }
75
76 $deleted++;
77
78 // Log individual deletion
79 $this->log("Deleted/trashed package #{$item->post_id} (expired: {$item->expire_date})");
80 }
81 }
82
83 return $deleted;
84 }
85
86 /**
87 * Send notification to admin about deleted packages
88 *
89 * @param int $count Number of deleted packages
90 * @return void
91 */
92 private function notifyAdmin(int $count): void
93 {
94 $adminEmail = get_option('admin_email');
95 $siteName = get_bloginfo('name');
96
97 $subject = sprintf(
98 '[%s] %d expired package(s) have been removed',
99 $siteName,
100 $count
101 );
102
103 $message = sprintf(
104 "Hello,\n\n%d expired package(s) have been automatically removed from your site.\n\nThis is an automated notification from WordPress Download Manager.\n\nBest regards,\n%s",
105 $count,
106 $siteName
107 );
108
109 wp_mail($adminEmail, $subject, $message);
110 }
111
112 /**
113 * Get job name
114 *
115 * @return string
116 */
117 public static function getName(): string
118 {
119 return 'Delete Expired';
120 }
121
122 /**
123 * Get job description
124 *
125 * @return string
126 */
127 public static function getDescription(): string
128 {
129 return 'Removes expired packages from the site';
130 }
131 }
132