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
|
<?php //phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
/**
* Components Library
*
* Load and display a pre-rendered component
*/
class Jetpack_Components {
/**
* Load and display a pre-rendered component
*
* @since 7.7.0
*
* @param string $name Component name.
* @param array $props Component properties.
*
* @return string The component markup
*/
public static function render_component( $name, $props ) {
$rtl = is_rtl() ? '.rtl' : '';
wp_enqueue_style( 'jetpack-components', plugins_url( "_inc/blocks/components{$rtl}.css", JETPACK__PLUGIN_FILE ), array( 'wp-components' ), JETPACK__VERSION );
ob_start();
// `include` fails gracefully and throws a warning, but doesn't halt execution.
include JETPACK__PLUGIN_DIR . "_inc/blocks/$name.html";
$markup = ob_get_clean();
foreach ( $props as $key => $value ) {
$markup = str_replace(
"#$key#",
$value,
$markup
);
// Workaround, required to replace strings in `sprintf`-expressions.
// See extensions/i18n-to-php.js for more information.
$markup = str_replace(
"%($key)s",
$value,
$markup
);
}
return $markup;
}
/**
* Load and display a pre-rendered component
*
* @since 7.7.0
*
* @param array $props Component properties.
*
* @return string The component markup
*/
public static function render_upgrade_nudge( $props ) {
$plan_slug = $props['plan'];
jetpack_require_lib( 'plans' );
$plan = Jetpack_Plans::get_plan( $plan_slug );
if ( ! $plan ) {
return self::render_component(
'upgrade-nudge',
array(
'planName' => __( 'a paid plan', 'jetpack' ),
'upgradeUrl' => '',
)
);
}
// WP.com plan objects have a dedicated `path_slug` field, Jetpack plan objects don't
// For Jetpack, we thus use the plan slug with the 'jetpack_' prefix removed.
$plan_path_slug = wp_startswith( $plan_slug, 'jetpack_' )
? substr( $plan_slug, strlen( 'jetpack_' ) )
: $plan->path_slug;
$post_id = get_the_ID();
if ( method_exists( 'Jetpack', 'build_raw_urls' ) ) {
$site_slug = Jetpack::build_raw_urls( home_url() );
} elseif ( class_exists( 'WPCOM_Masterbar' ) && method_exists( 'WPCOM_Masterbar', 'get_calypso_site_slug' ) ) {
$site_slug = WPCOM_Masterbar::get_calypso_site_slug( get_current_blog_id() );
}
// Post-checkout: redirect back to the editor.
$redirect_to = add_query_arg(
array(
'plan_upgraded' => 1,
),
get_edit_post_link( $post_id )
);
$upgrade_url =
$plan_path_slug
? add_query_arg(
'redirect_to',
$redirect_to,
"https://wordpress.com/checkout/${site_slug}/${plan_path_slug}"
) : '';
return self::render_component(
'upgrade-nudge',
array(
'planName' => $plan->product_name,
'upgradeUrl' => $upgrade_url,
)
);
}
}
|