Files
wp-multisite-waas/inc/class-newsletter.php
David Stone a815fdf179 Prep Plugin for release on WordPress.org
Escape everything that should be escaped.
Add nonce checks where needed.
Sanitize all inputs.
Apply Code style changes across the codebase.
Correct many deprecation notices.
Optimize load order of many filters.
2025-04-07 09:15:21 -06:00

85 lines
2.8 KiB
PHP

<?php
namespace WP_Ultimo;
class Newsletter {
use \WP_Ultimo\Traits\Singleton;
const SETTING_FIELD_SLUG = 'newsletter_optin';
public function init(): void {
add_action('wu_settings_login', [$this, 'add_settings'], 20);
add_filter('wu_pre_save_settings', [$this, 'maybe_update_newsletter_subscription'], 10, 3);
}
public function add_settings(): void {
wu_register_settings_field(
'general',
self::SETTING_FIELD_SLUG,
[
'title' => __('Signup for WP Multisite WaaS Newsletter', 'wp-multisite-waas'),
'desc' => __('Be informed of new releases and all things related to running a WaaS Network.', 'wp-multisite-waas'),
'type' => 'toggle',
'value' => '1',
],
45
);
}
/**
* Fix stripe settings
*
* @since 2.0.18
*
* @param array $settings The final settings array being saved, containing ALL options.
* @param array $settings_to_save Array containing just the options being updated.
* @param array $saved_settings Array containing the original settings.
* @return array
*/
public function maybe_update_newsletter_subscription($settings, $settings_to_save, $saved_settings) {
if ( isset($settings_to_save[ self::SETTING_FIELD_SLUG ]) && $settings_to_save[ self::SETTING_FIELD_SLUG ] && $settings_to_save[ self::SETTING_FIELD_SLUG ] !== $saved_settings[ self::SETTING_FIELD_SLUG ] ) {
$response = wp_remote_post(
'https://wpmultisitewaas.org/wp-json/newsletter/v2/subscribers',
[
'method' => 'PUT',
'body' => wp_json_encode(
[
'email' => $settings['company_email'],
'status' => 'confirmed',
'first_name' => $settings['company_name'],
'country' => $settings['company_country'],
]
),
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => 'Basic ' . base64_encode('30220d7fb4ec49a7410b3a309b9346c18410bd56:0407cd731d6f074cd0b96f2643b7619e89af1ed2'), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
],
]
);
} elseif ( empty($settings_to_save[ self::SETTING_FIELD_SLUG ]) && ! empty($saved_settings[ self::SETTING_FIELD_SLUG ]) ) {
$response = wp_remote_post(
'https://wpmultisitewaas.org/wp-json/newsletter/v2/subscribers',
[
'method' => 'PUT',
'body' => wp_json_encode(
[
'email' => $settings['company_email'],
'status' => 'unsubscribed',
]
),
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => 'Basic ' . base64_encode('30220d7fb4ec49a7410b3a309b9346c18410bd56:0407cd731d6f074cd0b96f2643b7619e89af1ed2'), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
],
]
);
}
return $settings;
}
}