PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
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 / jetpack_vendor / automattic / jetpack-connection / src / class-initial-state.php
jetpack / jetpack_vendor / automattic / jetpack-connection / src Last commit date
abilities 2 days ago connectors 2 days ago health 2 days ago identity-crisis 1 month ago sso 1 month ago traits 8 months ago webhooks 8 months ago class-authorize-json-api.php 1 month ago class-client.php 2 days ago class-connection-assets.php 1 year ago class-connection-notice.php 8 months ago class-error-handler.php 2 days ago class-external-storage.php 4 months ago class-heartbeat.php 1 month ago class-initial-state.php 3 weeks ago class-manager.php 2 days ago class-nonce-handler.php 8 months ago class-package-version-tracker.php 1 month ago class-package-version.php 2 days ago class-partner-coupon.php 2 months ago class-partner.php 2 years ago class-plugin-storage.php 8 months ago class-plugin.php 8 months ago class-rest-authentication.php 2 days ago class-rest-connector.php 2 days ago class-secrets.php 8 months ago class-server-sandbox.php 2 months ago class-site-health.php 2 days ago class-terms-of-service.php 2 days ago class-tokens-locks.php 8 months ago class-tokens.php 2 days ago class-tracking.php 2 days ago class-urls.php 6 months ago class-user-account-status.php 2 days ago class-users-connection-admin.php 2 months ago class-utils.php 2 years ago class-webhooks.php 1 month ago class-xmlrpc-async-call.php 2 years ago class-xmlrpc-connector.php 8 months ago interface-manager.php 4 years ago interface-storage-provider.php 6 months ago
class-initial-state.php
112 lines
1 <?php
2 /**
3 * The React initial state.
4 *
5 * @package automattic/jetpack-connection
6 */
7
8 namespace Automattic\Jetpack\Connection;
9
10 use Automattic\Jetpack\Status;
11
12 /**
13 * The React initial state.
14 */
15 class Initial_State {
16
17 /**
18 * Get the initial state data.
19 *
20 * @return array
21 */
22 private static function get_data() {
23 global $wp_version;
24
25 $status = new Status();
26
27 // Only expose the owner's identity to users who can act on connection issues:
28 // this state is printed for any logged-in user loading connection scripts
29 // (e.g. contributors in the editor). The owner is derived from the master_user
30 // option rather than the token-dependent Manager::get_connection_owner(): that
31 // method returns false exactly when the owner's token is broken, which is the
32 // scenario connection-error UIs need this data for (and it re-reports
33 // invalid_connection_owner as a side effect). Unlike
34 // userConnectionData.connectionOwner (the *connected* owner), this field
35 // identifies who holds ownership regardless of token health.
36 $connection_owner = null;
37 if ( current_user_can( 'jetpack_connect' ) ) {
38 $owner_id = (int) \Jetpack_Options::get_option( 'master_user' );
39 $owner = $owner_id > 0 ? get_userdata( $owner_id ) : false;
40
41 if ( $owner instanceof \WP_User ) {
42 $connection_owner = array(
43 'id' => $owner_id,
44 'displayName' => $owner->display_name,
45 );
46 }
47 }
48
49 return array(
50 'apiRoot' => esc_url_raw( rest_url() ),
51 'apiNonce' => wp_create_nonce( 'wp_rest' ),
52 'registrationNonce' => wp_create_nonce( 'jetpack-registration-nonce' ),
53 'connectionStatus' => REST_Connector::connection_status( false ),
54 'userConnectionData' => REST_Connector::get_user_connection_data( false ),
55 'connectedPlugins' => REST_Connector::get_connection_plugins( false ),
56 'wpVersion' => $wp_version,
57 'siteSuffix' => $status->get_site_suffix(),
58 'connectionErrors' => Error_Handler::get_instance()->get_displayable_errors(),
59 'isOfflineMode' => $status->is_offline_mode(),
60 'calypsoEnv' => ( new Status\Host() )->get_calypso_env(),
61 'isOwnershipTransferable' => ( new Manager() )->is_ownership_transferable(),
62 'connectionOwner' => $connection_owner,
63 );
64 }
65
66 /**
67 * Set the connection script data.
68 *
69 * @param array $data The script data.
70 */
71 public static function set_connection_script_data( $data ) {
72
73 $data['connection'] = self::get_data();
74
75 if ( empty( $data['site']['wpcom']['blog_id'] ) ) {
76 $data['site']['wpcom']['blog_id'] = absint( \Jetpack_Options::get_option( 'id', 0 ) );
77 }
78
79 return $data;
80 }
81
82 /**
83 * Render the initial state into a JavaScript variable.
84 *
85 * @return string
86 */
87 public static function render() {
88 /*
89 * `window.jpTracksContext` is an intentionally minimal, Tracks-specific global used by the
90 * @automattic/jetpack-analytics package to read `blog_id` at event-fire time. It exists
91 * separately from `window.JetpackScriptData` because the analytics package is consumed in
92 * contexts (e.g. Boost frontend) where `JetpackScriptData` is not reliably available, and
93 * coupling the analytics package to that schema would widen its surface unnecessarily.
94 * When both are present, `JetpackScriptData.site.wpcom.blog_id` is populated via
95 * `set_connection_script_data()` above for other consumers.
96 */
97 return 'var JP_CONNECTION_INITIAL_STATE; typeof JP_CONNECTION_INITIAL_STATE === "object" || (JP_CONNECTION_INITIAL_STATE = ' . wp_json_encode( self::get_data(), JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP ) . ');'
98 . sprintf( 'window.jpTracksContext = window.jpTracksContext || {}; window.jpTracksContext.blog_id = %s;', absint( \Jetpack_Options::get_option( 'id', 0 ) ) );
99 }
100
101 /**
102 * Render the initial state using an inline script.
103 *
104 * @param string $handle The JS script handle.
105 *
106 * @return void
107 */
108 public static function render_script( $handle ) {
109 wp_add_inline_script( $handle, static::render(), 'before' );
110 }
111 }
112