PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 / PaymentGateways / PayPalCommerce / Webhooks / WebhookChecker.php
give / src / PaymentGateways / PayPalCommerce / Webhooks Last commit date
Listeners 2 years ago WebhookChecker.php 2 years ago WebhookRegister.php 2 years ago
WebhookChecker.php
113 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Webhooks;
4
5 use Exception;
6 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
7 use Give\PaymentGateways\PayPalCommerce\Repositories\Webhooks;
8 use Give\Route\PayPalWebhooks as WebhooksRoute;
9 use Give_Admin_Settings;
10
11 class WebhookChecker
12 {
13 /**
14 * @since 2.9.0
15 *
16 * @var Webhooks
17 */
18 private $webhooksRepository;
19
20 /**
21 * @since 2.9.0
22 *
23 * @var WebhooksRoute
24 */
25 private $webhooksRoute;
26
27 /**
28 * @since 2.9.0
29 *
30 * @var WebhookRegister
31 */
32 private $webhookRegister;
33
34 /**
35 * @since 2.9.0
36 *
37 * @var MerchantDetail
38 */
39 private $merchantDetails;
40
41 /**
42 * WebhookChecker constructor.
43 *
44 * @since 2.9.0
45 *
46 * @param Webhooks $webhooksRepository
47 * @param MerchantDetail $merchantDetails
48 * @param WebhooksRoute $webhooksRoute
49 * @param WebhookRegister $webhookRegister
50 */
51 public function __construct(
52 Webhooks $webhooksRepository,
53 MerchantDetail $merchantDetails,
54 WebhooksRoute $webhooksRoute,
55 WebhookRegister $webhookRegister
56 ) {
57 $this->webhooksRepository = $webhooksRepository;
58 $this->merchantDetails = $merchantDetails;
59 $this->webhooksRoute = $webhooksRoute;
60 $this->webhookRegister = $webhookRegister;
61 }
62
63 /**
64 * Checks whether the webhook configuration has changed. If it has, then update the webhook with PayPal.
65 *
66 * @since 2.32.0 Remove second argument from updateWebhook function.
67 * @since 2.9.0
68 */
69 public function checkWebhookCriteria()
70 {
71 if (wp_doing_ajax() || wp_doing_cron()) {
72 return;
73 }
74
75 if ( ! $this->merchantDetails->accessToken) {
76 return;
77 }
78
79 $webhookConfig = $this->webhooksRepository->getWebhookConfig();
80
81 if ($webhookConfig === null) {
82 return;
83 }
84
85 $webhookUrl = $this->webhooksRoute->getRouteUrl();
86 $registeredEvents = $this->webhookRegister->getRegisteredEvents();
87
88 $hasMissingEvents = ! empty(
89 array_merge(
90 array_diff($registeredEvents, $webhookConfig->events),
91 array_diff($webhookConfig->events, $registeredEvents)
92 )
93 );
94
95 // Update the webhook if the return url or events have changed
96 if ($webhookUrl !== $webhookConfig->returnUrl || $hasMissingEvents) {
97 try {
98 $this->webhooksRepository->updateWebhook($webhookConfig->id);
99
100 $webhookConfig->returnUrl = $webhookUrl;
101 $webhookConfig->events = $registeredEvents;
102
103 $this->webhooksRepository->saveWebhookConfig($webhookConfig);
104 } catch (Exception $exception) {
105 Give_Admin_Settings::add_error(
106 'paypal-webhook-update-error',
107 'There was a problem updating your PayPal Donations webhook. Please disconnect your account and reconnect it.'
108 );
109 }
110 }
111 }
112 }
113