PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.35.1
MailPoet – Newsletters, Email Marketing, and Automation v5.35.1
5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / Automation / Integrations / WooCommerce / Payloads / CustomerPayload.php
mailpoet / lib / Automation / Integrations / WooCommerce / Payloads Last commit date
AbandonedCartPayload.php 2 years ago CustomerPayload.php 1 year ago OrderPayload.php 1 year ago OrderStatusChangePayload.php 3 years ago index.php 3 years ago
CustomerPayload.php
145 lines
1 <?php declare(strict_types = 1);
2
3 namespace MailPoet\Automation\Integrations\WooCommerce\Payloads;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Automation\Engine\Integration\Payload;
9 use WC_Customer;
10 use WC_Order;
11
12 class CustomerPayload implements Payload {
13 private ?WC_Customer $customer;
14 private ?WC_Order $order;
15
16 public function __construct(
17 ?WC_Customer $customer = null,
18 ?WC_Order $order = null
19 ) {
20 $this->customer = $customer;
21 $this->order = $order;
22 }
23
24 public function getBillingCompany(): ?string {
25 if ($this->isGuest()) {
26 return $this->order ? (string)$this->order->get_billing_company() : null;
27 }
28 return (string)$this->customer->get_billing_company();
29 }
30
31 public function getBillingPhone(): ?string {
32 if ($this->isGuest()) {
33 return $this->order ? (string)$this->order->get_billing_phone() : null;
34 }
35 return (string)$this->customer->get_billing_phone();
36 }
37
38 public function getBillingCity(): ?string {
39 if ($this->isGuest()) {
40 return $this->order ? (string)$this->order->get_billing_city() : null;
41 }
42 return (string)$this->customer->get_billing_city();
43 }
44
45 public function getBillingPostcode(): ?string {
46 if ($this->isGuest()) {
47 return $this->order ? (string)$this->order->get_billing_postcode() : null;
48 }
49 return (string)$this->customer->get_billing_postcode();
50 }
51
52 public function getBillingState(): ?string {
53 if ($this->isGuest()) {
54 return $this->order ? (string)$this->order->get_billing_state() : null;
55 }
56 return (string)$this->customer->get_billing_state();
57 }
58
59 public function getBillingCountry(): ?string {
60 if ($this->isGuest()) {
61 return $this->order ? (string)$this->order->get_billing_country() : null;
62 }
63 return (string)$this->customer->get_billing_country();
64 }
65
66 public function getShippingCompany(): ?string {
67 if ($this->isGuest()) {
68 return $this->order ? (string)$this->order->get_shipping_company() : null;
69 }
70 return (string)$this->customer->get_shipping_company();
71 }
72
73 public function getShippingPhone(): ?string {
74 if ($this->isGuest()) {
75 return $this->order ? (string)$this->order->get_shipping_phone() : null;
76 }
77 return (string)$this->customer->get_shipping_phone();
78 }
79
80 public function getShippingCity(): ?string {
81 if ($this->isGuest()) {
82 return $this->order ? (string)$this->order->get_shipping_city() : null;
83 }
84 return (string)$this->customer->get_shipping_city();
85 }
86
87 public function getShippingPostcode(): ?string {
88 if ($this->isGuest()) {
89 return $this->order ? (string)$this->order->get_shipping_postcode() : null;
90 }
91 return (string)$this->customer->get_shipping_postcode();
92 }
93
94 public function getShippingState(): ?string {
95 if ($this->isGuest()) {
96 return $this->order ? (string)$this->order->get_shipping_state() : null;
97 }
98 return (string)$this->customer->get_shipping_state();
99 }
100
101 public function getShippingCountry(): ?string {
102 if ($this->isGuest()) {
103 return $this->order ? (string)$this->order->get_shipping_country() : null;
104 }
105 return (string)$this->customer->get_shipping_country();
106 }
107
108 public function getTotalSpent(): float {
109 if ($this->isGuest()) {
110 return $this->order && $this->order->is_paid() ? (float)$this->order->get_total() : 0.0;
111 }
112 return (float)$this->customer->get_total_spent();
113 }
114
115 public function getAverageSpent(): float {
116 $totalSpent = $this->getTotalSpent();
117 $orderCount = $this->getOrderCount();
118 return $orderCount > 0 ? ($totalSpent / $orderCount) : 0.0;
119 }
120
121 public function getOrderCount(): int {
122 if ($this->isGuest()) {
123 return $this->order ? 1 : 0;
124 }
125 return (int)$this->customer->get_order_count();
126 }
127
128 public function getCustomer(): ?WC_Customer {
129 return $this->customer;
130 }
131
132 public function getOrder(): ?WC_Order {
133 return $this->order;
134 }
135
136 public function getId(): int {
137 return $this->customer ? $this->customer->get_id() : 0;
138 }
139
140 /** @phpstan-assert-if-true null $this->customer */
141 public function isGuest(): bool {
142 return $this->customer === null;
143 }
144 }
145