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