PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / extensions / blocks / mailchimp / mailchimp.php
jetpack / extensions / blocks / mailchimp Last commit date
mailchimp.php 1 week ago render.php 1 week ago
mailchimp.php
144 lines
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\Connection\Client;
15 use Automattic\Jetpack\Connection\Manager as Connection_Manager;
16 use Automattic\Jetpack\External_Connections;
17 use Automattic\Jetpack\Status\Host;
18 use Jetpack;
19 use Jetpack_Gutenberg;
20
21 if ( ! defined( 'ABSPATH' ) ) {
22 exit( 0 );
23 }
24
25 /**
26 * Registers the block for use in Gutenberg
27 * This is done via an action so that we can disable
28 * registration if we need to.
29 */
30 function register_block() {
31 if (
32 ( defined( 'IS_WPCOM' ) && IS_WPCOM )
33 || Jetpack::is_connection_ready()
34 ) {
35 Blocks::jetpack_register_block(
36 __DIR__,
37 array(
38 'render_callback' => __NAMESPACE__ . '\load_assets',
39 )
40 );
41
42 register_admin_settings();
43 }
44 }
45 add_action( 'init', __NAMESPACE__ . '\register_block' );
46
47 /**
48 * Mailchimp block registration/dependency declaration.
49 *
50 * The render implementation lives in render.php and is only loaded when the
51 * block is actually rendered, keeping it out of the eager front-end path.
52 *
53 * @param array $attr - Array containing the Mailchimp block attributes.
54 * @param string $content - Mailchimp block content.
55 *
56 * @return string
57 */
58 function load_assets( $attr, $content ) {
59 require_once __DIR__ . '/render.php';
60 return load_assets_implementation( $attr, $content );
61 }
62
63 /**
64 * Registers the settings to manage the Mailchimp connection.
65 */
66 function register_admin_settings() {
67 Assets::register_script(
68 'jetpack-mailchimp-admin-extra-settings',
69 Jetpack_Gutenberg::get_blocks_directory() . '/mailchimp/admin.js',
70 JETPACK__PLUGIN_FILE,
71 array(
72 'textdomain' => 'jetpack',
73 )
74 );
75
76 External_Connections::add_settings_for_service(
77 'writing',
78 array(
79 'service' => 'mailchimp',
80 'title' => __( 'Mailchimp', 'jetpack' ),
81 'signup_link' => 'https://public-api.wordpress.com/rest/v1.1/sharing/mailchimp/signup',
82 'description' => __( 'Allow users to sign up to your Mailchimp mailing list.', 'jetpack' ),
83 'script' => 'jetpack-mailchimp-admin-extra-settings',
84 'support_link' => array(
85 'wpcom' => 'https://wordpress.com/support/wordpress-editor/blocks/mailchimp-block/',
86 'jetpack' => 'mailchimp-block',
87 ),
88 )
89 );
90
91 add_action( 'load-options.php', __NAMESPACE__ . '\update_settings' );
92 }
93
94 /**
95 * Update the site options that are related to Mailchimp.
96 */
97 function update_settings() {
98 $action = ! empty( $_REQUEST['action'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) : '';
99 $option_page = ! empty( $_REQUEST['option_page'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['option_page'] ) ) : '';
100 $audience = ! empty( $_REQUEST['jetpack-mailchimp-audience'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['jetpack-mailchimp-audience'] ) ) : '';
101 if ( $action !== 'update' || $option_page !== 'writing' || ! current_user_can( 'manage_options' ) || $audience === '' ) {
102 return;
103 }
104
105 check_admin_referer( 'writing-options' );
106
107 $site_id = Connection_Manager::get_site_id();
108 if ( is_wp_error( $site_id ) ) {
109 return;
110 }
111
112 if ( $audience === 'none' ) {
113 $data = array(
114 'follower_list_id' => '0',
115 'keyring_id' => '0',
116 );
117 } else {
118 $connection = External_Connections::get_connection( 'mailchimp' );
119 if ( empty( $connection ) ) {
120 return;
121 }
122 $data = array(
123 'follower_list_id' => $audience,
124 'keyring_id' => $connection['ID'],
125 );
126 }
127
128 if ( ( new Host() )->is_wpcom_simple() ) {
129 require_lib( 'mailchimp' );
130 $response = \MailchimpApi::save_settings( $site_id, $data );
131 } else {
132 $response = Client::wpcom_json_api_request_as_user(
133 sprintf( '/sites/%d/mailchimp/settings', $site_id ),
134 '1.1',
135 array( 'method' => 'POST' ),
136 $data,
137 'rest'
138 );
139 }
140 if ( is_wp_error( $response ) ) {
141 add_settings_error( 'general', 'settings_updated', __( 'Settings save failed.', 'jetpack' ), 'error' );
142 }
143 }
144