summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/shortcodes/mailchimp.php')
-rw-r--r--plugins/jetpack/modules/shortcodes/mailchimp.php43
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 */
- '/&lt;script type="text\/javascript" src="(https?:)?\/\/downloads\.mailchimp\.com\/js\/signup-forms\/popup\/embed\.js" data-dojo-config="([^"]*?)"&gt;&lt;\/script&gt;&lt;script type="text\/javascript"&gt;require\(\["mojo\/signup-forms\/Loader"]\, function\(L\) { L\.start\({([^}]*?)}\) }\)&lt;\/script&gt;/s',
+ '/&lt;script type="text\/javascript" src="(https?:)?\/\/downloads\.mailchimp\.com\/js\/signup-forms\/popup\/unique-methods\/embed\.js" data-dojo-config="([^"]*?)"&gt;&lt;\/script&gt;&lt;script type="text\/javascript"&gt;window.dojoRequire\(\["mojo\/signup-forms\/Loader"]\, function\(L\) { L\.start\({([^}]*?)}\) }\)&lt;\/script&gt;/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";
}
}