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 / functions.php
mailpoet / vendor / woocommerce / action-scheduler Last commit date
classes 1 year ago deprecated 1 year ago lib 1 year ago action-scheduler.php 1 year ago functions.php 1 year ago index.php 3 years ago
functions.php
233 lines
1 <?php
2 if (!defined('ABSPATH')) exit;
3 function as_enqueue_async_action( $hook, $args = array(), $group = '', $unique = false, $priority = 10 ) {
4 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
5 return 0;
6 }
7 $pre = apply_filters( 'pre_as_enqueue_async_action', null, $hook, $args, $group, $priority, $unique );
8 if ( null !== $pre ) {
9 return is_int( $pre ) ? $pre : 0;
10 }
11 return ActionScheduler::factory()->create(
12 array(
13 'type' => 'async',
14 'hook' => $hook,
15 'arguments' => $args,
16 'group' => $group,
17 'unique' => $unique,
18 'priority' => $priority,
19 )
20 );
21 }
22 function as_schedule_single_action( $timestamp, $hook, $args = array(), $group = '', $unique = false, $priority = 10 ) {
23 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
24 return 0;
25 }
26 $pre = apply_filters( 'pre_as_schedule_single_action', null, $timestamp, $hook, $args, $group, $priority );
27 if ( null !== $pre ) {
28 return is_int( $pre ) ? $pre : 0;
29 }
30 return ActionScheduler::factory()->create(
31 array(
32 'type' => 'single',
33 'hook' => $hook,
34 'arguments' => $args,
35 'when' => $timestamp,
36 'group' => $group,
37 'unique' => $unique,
38 'priority' => $priority,
39 )
40 );
41 }
42 function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args = array(), $group = '', $unique = false, $priority = 10 ) {
43 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
44 return 0;
45 }
46 $interval = (int) $interval_in_seconds;
47 // We expect an integer and allow it to be passed using float and string types, but otherwise
48 // should reject unexpected values.
49 // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
50 if ( ! is_numeric( $interval_in_seconds ) || $interval_in_seconds != $interval ) {
51 _doing_it_wrong(
52 __METHOD__,
53 sprintf(
54 esc_html__( 'An integer was expected but "%1$s" (%2$s) was received.', 'action-scheduler' ),
55 esc_html( $interval_in_seconds ),
56 esc_html( gettype( $interval_in_seconds ) )
57 ),
58 '3.6.0'
59 );
60 return 0;
61 }
62 $pre = apply_filters( 'pre_as_schedule_recurring_action', null, $timestamp, $interval_in_seconds, $hook, $args, $group, $priority );
63 if ( null !== $pre ) {
64 return is_int( $pre ) ? $pre : 0;
65 }
66 return ActionScheduler::factory()->create(
67 array(
68 'type' => 'recurring',
69 'hook' => $hook,
70 'arguments' => $args,
71 'when' => $timestamp,
72 'pattern' => $interval_in_seconds,
73 'group' => $group,
74 'unique' => $unique,
75 'priority' => $priority,
76 )
77 );
78 }
79 function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(), $group = '', $unique = false, $priority = 10 ) {
80 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
81 return 0;
82 }
83 $pre = apply_filters( 'pre_as_schedule_cron_action', null, $timestamp, $schedule, $hook, $args, $group, $priority );
84 if ( null !== $pre ) {
85 return is_int( $pre ) ? $pre : 0;
86 }
87 return ActionScheduler::factory()->create(
88 array(
89 'type' => 'cron',
90 'hook' => $hook,
91 'arguments' => $args,
92 'when' => $timestamp,
93 'pattern' => $schedule,
94 'group' => $group,
95 'unique' => $unique,
96 'priority' => $priority,
97 )
98 );
99 }
100 function as_unschedule_action( $hook, $args = array(), $group = '' ) {
101 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
102 return 0;
103 }
104 $params = array(
105 'hook' => $hook,
106 'status' => ActionScheduler_Store::STATUS_PENDING,
107 'orderby' => 'date',
108 'order' => 'ASC',
109 'group' => $group,
110 );
111 if ( is_array( $args ) ) {
112 $params['args'] = $args;
113 }
114 $action_id = ActionScheduler::store()->query_action( $params );
115 if ( $action_id ) {
116 try {
117 ActionScheduler::store()->cancel_action( $action_id );
118 } catch ( Exception $exception ) {
119 ActionScheduler::logger()->log(
120 $action_id,
121 sprintf(
122 __( 'Caught exception while cancelling action "%1$s": %2$s', 'action-scheduler' ),
123 $hook,
124 $exception->getMessage()
125 )
126 );
127 $action_id = null;
128 }
129 }
130 return $action_id;
131 }
132 function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
133 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
134 return;
135 }
136 if ( empty( $args ) ) {
137 if ( ! empty( $hook ) && empty( $group ) ) {
138 ActionScheduler_Store::instance()->cancel_actions_by_hook( $hook );
139 return;
140 }
141 if ( ! empty( $group ) && empty( $hook ) ) {
142 ActionScheduler_Store::instance()->cancel_actions_by_group( $group );
143 return;
144 }
145 }
146 do {
147 $unscheduled_action = as_unschedule_action( $hook, $args, $group );
148 } while ( ! empty( $unscheduled_action ) );
149 }
150 function as_next_scheduled_action( $hook, $args = null, $group = '' ) {
151 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
152 return false;
153 }
154 $params = array(
155 'hook' => $hook,
156 'orderby' => 'date',
157 'order' => 'ASC',
158 'group' => $group,
159 );
160 if ( is_array( $args ) ) {
161 $params['args'] = $args;
162 }
163 $params['status'] = ActionScheduler_Store::STATUS_RUNNING;
164 $action_id = ActionScheduler::store()->query_action( $params );
165 if ( $action_id ) {
166 return true;
167 }
168 $params['status'] = ActionScheduler_Store::STATUS_PENDING;
169 $action_id = ActionScheduler::store()->query_action( $params );
170 if ( null === $action_id ) {
171 return false;
172 }
173 $action = ActionScheduler::store()->fetch_action( $action_id );
174 $scheduled_date = $action->get_schedule()->get_date();
175 if ( $scheduled_date ) {
176 return (int) $scheduled_date->format( 'U' );
177 } elseif ( null === $scheduled_date ) { // pending async action with NullSchedule.
178 return true;
179 }
180 return false;
181 }
182 function as_has_scheduled_action( $hook, $args = null, $group = '' ) {
183 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
184 return false;
185 }
186 $query_args = array(
187 'hook' => $hook,
188 'status' => array( ActionScheduler_Store::STATUS_RUNNING, ActionScheduler_Store::STATUS_PENDING ),
189 'group' => $group,
190 'orderby' => 'none',
191 );
192 if ( null !== $args ) {
193 $query_args['args'] = $args;
194 }
195 $action_id = ActionScheduler::store()->query_action( $query_args );
196 return null !== $action_id;
197 }
198 function as_get_scheduled_actions( $args = array(), $return_format = OBJECT ) {
199 if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
200 return array();
201 }
202 $store = ActionScheduler::store();
203 foreach ( array( 'date', 'modified' ) as $key ) {
204 if ( isset( $args[ $key ] ) ) {
205 $args[ $key ] = as_get_datetime_object( $args[ $key ] );
206 }
207 }
208 $ids = $store->query_actions( $args );
209 if ( 'ids' === $return_format || 'int' === $return_format ) {
210 return $ids;
211 }
212 $actions = array();
213 foreach ( $ids as $action_id ) {
214 $actions[ $action_id ] = $store->fetch_action( $action_id );
215 }
216 if ( ARRAY_A === $return_format ) {
217 foreach ( $actions as $action_id => $action_object ) {
218 $actions[ $action_id ] = get_object_vars( $action_object );
219 }
220 }
221 return $actions;
222 }
223 function as_get_datetime_object( $date_string = null, $timezone = 'UTC' ) {
224 if ( is_object( $date_string ) && $date_string instanceof DateTime ) {
225 $date = new ActionScheduler_DateTime( $date_string->format( 'Y-m-d H:i:s' ), new DateTimeZone( $timezone ) );
226 } elseif ( is_numeric( $date_string ) ) {
227 $date = new ActionScheduler_DateTime( '@' . $date_string, new DateTimeZone( $timezone ) );
228 } else {
229 $date = new ActionScheduler_DateTime( null === $date_string ? 'now' : $date_string, new DateTimeZone( $timezone ) );
230 }
231 return $date;
232 }
233