PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 7.4.3
Jetpack – WP Security, Backup, Speed, & Growth v7.4.3
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 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 All 501 releases
jetpack / jetpack.php
jetpack.php
271 lines 11.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * Plugin Name: Jetpack by WordPress.com
5 * Plugin URI: https://jetpack.com
6 * Description: Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.
7 * Author: Automattic
8 * Version: 7.4.3
9 * Author URI: https://jetpack.com
10 * License: GPL2+
11 * Text Domain: jetpack
12 * Domain Path: /languages/
13 */
14
15 define( 'JETPACK__MINIMUM_WP_VERSION', '5.1' );
16 define( 'JETPACK__MINIMUM_PHP_VERSION', '5.3.2' );
17
18 define( 'JETPACK__VERSION', '7.4.3' );
19 define( 'JETPACK_MASTER_USER', true );
20 define( 'JETPACK__API_VERSION', 1 );
21 define( 'JETPACK__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
22 define( 'JETPACK__PLUGIN_FILE', __FILE__ );
23
24 defined( 'JETPACK_CLIENT__AUTH_LOCATION' ) or define( 'JETPACK_CLIENT__AUTH_LOCATION', 'header' );
25 defined( 'JETPACK_CLIENT__HTTPS' ) or define( 'JETPACK_CLIENT__HTTPS', 'AUTO' );
26 defined( 'JETPACK__GLOTPRESS_LOCALES_PATH' ) or define( 'JETPACK__GLOTPRESS_LOCALES_PATH', JETPACK__PLUGIN_DIR . 'locales.php' );
27 defined( 'JETPACK__API_BASE' ) or define( 'JETPACK__API_BASE', 'https://jetpack.wordpress.com/jetpack.' );
28 defined( 'JETPACK_PROTECT__API_HOST' ) or define( 'JETPACK_PROTECT__API_HOST', 'https://api.bruteprotect.com/' );
29 defined( 'JETPACK__WPCOM_JSON_API_HOST' ) or define( 'JETPACK__WPCOM_JSON_API_HOST', 'public-api.wordpress.com' );
30
31 defined( 'JETPACK__SANDBOX_DOMAIN' ) or define( 'JETPACK__SANDBOX_DOMAIN', '' );
32
33 defined( 'JETPACK__DEBUGGER_PUBLIC_KEY' ) or define(
34 'JETPACK__DEBUGGER_PUBLIC_KEY',
35 "\r\n" . '-----BEGIN PUBLIC KEY-----' . "\r\n"
36 . 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm+uLLVoxGCY71LS6KFc6' . "\r\n"
37 . '1UnF6QGBAsi5XF8ty9kR3/voqfOkpW+gRerM2Kyjy6DPCOmzhZj7BFGtxSV2ZoMX' . "\r\n"
38 . '9ZwWxzXhl/Q/6k8jg8BoY1QL6L2K76icXJu80b+RDIqvOfJruaAeBg1Q9NyeYqLY' . "\r\n"
39 . 'lEVzN2vIwcFYl+MrP/g6Bc2co7Jcbli+tpNIxg4Z+Hnhbs7OJ3STQLmEryLpAxQO' . "\r\n"
40 . 'q8cbhQkMx+FyQhxzSwtXYI/ClCUmTnzcKk7SgGvEjoKGAmngILiVuEJ4bm7Q1yok' . "\r\n"
41 . 'xl9+wcfW6JAituNhml9dlHCWnn9D3+j8pxStHihKy2gVMwiFRjLEeD8K/7JVGkb/' . "\r\n"
42 . 'EwIDAQAB' . "\r\n"
43 . '-----END PUBLIC KEY-----' . "\r\n"
44 );
45
46 /**
47 * Returns the location of Jetpack's lib directory. This filter is applied
48 * in require_lib().
49 *
50 * @since 4.0.2
51 *
52 * @return string Location of Jetpack library directory.
53 *
54 * @filter require_lib_dir
55 */
56 function jetpack_require_lib_dir() {
57 return JETPACK__PLUGIN_DIR . '_inc/lib';
58 }
59
60
61 /**
62 * Checks if the code debug mode turned on, and returns false if it is. When Jetpack is in
63 * code debug mode, it shouldn't use minified assets. Note that this filter is not being used
64 * in every place where assets are enqueued. The filter is added at priority 9 to be overridden
65 * by any default priority filter that runs after it.
66 *
67 * @since 6.2.0
68 *
69 * @return boolean
70 *
71 * @filter jetpack_should_use_minified_assets
72 */
73 function jetpack_should_use_minified_assets() {
74 if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
75 return false;
76 }
77 return true;
78 }
79
80 /**
81 * Outputs for an admin notice about running Jetpack on outdated WordPress.
82 *
83 * @since 7.2.0
84 */
85 function jetpack_admin_unsupported_wp_notice() { ?>
86 <div class="notice notice-error is-dismissible">
87 <p><?php esc_html_e( 'Jetpack requires a more recent version of WordPress and has been paused. Please update WordPress to continue enjoying Jetpack.', 'jetpack' ); ?></p>
88 </div>
89 <?php
90 }
91
92 if ( version_compare( $GLOBALS['wp_version'], JETPACK__MINIMUM_WP_VERSION, '<' ) ) {
93 if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
94 error_log(
95 sprintf(
96 /* translators: Placeholders are numbers, versions of WordPress in use on the site, and required by WordPress. */
97 esc_html__( 'Your version of WordPress (%1$s) is lower than the version required by Jetpack (%2$s). Please update WordPress to continue enjoying Jetpack.', 'jetpack' ),
98 $GLOBALS['wp_version'],
99 JETPACK__MINIMUM_WP_VERSION
100 )
101 );
102 }
103 add_action( 'admin_notices', 'jetpack_admin_unsupported_wp_notice' );
104 return;
105 }
106
107 /**
108 * Outputs an admin notice for folks running an outdated version of PHP.
109 * @todo: Remove once WP 5.2 is the minimum version.
110 *
111 * @since 7.4.0
112 */
113 function jetpack_admin_unsupported_php_notice() { ?>
114 <div class="notice notice-error is-dismissible">
115 <p><?php esc_html_e( 'Jetpack requires a more recent version of PHP and has been paused. Please update PHP to continue enjoying Jetpack.', 'jetpack' ); ?></p>
116 <p class="button-container">
117 <?php
118 printf(
119 '<a class="button button-primary" href="%1$s" target="_blank" rel="noopener noreferrer">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>',
120 esc_url( wp_get_update_php_url() ),
121 __( 'Learn more about updating PHP' ),
122 /* translators: accessibility text */
123 __( '(opens in a new tab)' )
124 );
125 ?>
126 </p>
127 </div>
128 <?php
129 }
130
131 /**
132 * Outputs an admin notice for folks running Jetpack without having run composer install.
133 *
134 * @since 7.4.0
135 */
136 function jetpack_admin_missing_autoloader() { ?>
137 <div class="notice notice-error is-dismissible">
138 <p>
139 <?php
140 printf(
141 /* translators: Placeholder is a link to a support document. */
142 __( 'Your installation of Jetpack is incomplete. If you installed Jetpack from GitHub, please refer to <a href="%1$s" target="_blank" rel="noopener noreferrer">this document</a> to set up your development environment.', 'jetpack' ),
143 esc_url( 'https://github.com/Automattic/jetpack/blob/master/docs/development-environment.md' )
144 );
145 ?>
146 </p>
147 </p>
148 </div>
149 <?php
150 }
151
152 /**
153 * This is where the loading of Jetpack begins.
154 *
155 * First, we check for our supported version of PHP and load our composer autoloader. If either of these fail,
156 * we "pause" Jetpack by ending the loading process and displaying an admin_notice to inform the site owner.
157 *
158 * After both those things happen successfully, we require the legacy files, then add on to various hooks that we expect
159 * to always run.
160 *
161 * Lastly, we fire Jetpack::init() to fire up the engines.
162 */
163 if ( version_compare( phpversion(), JETPACK__MINIMUM_PHP_VERSION, '<' ) ) {
164 if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
165 error_log(
166 sprintf(
167 /* translators: Placeholders are numbers, versions of PHP in use on the site, and required by Jetpack. */
168 esc_html__( 'Your version of PHP (%1$s) is lower than the version required by Jetpack (%2$s). Please update PHP to continue enjoying Jetpack.', 'jetpack' ),
169 esc_html( phpversion() ),
170 JETPACK__MINIMUM_PHP_VERSION
171 )
172 );
173 }
174 add_action( 'admin_notices', 'jetpack_admin_unsupported_php_notice' );
175 return;
176 }
177
178 /**
179 * Load all the packages.
180 *
181 * We want to fail gracefully if `composer install` has not been executed yet, so we are checking for the autoloader.
182 * If the autoloader is not present, let's log the failure, pause Jetpack, and display a nice admin notice.
183 */
184 $jetpack_autoloader = JETPACK__PLUGIN_DIR . 'vendor/autoload.php';
185 if ( is_readable( $jetpack_autoloader ) ) {
186 require $jetpack_autoloader;
187 } else {
188 if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
189 error_log(
190 sprintf(
191 /* translators: Placeholder is a link to a support document. */
192 __( 'Your installation of Jetpack is incomplete. If you installed Jetpack from GitHub, please refer to <a href="%1$s" target="_blank" rel="noopener noreferrer">this document</a> to set up your development environment.', 'jetpack' ),
193 esc_url( 'https://github.com/Automattic/jetpack/blob/master/docs/development-environment.md' )
194 )
195 );
196 }
197 add_action( 'admin_notices', 'jetpack_admin_missing_autoloader' );
198 return;
199 }
200
201
202 add_filter( 'jetpack_require_lib_dir', 'jetpack_require_lib_dir' );
203 add_filter( 'jetpack_should_use_minified_assets', 'jetpack_should_use_minified_assets', 9 );
204
205 // @todo: Abstract out the admin functions, and only include them if is_admin()
206 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack.php' );
207 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-network.php' );
208 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-client.php' );
209 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-data.php' );
210 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-client-server.php' );
211 require_once( JETPACK__PLUGIN_DIR . 'sync/class.jetpack-sync-actions.php' );
212 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-options.php' );
213 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-user-agent.php' );
214 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-post-images.php' );
215 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-error.php' );
216 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-heartbeat.php' );
217 require_once( JETPACK__PLUGIN_DIR . 'class.photon.php' );
218 require_once( JETPACK__PLUGIN_DIR . 'functions.photon.php' );
219 require_once( JETPACK__PLUGIN_DIR . 'functions.global.php' );
220 require_once( JETPACK__PLUGIN_DIR . 'functions.compat.php' );
221 require_once( JETPACK__PLUGIN_DIR . 'functions.gallery.php' );
222 require_once( JETPACK__PLUGIN_DIR . 'require-lib.php' );
223 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-autoupdate.php' );
224 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-tracks.php' );
225 require_once( JETPACK__PLUGIN_DIR . 'class.frame-nonce-preview.php' );
226 require_once( JETPACK__PLUGIN_DIR . 'modules/module-headings.php');
227 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-constants.php');
228 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-idc.php' );
229 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-connection-banner.php' );
230 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-plan.php' );
231
232 if ( is_admin() ) {
233 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-admin.php' );
234 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-jitm.php' );
235 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-affiliate.php' );
236 jetpack_require_lib( 'debugger' );
237 }
238
239 // Play nice with http://wp-cli.org/
240 if ( defined( 'WP_CLI' ) && WP_CLI ) {
241 require_once( JETPACK__PLUGIN_DIR . 'class.jetpack-cli.php' );
242 }
243
244 require_once( JETPACK__PLUGIN_DIR . '_inc/lib/class.core-rest-api-endpoints.php' );
245
246 register_activation_hook( __FILE__, array( 'Jetpack', 'plugin_activation' ) );
247 register_deactivation_hook( __FILE__, array( 'Jetpack', 'plugin_deactivation' ) );
248 add_action( 'updating_jetpack_version', array( 'Jetpack', 'do_version_bump' ), 10, 2 );
249 add_action( 'init', array( 'Jetpack', 'init' ) );
250 add_action( 'plugins_loaded', array( 'Jetpack', 'plugin_textdomain' ), 99 );
251 add_action( 'plugins_loaded', array( 'Jetpack', 'load_modules' ), 100 );
252 add_filter( 'jetpack_static_url', array( 'Jetpack', 'staticize_subdomain' ) );
253 add_filter( 'is_jetpack_site', '__return_true' );
254
255 /**
256 * Add an easy way to photon-ize a URL that is safe to call even if Jetpack isn't active.
257 *
258 * See: http://jetpack.com/2013/07/11/photon-and-themes/
259 */
260 if ( Jetpack::is_module_active( 'photon' ) ) {
261 add_filter( 'jetpack_photon_url', 'jetpack_photon_url', 10, 3 );
262 }
263
264 if ( JETPACK__SANDBOX_DOMAIN ) {
265 require_once( JETPACK__PLUGIN_DIR . '_inc/jetpack-server-sandbox.php' );
266 }
267
268 require_once( JETPACK__PLUGIN_DIR . '3rd-party/3rd-party.php' );
269
270 Jetpack::init();
271