PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.1
Independent Analytics – WordPress Analytics Plugin v2.14.1
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 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 / Fluent_Cart_Order.php
independent-analytics / IAWP / Ecommerce Last commit date
EDD_Order.php 1 year ago Fluent_Cart_Order.php 9 months 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 7 months ago WooCommerce_Status_Manager.php 1 year ago
Fluent_Cart_Order.php
90 lines
1 <?php
2
3 namespace IAWP\Ecommerce;
4
5 use IAWP\Illuminate_Builder;
6 use IAWP\Models\Visitor;
7 use IAWP\Tables;
8 /** @internal */
9 class Fluent_Cart_Order
10 {
11 private $order_id;
12 private $status;
13 private $total;
14 private $total_refunded;
15 private $total_refunds;
16 private $is_discounted;
17 public function __construct(int $order_id)
18 {
19 $order = \FluentCart\App\Models\Order::find($order_id);
20 $this->order_id = $order_id;
21 $this->status = $order->payment_status;
22 $this->total = (int) $order->total_amount;
23 $this->total_refunded = (int) $order->getTotalRefundAmount();
24 $this->total_refunds = (int) $order->transactions()->where('transaction_type', 'refund')->count();
25 $this->is_discounted = $order->manual_discount_total > 0 || $order->coupon_discount_total > 0;
26 }
27 public function insert()
28 {
29 $visitor = Visitor::fetch_current_visitor();
30 if (!$visitor->has_recorded_session()) {
31 return;
32 }
33 Illuminate_Builder::new()->from(Tables::orders())->insertOrIgnore(['is_included_in_analytics' => $this->is_included_in_analytics($this->status), 'fluent_cart_order_id' => $this->order_id, 'fluent_cart_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')]);
34 }
35 public function update() : void
36 {
37 Illuminate_Builder::new()->from(Tables::orders())->where('fluent_cart_order_id', '=', $this->order_id)->update(['is_included_in_analytics' => $this->is_included_in_analytics($this->status), 'fluent_cart_order_status' => $this->status, 'total' => $this->total, 'total_refunded' => $this->total_refunded, 'total_refunds' => $this->total_refunds, 'is_discounted' => $this->is_discounted]);
38 }
39 private function is_included_in_analytics(string $status) : bool
40 {
41 return \in_array($status, ['paid', 'refunded', 'partially_refunded']);
42 }
43 public static function register_hooks() : void
44 {
45 // Track orders
46 \add_action('fluent_cart/order_created', function ($data) {
47 try {
48 $id = $data['order']->id;
49 $order = new self($id);
50 $order->insert();
51 } catch (\Throwable $e) {
52 \error_log('Independent Analytics was unable to track the analytics for a Fluent Cart order. Please report this error to Independent Analytics. The error message is below.');
53 \error_log($e->getMessage());
54 }
55 });
56 // Track order status changes
57 \add_action('fluent_cart/order_status_changed', function ($data) {
58 try {
59 $id = $data['order']->id;
60 $order = new self($id);
61 $order->update();
62 } catch (\Throwable $e) {
63 \error_log('Independent Analytics was unable to track the analytics for a Fluent Cart order. Please report this error to Independent Analytics. The error message is below.');
64 \error_log($e->getMessage());
65 }
66 });
67 // Track order refunds
68 \add_action('fluent_cart/order_fully_refunded', function ($data) {
69 try {
70 $id = $data['order']->id;
71 $order = new self($id);
72 $order->update();
73 } catch (\Throwable $e) {
74 \error_log('Independent Analytics was unable to track the analytics for a Fluent Cart order. Please report this error to Independent Analytics. The error message is below.');
75 \error_log($e->getMessage());
76 }
77 });
78 \add_action('fluent_cart/order_partially_refunded', function ($data) {
79 try {
80 $id = $data['order']->id;
81 $order = new self($id);
82 $order->update();
83 } catch (\Throwable $e) {
84 \error_log('Independent Analytics was unable to track the analytics for a Fluent Cart order. Please report this error to Independent Analytics. The error message is below.');
85 \error_log($e->getMessage());
86 }
87 });
88 }
89 }
90