PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.31.0
GiveWP – Donation Plugin and Fundraising Platform v2.31.0
4.16.3 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 / Framework / LegacyPaymentGateways / Adapters / LegacyPaymentGatewayRegisterAdapter.php
give / src / Framework / LegacyPaymentGateways / Adapters Last commit date
LegacyPaymentGatewayRegisterAdapter.php 3 years ago
LegacyPaymentGatewayRegisterAdapter.php
137 lines
1 <?php
2
3 namespace Give\Framework\LegacyPaymentGateways\Adapters;
4
5 use Exception;
6 use Give\Framework\PaymentGateways\PaymentGateway;
7 use Give\LegacyPaymentGateways\Adapters\LegacyPaymentGatewayAdapter;
8
9 class LegacyPaymentGatewayRegisterAdapter
10 {
11 /**
12 * Run the necessary legacy hooks on our LegacyPaymentGatewayAdapter
13 * that prepares data to be sent to each gateway
14 *
15 * @since 2.30.0 check for getLegacyFormFieldMarkup before attempting to use
16 *
17 * @since 2.19.0
18 * @throws Exception
19 */
20 public function connectGatewayToLegacyPaymentGatewayAdapter(string $gatewayClass)
21 {
22 /** @var LegacyPaymentGatewayAdapter $legacyPaymentGatewayAdapter */
23 $legacyPaymentGatewayAdapter = give(LegacyPaymentGatewayAdapter::class);
24
25 /** @var PaymentGateway $registeredGateway */
26 $registeredGateway = give($gatewayClass);
27 $registeredGatewayId = $registeredGateway::id();
28
29 if (method_exists($registeredGateway, 'getLegacyFormFieldMarkup')) {
30 add_action(
31 "give_{$registeredGatewayId}_cc_form",
32 static function ($formId, $args) use ($registeredGateway, $legacyPaymentGatewayAdapter) {
33 echo $legacyPaymentGatewayAdapter->getLegacyFormFieldMarkup($formId, $args, $registeredGateway);
34 },
35 10,
36 2
37 );
38 }
39
40 add_action(
41 "give_gateway_{$registeredGatewayId}",
42 static function ($legacyPaymentData) use ($registeredGateway, $legacyPaymentGatewayAdapter) {
43 $legacyPaymentGatewayAdapter->handleBeforeGateway(give_clean($legacyPaymentData), $registeredGateway);
44 }
45 );
46
47 if ($registeredGateway->supportsRefund()) {
48 add_action(
49 "give_view_donation_details_totals_after",
50 static function (int $donationId) use ($registeredGateway, $legacyPaymentGatewayAdapter) {
51 $legacyPaymentGatewayAdapter->addOptRefundCheckbox($donationId, $registeredGateway);
52 },
53 PHP_INT_MAX // Ensure this will be the last callback registered to this hook.
54 );
55 add_action(
56 "give_update_payment_status",
57 static function (int $donationId, string $newStatus, string $oldStatus) use (
58 $registeredGateway,
59 $legacyPaymentGatewayAdapter
60 ) {
61 $legacyPaymentGatewayAdapter->maybeRefundOnGateway($donationId, $newStatus, $oldStatus,
62 $registeredGateway);
63 },
64 11,
65 3
66 );
67 }
68 }
69
70 /**
71 * Adds new payment gateways to legacy list for settings
72 *
73 * @since 2.30.0 update admin_label to include version compatibility
74 * @since 2.25.0 add is_visible key to $gatewayData
75 * @since 2.19.0
76 */
77 public function addNewPaymentGatewaysToLegacyListSettings(array $gatewaysData, array $newPaymentGateways): array
78 {
79 foreach ($newPaymentGateways as $gatewayClassName) {
80 /* @var PaymentGateway $paymentGateway */
81 $paymentGateway = give($gatewayClassName);
82
83 $gatewaysData[$paymentGateway::id()] = [
84 'admin_label' => $paymentGateway->getName(),
85 'checkout_label' => $paymentGateway->getPaymentMethodLabel(),
86 'is_visible' => $this->supportsV2Forms($paymentGateway),
87 ];
88 }
89
90 return $gatewaysData;
91 }
92
93 /**
94 * @since 2.30.0 check if v2 compatible
95 * @since 2.25.0
96 */
97 public function supportsV2Forms(PaymentGateway $gateway): bool
98 {
99 return in_array(2, $gateway->supportsFormVersions(), true);
100 }
101
102 /**
103 * @since 2.30.0
104 */
105 public function getRegisteredGatewayAdminLabelWithSupportedFormVersion(PaymentGateway $gateway): string
106 {
107 $name = $gateway->getName();
108 $version = in_array(2, $gateway->supportsFormVersions(), true) && !in_array(
109 3,
110 $gateway->supportsFormVersions(),
111 true
112 ) ? "*(v2)" : '';
113
114 return trim("$name $version");
115 }
116
117 /**
118 * Update the admin label for gateways to display version compatibility
119 *
120 * @since 2.30.0
121 */
122 public function updatePaymentGatewayAdminLabelsWithSupportedFormVersions(string $label, string $gatewayId): string
123 {
124 $version = "*(v2)";
125
126 $gateway = give()->gateways->hasPaymentGateway($gatewayId) ? give()->gateways->getPaymentGateway(
127 $gatewayId
128 ) : false;
129
130 if (!$gateway) {
131 return trim("$label $version");
132 }
133
134 return $this->getRegisteredGatewayAdminLabelWithSupportedFormVersion($gateway);
135 }
136 }
137