164 lines
5.8 KiB
PHP
164 lines
5.8 KiB
PHP
<?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 );
|
|
}
|
|
}
|