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_Order.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_Order.php
80 lines
1 <?php
2
3 namespace IAWP\Ecommerce;
4
5 use IAWP\Illuminate_Builder;
6 use IAWP\Models\Visitor;
7 use IAWP\Query;
8 use IAWP\Utils\Timezone;
9 use IAWPSCOPED\Illuminate\Support\Collection;
10 /** @internal */
11 class SureCart_Order
12 {
13 private $order_id;
14 private $status;
15 private $total;
16 private $total_refunded;
17 private $total_refunds;
18 private $is_discounted;
19 /**
20 * @param string $order_id SureCart order ID
21 */
22 public function __construct(string $order_id)
23 {
24 if (!\class_exists('\\SureCart\\Models\\Order') || !\class_exists('\\SureCart\\Models\\Refund')) {
25 return;
26 }
27 $order = \SureCart\Models\Order::with(['checkout', 'checkout.charges'])->find($order_id);
28 $this->order_id = $order_id;
29 $this->status = $order->checkout->status;
30 $this->total = $order->checkout->total_amount;
31 $this->total_refunded = \absint($order->checkout->refunded_amount);
32 $this->total_refunds = 0;
33 if ($this->total_refunded > 0) {
34 $refunds = \SureCart\Models\Refund::where(['charge_ids' => (new Collection($order->checkout->charges->data))->pluck('id')->toArray()])->get();
35 $this->total_refunds = \count($refunds);
36 }
37 $this->is_discounted = \absint($order->checkout->discount_amount) > 0 || \absint($order->checkout->total_savings_amount) > 0;
38 }
39 public function insert() : void
40 {
41 $visitor = Visitor::fetch_current_visitor();
42 if (!$visitor->has_recorded_session()) {
43 return;
44 }
45 $orders_table = Query::get_table_name(Query::ORDERS);
46 Illuminate_Builder::new()->from($orders_table)->insertOrIgnore(['is_included_in_analytics' => $this->status === 'paid', 'surecart_order_id' => $this->order_id, 'surecart_order_status' => $this->status, 'view_id' => $visitor->most_recent_view_id(), 'initial_view_id' => $visitor->most_recent_initial_view_id(), 'total' => $this->total, 'total_refunded' => $this->total_refunded, 'total_refunds' => $this->total_refunds, 'is_discounted' => $this->is_discounted, 'created_at' => (new \DateTime('now', Timezone::utc_timezone()))->format('Y-m-d H:i:s')]);
47 }
48 public function update() : void
49 {
50 $orders_table = Query::get_table_name(Query::ORDERS);
51 Illuminate_Builder::new()->from($orders_table)->where('surecart_order_id', '=', $this->order_id)->update(['is_included_in_analytics' => $this->status === 'paid', 'surecart_order_status' => $this->status, 'total' => $this->total, 'total_refunded' => $this->total_refunded, 'total_refunds' => $this->total_refunds, 'is_discounted' => $this->is_discounted]);
52 }
53 public static function register_hooks()
54 {
55 \add_action('surecart/purchase_created', function ($purchase) {
56 try {
57 $surecart_order = new self($purchase->getAttribute('initial_order'));
58 $surecart_order->insert();
59 } catch (\Throwable $e) {
60 \error_log('Independent Analytics was unable to track the analytics for a SureCart order. Please report this error to Independent Analytics. The error message is below.');
61 \error_log($e->getMessage());
62 }
63 }, 10, 1);
64 }
65 public static function update_order_using_charge_id(string $charge_id) : void
66 {
67 if (!\class_exists('\\SureCart\\Models\\Charge')) {
68 return;
69 }
70 $charge = \SureCart\Models\Charge::with(['checkout'])->find($charge_id);
71 $surecart_order = new self($charge->checkout->order);
72 $surecart_order->update();
73 }
74 public static function update_order_using_order_id(string $order_id) : void
75 {
76 $surecart_order = new self($order_id);
77 $surecart_order->update();
78 }
79 }
80