class-jetpack-pre-connection-jitms.php
5.77 KB
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<?php
/**
* Jetpack's Pre-Connection JITMs class.
*
* @package jetpack
*/
use Automattic\Jetpack\Partner_Coupon as Jetpack_Partner_Coupon;
use Automattic\Jetpack\Redirect;
/**
* Jetpack's Pre-Connection JITMs. These can be displayed with the JITM package.
*/
class Jetpack_Pre_Connection_JITMs {
/**
* Returns all the pre-connection messages.
*
* @return array An array containing the pre-connection JITM messages.
*/
private function get_raw_messages() {
$button_caption = __( 'Set up Jetpack', 'jetpack' );
/* Translators: placeholders are links. */
$media_description = __( 'Click on the <strong>Set up Jetpack</strong> button to agree to our <a href="%1$s" target="_blank" rel="noopener noreferrer">Terms of Service</a> and to <a href="%2$s" target="_blank" rel="noopener noreferrer">share details</a> with WordPress.com, and gain access to Site Accelerator.', 'jetpack' );
/* Translators: placeholders are links. */
$widgets_description = __( 'Click on the <strong>Set up Jetpack</strong> button to agree to our <a href="%1$s" target="_blank" rel="noopener noreferrer">Terms of Service</a> and to <a href="%2$s" target="_blank" rel="noopener noreferrer">share details</a> with WordPress.com, and gain access to great additional widgets.', 'jetpack' );
/* Translators: placeholders are links. */
$posts_description = __( 'Click on the <strong>Set up Jetpack</strong> button to agree to our <a href="%1$s" target="_blank" rel="noopener noreferrer">Terms of Service</a> and to <a href="%2$s" target="_blank" rel="noopener noreferrer">share details</a> with WordPress.com, and gain access to in-depth stats about your site.', 'jetpack' );
$messages = array(
array(
'id' => 'jpsetup-upload',
'message_path' => '/wp:upload:admin_notices/',
'message' => __( 'Do you want lightning-fast images?', 'jetpack' ),
'description' => $this->generate_description_with_tos( $media_description ),
'button_caption' => $button_caption,
),
array(
'id' => 'jpsetup-widgets',
'message_path' => '/wp:widgets:admin_notices/',
'message' => __( 'Looking for even more widgets?', 'jetpack' ),
'description' => $this->generate_description_with_tos( $widgets_description ),
'button_caption' => $button_caption,
),
);
if ( wp_count_posts()->publish >= 5 ) {
$messages[] = array(
'id' => 'jpsetup-posts',
'message_path' => '/wp:edit-post:admin_notices/',
'message' => __( 'Do you know which of these posts gets the most traffic?', 'jetpack' ),
'description' => $this->generate_description_with_tos( $posts_description ),
'button_caption' => $button_caption,
);
}
foreach ( $messages as $key => $message ) {
/*
* Add Connect URL to each message, with from including jitm id.
*/
$jetpack_setup_url = $this->generate_admin_url(
array(
'page' => 'jetpack#/setup',
'from' => sprintf( 'pre-connection-jitm-%s', $message['id'] ),
)
);
$messages[ $key ]['button_link'] = $jetpack_setup_url;
}
return $messages;
}
/**
* Generate a description text with links to ToS documents.
*
* Those messages must mention the ToS agreement message,
* but do not use the standard message defined in jetpack_render_tos_blurb.
* Instead, they use their own custom messages.
*
* @param string $description Description string with placeholders.
*
* @return string
*/
private function generate_description_with_tos( $description ) {
return sprintf(
wp_kses(
$description,
array(
'a' => array(
'href' => array(),
'target' => array(),
'rel' => array(),
),
'strong' => true,
)
),
esc_url( Redirect::get_url( 'wpcom-tos' ) ),
esc_url( Redirect::get_url( 'jetpack-support-what-data-does-jetpack-sync' ) )
);
}
/**
* Returns partnership related pre-connection messages.
*
* @since 10.4
*
* @return array An array containing the pre-connection JITM messages.
*/
private function maybe_get_raw_partnership_messages() {
$partner_coupon = Jetpack_Partner_Coupon::get_coupon();
if ( ! $partner_coupon ) {
return array();
}
return array(
array(
'id' => 'jpsetup-partner-coupon',
'message_path' => '/wp:(plugin-install|themes|update-core|upload|users|tools|options-general):admin_notices/',
/* Translators: 1: Product name, 2: Partner name. */
'message' => sprintf( esc_html__( 'Get %1$s with your %2$s account', 'jetpack' ), $partner_coupon['product']['title'], $partner_coupon['partner']['name'] ),
'description' => $partner_coupon['product']['description'],
'button_caption' => esc_html__( 'Redeem coupon', 'jetpack' ),
'button_link' => $this->generate_admin_url(
array(
'page' => 'jetpack#/dashboard',
'from' => 'pre-connection-jitm--jpsetup-partner-coupon',
)
),
),
);
}
/**
* Adds the input query arguments to the admin url.
*
* @param array $args The query arguments.
*
* @return string The admin url.
*/
private function generate_admin_url( $args ) {
$url = add_query_arg( $args, admin_url( 'admin.php' ) );
return $url;
}
/**
* Add the Jetpack pre-connection JITMs to the list of pre-connection JITM messages.
*
* @param array $pre_connection_messages An array of pre-connection JITMs.
*
* @return array The array of pre-connection JITMs.
*/
public function add_pre_connection_jitms( $pre_connection_messages ) {
$jetpack_messages = array_merge( $this->get_raw_messages(), $this->maybe_get_raw_partnership_messages() );
if ( ! is_array( $pre_connection_messages ) ) {
// The incoming messages aren't an array, so just return Jetpack's messages.
return $jetpack_messages;
}
return array_merge( $pre_connection_messages, $jetpack_messages );
}
}