PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.24.0
GiveWP – Donation Plugin and Fundraising Platform v2.24.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 / Framework / PaymentGateways / PaymentGatewayRegister.php
give / src / Framework / PaymentGateways Last commit date
Actions 4 years ago CommandHandlers 3 years ago Commands 3 years ago Contracts 3 years ago DataTransferObjects 3 years ago Exceptions 4 years ago Log 4 years ago Routes 3 years ago Traits 4 years ago DonationSummary.php 4 years ago PaymentGateway.php 3 years ago PaymentGatewayRegister.php 4 years ago SubscriptionModule.php 4 years ago
PaymentGatewayRegister.php
146 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways;
4
5 use Give\Container\Container;
6 use Give\Framework\Exceptions\Primitives\Exception;
7 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
8 use Give\Framework\LegacyPaymentGateways\Adapters\LegacyPaymentGatewayRegisterAdapter;
9 use Give\Framework\PaymentGateways\Contracts\PaymentGatewaysIterator;
10 use Give\Framework\PaymentGateways\Exceptions\OverflowException;
11
12 /**
13 * @since 2.18.0
14 */
15 class PaymentGatewayRegister extends PaymentGatewaysIterator
16 {
17 protected $gateways = [];
18
19 /**
20 * Get Gateways
21 *
22 * @since 2.18.0
23 *
24 * @return array
25 */
26 public function getPaymentGateways()
27 {
28 return $this->gateways;
29 }
30
31 /**
32 * Get Gateway
33 *
34 * @since 2.18.0
35 *
36 * @param string $id
37 *
38 * @return PaymentGateway
39 */
40 public function getPaymentGateway($id)
41 {
42 if (!$this->hasPaymentGateway($id)) {
43 throw new InvalidArgumentException("No gateway exists with the ID {$id}");
44 }
45
46 /** @var PaymentGateway $gateway */
47 $gateway = give($this->gateways[$id]);
48
49 return $gateway;
50 }
51
52 /**
53 * @since 2.18.0
54 *
55 * @param string $id
56 *
57 * @return bool
58 */
59 public function hasPaymentGateway($id)
60 {
61 return isset($this->gateways[$id]);
62 }
63
64 /**
65 * Register Gateway
66 *
67 * @since 2.18.0
68 *
69 * @param string $gatewayClass
70 *
71 * @throws OverflowException|InvalidArgumentException|Exception
72 */
73 public function registerGateway($gatewayClass)
74 {
75 if (!is_subclass_of($gatewayClass, PaymentGateway::class)) {
76 throw new InvalidArgumentException(
77 sprintf(
78 '%1$s must extend %2$s',
79 $gatewayClass,
80 PaymentGateway::class
81 )
82 );
83 }
84
85 $gatewayId = $gatewayClass::id();
86
87 if ($this->hasPaymentGateway($gatewayId)) {
88 throw new OverflowException("Cannot register a gateway with an id that already exists: $gatewayId");
89 }
90
91 $this->gateways[$gatewayId] = $gatewayClass;
92
93 $this->registerGatewayWithServiceContainer($gatewayClass, $gatewayId);
94
95 $this->afterGatewayRegister($gatewayClass);
96 }
97
98 /**
99 * Unregister Gateway
100 *
101 * @since 2.18.0
102 *
103 * @param $gatewayId
104 */
105 public function unregisterGateway($gatewayId)
106 {
107 if (isset($this->gateways[$gatewayId])) {
108 unset($this->gateways[$gatewayId]);
109 }
110 }
111
112 /**
113 *
114 * Register Gateway with Service Container as Singleton
115 * with option of adding Subscription Module through filter "give_gateway_{$gatewayId}_subscription_module"
116 *
117 * @since 2.18.0
118 *
119 * @param string $gatewayClass
120 * @param string $gatewayId
121 *
122 * @return void
123 */
124 private function registerGatewayWithServiceContainer($gatewayClass, $gatewayId)
125 {
126 give()->singleton($gatewayClass, function (Container $container) use ($gatewayClass, $gatewayId) {
127 $subscriptionModule = apply_filters("givewp_gateway_{$gatewayId}_subscription_module", null);
128
129 return new $gatewayClass($subscriptionModule ? $container->make($subscriptionModule) : null);
130 });
131 }
132
133 /**
134 * After gateway is registered, connect to legacy payment gateway adapter
135 *
136 * @param string $gatewayClass
137 */
138 private function afterGatewayRegister($gatewayClass)
139 {
140 /** @var LegacyPaymentGatewayRegisterAdapter $legacyPaymentGatewayRegisterAdapter */
141 $legacyPaymentGatewayRegisterAdapter = give(LegacyPaymentGatewayRegisterAdapter::class);
142
143 $legacyPaymentGatewayRegisterAdapter->connectGatewayToLegacyPaymentGatewayAdapter($gatewayClass);
144 }
145 }
146