PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 256 releases
give / src / Framework / LegacyPaymentGateways / Adapters / LegacyPaymentGatewayRegisterAdapter.php

LegacyPaymentGatewayRegisterAdapter.php in GiveWP – Donation Plugin and Fundraising Platform 4.17.0, at src/Framework/LegacyPaymentGateways/Adapters/LegacyPaymentGatewayRegisterAdapter.php

102 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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