PluginProbe
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz / 0.0.13
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz v0.0.13
2.12.8 2.12.7 2.12.6 2.12.5 2.12.4 2.12.3 2.12.2 2.12.1 2.12.0 2.11.1 2.11.0 2.10.1 2.10.0 2.9.1 2.9.0 2.8.2 2.8.1 2.7.0 2.7.1 2.8.0 trunk 0.0.10 0.0.11 0.0.12 0.0.13 All 98 releases
sureforms / inc / lib / action-scheduler / classes / migration / BatchFetcher.php

BatchFetcher.php in SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz 0.0.13, at inc/lib/action-scheduler/classes/migration/BatchFetcher.php

92 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace Action_Scheduler\Migration;
5
6 use ActionScheduler_Store as Store;
7
8 /**
9 * Class BatchFetcher
10 *
11 * @package Action_Scheduler\Migration
12 *
13 * @since 3.0.0
14 *
15 * @codeCoverageIgnore
16 */
17 class BatchFetcher {
18 /** var ActionScheduler_Store */
19 private $store;
20
21 /**
22 * BatchFetcher constructor.
23 *
24 * @param ActionScheduler_Store $source_store Source store object.
25 */
26 public function __construct( Store $source_store ) {
27 $this->store = $source_store;
28 }
29
30 /**
31 * Retrieve a list of actions.
32 *
33 * @param int $count The number of actions to retrieve
34 *
35 * @return int[] A list of action IDs
36 */
37 public function fetch( $count = 10 ) {
38 foreach ( $this->get_query_strategies( $count ) as $query ) {
39 $action_ids = $this->store->query_actions( $query );
40 if ( ! empty( $action_ids ) ) {
41 return $action_ids;
42 }
43 }
44
45 return [];
46 }
47
48 /**
49 * Generate a list of prioritized of action search parameters.
50 *
51 * @param int $count Number of actions to find.
52 *
53 * @return array
54 */
55 private function get_query_strategies( $count ) {
56 $now = as_get_datetime_object();
57 $args = [
58 'date' => $now,
59 'per_page' => $count,
60 'offset' => 0,
61 'orderby' => 'date',
62 'order' => 'ASC',
63 ];
64
65 $priorities = [
66 Store::STATUS_PENDING,
67 Store::STATUS_FAILED,
68 Store::STATUS_CANCELED,
69 Store::STATUS_COMPLETE,
70 Store::STATUS_RUNNING,
71 '', // any other unanticipated status
72 ];
73
74 foreach ( $priorities as $status ) {
75 yield wp_parse_args(
76 [
77 'status' => $status,
78 'date_compare' => '<=',
79 ],
80 $args
81 );
82 yield wp_parse_args(
83 [
84 'status' => $status,
85 'date_compare' => '>=',
86 ],
87 $args
88 );
89 }
90 }
91 }
92