PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.12.2
Independent Analytics – WordPress Analytics Plugin v2.12.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 1 year ago PMPro_Order.php 1 year ago SureCart_Event_Sync_Job.php 1 year ago SureCart_Order.php 1 year ago SureCart_Store.php 1 year ago WooCommerce_Order.php 1 year ago WooCommerce_Referrer_Meta_Box.php 1 year ago WooCommerce_Status_Manager.php 1 year ago
SureCart_Order.php
79 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 IAWPSCOPED\Illuminate\Support\Collection;
9 /** @internal */
10 class SureCart_Order
11 {
12 private $order_id;
13 private $status;
14 private $total;
15 private $total_refunded;
16 private $total_refunds;
17 private $is_discounted;
18 /**
19 * @param string $order_id SureCart order ID
20 */
21 public function __construct(string $order_id)
22 {
23 if (!\class_exists('\\SureCart\\Models\\Order') || !\class_exists('\\SureCart\\Models\\Refund')) {
24 return;
25 }
26 $order = \SureCart\Models\Order::with(['checkout', 'checkout.charges'])->find($order_id);
27 $this->order_id = $order_id;
28 $this->status = $order->checkout->status;
29 $this->total = $order->checkout->total_amount;
30 $this->total_refunded = \absint($order->checkout->refunded_amount);
31 $this->total_refunds = 0;
32 if ($this->total_refunded > 0) {
33 $refunds = \SureCart\Models\Refund::where(['charge_ids' => (new Collection($order->checkout->charges->data))->pluck('id')->toArray()])->get();
34 $this->total_refunds = \count($refunds);
35 }
36 $this->is_discounted = \absint($order->checkout->discount_amount) > 0 || \absint($order->checkout->total_savings_amount) > 0;
37 }
38 public function insert() : void
39 {
40 $visitor = Visitor::fetch_current_visitor();
41 if (!$visitor->has_recorded_session()) {
42 return;
43 }
44 $orders_table = Query::get_table_name(Query::ORDERS);
45 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())->format('Y-m-d H:i:s')]);
46 }
47 public function update() : void
48 {
49 $orders_table = Query::get_table_name(Query::ORDERS);
50 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]);
51 }
52 public static function register_hooks()
53 {
54 \add_action('surecart/purchase_created', function ($purchase) {
55 try {
56 $surecart_order = new self($purchase->getAttribute('initial_order'));
57 $surecart_order->insert();
58 } catch (\Throwable $e) {
59 \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.');
60 \error_log($e->getMessage());
61 }
62 }, 10, 1);
63 }
64 public static function update_order_using_charge_id(string $charge_id) : void
65 {
66 if (!\class_exists('\\SureCart\\Models\\Charge')) {
67 return;
68 }
69 $charge = \SureCart\Models\Charge::with(['checkout'])->find($charge_id);
70 $surecart_order = new self($charge->checkout->order);
71 $surecart_order->update();
72 }
73 public static function update_order_using_order_id(string $order_id) : void
74 {
75 $surecart_order = new self($order_id);
76 $surecart_order->update();
77 }
78 }
79