PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / woocommerce / action-scheduler / classes / ActionScheduler_QueueCleaner.php
mailpoet / vendor / woocommerce / action-scheduler / classes Last commit date
WP_CLI 1 year ago abstracts 1 year ago actions 1 year ago data-stores 1 year ago migration 1 year ago schedules 1 year ago schema 1 year ago ActionScheduler_ActionClaim.php 1 year ago ActionScheduler_ActionFactory.php 1 year ago ActionScheduler_AdminView.php 1 year ago ActionScheduler_AsyncRequest_QueueRunner.php 1 year ago ActionScheduler_Compatibility.php 1 year ago ActionScheduler_DataController.php 1 year ago ActionScheduler_DateTime.php 1 year ago ActionScheduler_Exception.php 4 years ago ActionScheduler_FatalErrorMonitor.php 1 year ago ActionScheduler_InvalidActionException.php 1 year ago ActionScheduler_ListTable.php 1 year ago ActionScheduler_LogEntry.php 1 year ago ActionScheduler_NullLogEntry.php 1 year ago ActionScheduler_OptionLock.php 2 years ago ActionScheduler_QueueCleaner.php 1 year ago ActionScheduler_QueueRunner.php 1 year ago ActionScheduler_SystemInformation.php 1 year ago ActionScheduler_Versions.php 1 year ago ActionScheduler_WPCommentCleaner.php 1 year ago ActionScheduler_wcSystemStatus.php 4 years ago index.php 3 years ago
ActionScheduler_QueueCleaner.php
120 lines
1 <?php
2 if (!defined('ABSPATH')) exit;
3 class ActionScheduler_QueueCleaner {
4 protected $batch_size;
5 private $store = null;
6 private $month_in_seconds = 2678400;
7 private $default_statuses_to_purge = array(
8 ActionScheduler_Store::STATUS_COMPLETE,
9 ActionScheduler_Store::STATUS_CANCELED,
10 );
11 public function __construct( ?ActionScheduler_Store $store = null, $batch_size = 20 ) {
12 $this->store = $store ? $store : ActionScheduler_Store::instance();
13 $this->batch_size = $batch_size;
14 }
15 public function delete_old_actions() {
16 $lifespan = apply_filters( 'action_scheduler_retention_period', $this->month_in_seconds );
17 try {
18 $cutoff = as_get_datetime_object( $lifespan . ' seconds ago' );
19 } catch ( Exception $e ) {
20 _doing_it_wrong(
21 __METHOD__,
22 sprintf(
23 esc_html__( 'It was not possible to determine a valid cut-off time: %s.', 'action-scheduler' ),
24 esc_html( $e->getMessage() )
25 ),
26 '3.5.5'
27 );
28 return array();
29 }
30 $statuses_to_purge = (array) apply_filters( 'action_scheduler_default_cleaner_statuses', $this->default_statuses_to_purge );
31 return $this->clean_actions( $statuses_to_purge, $cutoff, $this->get_batch_size() );
32 }
33 public function clean_actions( array $statuses_to_purge, DateTime $cutoff_date, $batch_size = null, $context = 'old' ) {
34 $batch_size = ! is_null( $batch_size ) ? $batch_size : $this->batch_size;
35 $cutoff = ! is_null( $cutoff_date ) ? $cutoff_date : as_get_datetime_object( $this->month_in_seconds . ' seconds ago' );
36 $lifespan = time() - $cutoff->getTimestamp();
37 if ( empty( $statuses_to_purge ) ) {
38 $statuses_to_purge = $this->default_statuses_to_purge;
39 }
40 $deleted_actions = array();
41 foreach ( $statuses_to_purge as $status ) {
42 $actions_to_delete = $this->store->query_actions(
43 array(
44 'status' => $status,
45 'modified' => $cutoff,
46 'modified_compare' => '<=',
47 'per_page' => $batch_size,
48 'orderby' => 'none',
49 )
50 );
51 $deleted_actions = array_merge( $deleted_actions, $this->delete_actions( $actions_to_delete, $lifespan, $context ) );
52 }
53 return $deleted_actions;
54 }
55 private function delete_actions( array $actions_to_delete, $lifespan = null, $context = 'old' ) {
56 $deleted_actions = array();
57 if ( is_null( $lifespan ) ) {
58 $lifespan = $this->month_in_seconds;
59 }
60 foreach ( $actions_to_delete as $action_id ) {
61 try {
62 $this->store->delete_action( $action_id );
63 $deleted_actions[] = $action_id;
64 } catch ( Exception $e ) {
65 do_action( "action_scheduler_failed_{$context}_action_deletion", $action_id, $e, $lifespan, count( $actions_to_delete ) );
66 }
67 }
68 return $deleted_actions;
69 }
70 public function reset_timeouts( $time_limit = 300 ) {
71 $timeout = apply_filters( 'action_scheduler_timeout_period', $time_limit );
72 if ( $timeout < 0 ) {
73 return;
74 }
75 $cutoff = as_get_datetime_object( $timeout . ' seconds ago' );
76 $actions_to_reset = $this->store->query_actions(
77 array(
78 'status' => ActionScheduler_Store::STATUS_PENDING,
79 'modified' => $cutoff,
80 'modified_compare' => '<=',
81 'claimed' => true,
82 'per_page' => $this->get_batch_size(),
83 'orderby' => 'none',
84 )
85 );
86 foreach ( $actions_to_reset as $action_id ) {
87 $this->store->unclaim_action( $action_id );
88 do_action( 'action_scheduler_reset_action', $action_id );
89 }
90 }
91 public function mark_failures( $time_limit = 300 ) {
92 $timeout = apply_filters( 'action_scheduler_failure_period', $time_limit );
93 if ( $timeout < 0 ) {
94 return;
95 }
96 $cutoff = as_get_datetime_object( $timeout . ' seconds ago' );
97 $actions_to_reset = $this->store->query_actions(
98 array(
99 'status' => ActionScheduler_Store::STATUS_RUNNING,
100 'modified' => $cutoff,
101 'modified_compare' => '<=',
102 'per_page' => $this->get_batch_size(),
103 'orderby' => 'none',
104 )
105 );
106 foreach ( $actions_to_reset as $action_id ) {
107 $this->store->mark_failure( $action_id );
108 do_action( 'action_scheduler_failed_action', $action_id, $timeout );
109 }
110 }
111 public function clean( $time_limit = 300 ) {
112 $this->delete_old_actions();
113 $this->reset_timeouts( $time_limit );
114 $this->mark_failures( $time_limit );
115 }
116 protected function get_batch_size() {
117 return absint( apply_filters( 'action_scheduler_cleanup_batch_size', $this->batch_size ) );
118 }
119 }
120