PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Background / QueueService.php
surecart / app / src / Background Last commit date
AsyncRequest.php 2 years ago AsyncWebhookService.php 2 years ago BackgroundServiceProvider.php 2 years ago CustomerSyncService.php 3 years ago QueueService.php 2 years ago SyncService.php 3 years ago
QueueService.php
164 lines
1 <?php
2
3 namespace SureCart\Background;
4
5 /**
6 * SureCart Queue
7 *
8 * A job queue using WordPress actions.
9 */
10 class QueueService {
11 /**
12 * Enqueue an action to run one time, as soon as possible
13 *
14 * @param string $hook The hook to trigger.
15 * @param array $args Arguments to pass when the hook triggers.
16 * @param string $group The group to assign this job to.
17 * @return string $this.
18 */
19 public function async( $hook, $args = array(), $group = '' ) {
20 \as_enqueue_async_action( $hook, $args, $group );
21 return $this;
22 }
23
24 /**
25 * Schedule an action to run once at some time in the future
26 *
27 * @param int $timestamp When the job will run.
28 * @param string $hook The hook to trigger.
29 * @param array $args Arguments to pass when the hook triggers.
30 * @param string $group The group to assign this job to.
31 * @return string $this.
32 */
33 public function scheduleSingle( $timestamp, $hook, $args = array(), $group = '' ) {
34 \as_schedule_single_action( $timestamp, $hook, $args, $group );
35 return $this;
36 }
37
38 /**
39 * Schedule a recurring action
40 *
41 * @param int $timestamp When the first instance of the job will run.
42 * @param int $interval_in_seconds How long to wait between runs.
43 * @param string $hook The hook to trigger.
44 * @param array $args Arguments to pass when the hook triggers.
45 * @param string $group The group to assign this job to.
46 * @return string $this.
47 */
48 public function scheduleRecurring( $timestamp, $interval_in_seconds, $hook, $args = array(), $group = '' ) {
49 \as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args, $group );
50 return $this;
51 }
52
53 /**
54 * Schedule an action that recurs on a cron-like schedule.
55 *
56 * @param int $timestamp The schedule will start on or after this time.
57 * @param string $cron_schedule A cron-link schedule string.
58 * @see http://en.wikipedia.org/wiki/Cron
59 * * * * * * *
60 * ┬ ┬ ┬ ┬ ┬ ┬
61 * | | | | | |
62 * | | | | | + year [optional]
63 * | | | | +----- day of week (0 - 7) (Sunday=0 or 7)
64 * | | | +---------- month (1 - 12)
65 * | | +--------------- day of month (1 - 31)
66 * | +-------------------- hour (0 - 23)
67 * +------------------------- min (0 - 59)
68 * @param string $hook The hook to trigger.
69 * @param array $args Arguments to pass when the hook triggers.
70 * @param string $group The group to assign this job to.
71 * @return string $this
72 */
73 public function scheduleCron( $timestamp, $cron_schedule, $hook, $args = array(), $group = '' ) {
74 \as_schedule_cron_action( $timestamp, $cron_schedule, $hook, $args, $group );
75 return $this;
76 }
77
78 /**
79 * Dequeue the next scheduled instance of an action with a matching hook (and optionally matching args and group).
80 *
81 * Any recurring actions with a matching hook should also be cancelled, not just the next scheduled action.
82 *
83 * While technically only the next instance of a recurring or cron action is unscheduled by this method, that will also
84 * prevent all future instances of that recurring or cron action from being run. Recurring and cron actions are scheduled
85 * in a sequence instead of all being scheduled at once. Each successive occurrence of a recurring action is scheduled
86 * only after the former action is run. As the next instance is never run, because it's unscheduled by this function,
87 * then the following instance will never be scheduled (or exist), which is effectively the same as being unscheduled
88 * by this method also.
89 *
90 * @param string $hook The hook that the job will trigger.
91 * @param array $args Args that would have been passed to the job.
92 * @param string $group The group the job is assigned to (if any).
93 */
94 public function cancel( $hook, $args = array(), $group = '' ) {
95 \as_unschedule_action( $hook, $args, $group );
96 return $this;
97 }
98
99 /**
100 * Dequeue all actions with a matching hook (and optionally matching args and group) so no matching actions are ever run.
101 *
102 * @param string $hook The hook that the job will trigger.
103 * @param array $args Args that would have been passed to the job.
104 * @param string $group The group the job is assigned to (if any).
105 */
106 public function cancelAll( $hook, $args = array(), $group = '' ) {
107 \as_unschedule_all_actions( $hook, $args, $group );
108 return $this;
109 }
110
111 /**
112 * Get the date and time for the next scheduled occurrence of an action with a given hook
113 * (an optionally that matches certain args and group), if any.
114 *
115 * @param string $hook The hook that the job will trigger.
116 * @param array $args Filter to a hook with matching args that will be passed to the job when it runs.
117 * @param string $group Filter to only actions assigned to a specific group.
118 * @return DateTime|null The date and time for the next occurrence, or null if there is no pending, scheduled action for the given hook.
119 */
120 public function getNext( $hook, $args = null, $group = '' ) {
121 $next_timestamp = as_next_scheduled_action( $hook, $args, $group );
122
123 if ( is_numeric( $next_timestamp ) ) {
124 return new \DateTime( "@{$next_timestamp}", new \DateTimeZone( 'UTC' ) );
125 }
126
127 return null;
128 }
129
130 /**
131 * Find scheduled actions
132 *
133 * @param array $args Possible arguments, with their default values:
134 * 'hook' => '' - the name of the action that will be triggered
135 * 'args' => null - the args array that will be passed with the action
136 * 'date' => null - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
137 * 'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='
138 * 'modified' => null - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
139 * 'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='
140 * 'group' => '' - the group the action belongs to
141 * 'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
142 * 'claimed' => null - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID
143 * 'per_page' => 5 - Number of results to return
144 * 'offset' => 0
145 * 'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'
146 * 'order' => 'ASC'.
147 *
148 * @param string $return_format OBJECT, ARRAY_A, or ids.
149 * @return array
150 */
151 public function search( $args = array(), $return_format = OBJECT ) {
152 return \as_get_scheduled_actions( $args, $return_format );
153 }
154
155 /**
156 * Run the queue immedidately.
157 *
158 * @return void
159 */
160 public function run() {
161 do_action( 'action_scheduler_run_queue', 'SureCart Async Request' );
162 }
163 }
164