Paid Memberships Pro - Version 2.6.1.1

Version Description

  • 2021-08-25 =
  • BUG FIX: Fixed issue with PMPro blocks not showing up in the block editor.
  • REFACTOR: Some JS functions and element IDs and names have been prefixed with pmpro_ to avoid conflicts.
Download this release

Release Info

Developer strangerstudios
Plugin Icon 128x128 Paid Memberships Pro
Version 2.6.1.1
Comparing to
See all releases

Code changes from version 2.6.1 to 2.6.1.1

CHANGELOG.txt CHANGED
@@ -1,4 +1,8 @@
1
  == Changelog ==
 
 
 
 
2
  = 2.6.1 - 2021-08-24 =
3
  * SECURITY: Added capability checks to further tighten security around email template settings. (@ideadude, @sc0ttkclark)
4
  * SECURITY: Added a pmpro_kses function and using that to sanitize email template bodies and all email bodies before sending. (@ideadude, @sc0ttkclark)
1
  == Changelog ==
2
+ = 2.6.1.1 - 2021-08-25 =
3
+ * BUG FIX: Fixed issue with PMPro blocks not showing up in the block editor.
4
+ * REFACTOR: Some JS functions and element IDs and names have been prefixed with pmpro_ to avoid conflicts.
5
+
6
  = 2.6.1 - 2021-08-24 =
7
  * SECURITY: Added capability checks to further tighten security around email template settings. (@ideadude, @sc0ttkclark)
8
  * SECURITY: Added a pmpro_kses function and using that to sanitize email template bodies and all email bodies before sending. (@ideadude, @sc0ttkclark)
adminpages/emailtemplates.php CHANGED
@@ -48,13 +48,13 @@
48
  </select>
49
  <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" id="pmproet-spinner" style="display:none;"/>
50
 
51
- <p id="email_template_help_text" class="description"></p>
52
  </td>
53
  </tr>
54
  <tr class="hide-while-loading">
55
  <th scope="row" valign="top"></th>
56
  <td>
57
- <label><input id="email_template_disable" name="email_template_disable" type="checkbox" /><span
58
  id="disable_label"><?php esc_html_e( 'Disable this email?', 'paid-memberships-pro' ); ?></span></label>
59
 
60
 
@@ -63,18 +63,18 @@
63
  </td>
64
  </tr>
65
  <tr class="hide-while-loading">
66
- <th scope="row" valign="top"><label for="email_template_subject"><?php esc_html_e( 'Subject', 'paid-memberships-pro' ); ?></label></th>
67
 
68
  <td>
69
- <input id="email_template_subject" name="email_template_subject" type="text" size="100"/>
70
  </td>
71
  </tr>
72
  <tr class="hide-while-loading">
73
- <th scope="row" valign="top"><label for="email_template_body"><?php esc_html_e( 'Body', 'paid-memberships-pro' ); ?></label></th>
74
 
75
  <td>
76
  <div id="template_editor_container">
77
- <textarea rows="10" cols="80" name="email_template_body" id="email_template_body"></textarea>
78
  </div>
79
  </td>
80
  </tr>
@@ -97,10 +97,10 @@
97
  <th scope="row" valign="top"></th>
98
  <td>
99
  <p class="submit">
100
- <input id="submit_template_data" name="save_template" type="button" class="button-primary"
101
  value="<?php esc_attr_e( 'Save Template', 'paid-memberships-pro' ); ?>"/>
102
 
103
- <input id="reset_template_data" name="reset_template" type="button" class="button"
104
  value="<?php esc_attr_e( 'Reset Template', 'paid-memberships-pro' ); ?>"/>
105
 
106
  </p>
48
  </select>
49
  <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" id="pmproet-spinner" style="display:none;"/>
50
 
51
+ <p id="pmpro_email_template_help_text" class="description"></p>
52
  </td>
53
  </tr>
54
  <tr class="hide-while-loading">
55
  <th scope="row" valign="top"></th>
56
  <td>
57
+ <label><input id="pmpro_email_template_disable" name="pmpro_email_template_disable" type="checkbox" /><span
58
  id="disable_label"><?php esc_html_e( 'Disable this email?', 'paid-memberships-pro' ); ?></span></label>
59
 
60
 
63
  </td>
64
  </tr>
65
  <tr class="hide-while-loading">
