PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.7
GiveWP – Donation Plugin and Fundraising Platform v2.19.7
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 / PaymentGateways / PaymentGatewayRegister.php
give / src / Framework / PaymentGateways Last commit date
Actions 4 years ago CommandHandlers 4 years ago Commands 4 years ago Contracts 4 years ago DataTransferObjects 4 years ago Exceptions 4 years ago Log 4 years ago Routes 4 years ago Traits 4 years ago DonationSummary.php 4 years ago PaymentGateway.php 4 years ago PaymentGatewayRegister.php 4 years ago
PaymentGatewayRegister.php
143 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 string
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 return $this->gateways[$id];
47 }
48
49 /**
50 * @since 2.18.0
51 *
52 * @param string $id
53 *
54 * @return bool
55 */
56 public function hasPaymentGateway($id)
57 {
58 return isset($this->gateways[$id]);
59 }
60
61 /**
62 * Register Gateway
63 *
64 * @since 2.18.0
65 *
66 * @param string $gatewayClass
67 *
68 * @throws OverflowException|InvalidArgumentException|Exception
69 */
70 public function registerGateway($gatewayClass)
71 {
72 if (!is_subclass_of($gatewayClass, PaymentGateway::class)) {
73 throw new InvalidArgumentException(
74 sprintf(
75 '%1$s must extend %2$s',
76 $gatewayClass,
77 PaymentGateway::class
78 )
79 );
80 }
81
82 $gatewayId = $gatewayClass::id();
83
84 if ($this->hasPaymentGateway($gatewayId)) {
85 throw new OverflowException("Cannot register a gateway with an id that already exists: $gatewayId");
86 }
87
88 $this->gateways[$gatewayId] = $gatewayClass;
89
90 $this->registerGatewayWithServiceContainer($gatewayClass, $gatewayId);
91
92 $this->afterGatewayRegister($gatewayClass);
93 }
94
95 /**
96 * Unregister Gateway
97 *
98 * @since 2.18.0
99 *
100 * @param $gatewayId
101 */
102 public function unregisterGateway($gatewayId)
103 {
104 if (isset($this->gateways[$gatewayId])) {
105 unset($this->gateways[$gatewayId]);
106 }
107 }
108
109 /**
110 *
111 * Register Gateway with Service Container as Singleton
112 * with option of adding Subscription Module through filter "give_gateway_{$gatewayId}_subscription_module"
113 *
114 * @since 2.18.0
115 *
116 * @param string $gatewayClass
117 * @param string $gatewayId
118 *
119 * @return void
120 */
121 private function registerGatewayWithServiceContainer($gatewayClass, $gatewayId)
122 {
123 give()->singleton($gatewayClass, function (Container $container) use ($gatewayClass, $gatewayId) {
124 $subscriptionModule = apply_filters("give_gateway_{$gatewayId}_subscription_module", null);
125
126 return new $gatewayClass($subscriptionModule ? $container->make($subscriptionModule) : null);
127 });
128 }
129
130 /**
131 * After gateway is registered, connect to legacy payment gateway adapter
132 *
133 * @param string $gatewayClass
134 */
135 private function afterGatewayRegister($gatewayClass)
136 {
137 /** @var LegacyPaymentGatewayRegisterAdapter $legacyPaymentGatewayRegisterAdapter */
138 $legacyPaymentGatewayRegisterAdapter = give(LegacyPaymentGatewayRegisterAdapter::class);
139
140 $legacyPaymentGatewayRegisterAdapter->connectGatewayToLegacyPaymentGatewayAdapter($gatewayClass);
141 }
142 }
143