forked from strangerstudios/paid-memberships-pro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
2584 lines (2334 loc) · 278 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
== Changelog ==
= 3.3.1 - 2024-10-24 =
* ENHANCEMENT: Added a Subscriptions List Table to allow admins to view, manage, and link subscriptions from the WordPress admin. #2828 (@dparker1005, @kimcoleman)
* ENHANCEMENT: Discount codes can now be set to only allow one use per user. #3175 (@dparker1005)
* BUG FIX: Fixed an issue where billing address information would be cleared when a checkout attempt failed causing Stripe 3DS checks to break. #3172 (@dparker1005, @mircobabini)
= 3.3 - 2024-10-16 =
* FEATURE: Now updating the plugin from paidmembershipspro.com. #3167 (@dparker1005)
* ENHANCEMENT: Updated translation files bundled with the plugin. #3168 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Improved the padding around list tables on large screens. #3169 (@kimcoleman)
* BUG FIX: Fixed a PHP warning in the `pmpro_use_default_login_for_confirm_admin_email()` function. #3162 (@MaximilianoRicoTabo)
= 3.2.2 - 2024-10-12 =
* ENHANCEMENT: Added screen reader text to identify an empty header row on levels table output. #3161 (@kimcoleman)
* BUG FIX: Fixed issue where some third party gateways were no longer cancelling subscriptions at the gateway when cancelled locally in WP/PMPro. If you were using a gateway that is not included with the core PMPro plugin, please double check all recent cancellations to make sure they were sync'd to your gateway. If not, you will have to cancel those subscriptions at the gateway manually. #3164 (@ideadude)
= 3.2.1 - 2024-10-08 =
* ENHANCEMENT: Improved the print styles for frontend pages. #3158 (@kimcoleman)
* BUG FIX: Fixed an issue where payments would not complete when Stripe 3DS was triggered. #3157 (@dparker1005)
* BUG FIX: Fixed an issue where "file" user fields would not allow uploads if the file restrictions setting was empty. #3156 (@andrewlimaza)
* BUG FIX: Fixed a deprecation warning when using Stripe Checkout. #3160 (@dparker1005)
* BUG FIX: Fixed an issue where the "street2" billing address field may not be saved for Stripe payments. (@dparker1005)
= 3.2 - 2024-10-02 =
* FEATURE: Users will now receive a notification email when they have an upcoming subscription payment. #3109 (@dparker1005)
* FEATURE: Added integration with Cloudflare Turnstile. #3123 (@andrewlimaza)
* ENHANCEMENT: The business address for the website can now be set on the Advanced Settings page and will be shown on invoices. #3134 (@MaximilianoRicoTabo)
* ENHANCEMENT: Added a table view on the Email Templates settings page. #3128 (@kimcoleman)
* ENHANCEMENT: Added the Checkbox Group user field type. #3126 (@andrewlimaza)
* ENHANCEMENT: A default value can now be set for user fields that do not allow multiselect or file uploads. #3132 (@andrewlimaza)
* ENHANCEMENT: Allowed file types and maximum file sizes can now be set for "File" user fields. #3133 (@andrewlimaza)
* ENHANCEMENT: Added three new filters at checkout to allow checks at different parts of the checkout process: `pmpro_checkout_checks`, `pmpro_checkout_user_creation_checks`, and `pmpro_checkout_order_creation_checks`. #3137 (@dparker1005)
* ENHANCEMENT: Now creating a user at checkout even when order creation checks fail. #3137 (@dparker1005)
* ENHANCEMENT: Memberships on the Membership Account page will now be shown in the order set on the Membership Levels settings page. #3112 (@kimcoleman)
* ENHANCEMENT: Updated the wording around "legacy keys" and "restricted keys" for the Stripe gateway. #3151 (@dparker1005)
* BUG FIX/ENHANCEMENT: Street2 billing address lines are now stored separately in the MemberOrder object. #3122 (@dparker1005)
* BUG FIX: Fixed an issue where payment fields on the update billing page might be wrapped in nested cards. #3143 (@kimcoleman)
* REFACTOR: Abstracted all "Terms of Service" logic into a single file. #3119 (@dparker1005)
* REFACTOR: Abstracted all reCAPTCHA logic into a single file. #3105 (@dparker1005)
* REFACTOR: Cleaned up the checkout preheader flow including deprecating the `pmpro_build_order_for_checkout()` function in favor of inline logic. #3129 (@dparker1005)
* REFACTOR: Updated the PayPal Express integration to run checkout logic in its `process()` method instead of on actions that are being deprecated. #3116 (@dparker1005)
* REFACTOR: Updated the Stripe integration to send users to Stripe Checkout in the `process()` method instead of during the `pmpro_checkout_before_change_membership_level` hook. #3104 (@dparker1005)
* DEPRECATED: Marking the Authorize.net gateway integration as deprecated. Websites that are already using Authorize.net can continue using that gateway, but new sites will not be shown Authorize.net as a gateway option. #3150 (@dparker1005)
* DEPRECATED: PayPal Express will no longer automatically be enabled as a second payment option when using the deprecated Website Payments Pro gateway. This functionality can be restored by using the Add PayPal Express Add On. #3114 (@dparker1005)
* DEPRECATED: Marked the following filters at checkout as deprecated: `pmpro_checkout_oldemail`, `pmpro_new_user`, `pmpro_require_billing`, and `pmpro_checkout_confirmed`. #3137 (@dparker1005)
* DEPRECATED: Now throwing deprecation warnings for dynamic order properties that were previously used at by gateways at checkout. #3122 (@dparker1005)
* DEPRECATED: Marked the `getGatewaySubscriptionStatus()`, `getGatewayTransactionStatus()`, and `confirm()` MemberOrder methods as deprecated. #3129, #3116 (@dparker1005)
* DEPRECATED: Removed sample code from methods in the `PMProGateway` class and marked sample helper methods as deprecated. #3129 (@dparker1005)
= 3.1.4 - 2024-09-18 =
* ENHANCEMENT: Improved the wording of the Stripe webhook checker message that displayed when there are event types that have not yet been triggered in Stripe. #3115 (@dparker1005)
* BUG FIX/ENHANCEMENT: Improved the validation of IP addresses before they are returned by the `pmpro_get_ip()` function. #3113 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: `pmpro_set_curent_user()` is now only called in the `pmpro_clear_level_cache_for_user()` function if we are clearing the cache for the current user. #3127 (@mircobabini)
* BUG FIX/ENHANCEMENT: Localized the billing periods for subscription cost text strings. #3140 (@kimcoleman)
* BUG FIX: Fixed an issue where an empty "Account Information" box might appear at checkout if using the `pmpro_skip_account_fields` filter to skip the account fields for new users. #3135 (@kimcoleman)
* BUG FIX: Fixed the background color for input fields on the login form. #3124 (@kimcoleman)
* BUG FIX: Fixed an issue where the `code_id` may not reflect the discount code ID that was used at checkout. #3138 (@dparker1005)
* BUG FIX: Fixed an issue where incorrect data may be returned when calling `getDiscountCode()` on a blank MemberOrder object. #3120 (@dparker1005)
* BUG FIX: Fixed PHP errors on the Visits, Views, and Logins report page when the usermeta values that are retrieved are not in the correct format. #3139 (@kimcoleman)
= 3.1.3 - 2024-08-06 =
* ENHANCEMENT: Improved the appearance of input fields on dark-background themes. #3111 (@kimcoleman)
* ENHANCEMENT: Improved the appearance of dropdown arrow icons. #3111 (@kimcoleman)
* ENHANCEMENT: Added an icon for the upcoming Localized Pricing Add On. #3110 (@kimcoleman)
* BUG FIX: Fixed an issue where new subscriptions might be immediately cancelled after checkout when re-purchasing a level that the user already had. #3107 (@dparker1005)
* BUG FIX: Fixed an issue where Braintree billing updates would fail due to the `CardType` JavaScript not being present in the update billing form. #3108 (@dparker1005)
= 3.1.2 - 2024-08-02 =
* ENHANCEMENT: Added an admin notice on PMPro settings pages when using Stripe without a webhook set up. #3103 (@dparker1005)
* ENHANCEMENT: Added a new filter `pmpro_stripe_card_element_style` to allow developers to customize the Stripe card element style. #3099 (@kimcoleman)
* ENHANCEMENT: Improved the styling of bulleted lists. #3095 (@kimcoleman)
* BUG FIX: Fixed an issue where Braintree checkouts would fail due to the `CardType` field not being present in the payment form. #3102 (@JarrydLong)
* BUG FIX: Fixed an issue where billing updates could fail for some gateways. #3102, #3106 (@JarrydLong, @dparker1005)
* BUG FIX: Fixed PHP errors when showing a "no access" message and there is not a levels page or checkout page set. #3096 (@kimcoleman)
* BUG FIX: Fixed an issue where checkouts would fail when using the Stripe payment request button and reCAPTCHA v3. #3094 (@dparker1005)
* REFACTOR: Updated doc block for the `pmpro_set_expiration_date()` function to allow `null` as a valid value for the `$enddate` parameter. #3098 (@ZebulanStanphill)
= 3.1.1 - 2024-07-29 =
* ENHANCEMENT: Added autocomplete functionality for name and billing fields on the checkout page. #3081 (@andrewlimaza)
* ENHANCEMENT: Improved the field structure and styling for checkbox and radio user fields. #3077 (@kimcoleman)
* ENHANCEMENT: Added a new hook `pmpro_lost_password_before_submit_button`. #3090 (@dioliviers, @dparker1005)
* BUG FIX/ENHANCEMENT: The current panel on the Member Edit page is now included in the form action instead of as a hidden input. #3092 (@mircobabini)
* BUG FIX/ENHANCEMENT: Improved the LifterLMS streamline option to prevent LifterLMS from modifying the login form links on the PMPro login page. #3089 (@kimcoleman)
* BUG FIX: Fixed an issue where fields may overlap on the checkout page when viewing on a mobile device. #3078 (@kimcoleman)
* BUG FIX: Fixed an issue where pages could not be saved when they contain the "Confirmation Page" block. #3085 (@dparker1005)
* BUG FIX: Fixed an issue where the billing address fields were always shown on the Update Billing page, even when disabled. #3082 (@dparker1005)
* BUG FIX: Fixed an issue where some required fields did not display a "required" asterisk or the `aria-required` attribute. #3076 (@kimcoleman)
* BUG FIX: Fixed the styling for fields with errors after submitting the checkout form. #3076 (@kimcoleman)
* BUG FIX: Fixed an issue where the default expiration date when adding a new membership level via the Edit Member page would be calculated based on the current UTC time. #3093 (@mircobabini)
* BUG FIX: Fixed an issue where free orders would not process correctly when the default gateway was set to PayPal Standard or 2Checkout. #3091 (@dparker1005)
* BUG FIX: Fixed an issue where some HTML elements were missing class names. #3080 (@mircobabini)
* BUG FIX: Fixed the alignment of the action links on the "lost password" form. #3084 (@kimcoleman)
* BUG FIX: Fixed an issue where content added to the login form via hooks might be given flex alignment. #3083 (@kimcoleman)
* BUG FIX: Fixed an issue where requesting a subscription date as a timestamp would always return in the UTC timezone regardless of if `$local_time` was set to `true`. #3069 (@mircobabini)
* BUG FIX: Fixed a typo of "Akismet" on the PMPro Security settings page. #3081 (@andrewlimaza)
* BUG FIX: Fixed the alignment of the "search" field on the Add Ons dashboard page. #3079 (@kimcoleman)
= 3.1 - 2024-07-17 =
* FEATURE: Added a new "Design" tab to the Memberships > Settings page with multiple frontend style variations to choose from. #3003 (@kimcoleman)
* FEATURE: Added a new "Security" tab to the Memberships > Settings page. #2999 (@MaximilianoRicoTabo)
* ENHANCEMENT: Updated the styling of frontend pages. #3003 (@kimcoleman)
* ENHANCEMENT: Improved the logic around how "no access" messages are generated and added filters to customize these messages. #3003 (@kimcoleman)
* ENHANCEMENT: Standardized CSS selectors to make theming a PMPro site more straightforward. #3003 (@kimcoleman)
* ENHANCEMENT: Added an "Edit Customer in Stripe" button to the "View Subscription" page for Stripe subscriptions. #2987 (@dparker1005)
* ENHANCEMENT: Set Stripe Checkout to be the default Stripe payment flow on new websites. #3006 (@dparker1005)
* ENHANCEMENT: Updated the "Check out with PayPal" button so that it is more accessible and can be translated. #3026 (@kimcoleman)
* ENHANCEMENT: Updated the billing failure email to link directly to the "update billing information" page for the corresponding subscription. #3032 (@MaximilianoRicoTabo)
* ENHANCEMENT: Updated the term "Invoice" to "Order" in most places throughout the plugin. #2982 (@kimcoleman)
* ENHANCEMENT: Added filters for updating how the total, subtotal, and tax are displayed for an order. #3009 (@dparker1005)
* ENHANCEMENT: Added a new filter `pmpro_subscription_cost_text` for updating how the subscription cost is displayed. #3021 (@dparker1005)
* ENHANCEMENT: Added new filter `pmpro_dashboard_meta_boxes` to allow developers to hide dashboard widgets and add their very own widgets to the PMPro dashboard area. #3019 (@andrewlimaza)
* ENHANCEMENT: Now detecting Add Ons with incorrect folder names in site health. #2069 (@mircobabini)
* BUG FIX/ENHANCEMENT: Email headers and footers are now added after email body filters are run. #2000 (@mircobabini)
* BUG FIX/ENHANCEMENT: Added an error message on the Edit Member page when an order refund fails. #3015 (@dparker1005)
* BUG FIX/ENHANCEMENT: Moved the "Edit Customer in Stripe" button on the Edit Member page to the "User Info" tab. #2987 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Added a fallback to get the site URL from the database should the SERVER_NAME parameter not be available in certain cases like using WP-CLI and some other instances. #2996 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Now including email template variables for the expired level ID and level name on the membership expired email template. #2954 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: When using PMPro Lifter Streamline mode, now making sure that Lifter does not reserve the `/membership/` slug. #2927 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Enabled localization for certain strings throughout the plugin. #3005 (@DAnn2012)
* BUG FIX/ENHANCEMENT: Updated the "Login Name" setting for Authorize.net to "API Login ID" to match the Authorize.net documentation. #3058 (@dparker1005)
* BUG FIX: Fixed an issue where the payment transaction ID would not be saved for an order while purchasing a subscription via Stripe Checkout. #3025 (@dparker1005)
* BUG FIX: Fixed an issue on some hosting setups where subscriptions would not be successfully inserted into the database. #3002 (@dparker1005)
* BUG FIX: Fixed an issue where the "Content Visibility" block editor settings could break some core WordPress blocks. #3014 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an issue where a user's membership might not be removed when a PayPal Express subscription is suspended due to payment failure. #3016 (@dparker1005)
* BUG FIX: Fixed a broken link to the PMPro Approvals documentation page when creating a new membership level. #3001 (@dparker1005)
* BUG FIX: Fixed an issue where testing the "cancel on next payment date" email template might fail. #2984 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an issue where a PHP warning might be shown when dynamically adding the membership level body CSS class. #3013 (@andrewlimaza)
* BUG FIX: Fixed an issue where the "From Name" email setting could add slashes before escaped characters when saved. #3050 (@andrewlimaza)
* BUG FIX: Fixed an issue where the "View With" admin bar dropdown might not work correctly when using Firefox. #2953 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an issue where there might not be a space between class names when creating a user field. #3046 (@kimcoleman)
* BUG FIX: Fixed issues where user IDs over 4294967295 would not be correctly linked to their subscription. #3065 (@dparker1005)
* BUG FIX: Fixed over-escaped HTML in the admin activity email. #2985 (@MaximilianoRicoTabo)
* BUG FIX: Fixed some typos in the plugin. #3062 (@szepeviktor)
* REFACTOR: Updated the checkout preheader to use the abstracted `pmpro_complete_checkout()` function. #2937 (@dparker1005)
* REFACTOR: Removed duplicate code from PayPal gateway classes. #2932 (@dparker1005)
* DEPRECATED: Removed the ability to customize no access messages for the RSS feed and the secondary option for logged out members. Filters should be used to customize these messages. #3003 (@kimcoleman)
* DEPRECATED: Removed the "Update Billing Flow" option from the Stripe gateway settings. Billing information will now be updated on-site if using the on-site payment flow and off-site if payments are taken via Stripe Checkout. #3006 (@dparker1005)
* DEPRECATED: Removed the `print.css` file from the plugin. These styles are now in `frontend.css`. #2940 (@dparker1005)
* DEPRECATED: Deprecated the `pmpro_longform_address` filter. Address fields will always be shown in longform format. #2990 (@kimcoleman)
* DEPRECATED: Removed setting and display of SSL Seal Code option from database and frontend pages. #2991 (@kimcoleman)
* DEPRECATED: No longer storing an option for accepted card types or allowing a card type select field in payment forms. #2989 (@kimcoleman)
* DEPRECATED: Deprecated the billable invoice, credit card expiring, checkout express, checkout trial, and checkout free trial email templates along with their admin counterparts. #3032 (@MaximilianoRicoTabo)
* DEPRECATED: Removed the setup.sql file from the plugin. #3068 (@dparker1005)
= 3.0.6 - 2024-07-01 =
* SECURITY: Fixed an authenticated SQL injection vulnerability in the Orders and Discount Codes list tables. (Thanks, Trương Hữu Phúc from Patchstack)
* BUG FIX: Fixed PHP errors when calling `pmpro_is_checkout()` too early in the page load. (@kimcoleman)
= 3.0.5 - 2024-06-24 =
* SECURITY: Fixed a vulnerability in the 2Checkout payment integration that could allow unauthenticated users to move orders from the "pending" status to the "success" status (Thanks, Rafie Muhammad from Patchstack)
* BUG FIX: Fixed an incorrect query when using the "Show Only New" or "Show Only Renewals" filters on the sales report. (@ideadude)
= 3.0.4 - 2024-05-08 =
* ENHANCEMENT: Now detecting whether a webhook is set up in Stripe and, if not, showing a button to set one up. Webhooks are also automatically set up after the Stripe Connect flow is created. #2976 (@dparker1005)
* ENHANCEMENT: Added a `group` attribute to the `[pmpro_member]` shortcode to show specific member information in the context of a level group. #2966 (@kimcoleman)
* ENHANCEMENT: Added a new "gateway" column to the Orders tab of the Edit Member page. #2970 (@andrewlimaza)
* ENHANCEMENT: Added a new "gateway" column to the Subscriptions tab of the Edit Member page. #2979 (@andrewlimaza)
* ENHANCEMENT: Adjusted the hierarchy and names for PMPro pages generated as part of the initial plugin setup. #2967 (@kimcoleman)
* ENHANCEMENT: Added the ID for each group to the `Memberships > Settings > Levels` settings page. #2978 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Updated the `+ New > Member` admin bar menu item to be visible to any user with the `edit_users` capability. #2968 (@kimcoleman)
* BUG FIX: Fixed an issue where the login redirect may incorrectly redirect back to the login page. #2971 (@andrewlimaza)
* BUG FIX: Fixed an issue where purchasing a recurring membership with PayPal Express for a level that the user already had would immediately cancel the new payment subscription. #2972 (@dparker1005)
* BUG FIX: Fixed PHP deprecation warnings on the User Fields settings page for some versions of PHP. #2975 (@dparker1005)
* DEPRECATED: No longer showing the "Register a webhook" popup after connecting to Stripe since this process is now automated. #2976 (@dparker1005)
= 3.0.3 - 2024-04-18 =
* ENHANCEMENT: No longer making API calls to pull subscription data from Stripe or PayPal Express when we do not have gateway credentials. #2956 (@mircobabini)
* ENHANCEMENT: Added new filters `pmpro_subscription_gateway_object` and `pmpro_order_gateway_object` to allow developers to modify gateway objects before they are used. #2962 (@mircobabini)
* ENHANCEMENT: Added a new filter `pmpro_stripe_before_retrieve_webhook_event` to allow developers to modify the Stripe API key before retrieving a webhook event. #2962 (@mircobabini)
* BUG FIX: Fixed an issue where nonce verification checks may fail when creating a new user at checkout. #2963 (@dparker1005)
* BUG FIX: Fixed issues where users' roles could be unintentionally changed on the Edit Member page by making the "Role" field read-only. #2961 (@dparker1005)
* BUG FIX: Fixed an issue where the status for an old membership level would be `changed` instead of `admin_changed` when an admin modified a user's membership. #2965 (@dparker1005)
* BUG FIX: Fixed PHP errors in the PMPro "Recent Members" Dashboard widget when a user that would be shown on that list was deleted. #2964 (@andrewlimaza)
* BUG FIX: Added some missing global variables on admin pages. #2955 (@mircobabini)
* BUG FIX: Fixed missing CSS color variable. #2955 (@kimcoleman)
* BUG FIX: Fixed variable name when generating an error message in the Stripe webhook. #2955 (@mircobabini)
* BUG FIX: Fixed an issue where the Braintree webhook log may not include transaction details. #2955 (@mircobabini)
* REFACTOR: Removed duplicate array elements throughout the codebase. #2955 (@mircobabini)
= 3.0.2 - 2024-04-11 =
* ENHANCEMENT: Added settings to disable custom page templates when they are out of date. #2923 (@dparker1005, @kimcoleman)
* ENHANCEMENT: Now defaulting the "View: My Access" setting to "View with my access". #2938 (@andrewlimaza)
* ENHANCEMENT: Added a new filter `pmpro_show_setup_wizard_link` to adjust whether the link to the setup wizard should show. #2372 (@andrewlimaza)
* ENHANCEMENT: Added level group information to site health. #2931 (@dparker1005)
* ENHANCEMENT: Improved how custom page templates are displayed in site health. #2923 (@dparker1005)
* BUG FIX/ENHANCEMENT: Added a nonce when updating the order of level groups. #2930 (@dparker1005)
* BUG FIX/ENHANCEMENT: No longer removing quotes from discount code error messages at checkout. #2935 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Now supporting users without a role on the Edit Member page. #2942 (@dparker1005)
* BUG FIX/ENHANCEMENT: Updated some JS code used while processing PMPro form submissions to only run for PMPro forms. #2779 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Made the "discount code applied to your order" strings consistent for localization. #2941 (@dparker1005, @mircobabini)
* BUG FIX/ENHANCEMENT: Now including email template variables for the level ID and level name on the billable invoice email template. #2947 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Now only showing log-in errors if the user was not successfully logged in. #2949 (@dparker1005)
* BUG FIX: Fixed a fatal error when editing a level group on some versions of PHP. #2933 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an issue where subscription creation would fail when using PayPal Express in Sandbox mode. #2944 (@dparker1005)
* BUG FIX: Fixed an issue where discount codes with unsupported billing details would not be highlighted on the Discount Codes list. #2928 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an issue where using the MemberOrder::get_orders() method may incorrectly return an empty array when filtering by `discount_code_id`. #2929 (@dparker1005)
* BUG FIX: Fixed an issue where a month would always be considered 30 days when renewing a level with an expiration date. #2945 (@dparker1005, @fisher2470)
* BUG FIX: Adding back the `pmpro_deactivate_old_levels` filter that was removed in 3.0. #2946 (@dparker1005)
* BUG FIX: Fixed an issue where the Members List CSV Export could generate incorrect data when it was not ordered by user ID. #2811 (@rollsappletree)
* BUG FIX: Fixed a PHP warning when passing null to strtolower(). #2926 (@MaximilianoRicoTabo)
* BUG FIX: Fixed a PHP warning when passing null to esc_url(). #2939 (@dparker1005)
* BUG FIX: Fixed PHP deprecation warnings by declaring properties in the PMPro_Discount_Code class. #2936 (@MaximilianoRicoTabo)
* BUG FIX: Fixed PHP deprecation warnings by declaring properties in the PMProEmail class. #2934 (@MaximilianoRicoTabo)
* BUG FIX: Fixed some HTML tags that were being incorrectly escaped in the Admin Activity email. #2948 (@dparker1005)
* REFACTOR: Fixed some typos throughout the codebase. #2777, #2950, #2951 (@mircobabini)
= 3.0.1 - 2024-03-27 =
* ENHANCEMENT: Improved the admin UI on mobile devices. #2913 (@kimcoleman)
* ENHANCEMENT: Now hiding save messages when switching tabs on the edit member page. #2910 (@dparker1005)
* ENHANCEMENT: The "Generate pages" checkbox in the setup wizard is now checked by default. #2916 (@dparker1005)
* BUG FIX/ENHANCEMENT: Now only showing membership groups on the levels page if the group contains levels that will also be shown. #2917 (@dparker1005)
* BUG FIX: Fixed a fatal error caused by plugin conflicts with plugins triggering the `current_screen` action before `add_meta_box()` is defined. #2911 (@dparker1005)
* BUG FIX: Fixed a plugin conflict that may cause the "Require Membership" metabox not to show when editing a post. #2911 (@dparker1005)
* BUG FIX: Fixed an issue where the "Add New Level" button on the levels settings page would not work. #2905 (@dparker1005)
* BUG FIX: Fixed an issue where the expired/cancelled date would not show in the members list when filtering by old members. #2908 (@dparker1005)
* BUG FIX: Fixed an issue where the "Edit Member" link on the edit user page was visible to everyone. #2903 (@dparker1005)
* BUG FIX: Fixed an issue where custom code using the `pmpro_account_membership_expiration_text` filter would no longer run. #2906 (@dparker1005)
* BUG FIX: Fixed an issue where custom code passing an array of statuses to `pmpro_next_payment()` would no longer work. #2904 (@dparker1005)
* BUG FIX: Fixed an issue where discount codes could not be applied when using an outdated checkout page template. #2921 (@dparker1005)
* BUG FIX: Fixed a PHP warning when creating a new membership level. (@dparker1005)
* BUG FIX: Fixed a PHP warning when passing NULL to `pmpro_no_quotes()`. #2909 (@ipokkel)
* BUG FIX: Fixed a PHP warning when passing NULL as a value to `pmpro_setOption()`. #2915 (@dparker1005)
* BUG FIX: Fixed a PHP warning when saving a restricted post in the block editor. #2919 (@dparker1005)
* BUG FIX: Fixed the formatting of the "Status" column of the Stripe webhook checker. #2918 (@dparker1005)
* REFACTOR: Changed uses of `pmpro_getOption()` to `get_option()`. #2914 (@dparker1005)
= 3.0 - 2024-03-25 =
* FEATURE: Now tracking payment subscriptions using a new subscriptions table. (@dparker1005)
* FEATURE: The Multiple Memberships Per User Add On has been merged into the core PMPro plugin. #2250 (@dparker1005)
* FEATURE: The Stripe Billing Limits Add On has been merged into the core PMPro plugin. All gateways now support billing limits. #2384 (@dparker1005)
* FEATURE: The Cancel On Next Payment Date Add On has been merged into the core PMPro plugin. #2389 (@dparker1005)
* FEATURE: Added a new Edit Member page for editing a user's membership information. #2657 (@kimcoleman, @ideadude, @dparker1005)
* FEATURE: Added a "Admin Membership Access" setting to the toolbar to allow admins to choose whether they want to view the website with full membership access, no membership access, or with their current membership levels. #2541 (@andrewlimaza)
* FEATURE: Added "content visibility" settings to all core WordPress blocks to allow restricting by membership level. #2680 (@MaximilianoRicoTabo)
* FEATURE: Added the Single Membership Level block to display information about a specific membership level. #2654 (@JarrydLong, @kimcoleman)
* ENHANCEMENT: Added a script that will run on upgrade to change all `cancelled` orders to `success` so that we can remove `cancelled` status. #2025 (@dparker1005)
* ENHANCEMENT: Moving the "Require Membership" settings in the block editor to a new block editor panel. #2445 (@dparker1005)
* ENHANCEMENT: Added a setting for customizing the word "Check" when collecting offline payments. #2655 (@MaximilianoRicoTabo)
* ENHANCEMENT: Now prefixing the level and discount code URL parameters at checkout. #2506 (@dparker1005)
* ENHANCEMENT: Overhauled UI across administrative screens. #2667 (@kimcoleman)
* ENHANCEMENT: Updated front-end pages and pre-headers. (@kimcoleman, @dparker1005)
* ENHANCEMENT: Now setting collate when creating database tables. #2566 (@dparker1005)
* ENHANCEMENT: Adding a `$name` parameter to the `pmpro_user_taxonomy_args` filter. #2456 (@mircobabini)
* ENHANCEMENT: Now sending payment descriptions to Stripe when users pay via Stripe Checkout. #2744 (@dparker1005)
* ENHANCEMENT: Added the `pmpro_get_membership_expiration_text()` function to replace the various ways we were getting the expiration text for the Members List table and when showing levels on the account page. Includes a `pmpro_membership_expiration_text` filter that is meant to replace the `pmpro_memberslist_expires_column` and `pmpro_account_membership_expiration_text` filters. The old filters are still applied if in place, but will be deprecated eventually. #2838 (@ideadude, @dparker1005)
* ENHANCEMENT: Now hiding on-PMPro notices on the PMPro dashboard pages. #2797 (@ideadude)
* ENHANCEMENT: Added Screen Options for the orders and discount code list tables. #2799 (@dparker1005)
* ENHANCEMENT: Now showing links and previews when viewing file fields as read only. #2792 (@ideadude)
* ENHANCEMENT: Now passing the `$item` object to the `pmpro_manage_memberslist_custom_column` so that custom code knows which specific level is being shown for the user. #2857 (@dparker1005)
* ENHANCEMENT: You can now set block visibility for nested blocks. #2869 (@kimcoleman)
* ENHANCEMENT: Added `pmpro_braintree_subscription_create_array` filter. #2890 (@dparker1005)
* ENHANCEMENT: Added subscription transaction ID and next payment date to members list export. #2872 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Now storing payment information in individual orders instead of in user meta. #2398 (@JarrydLong)
* BUG FIX/ENHANCENENT: Now showing "Credit Card" instead of "Pay With Credit Card" on the Update Billing page when using the Stripe payment request button. #2684 (jahidhasan018)
* BUG FIX/ENHANCEMENT: Now preventing multiple user field groups with the same name from being created. #2625 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Now only calculating order tax and total when creating a new order. #2703 (@dparker1005)
* BUG FIX/ENHANCEMENT: Defaulting tax on MemberOrders to a float for consistency and to avoid potential edge cases. #2656 (@mircobabini)
* BUG FIX/ENHANCEMENT: Updated our "Lost Password"/"Reset Password" flow to track whether a password reset was initiated by Paid Memberships Pro. If not, some functions related to password reset will be disabled to avoid conflicting with other plugins. #2595 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Now using pmpro_cancelMembershipLevel() when processing an expiration. #2762 (@dparker1005)
* BUG FIX/ENHANCEMENT: Now caching the recent members and orders dashboard reports. #2850 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed caching of sales reports that were 0 values. #2851 (@dparker1005)
* BUG FIX/ENHANCEMENT: Allowing dynamic properties in gateway and field classes to avoid PHP 8.2+ warnings. #2844 (@dparker1005)
* BUG FIX/ENHANCEMENT: No longer attempting to load our blocks if the register_block_type function is unavailable. (ClassicPress compatibility.) #2840 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Adjusted the dashboard UI to hide some elements when the current user doesn't have the proper caps to use them. #2771 (@kimcoleman)
* BUG FIX/ENHANCEMENT: No longer making the AJAX call to check for notifications if notifications are turned off. #2856 (@mircobabini)
* BUG FIX/ENHANCEMENT: Adding nonce to email order modal and prefixing params. #2864 (@dparker1005)
* BUG FIX/ENHANCEMENT: Adding nonce to checkout form. #2893 (@dparker1005)
* BUG FIX/ENHANCEMENT: Small fixes for theme compatibility in Kadence, BuddyBoss. #2894 (@kimcoleman)
* BUG FIX: Fixed an issue in the WordPress dashboard where the site locale would be loaded instead of the user locale. #2707 (@andrewlimaza)
* BUG FIX: Fixed an issue where `admin_only` user fields would still show on the frontend profile if the current user was an administrator. #2432 (@dparker1005)
* BUG FIX: Fixed an issue where the annual membership report would not show cancellations. #2630 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an incorrect class name in the profile edit fields. #2632 (@patric-boehner)
* BUG FIX: Fixed issue where invalid dates were breaking SQL queries in the members export and sales reports. #2835 (@dparker1005)
* BUG FIX: Fixed issue where clicking outside of a modal popup was not closing the popup. #2776 (@mircobabini)
* BUG FIX: Fixed an issue where reCAPTCHA v3 wouldn't show the badge for offsite gateways. #2826 (@andrewlimaza)
* BUG FIX: Fixed an issue where reCAPTCHA v3 wouldn't show the badge for gateways that use a custom submit button at checkout. #2867 (@dparker1005)
* BUG FIX: Fixed edge case issues when blocks were set to hide from multiple levels. #2884 (@dparker1005)
* BUG FIX: Fixed "WordPress database error Index column size too large." issues on some MySQL setups. #2876 (@dparker1005)
* REFACTOR: Updated how we enqueue blocks to follow most recent WordPress standards. #2647 (@briansantos10)
* REFACTOR: Removed deprecated and unused code in the Stripe gateway integration code. #2428 (@dparker1005)
* REFACTOR: Changing uses of `pmpro_getOption()` to `get_option()`. #2491, #2493, #2494, #2495 (@JarrydLong, @MaximilianoRicoTabo)
* REFACTOR: The pmpro_edit_memberships capability has been replaced with the pmpro_edit_members capability. This cap is required to edit members in the dashboard or through the API.
* REFACTOR: Replaced deprecated jQuery shorthands with generic handler and trigger. #2859 (@mircobabini)
* DEPRECATED: No longer using `$pmpro_levels` global variable. #2666 (@dparker1005)
* DEPRECATED: Marked the following hooks as deprecated: pmpro_admin_pagesetting_post_type_array (replaced by pmpro_admin_pagesetting_post_type), pmpro_stripe_subscription_deleted, pmpro_subscription_cancelled. #2819 (@dparker1005)
* DEPRECATED: Removed the following functions which were previously marked deprecated: `pmpro_set_pause_mode()`, `pmpro_cron_trial_ending_warnings()`. #2818 (@dparker1005)
* DEPRECATED: No longer showing "billing address" user meta fields in the Members List table or the Members CSV export. #2873 (@dparker1005)
* DEPRECATED: The checkout_levels API endpoint has been marked as deprecated. Please use the checkout_level (no s) endpoint instead. #2879 (@dparker1005)
= 2.12.10 - 2024-02-08 =
* BUG FIX: Fixed fatal error on post save introduced in 2.12.9.
* ENHANCEMENT: Now simplifying the members and user search on sites where wp_is_large_user_count() is true.
= 2.12.9 - 2024-02-07 =
* SECURITY: Only users with the "edit_users" capability may add the pmpro_member shortcode to posts and widgets now. #2817 (Thanks, Scott Kingsley Clark)
* BUG FIX/ENHANCEMENT: Removed the 24 option from the hours dropdown for expiration dates since the hours start with 00. #2812 (@MaximilianoRicoTabo)
= 2.12.8 - 2024-01-22 =
* SECURITY: Added missing nonce when updating the level order through drag and drop. (Thanks, Kodai Kubono from WordFence) #2773 (@dparker1005)
* BUG FIX/ENHANCEMENT: The `pmpro_stripe_order_description` filter now applies to Stripe Checkout orders as well. #2774 (@MaximilianoRicoTabo)
* BUG FIX: Fixed issues with ApplePay and GooglePay when using Stripe Checkout. #2769 (@dparker1005)
* BUG FIX: Fixed issue when user fields added through code set the levels property to a single integer. This is supported again. #2775 (@MaximilianoRicoTabo)
= 2.12.7 - 2024-01-10 =
* SECURITY: Fixed a security issue where sensitive user data was sometimes showing up in web server logs. Please see https://www.paidmembershipspro.com/pmpro-security-update-2-12-7/ for more information, including notes on how to tell if your site was affected by this issue and what to do about it.
= 2.12.6 - 2023-12-18 =
* SECURITY: Fixed a security issue where unauthorized users could abuse the REST API endpoints to add new levels or edit existing levels. (Thanks, Craig Smith at WordFence) #2742 (@ideadude)
* BUG FIX: Now hiding level confirmation messages from the output returned by the checkout_levels API route. #2742 (@ideadude)
= 2.12.5 - 2023-12-12 =
* ENHANCEMENT: Now allowing links to be included in user field group descriptions. #2681 (@dparker1005)
* ENHANCEMENT: Now sorting the Levels column on the Discount Codes list table by the sorted level order. #2628 (@kimcoleman)
* ENHANCEMENT: Now recommending the new Group Members Add On instead of the Sponsored Members Add On. #2714 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Improved accessibility for the frontend membership levels page default table. #2689 (@kimcoleman)
* BUG FIX: Fixed a PHP warning when selecting "other" as the site type in the setup wizard. #2708 (@MaximilianoRicoTabo)
* BUG FIX: Fixed an issue where new payment methods may not be charged after a user updates their payment method while using the Authorize.net gateway. #2330 (@dparker1005)
* BUG FIX: Removed definition of `PMPRO_BENCHMARK` constant that was defaulting that constant to `true` in certain admin CSV files. #2724 (@andrewlimaza)
= 2.12.4 - 2023-11-16 =
* SECURITY: Fixed security issue where in some cases users could upload files at checkout with disallowed file types, e.g. .php files that could then be accessed to run arbitrary code on the server. For more information, see https://www.paidmembershipspro.com/pmpro-update-2-12-4/ (Thanks, István Márton and WordFence)
* ENHANCEMENT: New icons for LifterLMS and the GA4 Add On.
* BUG FIX/ENHANCEMENT: Fixed issues with the notifications shown when updating billing details. (Thanks, dwanjuki on GitHub)
= 2.12.3 - 2023-10-03 =
* ENHANCEMENT: Updated the PayPal Express integration to save checkout data in order meta instead of sessions to improve compatibility with various Add Ons. #2616 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed performance issue in deprecation code. #2621 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Fixed warning in PHP 8.1 when using the pmpro_member shortcode without a field attribute. #2622 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Updated pmpro_hasMembershipLevel() function to accept a string of comma separated level ids or names. This also fixes issues in The Events Calendar ticketing add ons. #2623 (@MaximilianoRicoTabo)
* BUG FIX: Fixed issue where user fields may not be shown in admin checkout emails. #2613 (@andrewlimaza, @dparker1005)
* BUG FIX: Fixed issue where the incorrect label could be shown for a user field value. #2613 (@dparker1005)
* BUG FIX: Fixed issue where the Visits, Views, and Logins report CSV export may show the user's "joindate" in the "enddate" column. #2608 (@dparker1005)
* BUG FIX: Now only declaring the `recaptcha_get_html()` function on the PMPro checkout page. This fixes conflicts with other plugins that declare their own `recaptcha_get_html()` function. #2607 (@dparker1005)
* BUG FIX: Fixed issue where row action to view a discount code's orders was not showing for unlimited use codes. #2599 (@kimcoleman)
* REFACTOR: Marking the PMPro Table Pages Add On as deprecated. #2606 (@dwanjuki)
= 2.12.2 - 2023-08-13
* ENHANCEMENT: Improving the LifterLMS Streamline functionality. #2572 (@ideadude)
* ENHANCEMENT: Now also applying the pmpro_checkout_message filter to the bottom message box on the checkout page. #2567 (@ipokkel)
* ENHANCEMENT: Caching the Stripe webhook status checks. #2565 (@dparker1005)
* BUG FIX: Fixed issue where some advanced settings added by Add Ons weren't applying properly. Resave and try again. #2571 (@ideadude)
= 2.12.1 - 2023-08-07 =
* BUG FIX: Fixed issue where password reset attempts may incorrectly show that the user's password reset key is invalid. #2561 (@dparker1005, @andrewlimaza)
= 2.12 - 2023-08-04 =
* FEATURE: Added integration with LifterLMS to streamline setting up that plugin when Paid Memberships Pro is active. #2533 (@ideadude, @MaximilianoRicoTabo)
* ENHANCEMENT: A “no access” message can now be set when restricting Elementor widgets. #2525 (@andrewlimaza)
* ENHANCEMENT: A “no access” message can now be set when restricting content with DIVI. #2526 (@andrewlimaza)
* ENHANCEMENT: Added `pmpro_stripe_checkout_session_parameters` filter. #2555 (@JarrydLong)
* ENHANCEMENT: Now delaying non-security notification banners for 1 week the first time an admin user visits a PMPro dashboard page. #2552 (@MaximilianoRicoTabo)
* ENHANCEMENT: Now showing a modal with instructions for setting up webhooks after linking an account through Stripe Connect. #2554 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Removed associative array check in the `pmpro_get_label_for_user_field_value()` function to ensure that user-friendly values are always returned. #2524 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Updating the “Active Members Per Level” to ignore deleted users. #2482 (@JarrydLong)
* BUG FIX/ENHANCEMENT: Added a new capability pmpro_loginscsv for exporting the login report data and a new capability pmpro_reportscsv as a fallback for exporting all report data. #2536 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Fixed issue where subscriptions weren't cancelling when users deleted their own account using BuddyPress or BuddyBoss. #2559 (@dparker1005, @andrewlimaza)
* BUG FIX/ENHANCEMENT: Use wpautop() for membership confirmation message. This fixes an issue where Elementor and possibly other solutions were not honoring the \n as paragraphs. #2549 (@andrewlimaza)
* BUG FIX: Fixed post restriction logic for posts that are in multiple categories. #2522 (@andrewlimaza)
* BUG FIX: Fixed an issue where extra checkout fields weren’t being displayed correctly in admin checkout emails. #2537 (@andrewlimaza, @MaximilianoRicoTabo)
* BUG FIX: Updated login functions to broken links from potentially being generated. #24722, #2244, #2475, #2476, #2477, #2478 (@JarrydLong)
* BUG FIX: Fixed styling for h2 tags on the Membership Account page. (@kimcoleman)
* BUG FIX: Fixed the ID parameter in the `pmpro_manage_discount_code_list_custom_column` filter. #2517 (@JarrydLong)
* BUG FIX: Fixed issues where suggested Add Ons would not show in setup wizard if the site type was not specified. #2524 (@andrewlimaza)
* BUG FIX: Fixed the timing of the `pmpro_discount_code_used` filter when processing a Stripe Checkout payment. #2532 (@dparker1005)
* BUG FIX: Fixed issue where only the first page of orders was showing up when searching orders. #2553 (@JarrydLong)
* BUG FIX: Fixed issue with some DB setups where levels couldn't be added to the table. #2546 (@dparker1005)
* REFACTOR: Updated enum columns in database to varchar. #2529 (@andrewlimaza)
= 2.11.2 - 2023-06-14
* BUG FIX: Reverting the application of the required attribute for required fields at checkout. This would break valid checkouts in some cases if required fields were hidden. We need to address this differently. #2516 (@ideadude)
= 2.11.1 - 2023-06-13
* ENHANCEMENT: Now using HTML5 required field attribute on required fields at membership checkout.#2511 (@kimcoleman)
* ENHANCEMENT: Better wording for the "Disconnect from Stripe" button in the payment settings so folks understand this will disconnect ANY site connected to Stripe through that account. #2514 (@dparker1005)
* BUG FIX/ENHANCEMENT: Removed the "What's This?" text from the CVV field on Membership Billing page. #2512 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Minor fixes to the Orders List Table. #2509 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed the text domains for the default headings for the account page shortcode. #2508 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed the default page titles when using the account block. #2505 (@dparker1005)
= 2.11 - 2023-06-07 =
* FEATURE: Now tracking users that are created at checkout but never complete checkout or otherwise use the site. These users can be found and deleted from the Users Table in the admin dashboard. #2435 (@dparker1005, @ideadude)
* FEATURE: Added compatibility with Oxygen Builder. #2404 (@JarrydLong)
* ENHANCEMENT: Updated the Orders list to use a WP List Table. #2383 (@JarrydLong)
* ENHANCEMENT: Updated the Discount Code list to use a WP List Table. #2370 (@JarrydLong)
* ENHANCEMENT: Now showing a notice when using a page template that is out of date. #2427 (@JarrydLong, dparker1005)
* ENHANCEMENT: Reducing calls made to `get_option()` from `pmpro_getOption()`. #2137 (@JJJ)
* ENHANCEMENT: Now allowing account page section titles to be customized. #2459 (@MaximilianoRicoTabo)
* ENHANCEMENT: Adding filters `pmpro_stripe_webhook_event_received` and `pmpro_stripe_webhook_before_exit`. #2465 (@dparker1005)
* ENHANCEMENT: Improved Add Ons search to support multiple keywords and phrases. #2444 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Improved accessibility across the entire admin dashboard. Thanks for contributions from Piccia Neri, Alex Stine, and Amber Hinds. #2448 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Now making sure that our reCAPTCHA functions are always loaded. #2449 (@mircobabini, @dparker1005)
* BUG FIX/ENHANCEMENT: Improved the chart title wording for some sales and revenue report periods. #2488 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Removing trailing colons after question marks in Advanced Settings. #2467 (@mircobabini)
* BUG FIX/ENHANCEMENT: Removed unused spinner.gif file. #2486 (@ipokkel)
* BUG FIX: Resolved issue where checkouts using Stripe may complete even if reCAPTCHA fails. #2449 (@dparker1005)
* BUG FIX: Resolved issue where "log out" link may not show on the update billing page. #2489 (@dparker1005)
* BUG FIX: Fixed an issue where radio button would always show asterisk even when not required. This now applies the asterisk to each and every radio button individually to support multiple radio buttons at checkout. #2499 (@andrewlimaza)
* REFACTOR: Removed leading slash in all uses of `admin_url()`. #2429 (@jahidhasan018)
* REFACTOR: Removing unused variable in `pmpro_rest_api_recent_memberships()`. #2469 (@andrewlimaza)
= 2.10.7 - 2023-05-23 =
* ENHANCEMENT: Updated sales and revenue report to compare to previous periods. #2426 (@JarrydLong)
* ENHANCEMENT: Updated sales and revenue report to show orders from a predefined timeframe (ex. last 30 days). #2426 (@JarrydLong)
* ENHANCEMENT: Added "Active Memberships Per Level" report. #2426 (@JarrydLong)
* BUG FIX/ENHANCEMENT: Now preventing multiple clicks on the "submit" button on the cancel page. #2425 (@dparker1005)
* BUG FIX: Fixing incorrect value for `PMPRO_VERSION` constant.
= 2.10.6 - 2023-05-19 =
* SECURITY: Added extra precautions to make sure credit card and password information does not get stored in the `checkout_request_vars` order meta when using Stripe Checkout. More info here: https://www.paidmembershipspro.com/pmpro-update-2-10-6/ #2468, #2473 (@dparker1005, @ideadude)
* ENHANCEMENT: Added a new filter `pmpro_sales_widget_periods` to allow filtering the periods for the sales widget. (@kimcoleman)
* BUG FIX/ENHANCEMENT: Now including the administrator's display name in emails that are sent to the admin. #2453 (@MaximilianoRicoTabo)
* BUG FIX/ENHANCEMENT: Now validating license keys in setup wizard. #2464 (@dparker1005)
* BUG FIX: Fixed fatal error on payment gateway settings page when using Stripe with expired API keys. #2455 (@dparker1005)
* BUG FIX: Fixed issue where an error message would not be displayed on the Update Billing page when a credit card number was not entered. #2457 (@MaximilianoRicoTabo)
* BUG FIX: Fixed issue where the orders export date filter may ignore the site's timezone. #2460 (@JarrydLong)
= 2.10.5 - 2023-04-27 =
* BUG FIX/ENHANCEMENT: Fixed issue where the date/time of orders in the Member History table were sometimes off based on timezone. #2552 (@JarrydLong, @dparker1005)
* BUG FIX: Fixed issue where checkouts for subscriptions with a $0 initial payment were failing with Stripe. #2454 (@dparker1005)
* BUG FIX: Fixed the error that would occur if the AUTH_KEY and SECURE_AUTH_KEY constants were not set (e.g. with Local by Flywheel). #2451 (@JarrydLong)
= 2.10.4 - 2023-04-26 =
* ENHANCEMENT: The spam protection setting is now enabled by default for new installs. #2421 (@dparker1005)
* ENHANCEMENT: Now showing a dismissible notice if the spam protection setting is not enabled. #2422 (@dparker1005)
* BUG FIX/ENHANCEMENT: Now trimming the whitespace around values for dropdown/etc fields to ensure consistent results. #2410 (@JarrydLong)
* BUG FIX/ENHANCEMENT: Now setting the Stripe payment method per subscription instead of using the default payment method when using the update billing form. #2412 (@dparker1005)
* BUG FIX/ENHANCEMENT: Marking the Register Helper plugin as deprecated. More info here: https://www.paidmembershipspro.com/register-helper-add-on-deprecated/
* BUG FIX/ENHANCEMENT: Removed the "activate" link from the plugins page for deprecated Add Ons. #2424 (@dparker1005)
* BUG FIX/ENHANCEMENT: No longer links added through incorrect use of the pmpro_membershiplevels_page_action_links filter. #2431 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed warning when updating billing with Stripe. #2420 (@mircobabini)
* BUG FIX: Updated the PayPal IPN handler to cancel memberships when the maximum number of retries have failed for a subscription payment. Previously, some of these subscriptions would get stuck in a "suspended" status, which did not trigger the PMPro membership to cancel. #2407 (@dparker1005)
* BUG FIX: Fixed where file user fields save their files on multisite setups. #2406 (@dparker1005)
* BUG FIX: Fixed PHP8 compatibility issues with our visit tracking cookie. #2414 (@dparker1005, @JarrydLong)
* BUG FIX: Fixed PHP8 compatibility issues in the Braintree library. #2418 (@dparker1005)
* BUG FIX: Fixed issue where taxonomy user fields were not saving correctly in the database. #2423 (@dparker1005)
* BUG FIX: Fixed issue where the views, visits, and logins CSV report would only include the first page of data. #2436 (@dparker1005)
* BUG FIX: Fixed issue where the "Account Information" section of checkout would still show up even if the user was just created. #2437 (@dparker1005)
* BUG FIX: Fixed race condition issue where duplicate refund emails were sometimes sent when using the Stripe gateway. #2438 (@dparker1005)
* BUG FIX: Fixed timezone offset issue when filtering orders by date range. #2440 (@mircobabini)
* BUG FIX: Fixed the "transient error" issues happening with some reports in the dashboard. #2443 (@JarrydLong, @ideadude)
= 2.10.3 - 2023-03-02 =
* BUG FIX: Fixed issue with alternative login methods that call the wp_login_failed hook with only 1 parameter.
= 2.10.2 - 2023-02-28 =
* BUG FIX: Fixed issue where the "Site URL Changed" message would show up on sites where the site_url wasn't actually changed. We are now ignoring the scheme (http/https) when checking.
* REFACTOR: Removed the pmpro_is_paused option and deprecated the pmpro_set_pause_mode() function. Now checking specifically for site_url changes in real time during admin_init. We no longer intend to expand on the "pause mode" concept or otherwise try to align with the WP_ENVIRONMENT_TYPE values.
= 2.10.1 - 2023-02-21 =
* BUG FIX/ENHANCEMENT: Changed how reports are loaded to avoid fatal errors if PMPro had an incomplete update.
* BUG FIX/ENHANCEMENT: Fixed escaping of the discount code message to allow the strong tag.
* BUG FIX/ENHANCEMENT: Now running the pmpro_tos_content filter AFTER the TOS page content is escaped. This could be used to override that escaping if needed. See: https://gist.github.com/ideadude/2ce102d7fd554172e4e2a98d80e74352
= 2.10 - 2023-02-20 =
* FEATURE: Added Setup Wizard
* FEATURE: Stripe Checkout and Stripe Customer Portal integrations are now fully released. Increased Stripe fee to 2% for newly connected sites.
* ENHANCEMENT: Now "pausing" some PMPro functionality when the site URL changes.
* ENHANCEMENT: Categories and tags can now be restricted directly from their respective settings pages.
* ENHANCEMENT: Updated Stripe webhook checker to check each event type separately.
* ENHANCEMENT: Admins will now be given the choice to delete a user's membership history when deleting a user.
* ENHANCEMENT: Stripe Checkout now creates Invoices for one-time payments.
* ENHANCEMENT: Updated Stripe library to version 10.0.
* ENHANCEMENT: Excluding more dev/staging-related subdomains and TLDs from Wisdom tracking.
* ENHANCEMENT: Added the add class attribute to the "rate us" notice in the footer of PMPro pages. You can use this to hide the notice.
* BUG FIX/ENHANCEMENT: WordPress users will now be created before payments are charged at checkout.
* BUG FIX/ENHANCEMENT: No longer cancelling subscriptions for users with a membership level when the level is deleted.
* BUG FIX/ENHANCEMENT: Removed the "What's This?" text from the CVV field.
* BUG FIX/ENHANCEMENT: Fixed error thrown if all pmpro_reports were unset.
* BUG FIX/ENHANCEMENT: Fixed localization issues with the Members List table in the dashboard and several other areas.
* BUG FIX/ENHANCEMENT: Fixed issue where usage tracking was disabled, even if you clicked the "allow" button in the notice. Double check that this is set how you'd like at Memberships > Settings > Advanced Settings > Enable Tracking.
* BUG FIX: Fixed issue where "Visits, Views, and Logins" report may not show up on some setups.
* BUG FIX: Fixed issue where invoice emails were not sending due to issues with the pmpro_get_order_json() function.
* BUG FIX: Fix for fatal error on site health check page if login/password is required for ftp account. #2374 (Thanks, @freax on GitHub)
* REFACTOR: Deprecating CyberSource and PayPal Website Payments Pro gateways.
* REFACTOR: Marking "trial ending" cron as deprecated.
* REFACTOR: Removed the ability to direct access the scripts in the /crons/ and /services/ directories. Only the getfile.php script can be accessed this way when activated.
= 2.9.12 - 2023-02-16 =
* SECURITY: Updated sanitization, escaping, and other security-related code across the plugin.
= 2.9.11 - 2023-01-27
* BUG FIX: Fixed issue introduced in 2.9.9 where recurring_payment IPN transactions in PayPal were not being processed yet. If you have recurring subscription with PayPal Standard or PayPal Express, you will need to resend those transactions to make sure completed (and in some cases failed) recurring orders were processed on your site. More information here: https://www.paidmembershipspro.com/pmpro-update-2-9-11/
= 2.9.10 - 2023-01-25 =
* ENHANCEMENT: Much nicer thumbnail for one of our add ons. #2338 (@kimcoleman)
* ENHANCEMENT: Adding some other missing add on thumbnails. #2339 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Updated the orders and discount code tables in the dashboard to display better on small screens. #2334 (@kimcoleman)
* BUG FIX: Fixed issue with some widgets, e.g. the login widget, introduced in 2.9.9. #2335 (@jarrydlong)
* BUG FIX: Fixed issue where Invoice Emails would fail to send from the orders page of the dashboard. #2340 (@ideadude)
= 2.9.9 - 2023-01-18 =
* SECURITY: Updated sanitization, escaping, and other security-related code across the plugin.
* ENHANCEMENT: When using expirations on levels, the default date is now +1 year again. #2328 (@dparker1005)
* ENHANCEMENT: Now showing option labels instead of values when displaying multiselect type fields using the pmpro_member shortcode. #2327 #2314 (@dparker1005, @ideadude)
* ENHANCEMENT: Updated the user fields UI to say "Required at Checkout?", which more accurately describes the behavior. Note: we don't require these fields on profile updates because it can interfere with core user updates and other plugins. #2320 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Fixed warning in cases where users were deleted or otherwise not found when processing Stripe webhooks. #2331 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed some issues in notifications and messages related to previous escaping updates. #2321 (@dparker1005)
* BUG FIX/ENHANCEMENT: The pmpro_checkout_box-{groupname} class given to divs on the frontend user profile is now sanitized to avoid spaces and special characters there. #2319 (@kimcoleman)
* BUG FIX: Fixed issues with CSV exports when filtered within a date range. #2315 (@jarrydlong)
= 2.9.8 - 2022-12-27 =
* SECURITY: Updated many queries to use $wpdb->prepare and esc_sql for better security. In almost all of these cases, the variables uses in the queries were escaped earlier or otherwise trusted, but it's good practice to escape in the query anyway to be extra safe and avoid issues when code is updated in the future. #2312 (@andrewlimaza, @ideadude)
* ENHANCEMENT: Removed duplicate "display_name" definition in the PMPro Email class. #2297 (@mircobabini)
* ENHANCEMENT: Fixed PMPRO_MIN_PHP_VERSION constant name in a few places. #2298 (@mircobabini)
* ENHANCEMENT: Including the PMPro Akismet and MailPoet icons for use on the Add Ons page. #2307 #2309 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Fixed some notices in the Authorize.net Gateway class. #2295 (@mircobabini)
* BUG FIX/ENHANCEMENT: Fixed HTML in the nl_NL email templates. #2300 (@mircobabini)
* BUG FIX/ENHANCEMENT: Added the !!membership_level_confirmation_message!! var to admin checkout emails. #2305 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed typo "could" in error message shown when an Add On cannot be installed. #2313 (@kimcoleman)
= 2.9.7 - 2022-11-30 =
* BUG FIX/ENHANCEMENT: Added compatibility for the Avada theme. Protected content is now editable. #2285 (@andrewlimaza)
* BUG FIX: Avoiding sprintf issues during cron runs. This caused issues where the expiring soon emails were being sent out multiple times. #2290 (@dparker1005)
* BUG FIX: Adding id parameters to billing address fields to avoid Stripe errors when checking out with the show address fields option set to true. #2284 (@ipokkel)
* BUG FIX: Adding id parameters to billing address fields to avoid Stripe errors when updating billing with the show address fields option set to true. #2289 (@dparker1005)
* BUG FIX: Fixed issue with subscription profile start dates when using Authorize.net and custom code that alters start dates. #2280 (@dparker1005)
* BUG FIX: Fixed warning that happened with some MySQL versions when setting a user's expiration to 'No' from the edit user page. #2291 (@andrewlimaza)
= 2.9.6 - 2022-11-14 =
ENHANCEMENT: Added content restriction settings to Elementor "containers". #2254 (Thanks, @Minebomber)
ENHANCEMENT: Added !!levels_url!! to all email templates by default. #2263 (@andrewlimaza)
ENHANCEMENT: Added docblocks to all methods of the PMProEmail class. #2263 (@andrewlimaza)
ENHANCEMENT: Now allowing strong, code, em, br, p, and a tags in field descriptions. #2246 (@andrewlimaza)
BUG FIX/ENHANCEMENT: Fixed message show when editing an existing level. #2245 (@mircobabini)
BUG FIX/ENHANCEMENT: Fixed issue where the billing address wasn't being sent to Stripe if it was added to checkout via an add on or other custom code. #2271 (@dparker1005)
BUG FIX/ENHANCEMENT: Fixed the $user_id parameter passed to the pmpro_discount_code_used action hook in the Stripe Webhook handler. #2273 (@mircobabini)
BUG FIX/ENHANCEMENT: The required field asterisk now appears correctly if a hint is used on a textarea, select, or other user field. #2274 (@ideadude)
BUG FIX/ENHANCEMENT: Avoiding fatal errors that occurred when trying to use Stripe Connect in countries that don't allow an application fee. The fee is set to 0% for these users/countries. #2228 (@dparker1005)
BUG FIX/ENHANCEMENT: Fixed CSS in the CVV/CVV popup window. #2224 (@dparker1005)
BUG FIX/ENHANCEMENT: Now pulling the billing address from the Stripe Customer record or a previous order if the billing address isn't available in the Payment Method object passed to webhook calls. #2272 (@dparker1005)
BUG FIX/ENHANCEMENT: Fixed CSS for the new level popup to no longer rely on selectors that broke when certain translations were used in the WP dashboard. #2276 (@kimcoleman)
BUG FIX/ENHANCEMENT: Fixed trial wording for custom trials where the initial payment was > $0. #2277 (@andrewlimaza)
BUG FIX: Fixed bug where file type fields weren't uploaded or saved properly when using Stripe Checkout. #2251 (@dparker1005)
BUG FIX: Fixed an issue where the dropdown "What should users without access see?" for the Require Membership Block would reset on each page load. #2243 (@andrewlimaza)
BUG FIX: Fixed issue where user fields were not showing on the profile sometimes when they should have been. #2270 (@dparker1005)
BUG FIX: Fixed the $MemberOrder->get_orders method query so it works when a 'membership_level_id' arg is passed in. #2251 (@dparker1005)
BUG FIX: Fixed issue where the billing zipcode was not pulled from user meta correctly when using the $MemberOrder->find_billing_address() method. #2275 (@mircobabini)
= 2.9.5 - 2022-09-17 =
* ENHANCEMENT: Added Select2/Autocomplete as a field type in the user field settings. #2237 (@kimcoleman)
* ENHANCEMENT: Improving our in-app notification styling. #2234 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Now skipping Secure Customer Authentication (SCA) for Stripe subscriptions at checkout with a $0 initial payment. This fixes issues where SCA failure would orphan active subscriptions. Recurring payments are working fine without this additional check.
* BUG FIX/ENHANCEMENT: Improved CSS for frontend form fields.
* BUG FIX/ENHANCEMENT: Fixed placement of required field asterisks for certain field types. #2231 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Fixed display of the CVV popup. #2224 (@dparker1005)
* BUG FIX: Fixed application fee issue that happened when users in some countries tried to use Stripe Connect. #2228 (@dparker1005)
* BUG FIX: Fixed case where user fields wouldn't show for users if earlier fields/groups were only for admins. #2233 (@kimcoleman)
* BUG FIX: Fixed fatal error for older versions of WordPress missing the wp_get_environment_type() function. #2236 (@mircobabini)
* BUG FIX: Fixed issue where PMPro memberships were sometimes not cancelled when a subscription was cancelled in Stripe. #2217 (@dparker1005)
* BUG FIX: Fixed fatal error that was preventing the weekly (opt in) data tracking from running. #2242 (@ideadude)
= 2.9.4 - 2022-08-30 =
* BUG FIX/ENHANCEMENT: Added MMPU compatibility for some crons. #2211 (@dparker1005)
* BUG FIX/ENHANCEMENT: The default "More Information" group name/label is now translatable. #2214 (@mircobabini)
* BUG FIX/ENHANCEMENT: Added JavaScript code to prevent duplicate clicking of the cancel button. #2216 (@mircobabini)
* BUG FIX/ENHANCEMENT: Fixed PHP notice on the update billing page. #2219 (@mircobabini)
* BUG FIX/ENHANCEMENT: Avoiding line breaks in very long labels for checkbox fields. #2221 (@mircobabini)
* BUG FIX: Fixed issue with processing customer.subscription.deleted webhook events from Stripe with newer versions of PHP. #2217 (@dparker1005)
= 2.9.3 - 2022-08-25 =
* ENHANCEMENT: Added pmpro_add_user_field_where( $where, $field ) and pmpro_add_user_field( $field, $where ) filters.
* BUG FIX/ENHANCEMENT: Added MMPU support for some emails so correct level information is shown. #2200 (@dparker1005)
* BUG FIX/ENHANCEMENT: The pmpro_checkout_box-{groupname} id given to checkout box divs is now sanitized to avoid spaces and special characters there. #2209 (@dparker1005)
* BUG FIX/ENHANCEMENT: Trimming underscores off the front/back of suggested group names in the user field settings. #2209 (@dparker1005)
* BUG FIX: Fixed issues with fields showing in some checkout checkbox/group locations. #2204 #2205 (@ipokkel)
* BUG FIX: Fixed issue where discount code uses weren't being tracked when using the Stripe Checkout beta. #2196 (@dparker1005)
= 2.9.2 - 2022-08-10 =
* BUG FIX/ENHANCEMENT: Now correctly deprecating the pmprorh_section_header() function. We accidentally had it reversed and throwing a warning when using the new pmpro_default_field_group_label() function. (@kimcoleman)
* BUG FIX/ENHANCEMENT: When saving user fields, now making sure that the group name is not blank and unique. Blank or duplicate group names could cause other issues, e.g. with required fields or fields being shown multiple times at checkout. #2187 (@ideadude)
* BUG FIX/ENHANCEMENT: Fixed issue where the sales report widget cache was not being updated when new orders came in.
* BUG FIX/ENHANCEMENT: Better error handling in the PayPal IPN handler. #2194 (@mircobabini)
* BUG FIX: Fixed issue where user fields set as "required" weren't being styled as required on the checkout page. #2180 (@ipokkel)
* BUG FIX: Now showing the new level templates even if you click on the link in the dashboard or on a fresh install's levels page. #2181 (@kimwhite)
* BUG FIX: Fixed issues where pmprorh_sanitize was being called instead of the new pmpro_sanitize, causing issues with date fields and others at checkout. #2182
= 2.9.1 - 2022-07-28 =
* ENHANCEMENT: Enhanced doc blocks for some functions in includes/functions.php.
* BUG FIX/ENHANCEMENT: Fixed localization of a few strings.
* BUG FIX/ENHANCEMENT: Added unset magic method to the MemberOrder class to avoid warnings, e.g. in the REST API endpoints, which remove some data from orders before output. #2177 (@dparker1005)
* BUG FIX/ENHANCEMENT: Removed unused local variable name_parts. #2170 (@mircobabini)
* BUG FIX/ENHANCEMENT: Fixed CSS/UI issues in the mobile view of some dashboard pages. #2174 #2175 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Now filtering the confirmation URL when using Stripe Checkout. #2178 (@dparker1005)
* BUG FIX/ENHANCEMENT: Removed some trailing commas that were throwing errors for some users on old versions of PHP. (@ideadude, @andrewlimaza)
* BUG FIX/ENHANCEMENT: User fields added through settings are now included in the members list CSV export by default as intended.
* BUG FIX: Fixed fatal error when reactivating the Register Helper plugin. #2173 (@ideadude, @JarrydLong)
* BUG FIX: Fixed issue with saving group levels when you have more than one group.
= 2.9 - 2022-07-18 =
* FEATURE: Added a "User Fields" tab to the settings page. You can now add "Register Helper" style fields through the WP admin dashboard without code. (@ideadude, @kimcoleman, @dparker1005)
* FEATURE: The "Add Ons" tab has a new look, with better browsing and searching. (@kimcoleman)
* FEATURE: Added support for level templates to more easily allow admins to create popular types of levels. (@kimcoleman)
* FEATURE: Added a CSV export option to the built-in reports. (@andrewlimaza, @JarryLong)
* ENHANCEMENT: Redesigned the Add/Edit Membership Level screen to focus on the applicable settings for the type of level. (@kimcoleman)
* ENHANCEMENT: Testing PHP sessions in site health now. (@JarrydLong)
* ENHANCEMENT: Fixed doc block for the pmpro_getLevel() function. (@eighty20results)
* ENHANCEMENT: Showing a notice on the PMPro settings pages if the next update for PMPro has an "update notice" section in the readme for that version. (@dparker1005)
* ENHANCEMENT: Removed the odd line break from the "Powered by Paid Memberships Pro" HTML comment. (@mircobabini)
* ENHANCEMENT: Added filter pmpro_membershiplevels_page_action_links to add/modify buttons on the Settings > Membership Levels admin page. (@kimcoleman)
* ENHANCEMENT: Added pmpro_unhandled_webhook action that is thrown when a webhook or IPN handler encounters a webhook that isn't processed by PMPro. You can use this hook to log these cases for debugging purposes. (@mircobabini)
* ENHANCEMENT: Disabled the credit card options for the Stripe gateway. Instead, it now says "We accept all major credit cards". (@mircobabini)
* ENHANCEMENT: Added a pmpro_order_status_{status} hook that is fired whenever an order's status changes. Passes the $status, $order, and $original_status as params. (@JarryLong)
* BUG FIX/ENHANCEMENT: Added the pmpro_calculate_profile_start_date() function, which is used in all built-in gateways now. This fixes some issues with inconsistencies for subscriptions with multiple month billing periods. (@dparker1005, @messica)
* BUG FIX/ENHANCEMENT: Now handling the subscr_failed IPN message for PayPal. This message is now sent sometimes instead of the "recurring_payment_skipped" one. (@andrewlimaza)
* BUG FIX/ENHANCEMENT: The PayPal IPN handler is now treating "Voided", "Denied", and "Expired" payment statuses similar to "Failed". (@JarrydLong)
* BUG FIX/ENHANCEMENT: Now requiring a name when adding/editing a level. (@JarrydLong)
* BUG FIX/ENHANCEMENT: Updates to the level save logic to avoid some edge case issues. (@ideadude)
* BUG FIX/ENHANCEMENT: Removed some trailing commas in arrays that were breaking PHP 5.6 users. (@mircobabini)
* BUG FIX: Fixed "No such product" bug that happened sometimes when checking out with Stripe. We catch this now and create the products when they are missing. (@dparker1005)
* REFACTOR: Removed update notice RE Better Login Reports being merged into core PMPro (which happened a few years ago). Now using the general deprecation notices RE old add ons. (@JarrydLong)
* REFACTOR: Refactored the MemberOrder class a bit to avoid PHP 8+ warnings. (@JarrydLong)
= 2.8.3 - 2022-05-23 =
* BUG FIX/ENHANCEMENT: Avoiding multiple DB queries related to license key checks when no license key is enabled.
* BUG FIX: Fixed issue where some PayPal subscriptions had an extra 1 year trial when set up.
* BUG FIX: Avoiding warnings about application fees when using Stripe legacy keys.
* REFACTOR: Refactored recent updates to the Divi compatibility code to avoid issues for users who might be running a similar gist.
= 2.8.2 - 2022-05-20 =
* ENHANCEMENT: Now noting the chosen PMPro login page on the pages table in the dashboard. #2073 (@mircobabini)
* ENHANCEMENT: Improved help text on the payment settings page when using Stripe legacy keys. Reminder to disconnect from Stripe if also using legacy keys. #2078 (@dparker1005)
* BUG FIX/ENHANCEMENT: Fixed redirect issues that happened if the login page was trashed. #2077 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Tweaked display of long numbers in the sales report widget. #2071 (@mircobabini)
* BUG FIX/ENHANCEMENT: Renamed the hideads field on the advanced settings page so adblockers don't block it. #2072 (@mircobabini)
* BUG FIX/ENHANCEMENT: Fixed responsive display of various admin pages when viewed on smaller screens. #2079 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Fixed tracking of hideads feature via Wisdom. #2081 (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Adding HTML to our no_access messages when using Divi to avoid display issues. #2080 (@kimcoleman)
* BUG FIX/ENHANCEMENT: Fixed a warning on memberships report when using MMPU. #2104 (@mircobabini)
* BUG FIX: Moved call to pmpro_doing_webhook in the Stripe webhook handler to make sure Stripe libraries are already loaded. #2101 (@mircobabini)
* BUG FIX/ENHANCEMENT: Avoiding duplicate DB calls when pmpro_license_isValid() is called with no key. This was happening on the plugins, update, and add ons pages in the dashboard. (@ideadude)
* BUG FIX: Fixed issues where payment failed events were not being processed correctly in the Stripe webhook handler. #2100 (@andrewlimaza, @dparker1005, @ideadude)
* BUG FIX: Fixed issue where recurring orders were not saving if a payment method could not be found. #2099 #2105 #2104 (@dparker1005, @ideadude)
* BUG FIX: Fixed error on the orders page happening in some versions of PHP. #2075 (@mircobabini)
= 2.8.1 - 2022-05-10 =
* BUG FIX/ENHANCEMENT: Fixed typos in some block descriptions. #2064 (@mircobabini)
* BUG FIX: Fixed issue where the digest email cron and some others were running more often than intended. #2070 (@mircobabini)
= 2.8 - 2022-05-05 =
* FEATURE: Added refunds buttons for Stripe and Paypal Express orders. #1948 (@JarrydLong)
* FEATURE: Released Beta version of Stripe Checkout. Add `define('PMPRO_STRIPE_CHECKOUT_BETA_ENABLED', true);` to your wp-config.php to enable this gateway during the beta. #1923 (@dparker1005)
* ENHANCEMENT: Introduced a new set of functions that handle cron-related tasks including: `pmpro_get_crons()` to get the list of PMPro registered crons. #1999 (@sc0ttkclark)
* ENHANCEMENT: New filter `pmpro_registered_crons` which you can register new crons to be handled by PMPro. They show up in the PMPro Site Health info and are automatically scheduled when they need to be. #1999 (@sc0ttkclark)
* ENHANCEMENT: Added an opt-in stats collection so we can get better insight on how people use Paid Memberships Pro. (@sc0ttkclark, @ideadude)
* ENHANCEMENT: Added Formal German translation files. #1926
* ENHANCEMENT: Tracking library conflicts in Site Health, e.g. when other plugins are loading gateway libraries at the same time as PMPro. (@dparker1005)
* ENHANCEMENT: UI/UX improvements to the Orders admin area for list and single edit view. #2017 (@kimcoleman)
* ENHANCEMENT: Improved the UI for email template variables reference on the Settings > Email Templates admin page. #2018 (@kimcoleman)
* ENHANCEMENT: Various other UI improvements to the admin area. #2019 (@kimcoleman)
* ENHANCEMENT: Improved block names, descriptions, keywords, and organization for discover and usability. #2011 (@kimcoleman)
* ENHANCEMENT: Added "show_noaccess" as a setting on the Membership Required block for swapping in the appropriate content message. #2011 (@kimcoleman)
* ENHANCEMENT: Added filter 'pmpro_braintree_transaction_sale_array' to allow adding or adjusting of the sale transaction method. #2006 (@andrewlimaza)
* ENHANCEMENT: Moved the TOS input inside the label to support multiline i18n. #2002 (#mircobabini)
* ENHANCEMENT: Added new action `pmpro_checkout_after_tos` to output content after the TOS. #2003 (@mircobabini)
* ENHANCEMENT: Added filters to change gateway ipn/webhook logfile. #1996 (@mircobabini)
* ENHANCEMENT: Added filter to perform actions during PPHttpPost() method of the PayPal gateways. #1992 (@mircobabini)
* ENHANCEMENT: Added untranslated gateway identifiers to Site Health info. #1989 (@JarrydLong)
* BUG FIX/ENHANCEMENT: Fixed escaping and localization for many strings across the codebase. #1976 (@mircobabini)
* BUG FIX/ENHANCEMENT: Resolve admin area conflicts with other plugins using similar class names. #1991 (@sc0ttkclark)
* BUG FIX: Crons are now automatically rescheduled if they disappear form the cron schedule. #1999 (@sc0ttkclark, @mircobabini)
* BUG FIX: Resolved problems with PHP float precision and prevent passing along faulty floats to the gateway APIs. #1929 (@sc0ttkclark)
* BUG FIX: Fixed issue where TOS setting was not saving when using the PayFast gateway. #1990 (@andrewlimaza)
* BUG FIX: Fixed issue where the is_renewal() method didn't work during the pmpro_added_order hook. (@andrewlimaza)
= 2.7.5 - 2022-03-01 =
* ENHANCEMENT: Now sending "name" separate from the "description" when creating customers for Stripe checkouts. (@ideadude)
* ENHANCEMENT: You can now search the members list on specific user table columns or user meta fields by using a colon in your search term. These queries are faster than the default queries. The format is meta_key:meta_value (no backticks). You can also use login, nicename, email, url, or display_name as the meta_key and the users table will be searched against the related column. (@ideadude)
* BUG FIX/ENHANCEMENT: Increased search limit to make sure we reuse Stripe "prices" when members check out for recurring plans with Stripe. (@ideadude)
* BUG FIX: Fixed issue where Stripe application fees were still charged for PMPro Standard and PMPro Builder license holders. From now on, payments and subscriptions will not include the fee. (@ideadude)
= 2.7.4 - 2022-02-22 =
* ENHANCEMENT: Adjusting the readme title and description. (@kimcoleman)
* ENHANCEMENT: Improved error handling for Stripe Prices. (@dparker1005)
* ENHANCEMENT: Adjusted the '/change_membership_level' route to support email and create_user parameter to improve our Zapier integration. No parameters are removed, this is to ensure backwards compatibility for any pre-existing applications using this REST route. (@andrewlimaza)
* ENHANCEMENT: Now showing new vs renewal orders on the sales and revenue reports. (@ideadude, @JarrydLong, @kimcoleman)
* ENHANCEMENT: Better tool tips in the sales and revenue reports. (@ideadude, @JarrydLong, @kimcoleman)
* ENHANCEMENT: Now handling recurring_payment_profile_created IPN transactions and updating the payment_transaction_id for new orders made via PayPal. (@mircobabini)
* ENHANCEMENT: Added pmpro_webhook_unhandled action at the end of any webhook handler. (@mircobabini)
* BUG FIX/ENHANCEMENT: Updated logic and text around license keys to account for new premium plans. (@ideadude, @kimcoleman)
* BUG FIX/ENHANCEMENT: Made Terms of Service text a bit darker for accessibility. (@kimcoleman)
* BUG FIX/ENHANCEMENT: Updated queries in includes/cleanup.php to use WPDB delete method for better DB escaping. (@andrewlimaza)
* BUG FIX/ENHANCEMENT: Fixed the text domain for some strings that weren't translatable. (@mircobabini)
* BUG FIX/ENHANCEMENT: Fixed misspelled text domains in the pmpro_reset_password_form() function. (Thanks, @isaiahfb)
* BUG FIX: Fixed issues with the update billing page when using PayPal Websites Payments Pro. (@dparker1005)
* BUG FIX: Fixed issues with Stripe checkouts when users had previous checkouts through a different gateway. (@dparker1005)
* REFACTOR: Removed unused condition in send method of PMProEmail class. (Thanks, @freax)
* BUG FIX: Fixed notice when pmpro_check_plugin_version was called for an invalid plugin file. (@ideadude)
= 2.7.3 - 2022-02-01 =
* ENHANCEMENT: Added CSS to make sure input fields input fields aren't extra tiny/short, e.g. in the Twenty Twenty Two theme. (@kimcoleman)
* BUG FIX: Fixed a fatal error for older PHP sites when visiting the page settings in the admin dashboard. (@andrewlimaza)
* BUG FIX: Fixed issue where license keys were incorrectly flagged as invalid if expiring within 1 month. (@ideadude)
* BUG FIX: Fixed issue where billing addresses were not added to the Stripe customer at checkout. (@dparker1005)
= 2.7.2 - 2022-01-17 =
* BUG FIX/ENHANCEMENT: Improved error messages when creating subscriptions with Stripe. (@dparker1005)
* BUG FIX: Fixed issue where certain Stripe trial periods would be sent to the Stripe subscription as longer than intended. #1912 (@dparker1005)
* BUG FIX: Fixed visual issues with dropdowns in our blocks when using Full Site Editing in WP 5.9+. #1909 (@sc0ttkclark)
= 2.7.1 - 2022-01-13 =
* BUG FIX: Fixed issue on some MySQL setups that would throw an error about the primary key in the pmpro_memberships_pages and pmpro_memberships_categories tables.
= 2.7 - 2022-01-13 =
* FEATURE: Added a "Spam Protection" option to the advanced settings page. When used, IP addresses are blocked from checkout if there are more than 10 failsures within 15 minutes. (@ideadude)
* ENHANCEMENT: Checkouts with Stripe will now reuse Stripe Products and Prices. (@dparker1005)
* ENHANCEMENT: User profile now links to Stripe customer so that subscriptions can easily be directly updated in Stripe rather than through Subscriptions Updates which is now deprecated. (@dparker1005)
* ENHANCEMENT: Improved usability of the Require Membership metabox for sites with a large number of levels. #1885 #1692 (@kimcoleman)
* ENHANCEMENT: Include reCAPTCHA on Billing Page form. #1884 (@ideadude)
* ENHANCEMENT: Membership pages URLs are now included in the Site Health Information. (@JarrydLong)
* BUG FIX/ENHANCEMENT: Set the default for the `pmpro_send_200_http_response` filter to `false` instead of `true` to reduce impact of the functionality on sites that don't need it. #1868 (@dparker1005)
* BUG FIX/ENHANCEMENT: Consolidated the "Free memberships only" option into the "All memberships" option for enabling reCAPTCHA to ensure that paid memberships with discounts that make the membership $0 cost show reCAPTCHA consistently. #1878 #1840 (@JarrydLong)
* BUG FIX: Resolved PHP 8 fatal error with Authorize.net Silent Post handling. #1899 (@ZebulanStanphill)
* BUG FIX: The new filter `pmpro_admin_pagesetting_post_type` replaces the now deprecated filter `pmpro_admin_pagesetting_post_type_array` to allows setting one specific post type instead of always getting the first from an array. #1866 #1865 (@ipokkel)
* BUG FIX: Resolved issue where users may not be linked to their Stripe customer. (@dparker1005)
* BUG FIX: Now including all levels (public and hidden) in the Paid Memberships Pro section of Site Health information. #1898 (@kimcoleman)
* BUG FIX: Set cancelled/error status from PayPal Express IPN even when an order has no user. #1897 (@mircobabini)
* BUG FIX: Ensure styles are removed from excerpts generated for protected content. #1894 (@sc0ttkclark)
* BUG FIX: Various text adjustments for readability. #1892 (@kimcoleman)
* BUG FIX: Set primary key for `wp_pmpro_memberships_categories` and `wp_pmpro_memberships_pages` tables. #1891 (@ideadude)
* BUG FIX: Fixes around the `pmpro_manage_memberslist_columns` filter to accommodate sites that aren't in English. #1879 #1876 (@JarrydLong)
* BUG FIX: Use the correct cancel method when cancelling an order through PayPal Standard IPN requests. Fixes compatibility with PMPro Cancel on Next Payment Date add on. #1882 (@mircobabini)
* BUG FIX: Discount code expiration date is now properly being used in the REST API. #1877 (@JarrydLong)
* BUG FIX: Remove the `SHIPTOPHONENUM` parameter sent to PayPal Website Payments API and encode all parameters passed into API updates. #1883 (@dparker1005)
* BUG FIX: Resolve timezone issue with Stripe subscriptions to resolve problems where trials would receive an extra day depending on the time of checkout. #1874 (@dparker1005)
* BUG FIX: Now using a single product per level and a single Stripe price per payment amount to prevent duplicate products and prices. #1824 (@dparker1005)
* REFACTOR: Organized and simplified Stripe gateway class. (@dparker1005)
= 2.6.7 - 2022-01-06 =
* SECURITY: Updated escaping in the pmpro_getLevelAtCheckout and pmpro_checkDiscountCode functions as extra precaution against SQL injections. (Thanks, WPScan)
= 2.6.6 - 2021-11-18 =
* SECURITY: Updated escaping on the discount codes page in the dashboard to prevent XSS attacks. #1867 (Thanks, Erwan from WPScan)
* BUG FIX/ENHANCEMENT: Added code to remove duplicate active rows in the pmpro_memberships_users table after level change. This might have happened e.g. if users were purchasing a level via the WooCommerce Add On multiple times. #1860 (@dparker1005)
* BUG FIX/ENHANCEMENT: Improved the REST API endpoints to better support Zapier native requirements. #1862 (@andrewlimaza)
* BUG FIX: Fixed PHP notices in the name parser library. #1861 (@sc0ttkclark)
= 2.6.5 - 2021-11-12 =
* ENHANCEMENT: Introduced new action `pmpro_before_commit_express_checkout` to allow additional changes after an order has been saved but before sending customer to PayPal Express checkout. #1852 (@mircobabini)
* BUG FIX/ENHANCEMENT: Added login compatibility for Jetpack WordPress.com SSO when using the PMPro login page. #1848 (@sc0ttkclark)
* BUG FIX: Fixed PHP notices from status headers when server protocol information is unavailable. #1849 (@dparker1005)
* BUG FIX: Fixed metadata compatibility for membership levels and orders when calling `get_pmpro_membership_level_meta()` and `get_pmpro_membership_order_meta()` so they support getting all meta values for all keys. #1853 (@mircobabini)
* BUG FIX: Escape all Webhook communication debug output coming from gateways. #1855 (@ideadude, Victor Garcia)
= 2.6.4 - 2021-11-02 =
* ENHANCEMENT: Now including some information from the htaccess file in Site Health, including whether a getfile.php script is defined or if caching is being used. (@sc0ttkclark)
* ENHANCEMENT: Now including some of the PMPro-related PHP constants in the Site Health. (@sc0ttkclark)
* ENHANCEMENT: Now including the minimum PHP version (5.6 currently) in the readme.txt so it's shared on the WordPress.org page. (@sc0ttkclark)
* ENHANCEMENT: Added scrollable classes to the member history shown on user profile edit page in the dashboard. (@kimcoleman)
* BUG FIX/ENHANCEMENT: Now sending a 200 OK status message early when the Stripe webhook is running to avoid timeout issues. We may use this new pmpro_send_200_http_response in the other webhook/IPN handlers later on. (@dparker1005)
* BUG FIX/EHNANCEMENT: Removed the "fee" info from the edit user page. This was often misleading. The fee is still shown on the members list and frontend account page. Future updates will include work to make sure the fee is more accurate in cases where subscriptions or levels are being changed by admins after checkout. (@ideadude)
* BUG FIX/ENHANCEMENT: Once again enqueuing the admin.css file on all WP admin pages. This fixes issues where styles weren't being applied to the edit user/profile page in the dashboard. (@ideadude)
* BUG FIX/ENHANCEMENT: Removed the "Member Value Report". We didn't intend to move this over from the old Member History add on. The report was inaccurate and had optimization issues. (@kimcoleman)
* BUG FIX/ENHANCEMENT: Added login compatibility for wordpress.com hosted sites. This fixes some issues with wordpress.com's SSO when using the PMPro login page. (@sc0ttkclark)
* BUG FIX: Fixed issue introduced in 2.6.3 where memberships were not being cancelled when cancelled at PayPal. (@mircobabini)
* BUG FIX: Now including time when calculating profile start date. In the past, we would set it to 00:00:00 which could add or remove a few hours from the subscription. (@dparker1005)
* BUG FIX: Fixed issue where enddates were incorrectly set sometimes when expiration period was "Hour". (@kimwhite)
= 2.6.3 - 2021-10-11 =
* ENHANCEMENT: Now passing "app" information to Stripe through API calls. (@dparker1005)
* ENHANCEMENT: Updated PayPal IPN to detect messages for refunds to at least log it. (@mircobabini)
* ENHANCEMENT: Updated PayPal IPN to differentiate between cases where the initial payment failed vs a subscription was cancelled. (@mircobabini)
* ENHANCEMENT: Better styling of the membership levels history when empty. (@mircobabini)
* BUG FIX/ENHANCEMENT: Now showing better error messages when license key checks fail due to connection issues. (@ideadude)
* BUG FIX: Improved PayPal API integration to handle cases where PayPal is returning encoding errors but still processing payments and subscriptions. (@mircobabini)
* BUG FIX: Fixed issue where the Stripe sandbox key wasn't saved properly when using Stripe connect. (@dparker1005)
* BUG FIX: Fixed issue where a double $$ was showing up in specific emails. (@andrewlimaza)
* BUG FIX: Fixed warnings in various webhook and IPN handlers. (@ideadude)
* BUG FIX: Fixed warning in the admin activity email cron job. (@andrewlimaza)
= 2.6.2 - 2021-09-17 =
* ENHANCEMENT: Made username the first column in the members list. This helps with the mobile view. #1764 (@dparker1005)
* BUG FIX/ENHANCEMENT: Will now block uninstall.php from running if an older version of PMPro is deleted from the plugins page. #1773 (@mircobabini)
* BUG FIX/ENAHCEMENT: Expanded the allowed HTML for pmpro_kses to support email templates and added a pmpro_kses filter. #1770 (@sc0ttkclark)
* BUG FIX/ENHANCEMENT: Updated the CSS for "clickable" labels in checkbox lists. #1752 (@kimcoleman)
* BUG FIX: Fixed bug with sending test emails from the email templates page. #1765 (@ideadude)
* BUG FIX: Added the !!membership_level_confirmation_message!! var to the list on the email templates page. #1783 (@kimwhite)
* BUG FIX: Updated the SendWP link per their new dashboard area. #1777 (@kimcoleman)
* BUG FIX: Fixed bug where PMPro-related usermeta was sometimes blanked out if those fields weren't present at checkout, e.g. when a logged in user was checking out. #1762 (@andrewlimaza)
* BUG FIX: Fixed issue where gateway-related notices weren't showing up on the discount codes page. #1757 (@mircobabini)
* BUG FIX: Fixed some design issues with the member history tables. #1753 (@mircobabini)
* BUG FIX: Fixed issues where the option to block subscribers from the dashboard would interfere with other plugins, e.g. the MailPoet plugin. #1749 (@sc0ttkclark)
* BUG FIX: Fixed issues where the RTL stylesheets might not load if your theme overrode frontend.css or admin.css but didn't have the RTL equivalents. (@ideadude, @sc0ttkclark)
= 2.6.1.1 - 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.
= 2.6.1 - 2021-08-24 =
* SECURITY: Added capability checks to further tighten security around email template settings. (@ideadude, @sc0ttkclark)
* SECURITY: Added a pmpro_kses function and using that to sanitize email template bodies and all email bodies before sending. (@ideadude, @sc0ttkclark)
* ENHANCEMENT: Added Email Templates link to PMPro Dashboard for getting started. #1722 (@kimcoleman)
* ENHANCEMENT: All actions in the admin list tables are now filterable for Discount Codes (`pmpro_discountcodes_row_actions`), Membership Levels (`pmpro_membershiplevels_row_actions`), and Orders (`pmpro_orders_user_row_actions`). #1686 (@sc0ttkclark, @mircobabini)
* BUG FIX: Ensure our admin scripts/styles only load on PMPro admin pages. #1724 (@sc0ttkclark)
* BUG FIX: Remove unused code in `pmpro_comments_filter()` that was triggering a PHP warning. #1730 (@freax)
* BUG FIX: Stop turning on autoloading for PMPro options when saving them. #1719 (@freax)
* BUG FIX: Prevent fatal error for PHP 8 in `pmpro_email_templates_email_data()` to strictly check for `WP_User` objects. #1729 (@ZebulanStanphill)
* BUG FIX: Fix problem where `pmpro_round_price()` would not take into account currencies with decimals set to 0. #1732 (@dparker1005, @ipokkel, @sc0ttkclark)
* BUG FIX: Clarify that Stripe Legacy keys remain connected and will continue to work. #1735 (@dparker1005, @sc0ttkclark)
= 2.6 - 2021-08-12 =
* FEATURE: Updated Stripe integration to use Stripe Connect. See [Gateway Fees](https://www.paidmembershipspro.com/gateway/stripe/#tab-fees) for information about transaction fees for Stripe Connect and our platform fee for those without an active Plus/Unlimited license.
* FEATURE: Improved REST API endpoints to support Zapier integration natively.
* FEATURE: You can now set levels to expire after a certain number of hours, and can set users to expire at a specific time down to the minute.
* FEATURE: The Member History Add On has been merged into the core PMPro plugin. A table of the user's membership and order history is shown on the edit user page of the admin dashboard.
* FEATURE: The Email Templates Add On has been merged into the core PMPro plugin. You can edit PMPro-related email templates from the Memberships -> Settings -> Email Templates page in the admin dashboard.
* FEATURE: You can now use PMPro blocks in the new widget area of WP 5.8.
* BUG FIX/ENHANCEMENT: Establishing style for scrollable boxes throughout core plugin.
* BUG FIX/ENHANCEMENT: Using HTTPS to set the pmpro_visit cookie if over HTTPS. (Thanks, freax on GitHub)
* BUG FIX: Fixed fatal error in PHP 8 when deleting a Stripe webhook. (Thanks, Zebulan Stanphill)
* BUG FIX: Fixed warnings shown on the widget page when using WP 5.8+.
= 2.5.10.2 - 2021-08-02 =
* ENHANCEMENT: New scripts to use WP CLI to update pot and po/mo files.
* BUG FIX/ENHANCEMENT: Updated cancellation logic to support upcoming Cancel on Next Payment Date Add On changes.
* BUG FIX/ENHANCEMENT: Making sure to use the correct security setting when calling setcookie from an HTTPS site. (Thanks, freax on GitHub)
* BUG FIX: Now archiving Stripe products after checkout. We create a unique product for each checkout, and these would clutter up the Stripe reports.
* BUG FIX: Fixing data erasure and data export request action for login page.
* BUG FIX: Fixed issue where PMPro settings on Elementor elements could override the "should_render" setting incorrectly. (Thanks, codezz on GitHub)
* BUG FIX: Now catching the case where you try to email an invoice for an order that has no user.
= 2.5.10.1 - 2021-07-05 =
* BUG FIX/ENHANCEMENT: The 'Edit Code: %s' string on the discount codes page is now wrapped for translation.
* BUG FIX: Fixed issue with the getfile.php script introduced in 2.5.10.
= 2.5.10 - 2021-06-25 =
* SECURITY: Fixed XSS vulnerability on the edit order page in the dashboard. (Thanks, Scott Kingsley Clark)
* ENHANCEMENT: Improved escaping and localization for the message returned when clicking to apply discount code.
* ENHANCEMENT: Now hiding gateway setting API keys behind asterisks.
* ENHANCEMENT: Added some extra hooks to the edit membership levels page in the dashboard: pmpro_membership_level_after_billing_details_settings, pmpro_membership_level_after_other_settings, pmpro_membership_level_after_content_settings.
* ENHANCEMENT: Added a pmpro_after_order_settings_table hook to the edit order page in the dashboard.
* BUG FIX/ENHANCEMENT: Now passing a CARDONFILE parameter with PayPal Payflow payment and subscription transactions.
* BUG FIX/ENHANCEMENT: Using the wp.passwordStrength.userInputDisallowedList function from WP 4.5 if available.
* BUG FIX/EHNANCEMENT: Now making sure that the pmpro_update_order and pmpro_updated_order hooks fire whenever an order is updated in the DB.
* BUG FIX: Fixed issue in getfile script where parameters in the URL would cause File not found errors.
* BUG FIX: Fixed how the PayPal IPN handler handles cases where a subscription is set up correctly but the initial payment failed. We now correctly cancel these users and mark their order as error.
* BUG FIX: Improved error handling in the PayPal Express integration, particularly when a subscriptions PROFILESTATUS is missing.
* BUG FIX: User registered date is now shown in local time.
* BUG FIX: Fixed issue where the deprecated pmpro_getClassForField function wasn't returning a value properly. (Thanks, Elena Draculet)
* BUG FIX: Updated the pmpro_sort_levels_by_order function to use level IDs for keys, since some code expects that for level arrays. This matches the behavior we had before introducing this function.
* BUG FIX: Updated the pmpro_changeMembershipLevel function always set the order status to error if that was passed in as the "old level status".
* BUG FIX: Fixed warning in searches/pages when PMPro pages is not set.
* BUG FIX: Fixed warnings being generated when using PHP 8 and Divi
* BUG FIX: Fixed warnings related to PayPal Express session variables.
= 2.5.9.1 - 2021-05-12 =
* BUG FIX/ENHANCEMENT: Updated pmpro_changeMembershipLevel() to return null if the user's level is not changed. For the past 2 versions, we've been returning true in these cases, which caused PMPro to send emails to the admin when the edit use page was saved, even if there was no level change. This change has been backported to versions 2.5.8 and 2.5.9.
= 2.5.9 - 2021-05-05 =
* ENHANCEMENT: Adjusting style for prices and price parts shown on the frontend.
* ENHANCEMENT: Adjusting HTML for links in the Orders table in the dashboard.
* BUG FIX: Reverted the change to the pmpro_is_checkout() function. Since we default to the first available level, calling pmpro_getLevelForCheckout() was causing pmpro_is_checkout to return true on ALL pages. This disrupted a lot of functionality.
* BUG FIX: Fixed warnings in the pmpro_getLevelAtCheckout() function.
* BUG FIX: Fixed issue where "All Time Sales" was showing up as 0, even when there were sales.
= 2.5.8 - 2021-04-30 =
* ENHANCEMENT: Added `pmpro_membership_content_filter` filter to let other plugins change how PMPro filters member content.
* ENHANCEMENT: Improved de_DE email template translation. (Thanks, biker238 on GitHub)
* ENHANCEMENT: Added `pmpro_change_level` filter.
* ENHANCEMENT: Improved display of prices on invoices and added pmpro_display_price_parts function and filters so plugins like the upcoming AvaTax add on can add subtotals to the price displays.
* ENHANCEMENT: Added a pmpro_after_all_membesrhip_level_changes hook that fires at the end of the page load and can be used to process all membership changes in bulk.
* ENHANCEMENT: The "User" column on the orders page now shows the username and email.
* ENHANCEMENT: Added a pmpro_stripe_create_subscription_array filter. (Thanks, ermGit on GitHub)
* BUG FIX/ENHANCEMENT: pmpro_change_level returns true now if the function is called to change a user’s level to one they already have.
* BUG FIX/ENHANCEMENT: No longer calling $order->updateTimestamp() on orders adminpage.
* BUG FIX/ENHANCEMENT: Updated conditional to check ‘street’ instead of ‘name’ when displaying billing address on Invoice/Confirmation.
* BUG FIX/ENHANCEMENT: Improved localization and added missing strings to translation.
* BUG FIX/ENHANCEMENT: Updated to use `get_user_locale1 to load localization.
* BUG FIX/ENHANCEMENT: Now Preserving existing values for `post__not_in` and `category__not_in` when filtering search and archive queries.
* BUG FIX/ENHANCEMENT: Fixed sorting of the Membership Level column on the Users List table in the WP admin dashboard.
* BUG FIX/ENHANCEMENT: Added a pmpro_sort_levels_by_order function and using it in various places to make sure levels are listed in the order they are in on the PMPro settings page.
* BUG FIX/ENHANCEMENT: Added an extra check in the pmpro_is_checkout function that helps with issues that were coming up in some add ons.
* BUG FIX/ENHANCEMENT: The level cache now takes into account the $include_active parameter.
* BUG FIX/ENHANCEMENT: The CSS class is now properly added to the body tag when a PMPro page block is used on a page.
* BUG FIX/EHNANCEMENT: Better timezone handling in sales reports.
* BUG FIX/ENHANCEMENT: Fixed a few places where we might think a free order was paid if using a currency with more or less than 2 decimal places.
* BUG FIX: Fixed deprecated jQuery functions in pmpro-admin.js.
* BUG FIX: Fixed warning for a missing/deleted level in the pmpro_post_classes function.
* BUG FIX: Default `pmpro_longform_address` to true on Billing Information page.
* BUG FIX: Fixed `pmpro_twocheckout_validate` filter.
* BUG FIX: Fixed variables passed to the `pmpro_discount_code_used` filter.
* BUG FIX: CZK currency should have 2 decimals.
* BUG FIX: Avoiding a redirect loop if the login page is deleted. (Thanks, George Stephanis)
* BUG FIX: Fixed the password reset link in new user notification email when not using pretty permalinks.
* BUG FIX: Fixed issues with password reset URLs on multisite networks.
* BUG FIX: Fixed the issue where sales weren't showing up on report charts sometimes on the 31st of the month.
= 2.5.7 - 2021-03-10 =
* ENHANCEMENT: Added a pmpro_checkout_message filter that can be used to filter error messages shown at checkout.
* BUG FIX/ENHANCEMENT: Now making sure some billing address fields are available for the billing failure emails sent during the PayPal IPN handler.
* BUG FIX/ENHANCEMENT: Fixed issues where HTML entities were shown in level prices in some places when using certain currencies. All prices are sent through a special pmpro_escape_price function that allows div, span, and sup tags with id and class attributes. Also removed from unneeded small tags and grey coloring of prices in certain spots.
* BUG FIX: Now cancelling membership when a SUBSCRIPTION_CANCELED message is sent to the Braintree webhook handler. In the past, we incorrectly sent the payment failed email instead.
* BUG FIX: Fixed display issues with the Require Membership block. The level select field has been swapped with a list of checkboxes.
* BUG FIX: Fixed warnings that occurred when processing failed payments in webhook and IPN handlers.
* BUG FIX: Fixed our Braintree class so we will only attempt to update a user's credit card and address when the getCustomer method is called at checkout or during a billing update.
* BUG FIX: Fixed issue where refreshing the checkout review page when using PayPal Express caused the associated order to be updated again. Now the order status is updated to review and only updates again when the user confirms.
* BUG FIX: Avoiding warnings when the pmpro_url function is used if the PMPro pages haven't been set up yet. (Thanks, Thomas Sjolshagen)
* REFACTOR: Updated the pmpro_getSpecificMembershipLevelForUser( $user_id, $level_id ) function so both fields are required. Will still default to the current user if null is passed for the $user_id.
= 2.5.6 - 2021-03-05 =
* SECURITY: Now sanitizing and escaping the `order` parameter when filtering the users table in the dashboard. (Thanks, Gen Sato)
* BUG FIX/ENHANCEMENT: Now hiding the ApplePay/GooglePay "Payment Request" buttons when the main checkout form is submitted. This helps to prevent double checkouts.
* BUG FIX: Fixed missing membership data in the billing failed email.
= 2.5.5 - 2021-02-22 =
* SECURITY: Better sanitization of parameters on some REST API endpoints.
* SECURITY: Now showing reCAPTCHA field at checkout even for logged in users.
* ENHANCEMENT: Added find_billing_address() method to the MemberOrder class. This will look for the address on the last order with the same sub id or in user meta.
* ENHANCEMENT: Better styling for invoices shown on the frontend.
* ENHANCEMENT: No longer forcing column width % in the members list table.
* ENHANCEMENT: Added a pmpro_doing_webhook action that is fired at the beginning of our webhook/IPN handlers.
* ENHANCEMENT: Added a pmpro_membership_level_after_billing_details_settings hook to the edit membership level page. This hook should now be used to add billing related settings.
* BUG FIX/ENHANCEMENT: Allowing order total to be set to 0, even if there is a subtotal and tax amount.
* BUG FIX/ENHANCEMENT: Stripe checkout fields will now use the language set in the Stripe settings.
* BUG FIX/ENHANCEMENT: The URL check in our notifications code now accepts arrays (e.g. to see if a URL has one of a group of top level domains). This fixes a warning some may have seen in error logs.
* BUG FIX: Fixed issues where totals on PayPal recurring payments were sometimes incorrect if both an mt_gross and amount field were passed via IPN.
= 2.5.4 - 2021-01-28 =
* ENHANCEMENT: Bump license year 2021 - 10 years.
* ENHANCEMENT: Now passing billing street in `pmpro_tax` filter.
* ENHANCEMENT: Prefixed our pmpro_stripeResponseHandler function to avoid conflicts.
* ENHANCEMENT: Added getRealPaymentTransactionId method to PayPal Express gateway class to recover a missing transaction ID.
* ENHANCEMENT: Added `pmpro_checkout_before_form` action to hook anything before the membership checkout form.
* ENHANCEMENT: Added avatar as a valid field type for the [pmpro_member] shortcode.
* ENHANCEMENT: Changed license key field to text type and unmasked. Masking implied the key was hashed before saving which is not true.
* ENHANCEMENT: Added`pmpro_discount_code_used` action hook for when a discount code is used.
* ENHANCEMENT: Stripe will now pull billing address info for recurring orders from webhooks.
* BUG FIX/ENHANCEMENT: Improved user interface, error handling, and messages in the frontend password reset process.
* BUG FIX/ENHANCEMENT: Added a space between state and zip code in billing info.
* BUG FIX/ENHANCEMENT: Now rounding amount sent with Stripe payment request button.
* BUG FIX/ENHANCEMENT: Improved `pmpro_check_plugin_version` function to also check a specific value of the `get_plugin_data` array.
* BUG FIX/ENHANCEMENT: Added `pmpro_membership_levelmeta` and `pmpro_membership_ordermeta` tables to uninstall process.
* BUG FIX/ENHANCEMENT: Escaped things in SQL queries in 2Checkout INS service handler.
* BUG FIX/ENHANCEMENT: Cleaned up levels page template and added MMPU compatibility.
* BUG FIX/ENHANCEMENT: Fixed pagination and export issues with a discount code filter on the Orders admin page.
* BUG FIX/ENHANCEMENT: Prefixed our `pmpro_stripeResponseHandler` function to avoid conflicts with other Stripe code that may not be prefixed.
* BUG FIX/ENHANCEMENT: Cleaned up conditionals and escaping improvements in the `pmpro_redirect_to_logged_in` function.
* BUG FIX/ENHANCEMENT: Fixed deprecation notices for sites running PHP 8.
* BUG FIX/ENHANCEMENT: Improved SQL query format in the applydiscountcode service.
* BUG FIX: Fixed issues with ReCAPTCHA v2 and certain gateways.
* BUG FIX: Fixed bug where blog name was not showing in Admin Activity email.
* BUG FIX: Improved incorrect PHP doc blocks.
* BUG FIX: Fixed an issue on some sites where password reset link in email was incorrect.
* BUG FIX: Fixed level change issues during 2Checkout checkout.
* BUG FIX: Fixed issue where `checkout_levels` REST API endpoint could return the wrong initial payment
* BUG FIX: Fixed undefined notice for timestamp variable in the Stripe gateway class.
* BUG FIX: Avoiding warnings when user ids are in the memberships_users table, but a user doesn't exist.
* BUG FIX: Now setting the correct value for membership_id in the admin change emails.
= 2.5.3 - 2021-01-26 =
* SECURITY: Fixed indirect object reference vulnerability where order information, including customer names, email addresses, and order numbers could be accessed by non-admin WordPress users. (Thanks, WP Plugins Team)
* SECURITY: Now checking ReCAPTCHA validation before enabling the submit button on the checkout form when using ReCAPTCHA v2. This helps to keep bad actors from testing credit cards on your checkout page. We were already doing a similar check when using ReCAPTCHA v3. Further updates to rate limit credit card failures are planned.
= 2.5.2 - 2020-10-23 =
* BUG FIX: Fixed issue where the RECAPTCHA library wasn't being loaded early enough to validate at checkout.
* BUG FIX: Fixed issue where code in the Stripe class was unsetting some required fields, even if Stripe was not being used at checkout.
= 2.5.1 - 2020-10-16 =
* SECURITY: Fixed XSS vulnerability on the Members List page of the dashboard. (Thanks, Ron Masas from Checkmarx.com)
* ENHANCEMENT: Add Ukrainian Hryvnia currency. (Thanks, Mirco Babini)
* ENHANCEMENT: Added a "non-members" option to the Beaver Build module.
* BUG FIX: Fixed issue where only USD and US were allowed with Stripe's GooglePay/ApplePay buttons.
* BUG FIX: Fixed issue where some profile fields, e.g. those added with Register Helper, were accidentally updated or removed when accessing the frontend profile page.
* BUG FIX: Fixed issue with tracking discount code uses when using the 2Checkout gateway. (Thanks, karambk on GitHub)
* BUG FIX: No longer running excerpts through wpautop when a more tag is used.
= 2.5 - 2020-10-02 =
* FEATURE: When using the Stripe Gateway, you may now allow users to pay using Apple Pay, Google Pay, or Microsoft Pay depending on their browser. Enable this feature from the payment settings page.
* FEATURE: Added Divi Builder compatibility.
* FEATURE: Updated the Braintree Gateway class to be able to use the Braintree API for the pmpro_next_payment() function. Note, for performance reasons, you must call this method directly or enable it by hooking it up with code like `add_filter('pmpro_next_payment', array('PMProGateway_braintree', 'pmpro_next_payment'), 10, 3);`
* FEATURE: Added ordermeta tables and functions. We will wait about a year for all users to upgrade before using these widespread. (Thanks, Mirco Babini)
* ENHANCEMENT: The "short" version of the level cost text for a free level is now "Free" instead of "0.00 now".
* ENHANCEMENT: Added a `get_original_subscription_order` method to the MemberOrder class. This will return the first order in a subscription when called from a recurring order.
* ENHANCEMENT: Removed the old style license nags.
* BUG FIX/ENHANCEMENT: Using microtime and a static counter int to make sure our order and discount codes are unique. In the past very high traffic sites could run into duplicates if two checkouts happened at the exact same second.
* BUG FIX/ENHANCEMENT: Adjust order delete prompt to support other locales.
* BUG FIX/ENHANCEMENT: Better handling of tax amounts in recurring payments, e.g. when using the PMPro VAT Tax add on.
* BUG FIX/ENHANCEMENT: Optimized how often we hit the Stripe API when events on the checkout page could potentially update the price of checkout.
* BUG FIX/ENHANCEMENT: The checkout_levels api call now takes `level` as param.
* BUG FIX/ENHANCEMENT: No longer running sanitize_text_field on password fields. This would break passwords that had strings of characters resembling html tags.
* BUG FIX/ENHANCEMENT: Now warning admins if the Stripe billing period is longer than 1 year. Billing periods greater than 1 year are not allowed by Stripe.
* BUG FIX/ENHANCEMENT: Now detecting when a Stripe webhook is set up for an older version of the Stripe API and showing a notice with a link to update.
* BUG FIX/ENHANCEMENT: Adding MAXFAILEDPAYMENTS=1 to PayPal add subscription requests. This tells PayPal to cancel a subscription after the first failed payment. In our experience, the automatic retries rarely worked well. This change fixes issues with subscriptions going out of sync or users retaining access to your site when their payment has failed. Members still receive the payment failed email, which prompts users to return to the site to renew.
* BUG FIX/ENHANCEMENT: Fixing some issues where we are adding extra break tags into the password reset email. There are still some issues like this when using certain plugins. We are working on a general fix.
* BUG FIX/ENHANCEMENT: Removed the "coupon amount" field from the edit order page. These were hold outs from the 2007! ecommerce plugin PMPro was forked from. You can set the pmpro_orders_show_coupon_amounts filter to __return_true to show these fields again if you were using them for tracking things in your custom code.
* BUG FIX: Fixed MMPU compatibility when using discount codes.
* BUG FIX: No longer filtering the wp login url when on wp-login.php. This fixes issues with iThemes Security 2FA.
* BUG FIX: Fixed issues where the Stripe webhook was not being updated sometimes when clicking the button to update.
* BUG FIX: Fixed some notices and warnings when using Braintree.
* BUG FIX: Now resetting memberslist page number when changing shown level.
* BUG FIX: Now ensuring that the discount code field updates, update the Request Button price.
* BUG FIX: Fixed issue where non-pretty permalinks may break frontend password resets.
* BUG FIX: Fixed invoice links on the account page. (Thanks, Mateusz Hołtyn)
* BUG FIX: Fixed incorrect label "for" attribute for uninstall setting.
* BUG FIX: Fixed issue where some free plugins distributed by PMPro would show warnings about requiring a Plus license.
= 2.4.4 - 2020-09-02 =
* BUG FIX: Fixed fatal error that sometimes occurred on the payment settings page when using PHP 5.6 or earlier.
* BUG FIX: Fixed fatal errors that showed up on the frontend invoice page.
* BUG FIX: Fixed issue where the confirmation message was not showing up in the confirmation email if that option was checked.
* ENHANCEMENT: Added a pmpro_stripe_charge_params filter that can be used to edit or add params sent to the Stripe create charge method. (Thanks, Michael Bester)