PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 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 All 508 releases
← All changes | src/class-jetpack-script-data.php +104 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,104 @@
1 +<?php
2 +/**
3 + * Jetpack_Script_Data.
4 + *
5 + * Adds Jetpack-plugin-specific data to the consolidated JetpackScriptData object.
6 + *
7 + * @package automattic/jetpack
8 + */
9 +
10 +namespace Automattic\Jetpack\Plugin;
11 +
12 +use Automattic\Jetpack\Current_Plan as Jetpack_Plan;
13 +
14 +/**
15 + * Jetpack_Script_Data class.
16 + */
17 +class Jetpack_Script_Data {
18 +
19 + /**
20 + * Configure script data.
21 + */
22 + public static function configure() {
23 + add_filter( 'jetpack_admin_js_script_data', array( __CLASS__, 'set_admin_script_data' ), 10, 1 );
24 + }
25 +
26 + /**
27 + * Add Jetpack-plugin-specific data to the consolidated JetpackScriptData object.
28 + *
29 + * @since 15.6
30 + *
31 + * @param array $data The script data.
32 + * @return array
33 + */
34 + public static function set_admin_script_data( $data ) {
35 + /**
36 + * Whether to show the Jetpack branding in editor panels (e.g., SEO, AI Assistant).
37 + *
38 + * @since 15.6
39 + *
40 + * @param bool $show Whether to show the Jetpack editor panel branding. Defaults to true.
41 + */
42 + $data['jetpack'] = array(
43 + 'flags' => array(
44 + 'showJetpackBranding' => (bool) apply_filters( 'jetpack_show_editor_panel_branding', true ),
45 + 'skipPhotonDomain' => self::should_skip_photon_domain( $data ),
46 + ),
47 + );
48 +
49 + return $data;
50 + }
51 +
52 + /**
53 + * Whether image-serving blocks should skip the external Photon domain (i0.wp.com) and build
54 + * URLs on the site's own Photon-like host instead.
55 + *
56 + * VIP sites serve images from a host of their own, and images routed through the public Photon
57 + * domain are not reachable there.
58 + *
59 + * This is read by the Tiled Gallery block's skipPhotonDomain(), which runs inside the block's
60 + * save() output — including when the editor regenerates that output to validate saved content.
61 + * That regeneration happens while the post is being parsed, before any editor store holds
62 + * settings, so the value has to travel in the script data rather than in editor settings.
63 + *
64 + * The signal is the plan slug rather than Host::is_vip_site(): it is what the block's previous
65 + * isVIP() check used, and switching to the WPCOM_IS_VIP_ENV constant would change which sites get
66 + * site-host URLs — and so which existing galleries need a deprecation to stay valid.
67 + *
68 + * @since 16.2
69 + *
70 + * @param array $data The script data, which may already carry the site plan.
71 + * @return bool
72 + */
73 + private static function should_skip_photon_domain( $data ) {
74 + // Another package may have put the plan in the payload already (see Publicize_Script_Data);
75 + // only look it up when it hasn't.
76 + $product_slug = $data['site']['plan']['product_slug'] ?? '';
77 + if ( '' === $product_slug ) {
78 + $jetpack_plan = Jetpack_Plan::get();
79 + $product_slug = $jetpack_plan['product_slug'];
80 + }
81 +
82 + /**
83 + * Filter whether the Tiled Gallery and Image Compare blocks should skip the external
84 + * Photon (i0.wp.com) domain and build image URLs on the site's own host instead.
85 + *
86 + * Defaults to true on VIP sites only, and false everywhere else.
87 + *
88 + * Changing this changes the markup Tiled Gallery saves, because it bakes the image URLs into its
89 + * save() output. Galleries saved under the previous value stay valid — the block ships a
90 + * deprecation for each image host, so flipping this either way is safe — and they are
91 + * re-serialized with the new URLs the next time they are saved.
92 + *
93 + * Image Compare only uses this for its editor previews; its save() writes the attachment URLs
94 + * through untouched, so its saved markup does not depend on this value.
95 + *
96 + * @module tiled-gallery
97 + *
98 + * @since 16.2
99 + *
100 + * @param bool $skip_photon_domain Whether to skip the external Photon domain.
101 + */
102 + return (bool) apply_filters( 'jetpack_skip_photon_domain', 'vip' === $product_slug );
103 + }
104 +}