PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.5.2
Jetpack – WP Security, Backup, Speed, & Growth v13.5.2
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 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 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 / modules / calypsoify / class-jetpack-calypsoify.php
jetpack / modules / calypsoify Last commit date
README.md 6 years ago class-jetpack-calypsoify.php 2 years ago mods-gutenberg.js 2 years ago mods.js 6 years ago style-gutenberg-rtl.min.css 2 years ago style-gutenberg.min.css 2 years ago
class-jetpack-calypsoify.php
213 lines
1 <?php
2 /**
3 * This is Calypso skin of the wp-admin interface that is conditionally triggered via the ?calypsoify=1 param.
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Calypsoify\Jetpack_Calypsoify as Calypsoify;
9 use Automattic\Jetpack\Status;
10
11 /**
12 * Class Jetpack_Calypsoify
13 */
14 class Jetpack_Calypsoify {
15
16 /**
17 * Singleton instance of `Jetpack_Calypsoify`.
18 *
19 * @var object
20 */
21 public static $instance = false;
22
23 /**
24 * Is Calypsoify enabled, based on any value of `calypsoify` user meta.
25 *
26 * @var bool
27 */
28 public $is_calypsoify_enabled = false;
29
30 /**
31 * Jetpack_Calypsoify constructor.
32 */
33 private function __construct() {
34 add_action( 'admin_init', array( $this, 'setup' ), 4 );
35 }
36
37 /**
38 * Singleton.
39 *
40 * @return Jetpack_Calypsoify
41 */
42 public static function get_instance() {
43 if ( ! self::$instance ) {
44 self::$instance = new self();
45 }
46
47 return self::$instance;
48 }
49
50 /**
51 * Setup function that is loaded on the `wp_loaded` hook via the constructor.
52 */
53 public function setup() {
54 $this->is_calypsoify_enabled = isset( $_GET['calypsoify'] ) && 1 === (int) $_GET['calypsoify'] && $this->is_page_gutenberg(); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
55
56 $this->check_meta();
57
58 if ( $this->is_calypsoify_enabled ) {
59 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_for_gutenberg' ), 100 );
60 }
61 }
62
63 /**
64 * Enqueues scripts, data, and styles for Gutenberg.
65 */
66 public function enqueue_for_gutenberg() {
67 $site_suffix = ( new Status() )->get_site_suffix();
68 wp_enqueue_style( 'calypsoify_wpadminmods_css', plugin_dir_url( __FILE__ ) . 'style-gutenberg.min.css', false, JETPACK__VERSION );
69 wp_style_add_data( 'calypsoify_wpadminmods_css', 'rtl', 'replace' );
70 wp_style_add_data( 'calypsoify_wpadminmods_css', 'suffix', '.min' );
71
72 wp_enqueue_script( 'calypsoify_wpadminmods_js', plugin_dir_url( __FILE__ ) . 'mods-gutenberg.js', array( 'jquery' ), JETPACK__VERSION, false );
73 wp_localize_script(
74 'calypsoify_wpadminmods_js',
75 'calypsoifyGutenberg',
76 array(
77 'closeUrl' => $this->get_close_gutenberg_url(),
78 'manageReusableBlocksUrl' => $this->get_calypso_origin() . '/types/wp_block/' . $site_suffix,
79 'createNewPostUrl' => $this->get_calypso_origin() . '/post/' . $site_suffix,
80 )
81 );
82 }
83
84 /**
85 * Returns the Calypso domain that originated the current request.
86 *
87 * @return string
88 */
89 private function get_calypso_origin() {
90 $origin = ! empty( $_GET['origin'] ) ? wp_unslash( $_GET['origin'] ) : 'https://wordpress.com'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
91 $allowed = array(
92 'http://calypso.localhost:3000',
93 'http://127.0.0.1:41050', // Desktop App.
94 'https://wpcalypso.wordpress.com',
95 'https://horizon.wordpress.com',
96 'https://wordpress.com',
97 );
98 return in_array( $origin, $allowed, true ) ? $origin : 'https://wordpress.com';
99 }
100
101 /**
102 * Returns the Calypso URL that displays either the current post type list (if no args
103 * are supplied) or the classic editor for the current post (if a post ID is supplied).
104 *
105 * @param int|null $post_id Post ID.
106 *
107 * @return string
108 */
109 public function get_calypso_url( $post_id = null ) {
110 $screen = get_current_screen();
111 $post_type = $screen->post_type;
112 $site_suffix = ( new Status() )->get_site_suffix();
113
114 if ( $post_id === null ) {
115 // E.g. posts or pages have no special suffix. CPTs are in the `types/{cpt}` format.
116 $post_type_suffix = ( 'post' === $post_type || 'page' === $post_type )
117 ? "/{$post_type}s/"
118 : "/types/{$post_type}/";
119 $post_suffix = '';
120 } else {
121 $post_type_suffix = ( 'post' === $post_type || 'page' === $post_type )
122 ? "/{$post_type}/"
123 : "/edit/{$post_type}/";
124 $post_suffix = "/{$post_id}";
125 }
126
127 return $this->get_calypso_origin() . $post_type_suffix . $site_suffix . $post_suffix;
128 }
129
130 /**
131 * Returns the URL to be used on the block editor close button for going back to the
132 * Calypso post list.
133 *
134 * @return string
135 */
136 public function get_close_gutenberg_url() {
137 return $this->get_calypso_url();
138 }
139
140 /**
141 * Returns the URL for switching the user's editor to the Calypso (WordPress.com Classic) editor.
142 *
143 * @return string
144 */
145 public function get_switch_to_classic_editor_url() {
146 return add_query_arg(
147 'set-editor',
148 'classic',
149 $this->is_calypsoify_enabled ? $this->get_calypso_url( get_the_ID() ) : false
150 );
151 }
152
153 /**
154 * Checks if the calypsoify user meta value is set, and deletes it if it is.
155 * This is to ensure that Calypsoify is not activated without the URL parameter.
156 */
157 public function check_meta() {
158 if ( ! empty( get_user_meta( get_current_user_id(), 'calypsoify', true ) ) ) {
159 delete_user_meta( get_current_user_id(), 'calypsoify' );
160 }
161 }
162
163 /**
164 * Return whether a post type should display the Gutenberg/block editor.
165 *
166 * @since 6.7.0
167 *
168 * @param string $post_type Post type.
169 */
170 public function is_post_type_gutenberg( $post_type ) {
171 return use_block_editor_for_post_type( $post_type );
172 }
173
174 /**
175 * Determines if the page is an instance of the Gutenberg block editor.
176 *
177 * @return bool
178 */
179 public function is_page_gutenberg() {
180 // phpcs:disable WordPress.Security.NonceVerification.Recommended
181 // Disabling WordPress.Security.NonceVerification.Recommended because this function fires within admin_init and this is only changing display.
182 $page = isset( $_SERVER['REQUEST_URI'] ) ? wp_basename( esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) : '';
183
184 if ( str_contains( $page, 'post-new.php' ) && empty( $_GET['post_type'] ) ) {
185 return true;
186 }
187
188 if ( str_contains( $page, 'post-new.php' ) && isset( $_GET['post_type'] ) && $this->is_post_type_gutenberg( sanitize_key( $_GET['post_type'] ) ) ) {
189 return true;
190 }
191
192 if ( str_contains( $page, 'post.php' ) ) {
193 $post = get_post( isset( $_GET['post'] ) ? intval( $_GET['post'] ) : null );
194 if ( isset( $post ) && isset( $post->post_type ) && $this->is_post_type_gutenberg( $post->post_type ) ) {
195 return true;
196 }
197 }
198
199 if ( str_contains( $page, 'revision.php' ) ) {
200 $post = get_post( isset( $_GET['revision'] ) ? intval( $_GET['revision'] ) : null );
201 $parent = get_post( $post->post_parent );
202 if ( isset( $parent ) && isset( $parent->post_type ) && $this->is_post_type_gutenberg( $parent->post_type ) ) {
203 return true;
204 }
205 }
206
207 return false;
208 // phpcs:enable
209 }
210 }
211
212 Calypsoify::get_instance();
213