PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.2
Independent Analytics – WordPress Analytics Plugin v2.14.2
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 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Ecommerce / SureCart_Event_Sync_Job.php
independent-analytics / IAWP / Ecommerce Last commit date
EDD_Order.php 5 months ago Fluent_Cart_Order.php 5 months ago PMPro_Order.php 5 months ago SureCart_Event_Sync_Job.php 1 year ago SureCart_Order.php 5 months ago SureCart_Store.php 1 year ago WooCommerce_Order.php 5 months ago WooCommerce_Status_Manager.php 1 year ago
SureCart_Event_Sync_Job.php
59 lines
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