PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.3-beta
16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 All 507 releases
jetpack / extensions / blocks / mailchimp / mailchimp.php

mailchimp.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-beta, at extensions/blocks/mailchimp/mailchimp.php

109 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Mailchimp Block.
4 *
5 * @since 7.1.0
6 *
7 * @package automattic/jetpack
8 */
9
10 namespace Automattic\Jetpack\Extensions\Mailchimp;
11
12 use Automattic\Jetpack\Assets;
13 use Automattic\Jetpack\Blocks;
14 use Automattic\Jetpack\External_Connections;
15 use Jetpack;
16 use Jetpack_Gutenberg;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit( 0 );
20 }
21
22 /**
23 * Registers the block for use in Gutenberg
24 * This is done via an action so that we can disable
25 * registration if we need to.
26 */
27 function register_block() {
28 if (
29 ( defined( 'IS_WPCOM' ) && IS_WPCOM )
30 || Jetpack::is_connection_ready()
31 ) {
32 Blocks::jetpack_register_block(
33 __DIR__,
34 array(
35 'render_callback' => __NAMESPACE__ . '\load_assets',
36 )
37 );
38
39 register_admin_settings();
40 }
41 }
42 add_action( 'init', __NAMESPACE__ . '\register_block' );
43
44 /**
45 * Mailchimp block registration/dependency declaration.
46 *
47 * The render implementation lives in render.php and is only loaded when the
48 * block is actually rendered, keeping it out of the eager front-end path.
49 *
50 * @param array $attr - Array containing the Mailchimp block attributes.
51 * @param string $content - Mailchimp block content.
52 *
53 * @return string
54 */
55 function load_assets( $attr, $content ) {
56 require_once __DIR__ . '/render.php';
57 return load_assets_implementation( $attr, $content );
58 }
59
60 /**
61 * Registers the settings to manage the Mailchimp connection.
62 */
63 function register_admin_settings() {
64 Assets::register_script(
65 'jetpack-mailchimp-admin-extra-settings',
66 Jetpack_Gutenberg::get_blocks_directory() . '/mailchimp/admin.js',
67 JETPACK__PLUGIN_FILE,
68 array(
69 'textdomain' => 'jetpack',
70 )
71 );
72
73 External_Connections::add_settings_for_service(
74 'writing',
75 array(
76 'service' => 'mailchimp',
77 'title' => __( 'Mailchimp', 'jetpack' ),
78 'signup_link' => 'https://public-api.wordpress.com/rest/v1.1/sharing/mailchimp/signup',
79 'description' => __( 'Allow users to sign up to your Mailchimp mailing list.', 'jetpack' ),
80 'script' => 'jetpack-mailchimp-admin-extra-settings',
81 'support_link' => array(
82 'wpcom' => 'https://wordpress.com/support/wordpress-editor/blocks/mailchimp-block/',
83 'jetpack' => 'mailchimp-block',
84 ),
85 )
86 );
87
88 add_action( 'load-options.php', __NAMESPACE__ . '\update_settings' );
89 }
90
91 /**
92 * Update the site options that are related to Mailchimp.
93 */
94 function update_settings() {
95 $action = ! empty( $_REQUEST['action'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) : '';
96 $option_page = ! empty( $_REQUEST['option_page'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['option_page'] ) ) : '';
97 $audience = ! empty( $_REQUEST['jetpack-mailchimp-audience'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['jetpack-mailchimp-audience'] ) ) : '';
98 if ( $action !== 'update' || $option_page !== 'writing' || ! current_user_can( 'manage_options' ) || $audience === '' ) {
99 return;
100 }
101
102 check_admin_referer( 'writing-options' );
103
104 require_once JETPACK__PLUGIN_DIR . '_inc/lib/class-jetpack-mailchimp-helper.php';
105 if ( is_wp_error( \Jetpack_Mailchimp_Helper::save_audience( $audience ) ) ) {
106 add_settings_error( 'general', 'settings_updated', __( 'Settings save failed.', 'jetpack' ), 'error' );
107 }
108 }
109