summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/_inc/lib/components.php')
-rw-r--r--plugins/jetpack/_inc/lib/components.php109
1 files changed, 109 insertions, 0 deletions
diff --git a/plugins/jetpack/_inc/lib/components.php b/plugins/jetpack/_inc/lib/components.php
new file mode 100644
index 00000000..9c8a4fe2
--- /dev/null
+++ b/plugins/jetpack/_inc/lib/components.php
@@ -0,0 +1,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,
+ )
+ );
+ }
+}