singleton(PaymentGatewayRegister::class); give()->singleton(WebhookRegister::class); give()->alias(PaymentGatewayRegister::class, 'gateways'); } /** * @inheritDoc */ public function boot() { $this->registerMigrations(); Hooks::addFilter('give_register_gateway', RegisterPaymentGateways::class); Hooks::addFilter('give_payment_gateways', RegisterPaymentGatewaySettingsList::class); Hooks::addAction('template_redirect', GatewayRoute::class); Hooks::addAction( 'wp_ajax_edit_stripe_account_statement_descriptor', UpdateStatementDescriptorAjaxRequestController::class ); /** * Stripe Checkout Redirect Handler */ Hooks::addAction('wp_footer', CheckoutGateway::class, 'maybeHandleRedirect', 99999); Hooks::addAction('give_embed_footer', CheckoutGateway::class, 'maybeHandleRedirect', 99999); $this->registerPayPalDonationsMigrationBanners(); $this->maybeHidePayPalStandard(); } /** * @since 3.0.0 add CopyV2GatewaysSettingsToV3 migration * @since 2.33.0 add RemovePaymentIntentSecretMeta migration * @since 2.19.6 */ private function registerMigrations() { give(MigrationsRegister::class)->addMigrations([ AddStatementDescriptorToStripeAccounts::class, AddMissingTransactionIdForUncompletedDonations::class, RemoveLogWithCardInfo::class, RemovePaymentIntentSecretMeta::class, RegisterPayPalDonationsRefreshTokenCronJobByMode::class, CopyV2GatewaysSettingsToV3::class, ]); } /** * This method registers the banners. * @since 2.33.0 * @return void */ private function registerPayPalDonationsMigrationBanners() { if (! is_admin()) { return; } // Banner for the migration from PayPal Standard to PayPal Donations. give(GatewaySettingPageBanner::class)->setupHook(); give(PayPalStandardToDonationsMigrationGlobalBanner::class)->setHook(); } /** * @since 4.1.0 */ private function maybeHidePayPalStandard() { if ( ! is_admin()) { return; } $isPayPalStandardConnected = is_email(give_get_option('paypal_email', false)); $alwaysShowPayPalStandardAdminOptions = defined('GIVE_ALWAYS_SHOW_PAYPAL_STANDARD_ADMIN_OPTIONS') && GIVE_ALWAYS_SHOW_PAYPAL_STANDARD_ADMIN_OPTIONS; add_filter('give_settings_payment_gateways_menu_groups', function ($groups) use ($isPayPalStandardConnected, $alwaysShowPayPalStandardAdminOptions) { if ($isPayPalStandardConnected || $alwaysShowPayPalStandardAdminOptions) { return $groups; } if (isset($groups['v2']['gateways']['paypal'])) { unset($groups['v2']['gateways']['paypal']); } if (isset($groups['v3']['gateways']['paypal'])) { unset($groups['v3']['gateways']['paypal']); } return $groups; }, 999 ); add_filter('give_get_groups_paypal', function ($groups) use ($isPayPalStandardConnected, $alwaysShowPayPalStandardAdminOptions) { if ($isPayPalStandardConnected || $alwaysShowPayPalStandardAdminOptions) { return $groups; } if (isset($groups['paypal'])) { unset($groups['paypal']); } return $groups; }, 999 ); } }