PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.9.0
GiveWP – Donation Plugin and Fundraising Platform v4.9.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Subscriptions / ViewModels / SubscriptionViewModel.php
give / src / Subscriptions / ViewModels Last commit date
SubscriptionViewModel.php 9 months ago
SubscriptionViewModel.php
121 lines
1 <?php
2
3 namespace Give\Subscriptions\ViewModels;
4
5 use Give\API\REST\V3\Routes\Donors\ValueObjects\DonorAnonymousMode;
6 use Give\Framework\PaymentGateways\Contracts\Subscription\SubscriptionTransactionsSynchronizable;
7 use Give\Framework\PaymentGateways\PaymentGatewayRegister;
8 use Give\Subscriptions\Models\Subscription;
9
10 /**
11 * @since 4.8.0
12 */
13 class SubscriptionViewModel
14 {
15 private Subscription $subscription;
16
17 private DonorAnonymousMode $anonymousMode;
18
19 private bool $includeSensitiveData = false;
20
21 /**
22 * @since 4.8.0
23 */
24 public function __construct(Subscription $subscription)
25 {
26 $this->subscription = $subscription;
27 }
28
29 /**
30 * @since 4.8.0
31 */
32 public function includeSensitiveData(bool $includeSensitiveData = true): SubscriptionViewModel
33 {
34 $this->includeSensitiveData = $includeSensitiveData;
35
36 return $this;
37 }
38
39 /**
40 * @since 4.8.0
41 */
42 public function anonymousMode(DonorAnonymousMode $mode): SubscriptionViewModel
43 {
44 $this->anonymousMode = $mode;
45
46 return $this;
47 }
48
49 /**
50 * @since 4.8.0
51 */
52 public function exports(): array
53 {
54 $donor = $this->subscription->donor;
55
56 $data = array_merge(
57 $this->subscription->toArray(),
58 [
59 'firstName' => $donor ? $donor->firstName : '',
60 'lastName' => $donor ? $donor->lastName : '',
61 'gateway' => $this->getGatewayDetails(),
62 'projectedAnnualRevenue' => $this->subscription->projectedAnnualRevenue(),
63 ]
64 );
65
66 if (!$this->includeSensitiveData) {
67 $sensitiveDataExcluded = [
68 'transactionId',
69 'gatewaySubscriptionId',
70 ];
71
72 foreach ($sensitiveDataExcluded as $propertyName) {
73 switch ($propertyName) {
74 default:
75 $data[$propertyName] = '';
76 break;
77 }
78 }
79 }
80
81 if (isset($this->anonymousMode) && $this->anonymousMode->isRedacted() && $this->subscription->donor->isAnonymous()) {
82 $anonymousDataRedacted = [
83 'donorId',
84 'firstName',
85 'lastName',
86 ];
87
88 foreach ($anonymousDataRedacted as $propertyName) {
89 switch ($propertyName) {
90 case 'donorId':
91 $data[$propertyName] = 0;
92 break;
93 default:
94 $data[$propertyName] = __('anonymous', 'give');
95 break;
96 }
97 }
98 }
99
100 return $data;
101 }
102
103 /**
104 * @since 4.8.0
105 */
106 private function getGatewayDetails(): ?array
107 {
108 if (empty($this->subscription->gatewayId) || !give(PaymentGatewayRegister::class)->hasPaymentGateway($this->subscription->gatewayId)) {
109 return null;
110 }
111
112 return array_merge(
113 $this->subscription->gateway()->toArray(),
114 [
115 'subscriptionUrl' => $this->subscription->gateway()->gatewayDashboardSubscriptionUrl($this->subscription),
116 'canSync' => $this->subscription->gateway()->subscriptionModule instanceof SubscriptionTransactionsSynchronizable
117 ]
118 );
119 }
120 }
121