diff options
Diffstat (limited to 'plugins/jetpack/modules/shortcodes/mailchimp.php')
-rw-r--r-- | plugins/jetpack/modules/shortcodes/mailchimp.php | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/plugins/jetpack/modules/shortcodes/mailchimp.php b/plugins/jetpack/modules/shortcodes/mailchimp.php index 2cbbefac..6e05a936 100644 --- a/plugins/jetpack/modules/shortcodes/mailchimp.php +++ b/plugins/jetpack/modules/shortcodes/mailchimp.php @@ -6,7 +6,7 @@ * [mailchimp_subscriber_popup baseUrl="mc.us11.list-manage.com" uuid="1ca7856462585a934b8674c71" lid="2d24f1898b"] * * Embed code example: - * <script type="text/javascript" src="//downloads.mailchimp.com/js/signup-forms/popup/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script><script type="text/javascript">require(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us11.list-manage.com","uuid":"1ca7856462585a934b8674c71","lid":"2d24f1898b"}) })</script> + * <script type="text/javascript" src="//downloads.mailchimp.com/js/signup-forms/popup/unique-methods/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script><script type="text/javascript">window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us11.list-manage.com","uuid":"1ca7856462585a934b8674c71","lid":"2d24f1898b","uniqueMethods":true}) })</script> * */ @@ -16,14 +16,20 @@ * @since 4.5.0 */ function jetpack_mailchimp_subscriber_popup() { - add_shortcode( 'mailchimp_subscriber_popup', array( - 'MailChimp_Subscriber_Popup', - 'shortcode' - ) ); - add_filter( 'pre_kses', array( - 'MailChimp_Subscriber_Popup', - 'reversal' - ) ); + add_shortcode( + 'mailchimp_subscriber_popup', + array( + 'MailChimp_Subscriber_Popup', + 'shortcode', + ) + ); + add_filter( + 'pre_kses', + array( + 'MailChimp_Subscriber_Popup', + 'reversal', + ) + ); } if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { @@ -46,9 +52,9 @@ class MailChimp_Subscriber_Popup { */ static $reversal_regexes = array( /* raw examplejs */ - '/<script type="text\/javascript" src="(https?:)?\/\/downloads\.mailchimp\.com\/js\/signup-forms\/popup\/embed\.js" data-dojo-config="([^"]*?)"><\/script><script type="text\/javascript">require\(\["mojo\/signup-forms\/Loader"\]\, function\(L\) { L\.start\({([^}]*?)}\) }\)<\/script>/s', + '/<script type="text\/javascript" src="(https?:)?\/\/downloads\.mailchimp\.com\/js\/signup-forms\/popup\/unique-methods\/embed\.js" data-dojo-config="([^"]*?)"><\/script><script type="text\/javascript">window.dojoRequire\(\["mojo\/signup-forms\/Loader"\]\, function\(L\) { L\.start\({([^}]*?)}\) }\)<\/script>/s', /* visual editor */ - '/<script type="text\/javascript" src="(https?:)?\/\/downloads\.mailchimp\.com\/js\/signup-forms\/popup\/embed\.js" data-dojo-config="([^"]*?)"><\/script><script type="text\/javascript">require\(\["mojo\/signup-forms\/Loader"]\, function\(L\) { L\.start\({([^}]*?)}\) }\)<\/script>/s', + '/<script type="text\/javascript" src="(https?:)?\/\/downloads\.mailchimp\.com\/js\/signup-forms\/popup\/unique-methods\/embed\.js" data-dojo-config="([^"]*?)"><\/script><script type="text\/javascript">window.dojoRequire\(\["mojo\/signup-forms\/Loader"]\, function\(L\) { L\.start\({([^}]*?)}\) }\)<\/script>/s', ); /** @@ -83,11 +89,11 @@ class MailChimp_Subscriber_Popup { */ static function reversal( $content ) { // Bail without the js src - if ( ! is_string( $content ) || false === stripos( $content, 'downloads.mailchimp.com/js/signup-forms/popup/embed.js' ) ) { + if ( ! is_string( $content ) || false === stripos( $content, 'downloads.mailchimp.com/js/signup-forms/popup/unique-methods/embed.js' ) ) { return $content; } - require_once( ABSPATH . WPINC . '/class-json.php' ); + require_once ABSPATH . WPINC . '/class-json.php'; $wp_json = new Services_JSON(); // loop through our rules and find valid embeds @@ -99,12 +105,12 @@ class MailChimp_Subscriber_Popup { foreach ( $matches[3] as $index => $js_vars ) { // the regex rule for a specific embed - $replace_regex = sprintf( '#\s*%s\s*#', preg_quote( $matches[0][$index], '#' ) ); + $replace_regex = sprintf( '#\s*%s\s*#', preg_quote( $matches[0][ $index ], '#' ) ); $attrs = $wp_json->decode( '{' . $js_vars . '}' ); - if ( $matches[2][$index] ) { - $config_attrs = $wp_json->decode( '{' . $matches[2][$index] . '}' ); + if ( $matches[2][ $index ] ) { + $config_attrs = $wp_json->decode( '{' . $matches[2][ $index ] . '}' ); foreach ( $config_attrs as $key => $value ) { $attrs->$key = ( 1 == $value ) ? 'true' : 'false'; } @@ -194,11 +200,14 @@ class MailChimp_Subscriber_Popup { return '<!-- Missing MailChimp baseUrl, uuid or lid -->'; } + // Add a uniqueMethods parameter if it is missing from the data we got from the embed code. + $js_vars['uniqueMethods'] = true; + /** This action is already documented in modules/widgets/gravatar-profile.php */ do_action( 'jetpack_stats_extra', 'mailchimp_subscriber_popup', 'view' ); $displayed_once = true; - return "\n\n" . '<script type="text/javascript" data-dojo-config="' . esc_attr( implode( ', ', $config_vars ) ) . '">jQuery.getScript( "//downloads.mailchimp.com/js/signup-forms/popup/embed.js", function( data, textStatus, jqxhr ) { require(["mojo/signup-forms/Loader"], function(L) { L.start(' . wp_json_encode( $js_vars ) . ') }); window.define.amd = undefined; } );</script>' . "\n\n"; + return "\n\n" . '<script type="text/javascript" data-dojo-config="' . esc_attr( implode( ', ', $config_vars ) ) . '">jQuery.getScript( "//downloads.mailchimp.com/js/signup-forms/popup/unique-methods/embed.js", function( data, textStatus, jqxhr ) { window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start(' . wp_json_encode( $js_vars ) . ') });} );</script>' . "\n\n"; } } |