PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.3
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.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 / jetpack_vendor / automattic / jetpack-blaze / src / class-dashboard-config-data.php
jetpack / jetpack_vendor / automattic / jetpack-blaze / src Last commit date
class-blaze.php 1 month ago class-dashboard-config-data.php 1 month ago class-dashboard-rest-controller.php 1 month ago class-dashboard.php 2 weeks ago class-rest-controller.php 1 month ago
class-dashboard-config-data.php
216 lines
1 <?php
2 /**
3 * Blaze dashboard Initial State
4 *
5 * @package automattic/jetpack-blaze
6 */
7
8 namespace Automattic\Jetpack\Blaze;
9
10 use Automattic\Jetpack\Connection\Manager;
11 use Automattic\Jetpack\Constants;
12 use Automattic\Jetpack\Current_Plan;
13 use Automattic\Jetpack\Status\Host;
14 use Jetpack_Options;
15
16 /**
17 * Class Dashboard_Config_Data
18 */
19 class Dashboard_Config_Data {
20
21 /**
22 * Blaze dashboard admin page. Default is admin.php.
23 *
24 * @var string
25 */
26 private $admin_page;
27
28 /**
29 * Blaze dashboard menu slug. Default is 'advertising'.
30 *
31 * @var string
32 */
33 private $menu_slug;
34
35 /**
36 * Dashboard config constructor.
37 *
38 * @param string $admin_page Dashboard admin page. Default is admin.php.
39 * @param string $menu_slug Dashboard menu slug. Default is 'advertising'.
40 */
41 public function __construct( $admin_page = 'admin.php', $menu_slug = 'advertising' ) {
42 $this->admin_page = $admin_page;
43 $this->menu_slug = $menu_slug;
44 }
45
46 /**
47 * Set configData to window.configData.
48 *
49 * @param array $config_data The config data.
50 */
51 public function get_js_config_data( $config_data = null ) {
52 return 'window.configData = ' . wp_json_encode(
53 $config_data === null ? $this->get_data() : $config_data,
54 JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP
55 ) . ';';
56 }
57
58 /**
59 * Return the config for the app.
60 */
61 public function get_data() {
62 $blog_id = Jetpack_Options::get_option( 'id' );
63 $host = new Host();
64 $empty_object = json_decode( '{}' );
65
66 $user = $this->get_connected_user_identity();
67
68 $data = array(
69 'admin_page_base' => $this->get_admin_path(),
70 'api_root' => esc_url_raw( rest_url() ),
71 'blog_id' => $blog_id,
72 'enable_all_sections' => false,
73 'env_id' => 'production',
74 'google_analytics_key' => 'UA-10673494-15',
75 'hostname' => wp_parse_url( get_site_url(), PHP_URL_HOST ),
76 'i18n_default_locale_slug' => 'en',
77 'mc_analytics_enabled' => false,
78 'meta' => array(),
79 'nonce' => wp_create_nonce( 'wp_rest' ),
80 'site_name' => \get_bloginfo( 'name' ),
81 'sections' => array(),
82 // Features are inlined in Calypso Blaze app (wp-calypso/apps/blaze-dashboard)
83 'features' => array(
84 'is_running_in_jetpack_site' => ! $host->is_wpcom_simple(),
85 ),
86 'initial_state' => array(
87 'currentUser' => array(
88 'id' => $user['ID'],
89 'user' => $user,
90 'capabilities' => array(
91 "$blog_id" => $this->get_current_user_capabilities(),
92 ),
93 ),
94 'sites' => array(
95 'items' => array(
96 "$blog_id" => array(
97 'ID' => $blog_id,
98 'URL' => site_url(),
99 'jetpack' => ! $host->is_wpcom_simple(),
100 'visible' => true,
101 'capabilities' => $empty_object,
102 'products' => array(),
103 'plan' => $empty_object, // we need this empty object, otherwise the front end would crash on insight page.
104 'options' => array(
105 'admin_url' => admin_url(),
106 'gmt_offset' => $this->get_gmt_offset(),
107 'is_wpcom_atomic' => $host->is_woa_site(),
108 'is_wpcom_simple' => $host->is_wpcom_simple(),
109 'jetpack_version' => Constants::get_constant( 'JETPACK__VERSION' ),
110 ),
111 ),
112 ),
113 'features' => array( "$blog_id" => array( 'data' => $this->get_plan_features() ) ),
114 ),
115 ),
116 );
117
118 /**
119 * Filter to allow modification of the Blaze dashboard config data.
120 *
121 * @param bool $data Blaze dashboard config data.
122 *
123 * @since 0.21.0
124 */
125 return apply_filters( 'jetpack_blaze_dashboard_config_data', $data );
126 }
127
128 /**
129 * Gets the WordPress.com user's identity, if connected.
130 *
131 * @return array|bool
132 */
133 protected function get_connected_user_identity() {
134 $user_data = ( new Manager() )->get_connected_user_data();
135 if ( ! $user_data ) {
136 return array(
137 'ID' => 1000,
138 'username' => 'no-user',
139 'localeSlug' => $this->get_locale(),
140 'site_count' => 1,
141 );
142 }
143
144 return array(
145 'ID' => $user_data['ID'],
146 'username' => $user_data['login'],
147 'email' => $user_data['email'],
148 'localeSlug' => $this->get_locale(),
149 'site_count' => 1,
150 );
151 }
152
153 /**
154 * Get the current site GMT Offset.
155 *
156 * @return float The current site GMT Offset by hours.
157 */
158 protected function get_gmt_offset() {
159 return (float) get_option( 'gmt_offset' );
160 }
161
162 /**
163 * Page base for the Calypso admin page.
164 */
165 protected function get_admin_path() {
166 if ( ! isset( $_SERVER['PHP_SELF'] ) || ! isset( $_SERVER['QUERY_STRING'] ) ) {
167 $admin_path = $this->admin_page . '?page=' . $this->menu_slug;
168 $parsed = wp_parse_url( admin_url( $admin_path ) );
169
170 return $parsed['path'] . '?' . $parsed['query'];
171 }
172 // We do this because page.js requires the exactly page base to be set otherwise it will not work properly.
173 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
174 return wp_unslash( $_SERVER['PHP_SELF'] ) . '?' . wp_unslash( $_SERVER['QUERY_STRING'] );
175 }
176
177 /**
178 * Get the user's locale acceptable by Calypso.
179 */
180 protected function get_locale() {
181 /**
182 * In WP, locales are formatted as LANGUAGE_REGION, for example `en`, `en_US`, `es_AR`,
183 * but Calypso expects language-region, e.g. `en-us`, `en`, `es-ar`. So we need to convert
184 * them to lower case and replace the underscore with a dash.
185 */
186 $locale = strtolower( get_user_locale() );
187 $locale = str_replace( '_', '-', $locale );
188
189 return $locale;
190 }
191
192 /**
193 * Get the features of the current plan.
194 */
195 protected function get_plan_features() {
196 $plan = Current_Plan::get();
197 if ( empty( $plan['features'] ) ) {
198 return array();
199 }
200 return $plan['features'];
201 }
202
203 /**
204 * Get the capabilities of the current user.
205 *
206 * @return array An array of capabilities.
207 */
208 protected function get_current_user_capabilities() {
209 $user = wp_get_current_user();
210 if ( ! $user || is_wp_error( $user ) ) {
211 return array();
212 }
213 return $user->allcaps;
214 }
215 }
216