mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
delete webhook when resetting settings
This commit is contained in:
parent
687b7b7606
commit
7dcc979461
2 changed files with 30 additions and 4 deletions
|
@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||||
namespace Inpsyde\PayPalCommerce\WcGateway\Settings;
|
namespace Inpsyde\PayPalCommerce\WcGateway\Settings;
|
||||||
|
|
||||||
use Inpsyde\PayPalCommerce\Onboarding\State;
|
use Inpsyde\PayPalCommerce\Onboarding\State;
|
||||||
|
use Inpsyde\PayPalCommerce\Webhooks\WebhookRegistrar;
|
||||||
|
|
||||||
class SettingsListener
|
class SettingsListener
|
||||||
{
|
{
|
||||||
|
@ -12,10 +13,15 @@ class SettingsListener
|
||||||
public const NONCE = 'ppcp-settings';
|
public const NONCE = 'ppcp-settings';
|
||||||
private $settings;
|
private $settings;
|
||||||
private $settingFields;
|
private $settingFields;
|
||||||
public function __construct(Settings $settings, array $settingFields)
|
private $webhookRegistrar;
|
||||||
{
|
public function __construct(
|
||||||
|
Settings $settings,
|
||||||
|
array $settingFields,
|
||||||
|
WebhookRegistrar $webhookRegistrar
|
||||||
|
) {
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
$this->settingFields = $settingFields;
|
$this->settingFields = $settingFields;
|
||||||
|
$this->webhookRegistrar = $webhookRegistrar;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function listen()
|
public function listen()
|
||||||
|
@ -32,6 +38,7 @@ class SettingsListener
|
||||||
if (isset($_POST['save']) && sanitize_text_field(wp_unslash($_POST['save'])) === 'reset') {
|
if (isset($_POST['save']) && sanitize_text_field(wp_unslash($_POST['save'])) === 'reset') {
|
||||||
$this->settings->reset();
|
$this->settings->reset();
|
||||||
$this->settings->persist();
|
$this->settings->persist();
|
||||||
|
$this->webhookRegistrar->unregister();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,9 +81,10 @@ class SettingsListener
|
||||||
$settings[$key] = $valuesToSave;
|
$settings[$key] = $valuesToSave;
|
||||||
break;
|
break;
|
||||||
case 'select':
|
case 'select':
|
||||||
|
$options = array_keys($config['options']);
|
||||||
$settings[$key] = isset($rawData[$key]) && in_array(
|
$settings[$key] = isset($rawData[$key]) && in_array(
|
||||||
sanitize_text_field($rawData[$key]),
|
sanitize_text_field($rawData[$key]),
|
||||||
$config['options'],
|
$options,
|
||||||
true
|
true
|
||||||
) ? sanitize_text_field($rawData[$key]) : null;
|
) ? sanitize_text_field($rawData[$key]) : null;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -41,7 +41,7 @@ class WebhookRegistrar
|
||||||
}
|
}
|
||||||
update_option(
|
update_option(
|
||||||
self::KEY,
|
self::KEY,
|
||||||
$webhook->toArray()
|
$created->toArray()
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
} catch (RuntimeException $error) {
|
} catch (RuntimeException $error) {
|
||||||
|
@ -52,4 +52,22 @@ class WebhookRegistrar
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function unregister() : bool {
|
||||||
|
$data = (array) get_option(self::KEY, []);
|
||||||
|
if (! $data) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$webhook = $this->webhookFactory->fromArray($data);
|
||||||
|
$success = $this->endpoint->delete($webhook);
|
||||||
|
} catch (RuntimeException $error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($success) {
|
||||||
|
delete_option(self::KEY);
|
||||||
|
}
|
||||||
|
return $success;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue