PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.8.3
Jetpack – WP Security, Backup, Speed, & Growth v13.8.3
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 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 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 / _inc / lib / core-api / wpcom-endpoints / class-wpcom-rest-api-v2-endpoint-mailchimp.php
jetpack / _inc / lib / core-api / wpcom-endpoints Last commit date
business-hours.php 4 years ago class-wpcom-rest-api-v2-endpoint-admin-color.php 2 years ago class-wpcom-rest-api-v2-endpoint-admin-menu.php 1 year ago class-wpcom-rest-api-v2-endpoint-ai.php 2 years ago class-wpcom-rest-api-v2-endpoint-app-media.php 2 years ago class-wpcom-rest-api-v2-endpoint-blog-stats.php 2 years ago class-wpcom-rest-api-v2-endpoint-email-preview.php 2 years ago class-wpcom-rest-api-v2-endpoint-external-media.php 2 years ago class-wpcom-rest-api-v2-endpoint-following.php 2 years ago class-wpcom-rest-api-v2-endpoint-goodreads.php 2 years ago class-wpcom-rest-api-v2-endpoint-google-docs.php 4 years ago class-wpcom-rest-api-v2-endpoint-instagram-gallery.php 3 years ago class-wpcom-rest-api-v2-endpoint-mailchimp.php 2 years ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-list.php 2 years ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions-count.php 2 years ago class-wpcom-rest-api-v2-endpoint-podcast-player.php 2 years ago class-wpcom-rest-api-v2-endpoint-profile.php 2 years ago class-wpcom-rest-api-v2-endpoint-publicize-share-post.php 1 year ago class-wpcom-rest-api-v2-endpoint-related-posts.php 2 years ago class-wpcom-rest-api-v2-endpoint-resolve-redirect.php 2 years ago class-wpcom-rest-api-v2-endpoint-search.php 4 years ago class-wpcom-rest-api-v2-endpoint-send-email-preview.php 2 years ago class-wpcom-rest-api-v2-endpoint-template-loader.php 3 years ago class-wpcom-rest-api-v2-endpoint-top-posts.php 2 years ago class-wpcom-rest-api-v2-endpoint-transient.php 5 years ago class-wpcom-rest-api-v3-endpoint-blogging-prompts.php 2 years ago gutenberg-available-extensions.php 2 years ago hello.php 4 years ago memberships.php 2 years ago publicize-connection-test-results.php 3 years ago publicize-connections.php 2 years ago publicize-services.php 3 years ago service-api-keys.php 2 years ago sites-posts-featured-media-url.php 2 years ago subscribers.php 3 years ago trait-wpcom-rest-api-proxy-request-trait.php 2 years ago
class-wpcom-rest-api-v2-endpoint-mailchimp.php
143 lines
1 <?php
2 /**
3 * API endpoints to interact with WordPress.com
4 * to get info from the Mailchimp API for use with the Mailchimp block.
5 *
6 * @package automattic/jetpack
7 */
8
9 use Automattic\Jetpack\Connection\Client;
10 use Automattic\Jetpack\Redirect;
11
12 /**
13 * Mailchimp: Get Mailchimp Status.
14 * API to determine if current site has linked Mailchimp account and mailing list selected.
15 * This API is meant to be used in Jetpack and on WPCOM.
16 *
17 * @since 7.1
18 */
19 class WPCOM_REST_API_V2_Endpoint_Mailchimp extends WP_REST_Controller {
20 /**
21 * Constructor.
22 */
23 public function __construct() {
24 $this->namespace = 'wpcom/v2';
25 $this->rest_base = 'mailchimp';
26 $this->wpcom_is_wpcom_only_endpoint = true;
27
28 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
29 }
30
31 /**
32 * Called automatically on `rest_api_init()`.
33 */
34 public function register_routes() {
35 register_rest_route(
36 $this->namespace,
37 $this->rest_base,
38 array(
39 array(
40 'methods' => WP_REST_Server::READABLE,
41 'callback' => array( $this, 'get_mailchimp_status' ),
42 'permission_callback' => '__return_true',
43 ),
44 )
45 );
46 register_rest_route(
47 $this->namespace,
48 $this->rest_base . '/groups',
49 array(
50 array(
51 'methods' => WP_REST_Server::READABLE,
52 'callback' => array( $this, 'get_mailchimp_groups' ),
53 'permission_callback' => '__return_true',
54 ),
55 )
56 );
57 }
58
59 /**
60 * Check if MailChimp is set up properly.
61 *
62 * @return bool
63 */
64 private function is_connected() {
65 $option = get_option( 'jetpack_mailchimp' );
66 if ( ! $option ) {
67 return false;
68 }
69 $data = json_decode( $option, true );
70 if ( ! $data ) {
71 return false;
72 }
73 return isset( $data['follower_list_id'] ) && isset( $data['keyring_id'] );
74 }
75
76 /**
77 * Get the status of current blog's Mailchimp connection
78 *
79 * @return mixed
80 * code:string (connected|unconnected),
81 * connect_url:string
82 * site_id:int
83 */
84 public function get_mailchimp_status() {
85 $is_wpcom = ( defined( 'IS_WPCOM' ) && IS_WPCOM );
86 $site_id = $is_wpcom ? get_current_blog_id() : Jetpack_Options::get_option( 'id' );
87 if ( ! $site_id ) {
88 return new WP_Error(
89 'unavailable_site_id',
90 __( 'Sorry, something is wrong with your Jetpack connection.', 'jetpack' ),
91 403
92 );
93 }
94 $connect_url = Redirect::get_url(
95 'calypso-marketing-connections',
96 array(
97 'site' => rawurlencode( $site_id ),
98 'query' => 'mailchimp',
99 )
100 );
101 return array(
102 'code' => $this->is_connected() ? 'connected' : 'not_connected',
103 'connect_url' => $connect_url,
104 'site_id' => $site_id,
105 );
106 }
107
108 /**
109 * Get all Mailchimp groups for the accounted connected to the current blog
110 *
111 * @return mixed
112 * groups:array
113 * site_id:int
114 */
115 public function get_mailchimp_groups() {
116 $is_wpcom = ( defined( 'IS_WPCOM' ) && IS_WPCOM );
117 $site_id = $is_wpcom ? get_current_blog_id() : Jetpack_Options::get_option( 'id' );
118 if ( ! $site_id ) {
119 return new WP_Error(
120 'unavailable_site_id',
121 __( 'Sorry, something is wrong with your Jetpack connection.', 'jetpack' ),
122 403
123 );
124 }
125
126 // Do not attempt to fetch groups if Mailchimp is not connected.
127 if ( ! $this->is_connected() ) {
128 return new WP_Error(
129 'mailchimp_not_connected',
130 __( 'Your site is not connected to Mailchimp yet.', 'jetpack' ),
131 403
132 );
133 }
134
135 $path = sprintf( '/sites/%d/mailchimp/groups', absint( $site_id ) );
136 $request = Client::wpcom_json_api_request_as_blog( $path );
137 $body = wp_remote_retrieve_body( $request );
138 return json_decode( $body );
139 }
140 }
141
142 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Mailchimp' );
143