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-publicize / src / class-publicize-script-data.php
jetpack / jetpack_vendor / automattic / jetpack-publicize / src Last commit date
jetpack-social-settings 3 months ago rest-api 3 weeks ago social-image-generator 3 weeks ago class-connections.php 3 weeks ago class-focal-point.php 2 months ago class-keyring-helper.php 2 months ago class-keyring-result-handler.php 2 months ago class-message-templates-placeholders.php 3 months ago class-publicize-assets.php 2 months ago class-publicize-base.php 4 weeks ago class-publicize-script-data.php 1 month ago class-publicize-setup.php 4 weeks ago class-publicize-ui.php 4 weeks ago class-publicize-utils.php 4 weeks ago class-publicize.php 2 months ago class-services.php 3 weeks ago class-share-status.php 9 months ago class-social-admin-page.php 3 weeks ago
class-publicize-script-data.php
290 lines
1 <?php
2 /**
3 * Publicize_Script_Data.
4 *
5 * @package automattic/jetpack-publicize
6 */
7
8 namespace Automattic\Jetpack\Publicize;
9
10 use Automattic\Jetpack\Connection\Manager;
11 use Automattic\Jetpack\Current_Plan;
12 use Automattic\Jetpack\Publicize\Jetpack_Social_Settings\Settings;
13 use Automattic\Jetpack\Publicize\Publicize_Utils as Utils;
14 use Automattic\Jetpack\Publicize\Services as Publicize_Services;
15 use Automattic\Jetpack\Status\Host;
16
17 /**
18 * Publicize_Script_Data class.
19 */
20 class Publicize_Script_Data {
21
22 /**
23 * Get the publicize instance - properly typed
24 *
25 * @return Publicize
26 */
27 public static function publicize() {
28 /**
29 * Publicize instance.
30 *
31 * @var Publicize $publicize
32 */
33 global $publicize;
34
35 if ( ! $publicize && function_exists( 'publicize_init' ) ) {
36 // @phan-suppress-next-line PhanUndeclaredFunction - phan is dumb not to see the function_exists check
37 publicize_init();
38 }
39
40 return $publicize;
41 }
42
43 /**
44 * Configure script data.
45 */
46 public static function configure() {
47 add_filter( 'jetpack_admin_js_script_data', array( __CLASS__, 'set_admin_script_data' ), 10, 1 );
48 }
49
50 /**
51 * Set script data.
52 *
53 * @param array $data The script data.
54 */
55 public static function set_admin_script_data( $data ) {
56
57 $data['social'] = apply_filters( 'jetpack_social_admin_script_data', self::get_admin_script_data(), $data );
58
59 if ( empty( $data['site']['plan']['product_slug'] ) ) {
60 $data['site']['plan'] = Current_Plan::get();
61 }
62
63 // Override features for simple sites.
64 if ( ( new Host() )->is_wpcom_simple() ) {
65 $data['site']['plan']['features'] = Current_Plan::get_simple_site_specific_features();
66 }
67
68 $data['site']['wpcom']['blog_id'] = Manager::get_site_id( true );
69
70 self::set_wpcom_user_data( $data['user']['current_user'] );
71
72 return $data;
73 }
74
75 /**
76 * Set wpcom user data.
77 *
78 * @param array $user_data The user data.
79 */
80 private static function set_wpcom_user_data( &$user_data ) {
81 if ( ( new Host() )->is_wpcom_simple() ) {
82 $wpcom_user_data = array(
83 'ID' => get_current_user_id(),
84 'login' => wp_get_current_user()->user_login,
85 );
86 } else {
87 $wpcom_user_data = ( new Manager() )->get_connected_user_data();
88 }
89
90 $user_data['wpcom'] = array_merge(
91 $user_data['wpcom'] ?? array(),
92 $wpcom_user_data ? $wpcom_user_data : array()
93 );
94 }
95
96 /**
97 * Get the script data for admin UI.
98 *
99 * @return array
100 */
101 public static function get_admin_script_data() {
102
103 // Only set script data on the social settings page,
104 // the Jetpack settings page, or the block editor.
105 $should_set_script_data = Utils::is_jetpack_settings_page()
106 || Utils::is_social_settings_page()
107 || Utils::should_block_editor_have_social();
108
109 if ( ! $should_set_script_data ) {
110 return array();
111 }
112
113 $basic_data = array(
114 'api_paths' => self::get_api_paths(),
115 'assets_url' => plugins_url( '/build/', __DIR__ ),
116 'is_publicize_enabled' => Utils::is_publicize_active(),
117 'message_templates' => array(),
118 'supported_services' => array(),
119 'urls' => array(),
120 'settings' => self::get_social_settings(),
121 'plugin_info' => self::get_plugin_info(),
122 'nonces' => self::get_nonces(),
123 );
124
125 if ( ! Utils::is_publicize_active() ) {
126 return $basic_data;
127 }
128
129 // Simple sites don't have a user connection.
130 $is_publicize_configured = ( new Host() )->is_wpcom_simple() || Utils::is_connected();
131
132 if ( ! $is_publicize_configured ) {
133 return $basic_data;
134 }
135
136 return array_merge(
137 $basic_data,
138 array(
139 'supported_services' => self::get_supported_services(),
140 'urls' => self::get_urls(),
141 'store_initial_state' => self::get_store_initial_state(),
142 'message_templates' => array(
143 'placeholders' => Message_Templates_Placeholders::get_all(),
144 ),
145 )
146 );
147 }
148
149 /**
150 * Get the social settings.
151 *
152 * @return array
153 */
154 public static function get_social_settings() {
155
156 $settings = ( new Settings() );
157
158 return array(
159 'socialImageGenerator' => $settings->get_image_generator_settings(),
160 'utmSettings' => $settings->get_utm_settings(),
161 'socialNotes' => array(
162 'enabled' => $settings->is_social_notes_enabled(),
163 'config' => $settings->get_social_notes_config(),
164 ),
165 'showPricingPage' => $settings->should_show_pricing_page(),
166 'messageTemplate' => $settings->get_message_template(),
167 );
168 }
169
170 /**
171 * Get the plugin info.
172 *
173 * @return array
174 */
175 public static function get_plugin_info() {
176
177 $social_version = null;
178 $jetpack_version = null;
179
180 if ( defined( 'JETPACK_SOCIAL_PLUGIN_ROOT_FILE' ) ) {
181
182 $plugin_data = get_plugin_data( (string) constant( 'JETPACK_SOCIAL_PLUGIN_ROOT_FILE' ), false, false );
183
184 $social_version = $plugin_data['Version'];
185 }
186
187 if ( defined( 'JETPACK__VERSION' ) ) {
188 $jetpack_version = constant( 'JETPACK__VERSION' );
189 }
190
191 return array(
192 'social' => array(
193 'version' => $social_version,
194 ),
195 'jetpack' => array(
196 'version' => $jetpack_version,
197 ),
198 );
199 }
200
201 /**
202 * Get the social store initial state.
203 *
204 * @return array
205 */
206 public static function get_store_initial_state() {
207
208 $post = get_post();
209
210 $share_status = array();
211
212 // get_post_share_status is not available on WPCOM yet.
213 if ( Utils::should_block_editor_have_social() && $post ) {
214 $share_status[ $post->ID ] = Share_Status::get_post_share_status( $post->ID );
215 }
216
217 return array(
218 'connectionData' => array(
219 'connections' => Connections::get_all_for_user(),
220 ),
221 'shareStatus' => $share_status,
222 );
223 }
224
225 /**
226 * Whether the site has the feature flag enabled.
227 *
228 * @deprecated 0.69.1 Use Current_Plan::supports() directly instead.
229 *
230 * @todo Remove this method After March 2026.
231 *
232 * @param string $feature The feature name to check for, without the "social-" prefix.
233 * @return bool
234 */
235 public static function has_feature_flag( $feature ): bool {
236 return Current_Plan::supports( 'social-' . $feature );
237 }
238
239 /**
240 * Get the list of supported Publicize services.
241 *
242 * @return array List of external services and their settings.
243 */
244 public static function get_supported_services() {
245 return Publicize_Services::get_all();
246 }
247
248 /**
249 * Get the API paths.
250 *
251 * @return array
252 */
253 public static function get_api_paths() {
254
255 return array(
256 // The complete path will be like `/jetpack/v4/social/settings`.
257 'socialToggleBase' => Utils::should_use_jetpack_module_endpoint() ? 'settings' : 'social/settings',
258 'resharePost' => '/wpcom/v2/publicize/share-post/{postId}',
259 );
260 }
261
262 /**
263 * Get the URLs.
264 *
265 * @return array
266 */
267 public static function get_urls() {
268
269 $urls = array(
270 'connectionsManagementPage' => self::publicize()->publicize_connections_url(),
271 );
272
273 // Escape the URLs.
274 array_walk( $urls, 'esc_url_raw' );
275
276 return $urls;
277 }
278
279 /**
280 * Get nonces required by the Social admin UI.
281 *
282 * @return array
283 */
284 private static function get_nonces() {
285 return array(
286 'refresh_plan' => wp_create_nonce( Social_Admin_Page::REFRESH_PLAN_NONCE_ACTION ),
287 );
288 }
289 }
290