iubenda Cookie Solution for GDPR - Version 2.3.1

Version Description

  • Fix: Error on AMP configuration during install in some edge cases
  • Fix: Invalid www detection during AMP configuration generation process
  • Fix: Regex for iubenda script url in AMP configuration
  • Tweak: Added noindex for generated AMP configuration file
Download this release

Release Info

Developer dfactory
Plugin Icon 128x128 iubenda Cookie Solution for GDPR
Version 2.3.1
Comparing to
See all releases

Code changes from version 2.3.0 to 2.3.1

includes/amp.php CHANGED
@@ -265,6 +265,7 @@ amp-consent.amp-active {
265
  <head>
266
  <meta charset="UTF-8">
267
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
268
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
269
  <title>' . __( 'AMP Cookie Consent', 'iubenda' ) . '</title>
270
  <script type="text/javascript">
@@ -281,20 +282,40 @@ amp-consent.amp-active {
281
  rejectButtonDisplay: true,
282
  backgroundOverlay: true
283
  },
284
- callback: {
285
- onPreferenceExpressed: function(preference) {
286
- var consentAction = \'reject\';
287
- if (preference && preference.consent) {
288
- consentAction = \'accept\';
289
- }
290
- console.log(\'send consent-response\', consentAction);
291
- window.parent.postMessage({
292
- type: \'consent-response\',
293
- action: consentAction
294
- }, \'*\');
295
- }
296
- }
297
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  </script>
299
  <script async src="' . $script_src . '"></script>
300
  </head>
@@ -338,8 +359,8 @@ amp-consent.amp-active {
338
  $has_www = strpos( $parsed_file['host'], 'www.' ) === 0;
339
 
340
  // add or remove www from url string to make iframe url pass AMP validation
341
- $tweaked_host = ! $is_localhost && ! $is_subdomain ? ( ! $has_www ? 'www.' . $parsed_file['host'] : preg_replace( '/^www\./i', '', $parsed_file['host'] ) ) : $parsed_file['host'];
342
-
343
  // generate new url
344
  $tweaked_url = $parsed_file['scheme'] . '://' . $tweaked_host . ( isset( $parsed_file['port'] ) ? ':' . $parsed_file['port'] : '' ) . $parsed_file['path'] . ( ! empty( $parsed_file['query'] ) ? '?' . $parsed_file['query'] : '' );
345
 
@@ -358,7 +379,10 @@ amp-consent.amp-active {
358
  *
359
  * @return mixed
360
  */
361
- public function generate_amp_template( $code, $lang = '' ) {
 
 
 
362
  $template_dir = IUBENDA_PLUGIN_PATH . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
363
  $template_file = $template_dir . ( ! empty( $lang ) && in_array( $lang, array_keys( iubenda()->languages ) ) ? 'amp' . '-' . $lang . '.html' : 'amp.html' );
364
  $html = $this->prepare_amp_template( $code );
265
  <head>
266
  <meta charset="UTF-8">
267
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
268
+ <meta name="robots" content="noindex">
269
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
270
  <title>' . __( 'AMP Cookie Consent', 'iubenda' ) . '</title>
271
  <script type="text/javascript">
282
  rejectButtonDisplay: true,
283
  backgroundOverlay: true
284
  },
285
+ callback: { // Mandatory
286
+ onPreferenceExpressed: function(preference) {
287
+ var consentAction = \'reject\';
288
+ var consentObject = {
289
+ type: \'consent-response\'
290
+ };
291
+
292
+ if (preference && preference.consent) {
293
+ consentAction = \'accept\';
294
+ }
295
+
296
+ consentObject.action = consentAction;
297
+
298
+ if (_iub.cs.options.enableCMP) {
299
+ __cmp(\'getConsentData\', null, function(res) {
300
+ var consentString = res.consentData;
301
+
302
+ if (consentString.length <= 200) {
303
+ consentObject.info = consentString;
304
+ }
305
+
306
+ console.log(\'send consent-response\', consentAction, \'with CMP consent string\', consentString);
307
+
308
+ window.parent.postMessage(consentObject, \'*\');
309
+ });
310
+ }
311
+ else {
312
+ console.log(\'send consent-response\', consentAction);
313
+
314
+ window.parent.postMessage(consentObject, \'*\');
315
+ }
316
+ }
317
+ }
318
+ };
319
  </script>
320
  <script async src="' . $script_src . '"></script>
321
  </head>
359
  $has_www = strpos( $parsed_file['host'], 'www.' ) === 0;
360
 
361
  // add or remove www from url string to make iframe url pass AMP validation
362
+ $tweaked_host = ! $is_localhost && ( ! $is_subdomain || $has_www ) ? ( ! $has_www ? 'www.' . $parsed_file['host'] : preg_replace( '/^www\./i', '', $parsed_file['host'] ) ) : $parsed_file['host'];
363
+
364
  // generate new url
365
  $tweaked_url = $parsed_file['scheme'] . '://' . $tweaked_host . ( isset( $parsed_file['port'] ) ? ':' . $parsed_file['port'] : '' ) . $parsed_file['path'] . ( ! empty( $parsed_file['query'] ) ? '?' . $parsed_file['query'] : '' );
366
 
379
  *
380
  * @return mixed
381
  */
382
+ public function generate_amp_template( $code = '', $lang = '' ) {
383
+ if ( empty( $code ) )
384
+ return false;
385
+
386
  $template_dir = IUBENDA_PLUGIN_PATH . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
387
  $template_file = $template_dir . ( ! empty( $lang ) && in_array( $lang, array_keys( iubenda()->languages ) ) ? 'amp' . '-' . $lang . '.html' : 'amp.html' );
388
  $html = $this->prepare_amp_template( $code );
includes/settings.php CHANGED
@@ -369,14 +369,14 @@ class iubenda_Settings {
369
  </span>
370
  </p>
371
  <p class="step-2 step-yes">
372
- <span class="notice-question"><?php _e( "Whew, what a relief!😅 We've worked countless hours to make this plugin as useful as possible so we're pretty happy that you're enjoying it. While you here, would you mind leaving us a 5 star rating? It would really help us out.", 'iubenda' ); ?></span>
373
  <span class="notice-reply">
374
  <a href="https://wordpress.org/support/plugin/iubenda-cookie-law-solution/reviews/?filter=5" target="_blank" class="reply-yes"><?php _e( 'Sure!', 'iubenda' ); ?></a>
375
  <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
376
  </span>
377
  </p>
378
  <p class="step-2 step-no">
379
- <span class="notice-question"><?php _e( "Were sorry to hear that. Would you mind giving us some feedback?", 'iubenda' ); ?></span>
380
  <span class="notice-reply">
381
  <a href="https://iubenda.typeform.com/to/BXuSMZ" target="_blank" class="reply-yes"><?php _e( 'Ok sure!', 'iubenda' ); ?></a>
382
  <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
@@ -564,10 +564,10 @@ class iubenda_Settings {
564
  if ( $tab_key === 'cs' ) {
565
  echo '
566
  <p class="iubenda-text">
567
- ' . __( "This plugin is the easiest and most comprehensive way to adapt your WordPress site to the ePrivacy (EU Cookie Law). Upon your users first visit, the plugin will take care of collecting their consent, blocking the most popular cookie-scripts and subsequently reactivating these scripts as soon as consent is provided. The basic settings include obtaining consent by a simple scroll action (the most effective method) and script reactivation without refreshing the page (asynchronous script reactivation).", 'iubenda' ) . '
568
  </p>
569
  <p class="iubenda-text">
570
- <span class="iubenda-title">' . __( "Does the Cookie Solution support IABs Transparency and Consent Framework?", 'iubenda' ) . '</span><br />
571
  ' . sprintf( __( "Yes it does. You can read more about it <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">here.</a>", 'iubenda' ), $this->links['iab'] ) . '
572
  </p>
573
  <p class="iubenda-text">
@@ -657,7 +657,7 @@ class iubenda_Settings {
657
 
658
  <?php
659
  if ( $tab_key === 'cs' ) {
660
- echo '<p>' . sprintf( __( 'This plugin drastically reduces the need for direct interventions in the code of the site by integrating with iubendas Cookie Solution. It provides a fully customizable cookie banner, dynamically generates a cookie policy <a href="%s" target="_blank">to match the services in use on your site</a>, and, fully manages cookie-related consent including the blocking of the most common widgets and third-party cookies before consent is received in order to comply with the GDPR and ePrivacy.', 'iubenda' ), 'https://www.iubenda.com/en/help/19004-how-to-use-the-site-scanner-from-within-the-generator' ) . '</p>';
661
  } else {
662
  echo '<p>' . __( 'Maintaining valid records of consent is a vital part of privacy compliance in general, and it is specifically required under the GDPR. These records should include a userid, timestamp, consent proof, record of the consenting action, and the legal documents available to the user at the time of consent, among other things. This plugin is THE most complete solution for recording, sorting and maintaining GDPR records of consent*. The plugin also boasts built-in compatibility with WordPress comment form, Contact Form 7 and WP Forms plugins for your convenience, but can be manually integrated with any type of web-form and can even store consent proofs for consents collected offline (e.g in-store sign-ups) via WP media upload.' ) . '</p>';
663
  }
@@ -772,7 +772,7 @@ class iubenda_Settings {
772
  </div>
773
  <div id="contextual-help-tabs-wrap-2" class="contextual-help-tabs-wrap">
774
  <div id="tab-panel-scripts" class="help-tab-content active">
775
- <p class="description">' . __( 'Provide a list of custom scripts youd like to block and assign their purpose.', 'iubenda' ) . '</p>
776
  <div id="custom-script-field-template" class="template-field" style="display: none;">
777
  <input type="text" class="regular-text" value="" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="' . __( 'Enter custom script', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'script', 0 ) . ' <a href="#" class="remove-custom-script-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
778
  </div>';
@@ -790,7 +790,7 @@ class iubenda_Settings {
790
  <a href="#" class="add-custom-script-field button-secondary">Add New Script</a>
791
  </div>
792
  <div id="tab-panel-iframes" class="help-tab-content">
793
- <p class="description">' . __( 'Provide a list of custom iframes youd like to block and assign their purpose. ', 'iubenda' ) . '</p>
794
  <div id="custom-iframe-field-template" class="template-field" style="display: none;">
795
  <input type="text" class="regular-text" value="" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="' . __( 'Enter custom iframe', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'iframe', 0 ) . ' <a href="#" class="remove-custom-iframe-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
796
  </div>';
@@ -912,7 +912,7 @@ class iubenda_Settings {
912
  echo '
913
  <div id="iub_amp_support_container">
914
  <label><input id="iub_amp_support" type="checkbox" name="iubenda_cookie_law_solution[amp_support]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['amp_support'], false ) . '/>' . __( 'Enable Google AMP support.', 'iubenda' ) . '</label>
915
- <p class="description">' . sprintf( __( 'This feature enables iubenda on AMP pages via the <a href="%s" target="_blank">AMP</a> and <a href="%s" target="_blank">AMP for WP</a> plugins. AMP requires specific configuration parameters and a page hosted on your domain where the configuration is loaded from. <a href="%s" target="_blank">Learn more on iubenda and AMP</a>.', 'iubenda' ), 'https://wordpress.org/plugins/amp/', 'https://wordpress.org/plugins/accelerated-mobile-pages/', 'https://www.iubenda.com/en/help/3182-cookie-solution-amp#wordpress' ) . '</p>
916
  <div id="iub_amp_options_container"' . ( iubenda()->options['cs']['amp_support'] === false ? ' style="display: none;"' : '' ) . '>
917
  <div>
918
  <label><input id="iub_amp_source-local" class="iub_amp_source" type="radio" name="iubenda_cookie_law_solution[amp_source]" value="local" ' . checked( 'local', iubenda()->options['cs']['amp_source'], false ) . ' />' . __( 'Auto-generated configuration file', 'iubenda' ) . '</label>
@@ -1298,7 +1298,7 @@ class iubenda_Settings {
1298
  <tr>
1299
  <td class="label table-label">
1300
  <h4>' . __( 'Legal documents', 'iubenda' ) . '</h4>
1301
- <p class="description">' . __( 'In general, its important that you declare which legal documents are being agreed upon when each consent is collected. However, if you use iubenda for your legal documents, it is *required* that you identify the documents by selecting them here.', 'iubenda' ) . '</p>
1302
  </td>
1303
  <td>
1304
  <table class="widefat legal_notices-table">
369
  </span>
370
  </p>
371
  <p class="step-2 step-yes">
372
+ <span class="notice-question"><?php _e( "Whew, what a relief!? We've worked countless hours to make this plugin as useful as possible - so we're pretty happy that you're enjoying it. While you here, would you mind leaving us a 5 star rating? It would really help us out.", 'iubenda' ); ?></span>
373
  <span class="notice-reply">
374
  <a href="https://wordpress.org/support/plugin/iubenda-cookie-law-solution/reviews/?filter=5" target="_blank" class="reply-yes"><?php _e( 'Sure!', 'iubenda' ); ?></a>
375
  <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
376
  </span>
377
  </p>
378
  <p class="step-2 step-no">
379
+ <span class="notice-question"><?php _e( "We're sorry to hear that. Would you mind giving us some feedback?", 'iubenda' ); ?></span>
380
  <span class="notice-reply">
381
  <a href="https://iubenda.typeform.com/to/BXuSMZ" target="_blank" class="reply-yes"><?php _e( 'Ok sure!', 'iubenda' ); ?></a>
382
  <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
564
  if ( $tab_key === 'cs' ) {
565
  echo '
566
  <p class="iubenda-text">
567
+ ' . __( "This plugin is the easiest and most comprehensive way to adapt your WordPress site to the ePrivacy (EU Cookie Law). Upon your users' first visit, the plugin will take care of collecting their consent, blocking the most popular cookie-scripts and subsequently reactivating these scripts as soon as consent is provided. The basic settings include obtaining consent by a simple scroll action (the most effective method) and script reactivation without refreshing the page (asynchronous script reactivation).", 'iubenda' ) . '
568
  </p>
569
  <p class="iubenda-text">
570
+ <span class="iubenda-title">' . __( "Does the Cookie Solution support IAB's Transparency and Consent Framework?", 'iubenda' ) . '</span><br />
571
  ' . sprintf( __( "Yes it does. You can read more about it <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">here.</a>", 'iubenda' ), $this->links['iab'] ) . '
572
  </p>
573
  <p class="iubenda-text">
657
 
658
  <?php
659
  if ( $tab_key === 'cs' ) {
660
+ echo '<p>' . sprintf( __( 'This plugin drastically reduces the need for direct interventions in the code of the site by integrating with iubenda\'s Cookie Solution. It provides a fully customizable cookie banner, dynamically generates a cookie policy <a href="%s" target="_blank">to match the services in use on your site</a>, and, fully manages cookie-related consent - including the blocking of the most common widgets and third-party cookies before consent is received - in order to comply with the GDPR and ePrivacy.', 'iubenda' ), 'https://www.iubenda.com/en/help/19004-how-to-use-the-site-scanner-from-within-the-generator' ) . '</p>';
661
  } else {
662
  echo '<p>' . __( 'Maintaining valid records of consent is a vital part of privacy compliance in general, and it is specifically required under the GDPR. These records should include a userid, timestamp, consent proof, record of the consenting action, and the legal documents available to the user at the time of consent, among other things. This plugin is THE most complete solution for recording, sorting and maintaining GDPR records of consent*. The plugin also boasts built-in compatibility with WordPress comment form, Contact Form 7 and WP Forms plugins for your convenience, but can be manually integrated with any type of web-form and can even store consent proofs for consents collected offline (e.g in-store sign-ups) via WP media upload.' ) . '</p>';
663
  }
772
  </div>
773
  <div id="contextual-help-tabs-wrap-2" class="contextual-help-tabs-wrap">
774
  <div id="tab-panel-scripts" class="help-tab-content active">
775
+ <p class="description">' . __( 'Provide a list of custom scripts you\'d like to block and assign their purpose.', 'iubenda' ) . '</p>
776
  <div id="custom-script-field-template" class="template-field" style="display: none;">
777
  <input type="text" class="regular-text" value="" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="' . __( 'Enter custom script', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'script', 0 ) . ' <a href="#" class="remove-custom-script-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
778
  </div>';
790
  <a href="#" class="add-custom-script-field button-secondary">Add New Script</a>
791
  </div>
792
  <div id="tab-panel-iframes" class="help-tab-content">
793
+ <p class="description">' . __( 'Provide a list of custom iframes you\'d like to block and assign their purpose. ', 'iubenda' ) . '</p>
794
  <div id="custom-iframe-field-template" class="template-field" style="display: none;">
795
  <input type="text" class="regular-text" value="" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="' . __( 'Enter custom iframe', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'iframe', 0 ) . ' <a href="#" class="remove-custom-iframe-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
796
  </div>';
912
  echo '
913
  <div id="iub_amp_support_container">
914
  <label><input id="iub_amp_support" type="checkbox" name="iubenda_cookie_law_solution[amp_support]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['amp_support'], false ) . '/>' . __( 'Enable Google AMP support.', 'iubenda' ) . '</label>
915
+ <p class="description">' . sprintf( __( 'This feature enables iubenda on AMP pages via the <a href="%s" target="_blank">AMP</a> and <a href="%s" target="_blank">AMP for WP</a> plugins. AMP requires specific configuration parameters and a page hosted on your domain where the configuration is loaded from. <a href="%s" target="_blank">Learn more on iubenda and AMP</a>.', 'iubenda' ), 'https://wordpress.org/plugins/amp/', 'https://wordpress.org/plugins/accelerated-mobile-pages/', 'https://www.iubenda.com/en/help/22135-cookie-solution-amp#wordpress' ) . '</p>
916
  <div id="iub_amp_options_container"' . ( iubenda()->options['cs']['amp_support'] === false ? ' style="display: none;"' : '' ) . '>
917
  <div>
918
  <label><input id="iub_amp_source-local" class="iub_amp_source" type="radio" name="iubenda_cookie_law_solution[amp_source]" value="local" ' . checked( 'local', iubenda()->options['cs']['amp_source'], false ) . ' />' . __( 'Auto-generated configuration file', 'iubenda' ) . '</label>
1298
  <tr>
1299
  <td class="label table-label">
1300
  <h4>' . __( 'Legal documents', 'iubenda' ) . '</h4>
1301
+ <p class="description">' . __( 'In general, it\'s important that you declare which legal documents are being agreed upon when each consent is collected. However, if you use iubenda for your legal documents, it is *required* that you identify the documents by selecting them here.', 'iubenda' ) . '</p>
1302
  </td>
1303
  <td>
1304
  <table class="widefat legal_notices-table">
iubenda_cookie_solution.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Cookie and Consent Solution for the GDPR & ePrivacy
4
  Plugin URI: https://www.iubenda.com
5
  Description: An All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions that help to make your website GDPR and ePrivacy compliant.
6
- Version: 2.3.0
7
  Author: iubenda
8
  Author URI: https://www.iubenda.com
9
  License: MIT License
@@ -32,7 +32,7 @@ define( 'IUB_DEBUG', false );
32
  * iubenda final class.
33
  *
34
  * @class iubenda
35
- * @version 2.3.0
36
  */
37
  class iubenda {
38
 
@@ -62,7 +62,7 @@ class iubenda {
62
  )
63
  );
64
  public $base_url;
65
- public $version = '2.3.0';
66
  public $activation = array(
67
  'update_version' => 0,
68
  'update_notice' => true,
@@ -681,8 +681,15 @@ class iubenda {
681
 
682
  preg_match( '/src\=(["\'])(.*?)\1/', $parsed_code, $matches );
683
 
684
- if ( ! empty( $matches[2] ) && wp_http_validate_url( $matches[2] ) )
685
- $parsed_script = $matches[2];
 
 
 
 
 
 
 
686
 
687
  // strip tags
688
  $parsed_code = wp_kses( $parsed_code, array() );
3
  Plugin Name: Cookie and Consent Solution for the GDPR & ePrivacy
4
  Plugin URI: https://www.iubenda.com
5
  Description: An All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions that help to make your website GDPR and ePrivacy compliant.
6
+ Version: 2.3.1
7
  Author: iubenda
8
  Author URI: https://www.iubenda.com
9
  License: MIT License
32
  * iubenda final class.
33
  *
34
  * @class iubenda
35
+ * @version 2.3.1
36
  */
37
  class iubenda {
38
 
62
  )
63
  );
64
  public $base_url;
65
+ public $version = '2.3.1';
66
  public $activation = array(
67
  'update_version' => 0,
68
  'update_notice' => true,
681
 
682
  preg_match( '/src\=(["\'])(.*?)\1/', $parsed_code, $matches );
683
 
684
+ // find the iubenda script url
685
+ if ( ! empty( $matches[1] ) ) {
686
+ foreach ( $matches[1] as $found_script ) {
687
+ if ( wp_http_validate_url( $found_script ) && strpos( $found_script, 'iubenda_cs.js' ) ) {
688
+ $parsed_script = $found_script;
689
+ continue;
690
+ }
691
+ }
692
+ }
693
 
694
  // strip tags
695
  $parsed_code = wp_kses( $parsed_code, array() );
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: cookies, cookie law, cookie policy, cookie banner, privacy policy, cookie
5
  Requires at least: 4.0
6
  Requires PHP: 5.2.4
7
  Tested up to: 5.3.2
8
- Stable tag: 2.3.0
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
@@ -150,6 +150,12 @@ We will be very happy to receive feedback here: [Uservoice forum](https://suppor
150
 
151
  == Changelog ==
152
 
 
 
 
 
 
 
153
  = 2.3.0 =
154
  * Fix: Multiple consent forms per page support
155
  * Fix: WP Forms checkbox field compatibility
@@ -425,7 +431,8 @@ We will be very happy to receive feedback here: [Uservoice forum](https://suppor
425
 
426
  == Upgrade Notice ==
427
 
428
- = 2.3.0 =
429
- * Fix: Multiple consent forms per page support
430
- * Fix: WP Forms checkbox field compatibility
431
- * Tweak: AMP consent geolocation support
 
5
  Requires at least: 4.0
6
  Requires PHP: 5.2.4
7
  Tested up to: 5.3.2
8
+ Stable tag: 2.3.1
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
150
 
151
  == Changelog ==
152
 
153
+ = 2.3.1 =
154
+ * Fix: Error on AMP configuration during install in some edge cases
155
+ * Fix: Invalid www detection during AMP configuration generation process
156
+ * Fix: Regex for iubenda script url in AMP configuration
157
+ * Tweak: Added noindex for generated AMP configuration file
158
+
159
  = 2.3.0 =
160
  * Fix: Multiple consent forms per page support
161
  * Fix: WP Forms checkbox field compatibility
431
 
432
  == Upgrade Notice ==
433
 
434
+ = 2.3.1 =
435
+ * Fix: Error on AMP configuration during install in some edge cases
436
+ * Fix: Invalid www detection during AMP configuration generation process
437
+ * Fix: Regex for iubenda script url in AMP configuration
438
+ * Tweak: Added noindex for generated AMP configuration file