66
+ <th scope="row" valign="top"><label for="pmpro_email_template_subject"><?php esc_html_e( 'Subject', 'paid-memberships-pro' ); ?></label></th>
67
 
68
  <td>
69
+ <input id="pmpro_email_template_subject" name="pmpro_email_template_subject" type="text" size="100"/>
70
  </td>
71
  </tr>
72
  <tr class="hide-while-loading">
73
+ <th scope="row" valign="top"><label for="pmpro_email_template_body"><?php esc_html_e( 'Body', 'paid-memberships-pro' ); ?></label></th>
74
 
75
  <td>
76
  <div id="template_editor_container">
77
+ <textarea rows="10" cols="80" name="pmpro_email_template_body" id="pmpro_email_template_body"></textarea>
78
  </div>
79
  </td>
80
  </tr>
97
  <th scope="row" valign="top"></th>
98
  <td>
99
  <p class="submit">
100
+ <input id="pmpro_submit_template_data" name="pmpro_save_template" type="button" class="button-primary"
101
  value="<?php esc_attr_e( 'Save Template', 'paid-memberships-pro' ); ?>"/>
102
 
103
+ <input id="pmpro_reset_template_data" name="pmpro_reset_template" type="button" class="button"
104
  value="<?php esc_attr_e( 'Reset Template', 'paid-memberships-pro' ); ?>"/>
105
 
106
  </p>
blocks/blocks.php CHANGED
@@ -61,7 +61,15 @@ function pmpro_block_editor_scripts() {
61
  wp_enqueue_script(
62
  'pmpro-blocks-editor-js',
63
  plugins_url( 'js/blocks.build.js', PMPRO_BASE_FILE ),
64
- array('wp-i18n', 'wp-element', 'wp-blocks', 'wp-components', 'wp-api', 'wp-block-editor', 'pmpro_admin'),
 
 
 
 
 
 
 
 
65
  PMPRO_VERSION
66
  );
67
 
61
  wp_enqueue_script(
62
  'pmpro-blocks-editor-js',
63
  plugins_url( 'js/blocks.build.js', PMPRO_BASE_FILE ),
64
+ [
65
+ 'wp-i18n',
66
+ 'wp-element',
67
+ 'wp-blocks',
68
+ 'wp-components',
69
+ 'wp-api',
70
+ 'wp-block-editor',
71
+ 'pmpro_admin',
72
+ ],
73
  PMPRO_VERSION
74
  );
75
 
includes/scripts.php CHANGED
@@ -94,48 +94,63 @@ add_action( 'wp_enqueue_scripts', 'pmpro_enqueue_scripts' );
94
  * Enqueue admin JavaScript and CSS
95
  */
96
  function pmpro_admin_enqueue_scripts() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  // Only enqueue PMPro admin scripts on our own pages.
98
  if ( ! isset( $_GET['page'] ) || 0 !== strpos( $_GET['page'], 'pmpro' ) ) {
99
  return;
100
  }
101
 
102
- // Admin JS
103
- wp_register_script( 'pmpro_admin',
104
- plugins_url( 'js/pmpro-admin.js', dirname(__FILE__) ),
105
- array( 'jquery', 'jquery-ui-sortable' ),
106
- PMPRO_VERSION );
107
- $all_levels = pmpro_getAllLevels( true, true );
108
- $all_level_values_and_labels = array();
109
- foreach( $all_levels as $level ) {
110
- $all_level_values_and_labels[] = array( 'value' => $level->id, 'label' => $level->name );
111
- }
112
- wp_localize_script( 'pmpro_admin', 'pmpro', array(
113
- 'all_levels' => $all_levels,
114
- 'all_level_values_and_labels' => $all_level_values_and_labels
115
- ));
116
- wp_enqueue_script( 'pmpro_admin' );
117
-
118
- // Admin CSS
119
- $admin_css_rtl = false;
120
- if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin.css")) {
121
- $admin_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin.css";
122
- if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
123
- $admin_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
124
- }
125
- } elseif(file_exists(get_template_directory() . "/paid-memberships-pro/admin.css")) {
126
- $admin_css = get_template_directory_uri() . "/paid-memberships-pro/admin.css";
127
- if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
128
- $admin_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
129
- }
130
- } else {
131
- $admin_css = plugins_url('css/admin.css',dirname(__FILE__) );
132
- if( is_rtl() ) {
133
- $admin_css_rtl = plugins_url('css/admin-rtl.css',dirname(__FILE__) );
134
- }
135
- }
136
- wp_enqueue_style('pmpro_admin', $admin_css, array(), PMPRO_VERSION, "screen");
137
- if( $admin_css_rtl ) {
138
- wp_enqueue_style('pmpro_admin_rtl', $admin_css_rtl, array(), PMPRO_VERSION, "screen");
139
- }
140
  }
