1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
<?php
/**
* Compatibility functions for the Creative Mail plugin.
* https://wordpress.org/plugins/creative-mail-by-constant-contact/
*
* @since 8.9.0
*
* @package automattic/jetpack
*/
namespace Automattic\Jetpack\Creative_Mail;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
const PLUGIN_SLUG = 'creative-mail-by-constant-contact';
const PLUGIN_FILE = 'creative-mail-by-constant-contact/creative-mail-plugin.php';
add_action( 'admin_notices', __NAMESPACE__ . '\error_notice' );
add_action( 'admin_init', __NAMESPACE__ . '\try_install' );
add_action( 'jetpack_activated_plugin', __NAMESPACE__ . '\configure_plugin', 10, 2 );
/**
* Verify the intent to install Creative Mail, and kick off installation.
*
* This works in tandem with a JITM set up in the JITM package.
*/
function try_install() {
if ( ! isset( $_GET['creative-mail-action'] ) ) {
return;
}
check_admin_referer( 'creative-mail-install' );
$result = false;
$redirect = admin_url( 'edit.php?post_type=feedback' );
// Attempt to install and activate the plugin.
if ( current_user_can( 'activate_plugins' ) ) {
switch ( $_GET['creative-mail-action'] ) {
case 'install':
$result = install_and_activate();
break;
case 'activate':
$result = activate();
break;
}
}
if ( $result ) {
/** This action is already documented in _inc/lib/class.core-rest-api-endpoints.php */
do_action( 'jetpack_activated_plugin', PLUGIN_FILE, 'jitm' );
$redirect = admin_url( 'admin.php?page=creativemail' );
} else {
$redirect = add_query_arg( 'creative-mail-install-error', true, $redirect );
}
wp_safe_redirect( $redirect );
exit;
}
/**
* Install and activate the Creative Mail plugin.
*
* @return bool result of installation
*/
function install_and_activate() {
jetpack_require_lib( 'plugins' );
$result = \Jetpack_Plugins::install_and_activate_plugin( PLUGIN_SLUG );
if ( is_wp_error( $result ) ) {
return false;
} else {
return true;
}
}
/**
* Activate the Creative Mail plugin.
*
* @return bool result of activation
*/
function activate() {
$result = activate_plugin( PLUGIN_FILE );
// Activate_plugin() returns null on success.
return is_null( $result );
}
/**
* Notify the user that the installation of Creative Mail failed.
*/
function error_notice() {
if ( empty( $_GET['creative-mail-install-error'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
return;
}
?>
<div class="notice notice-error is-dismissible">
<p><?php esc_html_e( 'There was an error installing Creative Mail.', 'jetpack' ); ?></p>
</div>
<?php
}
/**
* Set some options when first activating the plugin via Jetpack.
*
* @since 8.9.0
*
* @param string $plugin_file Plugin file.
* @param string $source Where did the plugin installation originate.
*/
function configure_plugin( $plugin_file, $source ) {
if ( PLUGIN_FILE !== $plugin_file ) {
return;
}
$plugin_info = array(
'plugin' => 'jetpack',
'version' => JETPACK__VERSION,
'time' => time(),
'source' => esc_attr( $source ),
);
update_option( 'ce4wp_referred_by', $plugin_info );
}
|