PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.2
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.2
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 / jetpack_vendor / automattic / jetpack-stats-admin / src / class-odyssey-config-data.php
jetpack / jetpack_vendor / automattic / jetpack-stats-admin / src Last commit date
class-admin-post-list-column.php 1 month ago class-dashboard.php 9 months ago class-main.php 3 weeks ago class-notices.php 8 months ago class-odyssey-assets.php 3 weeks ago class-odyssey-config-data.php 2 months ago class-rest-controller.php 2 months ago class-wp-dashboard-odyssey-widget.php 2 years ago class-wpcom-client.php 3 months ago
class-odyssey-config-data.php
231 lines
1 <?php
2 /**
3 * Stats Initial State
4 *
5 * @package automattic/jetpack-stats-admin
6 */
7
8 namespace Automattic\Jetpack\Stats_Admin;
9
10 use Automattic\Jetpack\Blaze;
11 use Automattic\Jetpack\Current_Plan as Jetpack_Plan;
12 use Automattic\Jetpack\Modules;
13 use Automattic\Jetpack\Status\Host;
14 use Jetpack_Options;
15
16 /**
17 * Class Odyssey_Config_Data
18 *
19 * @package automattic/jetpack-stats-admin
20 */
21 class Odyssey_Config_Data {
22
23 /**
24 * Set configData to window.configData.
25 *
26 * @param string $config_variable_name The config variable name.
27 * @param array $config_data The config data.
28 */
29 public function get_js_config_data( $config_variable_name = 'configData', $config_data = null ) {
30 return "window.{$config_variable_name} = " . wp_json_encode(
31 $config_data === null ? $this->get_data() : $config_data,
32 JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP
33 ) . ';';
34 }
35
36 /**
37 * Return the config for the app.
38 */
39 public function get_data() {
40 global $wp_version;
41
42 $blog_id = Jetpack_Options::get_option( 'id' );
43 $host = new Host();
44
45 $can_blaze = class_exists( 'Automattic\Jetpack\Blaze' ) && Blaze::should_initialize()['can_init'];
46
47 return array(
48 'admin_page_base' => $this->get_admin_path(),
49 'api_root' => esc_url_raw( rest_url() ),
50 'blog_id' => Jetpack_Options::get_option( 'id' ),
51 'enable_all_sections' => false,
52 'env_id' => 'production',
53 'google_analytics_key' => 'UA-10673494-15',
54 'google_maps_and_places_api_key' => '',
55 'hostname' => wp_parse_url( get_site_url(), PHP_URL_HOST ),
56 'i18n_default_locale_slug' => 'en',
57 'i18n_locale_slug' => $this->get_user_locale(),
58 'mc_analytics_enabled' => false,
59 'meta' => array(),
60 'nonce' => wp_create_nonce( 'wp_rest' ),
61 'site_name' => \get_bloginfo( 'name' ),
62 'sections' => array(),
63 // Features are inlined @see https://github.com/Automattic/wp-calypso/pull/70122
64 'features' => array(
65 'is_running_in_jetpack_site' => ! $host->is_wpcom_simple(),
66 ),
67 // Intended for apps that do not use redux.
68 'gmt_offset' => $this->get_gmt_offset(),
69 'odyssey_stats_base_url' => admin_url( 'admin.php?page=stats' ),
70 'intial_state' => array(
71 'currentUser' => array(
72 'id' => 1000,
73 'user' => array(
74 'ID' => 1000,
75 'username' => 'no-user',
76 ),
77 'capabilities' => array(
78 "$blog_id" => $this->get_current_user_capabilities(),
79 ),
80 ),
81 'sites' => array(
82 'items' => array(
83 "$blog_id" => array(
84 'ID' => $blog_id,
85 'URL' => site_url(),
86 // Atomic and jetpack sites should return true.
87 'jetpack' => ! $host->is_wpcom_simple(),
88 'visible' => true,
89 'capabilities' => $this->get_current_user_capabilities(),
90 'products' => Jetpack_Plan::get_products(),
91 'plan' => $this->get_plan(),
92 'options' => array(
93 'wordads' => ( new Modules() )->is_active( 'wordads' ),
94 'admin_url' => admin_url(),
95 'gmt_offset' => $this->get_gmt_offset(),
96 'is_automated_transfer' => $this->is_automated_transfer( $blog_id ),
97 'is_wpcom_atomic' => $host->is_woa_site(),
98 'is_wpcom_simple' => $host->is_wpcom_simple(),
99 'is_vip' => $host->is_vip_site(),
100 'jetpack_version' => defined( 'JETPACK__VERSION' ) ? JETPACK__VERSION : '',
101 'stats_admin_version' => Main::VERSION,
102 'software_version' => $wp_version,
103 'can_blaze' => $can_blaze,
104 ),
105 ),
106 ),
107 'features' => array( "$blog_id" => array( 'data' => $this->get_plan_features() ) ),
108 ),
109 ),
110 );
111 }
112
113 /**
114 * Defines a filter to set whether a site is an automated_transfer site or not.
115 *
116 * Default is false. On Atomic, this is set to true by `wpcomsh`.
117 *
118 * @param int $blog_id Blog ID.
119 *
120 * @return bool
121 */
122 public function is_automated_transfer( $blog_id ) {
123 /**
124 * Filter if a site is an automated-transfer site.
125 *
126 * @module json-api
127 *
128 * @since 6.4.0
129 *
130 * @param bool is_automated_transfer( $this->blog_id )
131 * @param int $blog_id Blog identifier.
132 */
133 return apply_filters(
134 'jetpack_site_automated_transfer',
135 false,
136 $blog_id
137 );
138 }
139
140 /**
141 * Get the current site GMT Offset.
142 *
143 * @return float The current site GMT Offset by hours.
144 */
145 protected function get_gmt_offset() {
146 return (float) get_option( 'gmt_offset' );
147 }
148
149 /**
150 * Page base for the Calypso admin page.
151 */
152 protected function get_admin_path() {
153 if ( ! isset( $_SERVER['PHP_SELF'] ) || ! isset( $_SERVER['QUERY_STRING'] ) ) {
154 $parsed = wp_parse_url( admin_url( 'admin.php?page=stats' ) );
155 return $parsed['path'] . '?' . $parsed['query'];
156 }
157 // We do this because page.js requires the exactly page base to be set otherwise it will not work properly.
158 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
159 return wp_unslash( $_SERVER['PHP_SELF'] ) . '?' . wp_unslash( $_SERVER['QUERY_STRING'] );
160 }
161
162 /**
163 * Get locale acceptable by Calypso.
164 */
165 protected function get_user_locale() {
166 /**
167 * In WP, locales are formatted as LANGUAGE_REGION, for example `en`, `en_US`, `es_AR`,
168 * but Calypso expects language-region, e.g. `en-us`, `en`, `es-ar`. So we need to convert
169 * them to lower case and replace the underscore with a dash.
170 */
171 $locale = strtolower( get_user_locale() );
172 $locale = str_replace( '_', '-', $locale );
173
174 return $locale;
175 }
176
177 /**
178 * Get the features of the current plan.
179 */
180 protected function get_plan_features() {
181 $plan = Jetpack_Plan::get();
182 if ( empty( $plan['features'] ) ) {
183 return array();
184 }
185 return $plan['features'];
186 }
187
188 /**
189 * Get the current plan.
190 *
191 * @return array
192 */
193 protected function get_plan() {
194 $plan = Jetpack_Plan::get();
195 unset( $plan['features'] );
196 unset( $plan['supports'] );
197 return $plan;
198 }
199
200 /**
201 * Get the capabilities of the current user.
202 *
203 * @return array An array of capabilities.
204 */
205 protected function get_current_user_capabilities() {
206 return array(
207 'edit_pages' => current_user_can( 'edit_pages' ),
208 'edit_posts' => current_user_can( 'edit_posts' ),
209 'edit_others_posts' => current_user_can( 'edit_others_posts' ),
210 'edit_others_pages' => current_user_can( 'edit_others_pages' ),
211 'delete_posts' => current_user_can( 'delete_posts' ),
212 'delete_others_posts' => current_user_can( 'delete_others_posts' ),
213 'edit_theme_options' => current_user_can( 'edit_theme_options' ),
214 'edit_users' => current_user_can( 'edit_users' ),
215 'list_users' => current_user_can( 'list_users' ),
216 'manage_categories' => current_user_can( 'manage_categories' ),
217 'manage_options' => current_user_can( 'manage_options' ),
218 'moderate_comments' => current_user_can( 'moderate_comments' ),
219 'activate_wordads' => current_user_can( 'manage_options' ),
220 'promote_users' => current_user_can( 'promote_users' ),
221 'publish_posts' => current_user_can( 'publish_posts' ),
222 'upload_files' => current_user_can( 'upload_files' ),
223 'delete_users' => current_user_can( 'delete_users' ),
224 'remove_users' => current_user_can( 'remove_users' ),
225 'own_site' => current_user_can( 'manage_options' ), // Administrators are considered owners on site.
226 'view_stats' => current_user_can( 'view_stats' ),
227 'activate_plugins' => current_user_can( 'activate_plugins' ),
228 );
229 }
230 }
231