PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.11.3
Independent Analytics – WordPress Analytics Plugin v2.11.3
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / IAWP / Ecommerce / SureCart_Event_Sync_Job.php
SureCart_Event_Sync_Job.php
59 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Ecommerce;
4
5 use IAWP\Cron_Job;
6 use IAWPSCOPED\Illuminate\Support\Collection;
7 /** @internal */
8 class SureCart_Event_Sync_Job extends Cron_Job
9 {
10 protected $name = 'iawp_surecart_event_syncing';
11 protected $interval = 'five_minutes';
12 public function should_execute_handler() : bool
13 {
14 return \IAWPSCOPED\iawp()->is_surecart_support_enabled();
15 }
16 public function handle() : void
17 {
18 $one_day_ago = \time() - 86400;
19 $last_seen_event_at = \get_option('iawp_last_seen_surecart_event_at', $one_day_ago);
20 $events = new Collection();
21 $page = 1;
22 while (\true) {
23 // If an event is older than the last one we've seen, then we have all the events we need
24 if ($events->isNotEmpty() && $events->last()->created_at < $last_seen_event_at) {
25 break;
26 }
27 if (!\class_exists('\\SureCart\\Models\\Event')) {
28 break;
29 }
30 $page_of_events = \SureCart\Models\Event::where(['type' => ['refund.succeeded', 'purchase.created'], 'limit' => 100, 'page' => $page])->get();
31 if (\is_wp_error($page_of_events) || \count($page_of_events) === 0) {
32 break;
33 }
34 $events = $events->concat($page_of_events);
35 $page = $page + 1;
36 }
37 if ($events->isNotEmpty()) {
38 \update_option('iawp_last_seen_surecart_event_at', $events->first()->created_at);
39 }
40 $events = $events->filter(function ($event) use($last_seen_event_at) {
41 return $event->created_at > $last_seen_event_at;
42 });
43 $events->filter(function ($event) {
44 return $event->type === 'refund.succeeded';
45 })->map(function ($event) {
46 return $event->data->object->charge;
47 })->unique()->each(function ($charge_id) {
48 \IAWP\Ecommerce\SureCart_Order::update_order_using_charge_id($charge_id);
49 });
50 $events->filter(function ($event) {
51 return $event->type === 'purchase.created';
52 })->map(function ($event) {
53 return $event->data->object->initial_order;
54 })->unique()->each(function ($order_id) {
55 \IAWP\Ecommerce\SureCart_Order::update_order_using_order_id($order_id);
56 });
57 }
58 }
59