PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 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.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / Support / Facades / ActionScheduler / AsBackgroundJobsFacade.php
give / src / Framework / Support / Facades / ActionScheduler Last commit date
AsBackgroundJobs.php 1 year ago AsBackgroundJobsFacade.php 1 year ago
AsBackgroundJobsFacade.php
123 lines
1 <?php
2
3 namespace Give\Framework\Support\Facades\ActionScheduler;
4
5 use ActionScheduler;
6
7 /**
8 * @see https://actionscheduler.org/
9 *
10 * @since 3.6.0
11 */
12 class AsBackgroundJobsFacade
13 {
14 /**
15 * @since 3.6.0
16 *
17 * @param string $hook The hook to trigger.
18 * @param array $args Arguments to pass when the hook triggers.
19 * @param string $group The group to assign this job to.
20 * @param bool $unique Whether the action should be unique.
21 * @param int $priority Lower values take precedence over higher values. Defaults to 10, with acceptable values falling in the range 0-255.
22 *
23 * @return int The action ID. Zero if there was an error scheduling the action.
24 */
25 public function enqueueAsyncAction(
26 string $hook,
27 array $args,
28 string $group,
29 bool $unique = false,
30 int $priority = 10
31 ): int {
32 /**
33 * We are checking if an action with the same hook, args, and group already was enqueued previously
34 * to prevent duplicated jobs. IMPORTANT: this is different from the $unique parameter which is used
35 * only to restrict the creation of multiple actions with the same hook.
36 */
37 $enqueuedAction = $this->getActionByHookArgsGroup($hook, $args, $group, 'ids');
38 if (empty($enqueuedAction)) {
39 return as_enqueue_async_action($hook, $args, $group, $unique, $priority);
40 } else {
41 return $enqueuedAction[0];
42 }
43 }
44
45 /**
46 * @since 3.6.0
47 *
48 * @param string $hook The hook to trigger.
49 * @param array $args Arguments to pass when the hook triggers.
50 * @param string $group The group to assign this job to.
51 * @param string $returnFormat OBJECT, ARRAY_A, or ids.
52 * @param string $status ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
53 *
54 * @return array
55 */
56 public function getActionByHookArgsGroup(
57 string $hook,
58 array $args,
59 string $group,
60 string $returnFormat = OBJECT,
61 string $status = ''
62 ): array {
63 $args = [
64 'hook' => $hook,
65 'args' => $args,
66 'group' => $group,
67 'per_page' => 1,
68 ];
69
70 if ( ! empty($status)) {
71 $args['status'] = $status;
72 }
73
74 return as_get_scheduled_actions($args, $returnFormat);
75 }
76
77 /**
78 * @since 3.6.0
79 * @since 4.0.0 - switch parameter $status position with $returnFormat position
80 *
81 * @param string $group The group to assign this job to.
82 * @param string $status ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
83 * @param string $returnFormat OBJECT, ARRAY_A, or ids.
84 *
85 * @return array
86 */
87 public function getActionsByGroup(string $group, string $status = '', string $returnFormat = OBJECT): array
88 {
89 $args = [
90 'group' => $group,
91 'per_page' => 0,
92 'order' => 'DESC',
93 ];
94
95 if ( ! empty($status)) {
96 $args['status'] = $status;
97 }
98
99 return as_get_scheduled_actions($args, $returnFormat);
100 }
101
102 /**
103 * @since 3.6.0
104 *
105 * @param string $group The group to assign this job to.
106 * @param string $status ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
107 *
108 * @return int Total deleted actions.
109 */
110 public function deleteActionsByGroup(string $group, string $status = ''): int
111 {
112 $actions = $this->getActionsByGroup($group, $status, 'ids');
113
114 $deletedActions = 0;
115 foreach ($actions as $actionID) {
116 ActionScheduler::store()->delete_action($actionID);
117 $deletedActions++;
118 }
119
120 return $deletedActions;
121 }
122 }
123