PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.8.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.8.1
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 2.30.0 All 255 releases
give / src / PaymentGateways / ServiceProvider.php

ServiceProvider.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.8.1, at src/PaymentGateways/ServiceProvider.php

150 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\PaymentGateways;
4
5 use Give\Framework\Migrations\MigrationsRegister;
6 use Give\Framework\PaymentGateways\PaymentGatewayRegister;
7 use Give\Framework\PaymentGateways\Routes\GatewayRoute;
8 use Give\Helpers\Hooks;
9 use Give\LegacyPaymentGateways\Actions\RegisterPaymentGatewaySettingsList;
10 use Give\PaymentGateways\Actions\RegisterPaymentGateways;
11 use Give\PaymentGateways\Gateways\PayPalStandard\Webhooks\WebhookRegister;
12 use Give\PaymentGateways\Gateways\Stripe\CheckoutGateway;
13 use Give\PaymentGateways\Gateways\Stripe\Controllers\UpdateStatementDescriptorAjaxRequestController;
14 use Give\PaymentGateways\Gateways\Stripe\Migrations\AddMissingTransactionIdForUncompletedDonations;
15 use Give\PaymentGateways\Gateways\Stripe\Migrations\AddStatementDescriptorToStripeAccounts;
16 use Give\PaymentGateways\Gateways\Stripe\Migrations\RemovePaymentIntentSecretMeta;
17 use Give\PaymentGateways\Migrations\CopyV2GatewaysSettingsToV3;
18 use Give\PaymentGateways\PayPalCommerce\Banners\GatewaySettingPageBanner;
19 use Give\PaymentGateways\PayPalCommerce\Banners\PayPalStandardToDonationsMigrationGlobalBanner;
20 use Give\PaymentGateways\PayPalCommerce\Migrations\RegisterPayPalDonationsRefreshTokenCronJobByMode;
21 use Give\PaymentGateways\PayPalCommerce\Migrations\RemoveLogWithCardInfo;
22 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
23
24 /**
25 * Class ServiceProvider - PaymentGateways
26 *
27 * The Service Provider for loading the Payment Gateways for Payment Flow 2.0
28 *
29 * @since 2.18.0
30 */
31 class ServiceProvider implements ServiceProviderInterface
32 {
33 /**
34 * @inheritDoc
35 */
36 public function register()
37 {
38 give()->singleton(PaymentGatewayRegister::class);
39 give()->singleton(WebhookRegister::class);
40 give()->alias(PaymentGatewayRegister::class, 'gateways');
41 }
42
43 /**
44 * @inheritDoc
45 */
46 public function boot()
47 {
48 $this->registerMigrations();
49
50 Hooks::addFilter('give_register_gateway', RegisterPaymentGateways::class);
51 Hooks::addFilter('give_payment_gateways', RegisterPaymentGatewaySettingsList::class);
52
53 Hooks::addAction('template_redirect', GatewayRoute::class);
54 Hooks::addAction(
55 'wp_ajax_edit_stripe_account_statement_descriptor',
56 UpdateStatementDescriptorAjaxRequestController::class
57 );
58
59 /**
60 * Stripe Checkout Redirect Handler
61 */
62 Hooks::addAction('wp_footer', CheckoutGateway::class, 'maybeHandleRedirect', 99999);
63 Hooks::addAction('give_embed_footer', CheckoutGateway::class, 'maybeHandleRedirect', 99999);
64
65 $this->registerPayPalDonationsMigrationBanners();
66 $this->maybeHidePayPalStandard();
67 }
68
69 /**
70 * @since 3.0.0 add CopyV2GatewaysSettingsToV3 migration
71 * @since 2.33.0 add RemovePaymentIntentSecretMeta migration
72 * @since 2.19.6
73 */
74 private function registerMigrations()
75 {
76 give(MigrationsRegister::class)->addMigrations([
77 AddStatementDescriptorToStripeAccounts::class,
78 AddMissingTransactionIdForUncompletedDonations::class,
79 RemoveLogWithCardInfo::class,
80 RemovePaymentIntentSecretMeta::class,
81 RegisterPayPalDonationsRefreshTokenCronJobByMode::class,
82 CopyV2GatewaysSettingsToV3::class,
83 ]);
84 }
85
86 /**
87 * This method registers the banners.
88 * @since 2.33.0
89 * @return void
90 */
91 private function registerPayPalDonationsMigrationBanners()
92 {
93 if (! is_admin()) {
94 return;
95 }
96
97 // Banner for the migration from PayPal Standard to PayPal Donations.
98 give(GatewaySettingPageBanner::class)->setupHook();
99 give(PayPalStandardToDonationsMigrationGlobalBanner::class)->setHook();
100 }
101
102 /**
103 * @since 4.1.0
104 */
105 private function maybeHidePayPalStandard()
106 {
107 if ( ! is_admin()) {
108 return;
109 }
110
111 $isPayPalStandardConnected = is_email(give_get_option('paypal_email', false));
112 $alwaysShowPayPalStandardAdminOptions = defined('GIVE_ALWAYS_SHOW_PAYPAL_STANDARD_ADMIN_OPTIONS') && GIVE_ALWAYS_SHOW_PAYPAL_STANDARD_ADMIN_OPTIONS;
113
114
115 add_filter('give_settings_payment_gateways_menu_groups',
116 function ($groups) use ($isPayPalStandardConnected, $alwaysShowPayPalStandardAdminOptions) {
117 if ($isPayPalStandardConnected || $alwaysShowPayPalStandardAdminOptions) {
118 return $groups;
119 }
120
121 if (isset($groups['v2']['gateways']['paypal'])) {
122 unset($groups['v2']['gateways']['paypal']);
123 }
124
125 if (isset($groups['v3']['gateways']['paypal'])) {
126 unset($groups['v3']['gateways']['paypal']);
127 }
128
129 return $groups;
130 },
131 999
132 );
133
134 add_filter('give_get_groups_paypal',
135 function ($groups) use ($isPayPalStandardConnected, $alwaysShowPayPalStandardAdminOptions) {
136 if ($isPayPalStandardConnected || $alwaysShowPayPalStandardAdminOptions) {
137 return $groups;
138 }
139
140 if (isset($groups['paypal'])) {
141 unset($groups['paypal']);
142 }
143
144 return $groups;
145 },
146 999
147 );
148 }
149 }
150