PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.1
16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 All 504 releases
← All changes | modules/subscriptions/views.php +115 -89 12.2.316.3-a.1 View file →
@@ -1,9 +1,14 @@
1 1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 -use const Automattic\Jetpack\Extensions\Subscriptions\META_NAME_FOR_POST_LEVEL_ACCESS_SETTINGS;
3 2
4 3 // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files.
5 4
5 +use Automattic\Jetpack\Assets;
6 +
7 +if ( ! defined( 'ABSPATH' ) ) {
8 + exit( 0 );
9 +}
10 +
6 11 /**
7 12 * Jetpack_Subscriptions_Widget main view class.
8 13 */
9 14 class Jetpack_Subscriptions_Widget extends WP_Widget {
@@ -65,14 +70,16 @@
65 70 $name,
66 71 $widget_ops
67 72 );
68 73
69 - if ( self::is_jetpack() &&
70 - (
74 + if (
75 + self::is_jetpack()
76 + && (
71 77 is_active_widget( false, false, $this->id_base ) ||
72 78 is_active_widget( false, false, 'monster' ) ||
73 79 is_customize_preview()
74 80 )
81 + && ! wp_is_block_theme()
75 82 ) {
76 83 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ) );
77 84 }
78 85
@@ -95,15 +102,28 @@
95 102 *
96 103 * @since 4.5.0
97 104 */
98 105 public function enqueue_style() {
99 - wp_register_style(
106 + $path = Assets::get_file_url_for_environment(
107 + '_inc/build/subscriptions/subscriptions.min.css',
108 + 'modules/subscriptions/subscriptions.css'
109 + );
110 +
111 + wp_enqueue_style(
100 112 'jetpack-subscriptions',
101 - plugins_url( 'subscriptions.css', __FILE__ ),
113 + $path,
102 114 array(),
103 115 JETPACK__VERSION
104 116 );
105 - wp_enqueue_style( 'jetpack-subscriptions' );
117 +
118 + // `wp_maybe_inline_styles()` requires a filesystem path, not a URL.
119 + $style_path = JETPACK__PLUGIN_DIR . (
120 + /** This filter is documented in projects/plugins/jetpack/load-jetpack.php */
121 + apply_filters( 'jetpack_should_use_minified_assets', true )
122 + ? '_inc/build/subscriptions/subscriptions.min.css'
123 + : 'modules/subscriptions/subscriptions.css'
124 + );
125 + wp_style_add_data( 'jetpack-subscriptions', 'path', $style_path );
106 126 }
107 127
108 128 /**
109 129 * Renders a full widget either within the context of WordPress widget, or in response to a shortcode.
@@ -111,10 +131,17 @@
111 131 * @param array $args Display arguments including 'before_title', 'after_title', 'before_widget', and 'after_widget'.
112 132 * @param array $instance The settings for the particular instance of the widget.
113 133 */
114 134 public function widget( $args, $instance ) {
135 + if ( self::is_wpcom() && ! self::wpcom_has_status_message() && self::is_current_user_subscribed() ) {
136 + return null;
137 + }
138 +
139 + // Enqueue styles.
140 + self::enqueue_style();
141 +
115 142 if ( self::is_jetpack() &&
116 - /** This filter is documented in modules/contact-form/grunion-contact-form.php */
143 + /** This filter is documented in \Automattic\Jetpack\Forms\ContactForm\Contact_Form */
117 144 false === apply_filters( 'jetpack_auto_fill_logged_in_user', false )
118 145 ) {
119 146 $subscribe_email = '';
120 147 } else {
@@ -129,10 +156,10 @@
129 156 $stats_action = self::is_jetpack() ? 'jetpack_subscriptions' : 'follow_blog';
130 157 /** This action is documented in modules/widgets/gravatar-profile.php */
131 158 do_action( 'jetpack_stats_extra', 'widget_view', $stats_action );
132 159
133 - $after_widget = isset( $args['after_widget'] ) ? $args['after_widget'] : '';
134 - $before_widget = isset( $args['before_widget'] ) ? $args['before_widget'] : '';
160 + $after_widget = $args['after_widget'] ?? '';
161 + $before_widget = $args['before_widget'] ?? '';
135 162 $instance = wp_parse_args( (array) $instance, static::defaults() );
136 163
137 164 echo $before_widget; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
138 165
@@ -154,22 +181,42 @@
154 181 * @param array $instance The settings for the particular instance of the widget.
155 182 */
156 183 public static function render_widget_title( $args, $instance ) {
157 184 $show_only_email_and_button = $instance['show_only_email_and_button'];
158 - $before_title = isset( $args['before_title'] ) ? $args['before_title'] : '';
159 - $after_title = isset( $args['after_title'] ) ? $args['after_title'] : '';
185 + $before_title = $args['before_title'] ?? '';
186 + $after_title = $args['after_title'] ?? '';
160 187 if ( self::is_wpcom() && ! $show_only_email_and_button ) {
161 188 if ( self::is_current_user_subscribed() ) {
162 189 if ( ! empty( $instance['title_following'] ) ) {
163 - echo $before_title . '<label for="subscribe-field' . ( self::$instance_count > 1 ? '-' . self::$instance_count : '' ) . '">' . esc_attr( $instance['title_following'] ) . '</label>' . $after_title . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
190 + printf(
191 + '%1$s<label for="subscribe-field%2$s">%3$s</label>%4$s%5$s',
192 + $before_title, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
193 + ( self::$instance_count > 1 ? '-' . (int) self::$instance_count : '' ),
194 + esc_html( $instance['title_following'] ),
195 + $after_title, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
196 + "\n"
197 + );
164 198 }
165 199 } elseif ( ! empty( $instance['title'] ) ) {
166 - echo $before_title . '<label for="subscribe-field' . ( self::$instance_count > 1 ? '-' . self::$instance_count : '' ) . '">' . $instance['title'] . '</label>' . $after_title . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
200 + printf(
201 + '%1$s<label for="subscribe-field%2$s">%3$s</label>%4$s%5$s',
202 + $before_title, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
203 + ( self::$instance_count > 1 ? '-' . (int) self::$instance_count : '' ),
204 + esc_html( $instance['title'] ),
205 + $after_title, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
206 + "\n"
207 + );
167 208 }
168 209 }
169 210
170 211 if ( self::is_jetpack() && empty( $instance['show_only_email_and_button'] ) ) {
171 - echo $args['before_title'] . $instance['title'] . $args['after_title'] . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
212 + printf(
213 + '%1$s%2$s%3$s%4$s',
214 + $before_title, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
215 + esc_html( $instance['title'] ),
216 + $after_title, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
217 + "\n"
218 + );
172 219 }
173 220 }
174 221
175 222 /**
@@ -324,26 +371,8 @@
324 371 return 'subscribe-blog-' . $id;
325 372 }
326 373
327 374 /**
328 - * Generates the source parameter to pass to the iframe
329 - *
330 - * @return string the actaul post access level (see projects/plugins/jetpack/extensions/blocks/subscriptions/settings.js for the values).
331 - */
332 - protected static function get_post_access_level() {
333 - $post_id = get_the_ID();
334 - if ( ! $post_id ) {
335 - return 'everybody';
336 - }
337 - require_once __DIR__ . '/../../extensions/blocks/subscriptions/constants.php';
338 - $meta = get_post_meta( $post_id, META_NAME_FOR_POST_LEVEL_ACCESS_SETTINGS, true );
339 - if ( empty( $meta ) ) {
340 - $meta = 'everybody';
341 - }
342 - return $meta;
343 - }
344 -
345 - /**
346 375 * Renders a form allowing folks to subscribe to the blog.
347 376 *
348 377 * @param array $args Display arguments including 'before_title', 'after_title', 'before_widget', and 'after_widget'.
349 378 * @param array $instance The settings for the particular instance of the widget.
@@ -353,9 +382,9 @@
353 382 $show_only_email_and_button = $instance['show_only_email_and_button'];
354 383 $show_subscribers_total = (bool) $instance['show_subscribers_total'];
355 384 $subscribers_total = self::fetch_subscriber_count();
356 385 $subscribe_text = empty( $instance['show_only_email_and_button'] ) ?
357 - stripslashes( $instance['subscribe_text'] ) :
386 + wp_kses_post( stripslashes( $instance['subscribe_text'] ) ) :
358 387 false;
359 388 $referer = esc_url_raw( ( is_ssl() ? 'https' : 'http' ) . '://' . ( isset( $_SERVER['HTTP_HOST'] ) ? wp_unslash( $_SERVER['HTTP_HOST'] ) : '' ) . ( isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '' ) );
360 389 $source = 'widget';
361 390 $widget_id = ! empty( $args['widget_id'] ) ? $args['widget_id'] : self::$instance_count;
@@ -361,14 +390,18 @@
361 390 $widget_id = ! empty( $args['widget_id'] ) ? $args['widget_id'] : self::$instance_count;
362 391 $subscribe_button = ! empty( $instance['submit_button_text'] ) ? $instance['submit_button_text'] : $instance['subscribe_button'];
363 392 $subscribe_placeholder = isset( $instance['subscribe_placeholder'] ) ? stripslashes( $instance['subscribe_placeholder'] ) : '';
364 393 $submit_button_classes = isset( $instance['submit_button_classes'] ) ? 'wp-block-button__link ' . $instance['submit_button_classes'] : 'wp-block-button__link';
365 - $submit_button_styles = isset( $instance['submit_button_styles'] ) ? $instance['submit_button_styles'] : '';
366 - $submit_button_wrapper_styles = isset( $instance['submit_button_wrapper_styles'] ) ? $instance['submit_button_wrapper_styles'] : '';
367 - $email_field_classes = isset( $instance['email_field_classes'] ) ? $instance['email_field_classes'] : '';
368 - $email_field_styles = isset( $instance['email_field_styles'] ) ? $instance['email_field_styles'] : '';
369 - $post_access_level = self::get_post_access_level();
394 + $submit_button_styles = $instance['submit_button_styles'] ?? '';
395 + $submit_button_wrapper_styles = $instance['submit_button_wrapper_styles'] ?? '';
396 + $email_field_classes = $instance['email_field_classes'] ?? '';
397 + $email_field_styles = $instance['email_field_styles'] ?? '';
370 398
399 + // We need to include those in case Jetpack blocks are disabled
400 + require_once JETPACK__PLUGIN_DIR . 'modules/memberships/class-jetpack-memberships.php';
401 + require_once JETPACK__PLUGIN_DIR . 'extensions/blocks/premium-content/_inc/subscription-service/include.php';
402 + $post_access_level = \Jetpack_Memberships::get_post_access_level();
403 +
371 404 if ( self::is_wpcom() && ! self::wpcom_has_status_message() ) {
372 405 global $current_blog;
373 406
374 407 $url = defined( 'SUBSCRIBE_BLOG_URL' ) ? SUBSCRIBE_BLOG_URL : '';
@@ -408,8 +441,9 @@
408 441 printf(
409 442 '<input
410 443 type="email"
411 444 name="email"
445 + autocomplete="email"
412 446 %1$s
413 447 style="%2$s"
414 448 placeholder="%3$s"
415 449 value=""
@@ -457,13 +491,12 @@
457 491 ?>
458 492 </button>
459 493 </p>
460 494 </form>
461 - <?php if ( $show_subscribers_total && $subscribers_total ) { ?>
495 + <?php if ( $show_subscribers_total && $subscribers_total > 0 ) { ?>
462 496 <div class="wp-block-jetpack-subscriptions__subscount">
463 497 <?php
464 - /* translators: %s: number of folks following the blog */
465 - echo esc_html( sprintf( _n( 'Join %s other subscriber', 'Join %s other subscribers', $subscribers_total, 'jetpack' ), number_format_i18n( $subscribers_total ) ) );
498 + echo esc_html( Jetpack_Memberships::get_join_others_text( $subscribers_total ) );
466 499 ?>
467 500 </div>
468 501 <?php } ?>
469 502 </div>
@@ -503,9 +536,9 @@
503 536 class="screen-reader-text"
504 537 for="<?php echo esc_attr( $subscribe_field_id . '-' . $widget_id ); ?>">
505 538 <?php echo ! empty( $subscribe_placeholder ) ? esc_html( $subscribe_placeholder ) : esc_html__( 'Email Address:', 'jetpack' ); ?>
506 539 </label>
507 - <input type="email" name="email" required="required"
540 + <input type="email" name="email" autocomplete="email" required="required"
508 541 <?php if ( ! empty( $email_field_classes ) ) { ?>
509 542 class="<?php echo esc_attr( $email_field_classes ); ?> required"
510 543 <?php } ?>
511 544 <?php if ( ! empty( $email_field_styles ) ) { ?>
@@ -525,13 +558,9 @@
525 558 <input type="hidden" name="action" value="subscribe"/>
526 559 <input type="hidden" name="source" value="<?php echo esc_url( $referer ); ?>"/>
527 560 <input type="hidden" name="sub-type" value="<?php echo esc_attr( $source ); ?>"/>
528 561 <input type="hidden" name="redirect_fragment" value="<?php echo esc_attr( $form_id ); ?>"/>
529 - <?php
530 - if ( is_user_logged_in() ) {
531 - wp_nonce_field( 'blogsub_subscribe_' . get_current_blog_id(), '_wpnonce', false );
532 - }
533 - ?>
562 + <?php wp_nonce_field( 'blogsub_subscribe_' . \Jetpack_Options::get_option( 'id' ) ); ?>
534 563 <button type="submit"
535 564 <?php if ( ! empty( $submit_button_classes ) ) { ?>
536 565 class="<?php echo esc_attr( $submit_button_classes ); ?>"
537 566 <?php } ?>
@@ -552,10 +581,9 @@
552 581 </form>
553 582 <?php if ( $show_subscribers_total && 0 < $subscribers_total ) { ?>
554 583 <div class="wp-block-jetpack-subscriptions__subscount">
555 584 <?php
556 - /* translators: %s: number of folks following the blog */
557 - echo esc_html( sprintf( _n( 'Join %s other subscriber', 'Join %s other subscribers', $subscribers_total, 'jetpack' ), number_format_i18n( $subscribers_total ) ) );
585 + echo esc_html( Jetpack_Memberships::get_join_others_text( $subscribers_total ) );
558 586 ?>
559 587 </div>
560 588 <?php } ?>
561 589 </div>
@@ -637,9 +665,9 @@
637 665 $subs_count = array(
638 666 'status' => 'failed',
639 667 'code' => $xml->getErrorCode(),
640 668 'message' => $xml->getErrorMessage(),
641 - 'value' => ( isset( $subs_count['value'] ) ) ? $subs_count['value'] : 0,
669 + 'value' => $subs_count['value'] ?? 0,
642 670 );
643 671 } else {
644 672 $subs_count = array(
645 673 'status' => 'success',
@@ -665,27 +693,28 @@
665 693 *
666 694 * @return array
667 695 */
668 696 public function update( $new_instance, $old_instance ) {
669 - $instance = $old_instance;
697 + // Merge new values over old, then fill in any missing keys with defaults
698 + $instance = wp_parse_args( (array) $new_instance, wp_parse_args( (array) $old_instance, static::defaults() ) );
670 699
671 700 if ( self::is_jetpack() ) {
672 - $instance['title'] = wp_kses( stripslashes( $new_instance['title'] ), array() );
673 - $instance['subscribe_placeholder'] = wp_kses( stripslashes( $new_instance['subscribe_placeholder'] ), array() );
674 - $instance['subscribe_button'] = wp_kses( stripslashes( $new_instance['subscribe_button'] ), array() );
675 - $instance['success_message'] = wp_kses( stripslashes( $new_instance['success_message'] ), array() );
701 + $instance['title'] = wp_kses( stripslashes( $instance['title'] ), array() );
702 + $instance['subscribe_placeholder'] = wp_kses( stripslashes( $instance['subscribe_placeholder'] ), array() );
703 + $instance['subscribe_button'] = wp_kses( stripslashes( $instance['subscribe_button'] ), array() );
704 + $instance['success_message'] = wp_kses( stripslashes( $instance['success_message'] ), array() );
676 705 }
677 706
678 707 if ( self::is_wpcom() ) {
679 - $instance['title'] = wp_strip_all_tags( stripslashes( $new_instance['title'] ) );
680 - $instance['title_following'] = wp_strip_all_tags( stripslashes( $new_instance['title_following'] ) );
681 - $instance['subscribe_logged_in'] = wp_filter_post_kses( stripslashes( $new_instance['subscribe_logged_in'] ) );
682 - $instance['subscribe_button'] = wp_strip_all_tags( stripslashes( $new_instance['subscribe_button'] ) );
708 + $instance['title'] = wp_strip_all_tags( stripslashes( $instance['title'] ) );
709 + $instance['title_following'] = isset( $instance['title_following'] ) ? wp_strip_all_tags( stripslashes( $instance['title_following'] ) ) : '';
710 + $instance['subscribe_logged_in'] = isset( $instance['subscribe_logged_in'] ) ? wp_filter_post_kses( stripslashes( $instance['subscribe_logged_in'] ) ) : '';
711 + $instance['subscribe_button'] = wp_strip_all_tags( stripslashes( $instance['subscribe_button'] ) );
683 712 }
684 713
685 714 $instance['show_subscribers_total'] = isset( $new_instance['show_subscribers_total'] ) && $new_instance['show_subscribers_total'];
686 715 $instance['show_only_email_and_button'] = isset( $new_instance['show_only_email_and_button'] ) && $new_instance['show_only_email_and_button'];
687 - $instance['subscribe_text'] = wp_filter_post_kses( stripslashes( $new_instance['subscribe_text'] ) );
716 + $instance['subscribe_text'] = wp_filter_post_kses( stripslashes( $instance['subscribe_text'] ) );
688 717
689 718 return $instance;
690 719 }
691 720
@@ -704,9 +733,9 @@
704 733 $defaults['title'] = esc_html__( 'Subscribe to Blog via Email', 'jetpack' );
705 734 $defaults['subscribe_text'] = esc_html__( 'Enter your email address to subscribe to this blog and receive notifications of new posts by email.', 'jetpack' );
706 735 $defaults['subscribe_placeholder'] = esc_html__( 'Email Address', 'jetpack' );
707 736 $defaults['subscribe_button'] = esc_html__( 'Subscribe', 'jetpack' );
708 - $defaults['success_message'] = esc_html__( "Success! An email was just sent to confirm your subscription. Please find the email now and click 'Confirm Follow' to start subscribing.", 'jetpack' );
737 + $defaults['success_message'] = esc_html__( "Success! An email was just sent to confirm your subscription. Please find the email now and click 'Confirm' to start subscribing.", 'jetpack' );
709 738
710 739 return $defaults;
711 740 }
712 741
@@ -713,8 +742,9 @@
713 742 /**
714 743 * Renders the widget's options form in wp-admin.
715 744 *
716 745 * @param array $instance Widget instance.
746 + * @return string|void
717 747 */
718 748 public function form( $instance ) {
719 749 $instance = wp_parse_args( (array) $instance, static::defaults() );
720 750 $show_subscribers_total = checked( $instance['show_subscribers_total'], true, false );
@@ -719,26 +749,14 @@
719 749 $instance = wp_parse_args( (array) $instance, static::defaults() );
720 750 $show_subscribers_total = checked( $instance['show_subscribers_total'], true, false );
721 751
722 752 if ( self::is_wpcom() ) {
723 - $title = esc_attr( stripslashes( $instance['title'] ) );
724 - $title_following = esc_attr( stripslashes( $instance['title_following'] ) );
725 - $subscribe_text = esc_attr( stripslashes( $instance['subscribe_text'] ) );
726 - $subscribe_logged_in = esc_attr( stripslashes( $instance['subscribe_logged_in'] ) );
727 - $subscribe_button = esc_attr( stripslashes( $instance['subscribe_button'] ) );
753 + $title = ! empty( $instance['title'] ) ? esc_attr( stripslashes( $instance['title'] ) ) : '';
754 + $title_following = ! empty( $instance['title_following'] ) ? esc_attr( stripslashes( $instance['title_following'] ) ) : '';
755 + $subscribe_text = ! empty( $instance['subscribe_text'] ) ? esc_attr( stripslashes( $instance['subscribe_text'] ) ) : '';
756 + $subscribe_logged_in = ! empty( $instance['subscribe_logged_in'] ) ? esc_attr( stripslashes( $instance['subscribe_logged_in'] ) ) : '';
757 + $subscribe_button = ! empty( $instance['subscribe_button'] ) ? esc_attr( stripslashes( $instance['subscribe_button'] ) ) : '';
728 758 $subscribers_total = self::fetch_subscriber_count();
729 - }
730 -
731 - if ( self::is_jetpack() ) {
732 - $title = stripslashes( $instance['title'] );
733 - $subscribe_text = stripslashes( $instance['subscribe_text'] );
734 - $subscribe_placeholder = stripslashes( $instance['subscribe_placeholder'] );
735 - $subscribe_button = stripslashes( $instance['subscribe_button'] );
736 - $success_message = stripslashes( $instance['success_message'] );
737 - $subscribers_total = self::fetch_subscriber_count();
738 - }
739 -
740 - if ( self::is_wpcom() ) :
741 759 ?>
742 760 <p>
743 761 <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>">
744 762 <?php esc_html_e( 'Widget title for non-followers:', 'jetpack' ); ?>
@@ -790,11 +808,17 @@
790 808 ?>
791 809 </label>
792 810 </p>
793 811 <?php
794 - endif;
812 + }
795 813
796 - if ( self::is_jetpack() ) :
814 + if ( self::is_jetpack() ) {
815 + $title = ! empty( $instance['title'] ) ? stripslashes( $instance['title'] ) : '';
816 + $subscribe_text = ! empty( $instance['subscribe_text'] ) ? stripslashes( $instance['subscribe_text'] ) : '';
817 + $subscribe_placeholder = ! empty( $instance['subscribe_placeholder'] ) ? stripslashes( $instance['subscribe_placeholder'] ) : '';
818 + $subscribe_button = ! empty( $instance['subscribe_button'] ) ? stripslashes( $instance['subscribe_button'] ) : '';
819 + $success_message = ! empty( $instance['success_message'] ) ? stripslashes( $instance['success_message'] ) : '';
820 + $subscribers_total = self::fetch_subscriber_count();
797 821 ?>
798 822 <p>
799 823 <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>">
800 824 <?php esc_html_e( 'Widget title:', 'jetpack' ); ?>
@@ -846,13 +870,13 @@
846 870 ?>
847 871 </label>
848 872 </p>
849 873 <?php
850 - endif;
874 + }
851 875 }
852 876 }
853 877
854 -if ( defined( 'IS_WPCOM' ) && IS_WPCOM && function_exists( 'class_alias' ) ) {
878 +if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
855 879 class_alias( 'Jetpack_Subscriptions_Widget', 'Blog_Subscription_Widget' );
856 880 }
857 881
858 882 /**
@@ -888,14 +912,14 @@
888 912 } else {
889 913 $instance['include_social_followers'] = false;
890 914 }
891 915
892 - $show_only_email_and_button = isset( $instance['show_only_email_and_button'] ) ? $instance['show_only_email_and_button'] : false;
893 - $submit_button_text = isset( $instance['submit_button_text'] ) ? $instance['submit_button_text'] : '';
916 + $show_only_email_and_button = $instance['show_only_email_and_button'] ?? false;
917 + $submit_button_text = $instance['submit_button_text'] ?? '';
894 918
895 919 // Build up a string with the submit button's classes and styles and set it on the instance.
896 - $submit_button_classes = isset( $instance['submit_button_classes'] ) ? $instance['submit_button_classes'] : '';
897 - $email_field_classes = isset( $instance['email_field_classes'] ) ? $instance['email_field_classes'] : '';
920 + $submit_button_classes = $instance['submit_button_classes'] ?? '';
921 + $email_field_classes = $instance['email_field_classes'] ?? '';
898 922 $style = '';
899 923 $submit_button_styles = '';
900 924 $submit_button_wrapper_styles = '';
901 925 $email_field_styles = '';
@@ -931,11 +955,11 @@
931 955 }
932 956 if ( isset( $instance['custom_padding'] ) && 'undefined' !== $instance['custom_padding'] ) {
933 957 $style = 'padding: ' .
934 958 $instance['custom_padding'] . 'px ' .
935 - round( $instance['custom_padding'] * 1.5 ) . 'px ' .
959 + round( floatval( $instance['custom_padding'] ) * 1.5 ) . 'px ' .
936 960 $instance['custom_padding'] . 'px ' .
937 - round( $instance['custom_padding'] * 1.5 ) . 'px; ';
961 + round( floatval( $instance['custom_padding'] ) * 1.5 ) . 'px; ';
938 962
939 963 $submit_button_styles .= $style;
940 964 $email_field_styles .= $style;
941 965 }
@@ -946,9 +970,9 @@
946 970 }
947 971 if ( isset( $instance['button_on_newline'] ) && 'true' === $instance['button_on_newline'] ) {
948 972 $submit_button_styles .= 'margin-top: ' . $button_spacing . 'px; ';
949 973 } else {
950 - $submit_button_styles .= 'margin: 0px; '; // Reset Safari's 2px default margin for buttons affecting input and button union
974 + $submit_button_styles .= 'margin: 0; '; // Reset Safari's 2px default margin for buttons affecting input and button union
951 975 $submit_button_styles .= 'margin-left: ' . $button_spacing . 'px; ';
952 976 }
953 977
954 978 if ( isset( $instance['custom_border_radius'] ) && 'undefined' !== $instance['custom_border_radius'] ) {
@@ -1047,8 +1071,10 @@
1047 1071 return array(
1048 1072 /* translators: Both %1$s and %2$s is site address */
1049 1073 'invitation' => sprintf( __( "Howdy,\nYou recently subscribed to <a href='%1\$s'>%2\$s</a> and we need to verify the email you provided. Once you confirm below, you'll be able to receive and read new posts.\n\nIf you believe this is an error, ignore this message and nothing more will happen.", 'jetpack' ), $site_url, $display_url ),
1050 1074 'comment_follow' => __( "Howdy.\n\nYou recently followed one of my posts. This means you will receive an email when new comments are posted.\n\nTo activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again.", 'jetpack' ),
1075 + /* translators: %1$s is the site address */
1076 + 'welcome' => sprintf( __( 'Cool, you are now subscribed to %1$s and will receive an email notification when a new post is published.', 'jetpack' ), $display_url ),
1051 1077 );
1052 1078 }
1053 1079
1054 1080 add_filter( 'default_option_subscription_options', 'subscription_options_fallback', 10, 3 );