141
- add_action( 'admin_enqueue_scripts', 'pmpro_admin_enqueue_scripts' );
94
  * Enqueue admin JavaScript and CSS
95
  */
96
  function pmpro_admin_enqueue_scripts() {
97
+ // Admin JS
98
+ wp_register_script( 'pmpro_admin', plugins_url( 'js/pmpro-admin.js', __DIR__ ), [
99
+ 'jquery',
100
+ 'jquery-ui-sortable',
101
+ ], PMPRO_VERSION );
102
+
103
+ $all_levels = pmpro_getAllLevels( true, true );
104
+ $all_level_values_and_labels = [];
105
+
106
+ foreach ( $all_levels as $level ) {
107
+ $all_level_values_and_labels[] = [
108
+ 'value' => $level->id,
109
+ 'label' => $level->name,
110
+ ];
111
+ }
112
+
113
+ wp_localize_script( 'pmpro_admin', 'pmpro', [
114
+ 'all_levels' => $all_levels,
115
+ 'all_level_values_and_labels' => $all_level_values_and_labels,
116
+ ] );
117
+
118
+ // Admin CSS
119
+ $admin_css_rtl = false;
120
+
121
+ if ( file_exists( get_stylesheet_directory() . '/paid-memberships-pro/css/admin.css' ) ) {
122
+ $admin_css = get_stylesheet_directory_uri() . '/paid-memberships-pro/css/admin.css';
123
+
124
+ if ( is_rtl() && file_exists( get_stylesheet_directory() . '/paid-memberships-pro/css/admin-rtl.css' ) ) {
125
+ $admin_css_rtl = get_stylesheet_directory_uri() . '/paid-memberships-pro/css/admin-rtl.css';
126
+ }
127
+ } elseif ( file_exists( get_template_directory() . '/paid-memberships-pro/admin.css' ) ) {
128
+ $admin_css = get_template_directory_uri() . '/paid-memberships-pro/admin.css';
129
+
130
+ if ( is_rtl() && file_exists( get_template_directory() . '/paid-memberships-pro/css/admin-rtl.css' ) ) {
131
+ $admin_css_rtl = get_template_directory_uri() . '/paid-memberships-pro/css/admin-rtl.css';
132
+ }
133
+ } else {
134
+ $admin_css = plugins_url( 'css/admin.css', __DIR__ );
135
+
136
+ if ( is_rtl() ) {
137
+ $admin_css_rtl = plugins_url( 'css/admin-rtl.css', __DIR__ );
138
+ }
139
+ }
140
+
141
+ wp_register_style( 'pmpro_admin', $admin_css, [], PMPRO_VERSION, 'screen' );
142
+ wp_register_style( 'pmpro_admin_rtl', $admin_css_rtl, [], PMPRO_VERSION, 'screen' );
143
+
144
  // Only enqueue PMPro admin scripts on our own pages.
145
  if ( ! isset( $_GET['page'] ) || 0 !== strpos( $_GET['page'], 'pmpro' ) ) {
146
  return;
147
  }
148
 
149
+ wp_enqueue_script( 'pmpro_admin' );
150
+ wp_enqueue_style( 'pmpro_admin' );
151
+
152
+ if ( $admin_css_rtl ) {
153
+ wp_enqueue_style( 'pmpro_admin_rtl' );
154
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  }
156
+ add_action( 'admin_enqueue_scripts', 'pmpro_admin_enqueue_scripts' );
js/pmpro-admin.js CHANGED
@@ -211,7 +211,7 @@ jQuery(document).ready(function($) {
211
 
212
  /* Variables */
213
  var template, disabled, $subject, $editor, $testemail;
214
- $subject = $("#email_template_subject").closest("tr");
215
  $editor = $("#wp-email_template_body-wrap");
216
  $testemail = $("#test_email_address").closest("tr");
217
 
@@ -226,31 +226,31 @@ jQuery(document).ready(function($) {
226
 
227
  //get template data
228
  if (template)
229
- getTemplate(template);
230
  else {
231
  $(".hide-while-loading").hide();
232
  $(".controls").hide();
233
  }
234
  });
235
 
236
- $("#submit_template_data").click(function() {
237
- saveTemplate()
238
  });
239
 
240
- $("#reset_template_data").click(function() {
241
- resetTemplate();
242
  });
243
 
244
- $("#email_template_disable").click(function(e) {
245
- disableTemplate();
246
  });
247
 
248
  $("#send_test_email").click(function(e) {
249
- saveTemplate().done(setTimeout(function(){sendTestEmail();}, '1000'));
250
  });
251
 
252
  /* Functions */
253
- function getTemplate(template) {
254
 
255
  //hide stuff and show ajax spinner
256
  $(".hide-while-loading").hide();
@@ -295,17 +295,17 @@ jQuery(document).ready(function($) {
295
  }
296
 
297
  // populate help text, subject, and body
298
- $('#email_template_help_text').text(template_data['help_text']);
299
- $('#email_template_subject').val(template_data['subject']);
300
- $('#email_template_body').val(template_data['body']);
301
 
302
  // disable form
303
  disabled = template_data['disabled'];
304
- toggleFormDisabled(disabled);
305
  });
306
  }
307
 
308
- function saveTemplate() {
309
 
310
  $("#submit_template_data").attr("disabled", true);
311
  $(".status").hide();
@@ -313,8 +313,8 @@ jQuery(document).ready(function($) {
313
 
314
  $data = {
315
  template: template,
316
- subject: $("#email_template_subject").val(),
317
- body: $("#email_template_body").val(),
318
  action: 'pmpro_email_templates_save_template_data',
319
  security: $('input[name=security]').val()
320
  };
@@ -334,7 +334,7 @@ jQuery(document).ready(function($) {
334
  return $.Deferred().resolve();
335
  }
336
 
337
- function resetTemplate() {
338
 
339
  var r = confirm('Are you sure? Your current template settings will be deleted permanently.');
340
 
@@ -347,20 +347,20 @@ jQuery(document).ready(function($) {
347
  };
348
  $.post(ajaxurl, $data, function(response) {
349
  var template_data = $.parseJSON(response);
350
- $('#email_template_subject').val(template_data['subject']);
351
- $('#email_template_body').val(template_data['body']);
352
  });
353
 
354
  return true;
355
  }
356
 
357
- function disableTemplate() {
358
 
359
  //update wp_options
360
  data = {
361
  template: template,
362
  action: 'pmpro_email_templates_disable_template',
363
- disabled: $("#email_template_disable").is(":checked"),
364
  security: $('input[name=security]').val()
365
  };
366
 
@@ -388,11 +388,11 @@ jQuery(document).ready(function($) {
388
 
389
  disabled = response['status'];
390
 
391
- toggleFormDisabled(disabled);
392
  });
393
  }
394
 
395
- function sendTestEmail() {
396
 
397
  //hide stuff and show ajax spinner
398
  $(".hide-while-loading").hide();
@@ -423,17 +423,17 @@ jQuery(document).ready(function($) {
423
  })
424
  }
425
 
426
- function toggleFormDisabled(disabled) {
427
  if(disabled == 'true') {
428
- $("#email_template_disable").prop('checked', true);
429
- $("#email_template_body").attr('readonly', 'readonly').attr('disabled', 'disabled');
430
- $("#email_template_subject").attr('readonly', 'readonly').attr('disabled', 'disabled');
431
  $(".controls").hide();
432
  }
433
  else {
434
- $("#email_template_disable").prop('checked', false);
435
- $("#email_template_body").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
436
- $("#email_template_subject").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
437
  $(".controls").show();
438
  }
439
 
211
 
212
  /* Variables */
213
  var template, disabled, $subject, $editor, $testemail;
214
+ $subject = $("#pmpro_email_template_subject").closest("tr");
215
  $editor = $("#wp-email_template_body-wrap");
216
  $testemail = $("#test_email_address").closest("tr");
217
 
226
 
227
  //get template data
228
  if (template)
229
+ pmpro_get_template(template);
230
  else {
231
  $(".hide-while-loading").hide();
232
  $(".controls").hide();
233
  }
234
  });
235
 
236
+ $("#pmpro_submit_template_data").click(function() {
237
+ pmpro_save_template()
238
  });
239
 
240
+ $("#pmpro_reset_template_data").click(function() {
241
+ pmpro_reset_template();
242
  });
243
 
244
+ $("#pmpro_email_template_disable").click(function(e) {
245
+ pmpro_disable_template();
246
  });
247
 
248
  $("#send_test_email").click(function(e) {
249
+ pmpro_save_template().done(setTimeout(function(){pmpro_send_test_email();}, '1000'));
250
  });
251
 
252
  /* Functions */
253
+ function pmpro_get_template(template) {
254
 
255
  //hide stuff and show ajax spinner
256
  $(".hide-while-loading").hide();
295
  }
296
 
297
  // populate help text, subject, and body
298
+ $('#pmpro_email_template_help_text').text(template_data['help_text']);
299
+ $('#pmpro_email_template_subject').val(template_data['subject']);
300
+ $('#pmpro_email_template_body').val(template_data['body']);
301
 
302
  // disable form
303
  disabled = template_data['disabled'];
304
+ pmpro_toggle_form_disabled(disabled);
305
  });
306
  }
307
 
308
+ function pmpro_save_template() {
309
 
310
  $("#submit_template_data").attr("disabled", true);
311
  $(".status").hide();
313
 
314
  $data = {
315
  template: template,
316
+ subject: $("#pmpro_email_template_subject").val(),
317
+ body: $("#pmpro_email_template_body").val(),
318
  action: 'pmpro_email_templates_save_template_data',
319
  security: $('input[name=security]').val()
320
  };
334
  return $.Deferred().resolve();
335
  }
336
 
337
+ function pmpro_reset_template() {
338
 
339
  var r = confirm('Are you sure? Your current template settings will be deleted permanently.');
340
 
347
  };
348
  $.post(ajaxurl, $data, function(response) {
349
  var template_data = $.parseJSON(response);
350
+ $('#pmpro_email_template_subject').val(template_data['subject']);
351
+ $('#pmpro_email_template_body').val(template_data['body']);
352
  });
353
 
354
  return true;
355
  }
356
 
357
+ function pmpro_disable_template() {
358
 
359
  //update wp_options
360
  data = {
361
  template: template,
362
  action: 'pmpro_email_templates_disable_template',
363
+ disabled: $("#pmpro_email_template_disable").is(":checked"),
364
  security: $('input[name=security]').val()
365
  };
366
 
388
 
389
  disabled = response['status'];
390
 
391
+ pmpro_toggle_form_disabled(disabled);
392
  });
393
  }
