PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 14.0.1
Jetpack – WP Security, Backup, Speed, & Growth v14.0.1
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 All 500 releases
jetpack / 3rd-party / jetpack-backup.php
jetpack-backup.php
108 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Compatibility functions for the Jetpack Backup plugin.
4 * https://wordpress.org/plugins/jetpack-backup/
5 *
6 * @since 10.4
7 *
8 * @package automattic/jetpack
9 */
10
11 namespace Automattic\Jetpack\Jetpack_Backup;
12
13 use Automattic\Jetpack\Plugins_Installer;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 const PLUGIN_SLUG = 'jetpack-backup';
20 const PLUGIN_FILE = 'jetpack-backup/jetpack-backup.php';
21
22 if ( isset( $_GET['jetpack-backup-install-error'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
23 add_action( 'admin_notices', __NAMESPACE__ . '\error_notice' );
24 }
25
26 if ( isset( $_GET['jetpack-backup-action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
27 add_action( 'admin_init', __NAMESPACE__ . '\try_install' );
28 }
29
30 /**
31 * Verify the intent to install Jetpack Backup, and kick off installation.
32 *
33 * This works in tandem with a JITM set up in the JITM package.
34 *
35 * @return never
36 */
37 function try_install() {
38 check_admin_referer( 'jetpack-backup-install' );
39
40 $result = false;
41 // If the plugin install fails, redirect to plugin install page pre-populated with jetpack-backup search term.
42 $redirect_on_error = admin_url( 'plugin-install.php?s=jetpack-backup&tab=search&type=term' );
43
44 // Attempt to install and activate the plugin.
45 if ( current_user_can( 'activate_plugins' ) ) {
46 switch ( $_GET['jetpack-backup-action'] ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated -- Function only hooked if set.
47 case 'install':
48 $result = install_and_activate();
49 break;
50 case 'activate':
51 $result = activate();
52 break;
53 }
54 }
55
56 if ( $result ) {
57 /** This action is already documented in _inc/lib/class.core-rest-api-endpoints.php */
58 do_action( 'jetpack_activated_plugin', PLUGIN_FILE, 'jitm' );
59 $redirect = admin_url( 'admin.php?page=jetpack-backup' );
60 } else {
61 $redirect = add_query_arg( 'jetpack-backup-install-error', true, $redirect_on_error );
62 }
63
64 wp_safe_redirect( $redirect );
65
66 exit;
67 }
68
69 /**
70 * Install and activate the Jetpack Backup plugin.
71 *
72 * @return bool result of installation
73 */
74 function install_and_activate() {
75 $result = Plugins_Installer::install_and_activate_plugin( PLUGIN_SLUG );
76
77 if ( is_wp_error( $result ) ) {
78 return false;
79 } else {
80 return true;
81 }
82 }
83
84 /**
85 * Activate the Jetpack Backup plugin.
86 *
87 * @return bool result of activation
88 */
89 function activate() {
90 $result = activate_plugin( PLUGIN_FILE );
91
92 // Activate_plugin() returns null on success.
93 return $result === null;
94 }
95
96 /**
97 * Notify the user that the installation of Jetpack Backup failed.
98 */
99 function error_notice() {
100 wp_admin_notice(
101 esc_html__( 'There was an error installing Jetpack Backup. Please try again.', 'jetpack' ),
102 array(
103 'type' => 'error',
104 'dismissible' => true,
105 )
106 );
107 }
108