394
 
395
+ function pmpro_send_test_email() {
396
 
397
  //hide stuff and show ajax spinner
398
  $(".hide-while-loading").hide();
423
  })
424
  }
425
 
426
+ function pmpro_toggle_form_disabled(disabled) {
427
  if(disabled == 'true') {
428
+ $("#pmpro_email_template_disable").prop('checked', true);
429
+ $("#pmpro_email_template_body").attr('readonly', 'readonly').attr('disabled', 'disabled');
430
+ $("#pmpro_email_template_subject").attr('readonly', 'readonly').attr('disabled', 'disabled');
431
  $(".controls").hide();
432
  }
433
  else {
434
+ $("#pmpro_email_template_disable").prop('checked', false);
435
+ $("#pmpro_email_template_body").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
436
+ $("#pmpro_email_template_subject").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
437
  $(".controls").show();
438
  }
439
 
paid-memberships-pro.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Paid Memberships Pro
4
  * Plugin URI: https://www.paidmembershipspro.com
5
  * Description: The most complete member management and membership subscriptions plugin for WordPress.
6
- * Version: 2.6.1
7
  * Author: Stranger Studios
8
  * Author URI: https://www.strangerstudios.com
9
  * Text Domain: paid-memberships-pro
@@ -16,7 +16,7 @@
16
  */
17
 
18
  // version constant
19
- define( 'PMPRO_VERSION', '2.6.1' );
20
  define( 'PMPRO_USER_AGENT', 'Paid Memberships Pro v' . PMPRO_VERSION . '; ' . site_url() );
21
  define( 'PMPRO_MIN_PHP_VERSION', '5.6' );
22
 
3
  * Plugin Name: Paid Memberships Pro
4
  * Plugin URI: https://www.paidmembershipspro.com
5
  * Description: The most complete member management and membership subscriptions plugin for WordPress.
6
+ * Version: 2.6.1.1
7
  * Author: Stranger Studios
8
  * Author URI: https://www.strangerstudios.com
9
  * Text Domain: paid-memberships-pro
16
  */
17
 
18
  // version constant
19
+ define( 'PMPRO_VERSION', '2.6.1.1' );
20
  define( 'PMPRO_USER_AGENT', 'Paid Memberships Pro v' . PMPRO_VERSION . '; ' . site_url() );
21
  define( 'PMPRO_MIN_PHP_VERSION', '5.6' );
22
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: strangerstudios, kimannwall, andrewza, dlparker1005, paidmembershi
3
  Tags: memberships, members, subscriptions, ecommerce, user registration, member, membership, e-commerce, paypal, stripe, braintree, authorize.net, payflow, restrict access, restrict content, directory
4
  Requires at least: 5.2
5
  Tested up to: 5.8
6
- Stable tag: 2.6.1
7
 
8
  Get Paid with Paid Memberships Pro: The most complete member management and membership subscriptions plugin for your WordPress site.
9
 
@@ -155,6 +155,10 @@ Not sure? You can find out by doing a bit a research.
155
  9. Membership Account page, display all sections or show specific sections using shortcode attributes.
156
 
157
  == Changelog ==
 
 
 
 
158
  = 2.6.1 - 2021-08-24 =
159
  * SECURITY: Added capability checks to further tighten security around email template settings. (@ideadude, @sc0ttkclark)
160
  * SECURITY: Added a pmpro_kses function and using that to sanitize email template bodies and all email bodies before sending. (@ideadude, @sc0ttkclark)
@@ -550,4 +554,4 @@ BUG FIX: Fixed issue where PMPro would always try to add capabilities to the adm
550
  * BUG FIX: Fixed issues with PayPal orders when using the pmpro_paypal_level_description filter.
551
  * BUG FIX/ENHANCEMENT: Responsive update for smaller device viewports for the Membership Levels table in the dashboard.
552
  * ENHANCEMENT: Added filters: pmpro_is_level_free, pmpro_is_level_trial, and pmpro_is_level_expiring.
553
- * ENHANCEMENT: Updated IPN handler and Stripe Webhook handler to use pmpro_cancelMembershipLevel instead of pmpro_changeMembershipLevele. This improves support for the MMPU addon.
3
  Tags: memberships, members, subscriptions, ecommerce, user registration, member, membership, e-commerce, paypal, stripe, braintree, authorize.net, payflow, restrict access, restrict content, directory
4
  Requires at least: 5.2
5
  Tested up to: 5.8
6
+ Stable tag: 2.6.1.1
7
 
8
  Get Paid with Paid Memberships Pro: The most complete member management and membership subscriptions plugin for your WordPress site.
9
 
155
  9. Membership Account page, display all sections or show specific sections using shortcode attributes.
156
 
157
  == Changelog ==
158
+ = 2.6.1.1 - 2021-08-25 =
159
+ * BUG FIX: Fixed issue with PMPro blocks not showing up in the block editor.
160
+ * REFACTOR: Some JS functions and element IDs and names have been prefixed with pmpro_ to avoid conflicts.
161
+
162
  = 2.6.1 - 2021-08-24 =
163
  * SECURITY: Added capability checks to further tighten security around email template settings. (@ideadude, @sc0ttkclark)
164
  * SECURITY: Added a pmpro_kses function and using that to sanitize email template bodies and all email bodies before sending. (@ideadude, @sc0ttkclark)
554
  * BUG FIX: Fixed issues with PayPal orders when using the pmpro_paypal_level_description filter.
555
  * BUG FIX/ENHANCEMENT: Responsive update for smaller device viewports for the Membership Levels table in the dashboard.
556
  * ENHANCEMENT: Added filters: pmpro_is_level_free, pmpro_is_level_trial, and pmpro_is_level_expiring.
557
+ * ENHANCEMENT: Updated IPN handler and Stripe Webhook handler to use pmpro_cancelMembershipLevel instead of pmpro_changeMembershipLevele. This improves support for the MMPU addon.