forked from pronamic/woocommerce-subscriptions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
executable file
·1719 lines (1579 loc) · 189 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
*** WooCommerce Subscriptions Changelog ***
2019.03.20 - version 2.5.3
* New: Update Action Scheduler to version 2.2.1. PR#3266
* Fix: Display the subscription status names (rather than the raw status) in the edit subscription related orders table. PR#3272
* Fix: Use the correct endpoint for redirecting to the only available subscription on My Account. PR#3273
* Fix: [WPML] Keep language request args in Subscription My Account endpoint URLs. PR#3068
* Fix: Save the sale price schedule dates in UTC time (like WooCommerce core). PR#3270
* Fix: Use site time when checking if payment date and trial end date are same. Fixes issues with synced products with a trial. PR#3264
* Fix: Update retry report queries to refer to new retry tables. PR#3237
* Fix: Do not display the PayPal Profile ID on the edit subscription screen when the subscription is Manual Renewal. PR#3259
* Fix: Exclude `pending-cancel` subscriptions from anonymisation. PR#3256
* Fix: Pass the user ID and gateway ID parameters in the right order. Fixes issues with bulk updating customer payment tokens. PR#3258
* Fix: Temporarily lock payment on parent orders paid with PayPal Standard. Prevents customers paying twice while waiting for PayPal to respond. PR#2974
* Fix: Remove HTML from strings passed through translation functions. PR#3067
* Fix: Prevent endpoint settings having the same value. PR#3211
* Fix: Remove `strtolower()` uses on translated text. Prevents lowercasing translated text which may have language specific capitalisation. PR#3251
* Fix: Prevent possible fatal errors while populating the checkout with customer order data. Refactors the wcs_get_objects_property function. PR#3225
* Fix: Removes use of absint for amounts/totals in reports. PR#3242
* Fix: Display correct placeholder values for 'subject' and 'heading' e-mail settings #3246
* Fix: Do not load the view-subscription scripts when subscription can't be viewed or doesn't exist. PR#3235
* Fix: [WC3.6] Use new helper function to generate cart hash. PR#3215
* Tweak: Use 'WC_Order_Item_Product::get_product' wherever possible in 'WC_Subscriptions_Synchroniser'. PR#3230
* Tweak: Clarify the meaning of certain count values in subscription reports tool tips. PR#3143
* Tweak: Fixes various typos. PR#3276
* Dev: Add $cart as a parameter for the woocommerce_cart_subscription_string_details hook. PR#3257
2019.02.21 - version 2.5.2
* Fix: Check if sale price is empty before returning it as the product price. Fixes compat. issues with Dynamic Pricing. PR#3213
* Fix: Copy subscription meta data to early renewal orders. PR#3221
* Fix: Add jquery-blockui as a dependency of the view-subscription JS file. PR#3227
* Fix: Validate the DOM object exists before applying styles. Fixes JS errors on the My Account View Subscription page. PR#3218
* Tweak: Escape line item names via wp_kses_post to allow safe html tags. PR#3224
* Dev: Filter the wcs_cart_totals_shipping_method_price_label function to allow third-parties to alter the free shipping label. PR#3228
* Dev: Add $variation parameter to 'woocommerce_subscriptions_product_needs_one_time_shipping' filter. PR#3197
2019.02.11 - version 2.5.1
* Fix: In report queries use WordPress prefixed table names. PR#3205
* Fix: Fix errors caused by calling WC_Gateway_Paypal::update_option() in early WooCommerce versions. PR#3208
* Tweak: Rename the 'uncancel' admin subscription action to 'reactivate'. PR#3209
* Enhancement: Add downloadable and virtual subscription options to the filter on the products admin page. PR#3199
2019.02.06 - version 2.5.0
* New: Add payment gateway feature support tooltips to the WooCommerce>Setting>Payments screen. PR#3013
* New: Add Subscriptions-related information to the WooCommerce Status Widget. PR#2980
* New: Add option to allow a $0 initial sign-up without payment method. PR#3015
* New: Update Action Scheduler to v2.2.0. PR#3187
* New: Allow customers to update all subscriptions' payment method. PRs#3064,#3080,#3041
* New: Display downloads in separate table on the customer's View Subscription page. PR#3128
* New: Add new option to filter Admin subscriptions table by manual subscriptions. PR#3144
* New: Add auto-renew toggle to Customer's View Subscription page. PR #3156
* New: Add option to disable PayPal Standard for subscription-related purchases. PR#3152
* New: Add change payment method link to the edit subscription screen. PR#3086
* New: Allow store managers and customers to uncancel a subscription while it's still in a pending-cancel status. PR#2993
* Fix: Prevent PHP warning in WC_Subscriptions_Cart::cart_needs_payment(). PR#3142
* Fix: Do not return non-order objects from WC_Subscription::get_related_orders( 'all' ). Prevents errors when the calling function expects an order but got false. PR#3140
* Fix: Don't display the subscriptions My Account menu item when endpoint is empty. PR#3146
* Fix: Fix rounding warnings with PayPal Reference Transactions. PR#3134
* Fix: Remove use of an invalid Exception object type. PR#3148
* Fix: Fallback to previous renewal when parent order is not define for PayPal Standard IPNs. PR#2855
* Fix: Update WC_Subscription::status_transition() method to be inline with WC_Order::status_transition(). PR#2777
* Fix: Skip non-orders objects when generating the related orders table to prevent fatal errors. PR#3161
* Fix: Redirect non-logged in users to login when handling requests to change a payment method. PR#3160
* Fix: Don't apply retry rules to manual renewal payment attempts. PR#3153
* Tweak: Revert subscription customer ID and post_author changes introduced for WC3.5. PR#3159
* Tweak: Update failed scheduled action notice content. PR#3170
* Tweak: Ignore all $0.01 PayPal Standard IPN transactions. PR#3178
* Tweak: Add installed plugin information to the log file during plugin upgrade. PR#3181
* Dev: Add WC_Subscription::get_change_payment_method_url() function. PR#3041
* Dev: Add a filter to allow custom relations to be supported by the related order store. PR#3089
* Dev: Update uses of woocommerce_order_item_meta_end to use add_action, remove_action - not filter APIs. #3163
* Dev: [WC 3.5.4] Subscription order key updates. PR#3171
* Dev: Deprecate WC_Subscriptions_Cart::pre_get_refreshed_fragments. PR#3173
2018.12.21 - version 2.4.7
* Fix: Fix an issue with the release date of 2.4.6.
2018.12.21 - version 2.4.6
* Dev: Add 'woocommerce_subscription_is_manual' filter. PR#3102
* Tweak: Add action attributes to the add to cart form on subscription product pages. PR#3105
* Fix: Remove "Your subscription will be activated when payment clears" on the order received page when the subscription is already active. PR#3099
* Fix: [WP 5.0.2] Fix an issue where the Admin Subscriptions table was empty. PR#3139
2018.11.28 - version 2.4.5
* Fix: Fix caching on data for the Upcoming Recurring Revenue and Subscriptions By Date reports. PR#3069.
* Fix: Fix compatibility with Disable Report Cache Updates mini-plugin. PR#3069.
* Fix: Make Stripe source ID unique while setting through REST API. PR#3090.
* Fix: Display synced variation product's next payment date after the variation is selected by a customer on the product page. PR#3094.
* Fix: Activate subscription after processing an IPN on parent orders previously processed by PDT. PR#3097.
* Tweak: Update incomplete retry migration status label styling and wording to "In-Progress" to avoid confusing in-progress migrations as being a problem. PR#3088
2018.11.20 - version 2.4.4
* Fix: Prevent fatal errors when the retry migration doesn't receive a valid retry object. PR#3042
* Fix: Fix PHP notices in subscription events by date report. PR#3078
* Fix: Don't trigger payment gateways while processing retries on staging sites. PR#2870
* Fix: Apply coupons and discounts to initial payment and early renewal carts. PR#3048
* Fix: Use the correct `for` attribute in the variable_subscription_trial_period label element. PR#3081
* Fix: [PayPal Standard] Prevent creating multiple orders to record a single sign up transaction that was previously handled by a PDT request. PR#3074
* Tweak: Remove the nonce from early renewal urls. PR#3085
2018.11.13 - version 2.4.3
* Fix: Pass the quantity argument to woocommerce_add_cart_item_data filter. PR#3051
* Dev: Update Action Scheduler to 2.1.1. PR#3059
* Dev: Add a new filter (`wcs_remove_fees_from_initial_cart`) which can be used to override the removal of fees from the initial cart. PR#3046
2018.10.29 - version 2.4.2
* Fix: Always get the subscription's customer user from post meta. Fixes issues on sites running WC 3.5 where the subscription customer was incorrectly being set to an admin user. PR#3037
* Fix: Use the current timestamp of site's timezone for comparison during synchronisation first payment date calculations. PR#3003
* Fix: Sort the user subscriptions cache to ensure subscriptions appear in the correct order on the My Account > Subscriptions page. PR#2965
* Fix: Correctly account for tax inclusive sign up fees for synced products. PR#2818
* Fix: Fix PHP 7.1.x warnings related to get_sign_up_fee() and product variations. PR#3014
* Fix: Use the correct breadcrumbs on "change payment method" and "change address" pages. PR#3008
* Fix: Fix product purchasability issues when switching between limited variable products. PR#3007
* Fix: Remove the erasure tools link from the description of the erasure settings for users without the manage_privacy_options capability. PR#3004
* Dev: Add switch proration filters. PR#3011
* Dev: Use admin_created_subscription hook to generate download permissions. PR#3024
* Dev: Deprecated wcs_get_sites_timezone() fixes get_local_timezone() deprecated warnings. PR#3032
2018.10.16 - version 2.4.1
* Fix: Cache the retry data needs migration logic to avoid a get_posts() call on every request. PR#2994
* Fix: Load the retry store instance on WordPress init rather than on Subscriptions plugin load. Fixes errors with third-party plugins hooking into get post queries and calling undeclared WP functions. PR#3000
* Fix: Fix an undefined product ID error which could occur during a switch request when trying to access a product from the old subscription format. PR#2961
* Fix: Fix a missing closing `a` tag in the downgrade notice. PR#3002
* Dev: Add a new hook ('woocommerce_admin_created_subscription') which is triggered after a subscription is created manually via the admin screen. PR#2988
* Dev: Add new hooks to allow third-parties to customize subscription filtering behavior on the admin subscriptions table. PR#2989
2018.10.09 - version 2.4.0
* New: Update Action Scheduler to v2.1.0.
* Fix: Remove the URL scheme when generating the site's duplicate lock URL. Fixes an issue where staging sites with a URL length equal the scheme would incorrectly not trigger staging mode. PR#2599
* Fix: Move callbacks attached specifically for renewal carts to the constructor so that all extended cart classes are not hooked on. PR#2963
* Fix: Allow products which are password protected to be manually renewed via the cart. PR#2912
* Fix: Remove unnecessary leading space in translation string. PR#2976
* Fix: Add group by clause to subscriber count reports query. PR#2970
* Fix: Fix an error which would occur when calling the deprecated get_related_orders_query(). PR#2954
* Tweak: Separate a subscription start from the creation date. PR#2594
* Tweak: Display the expected site URL in staging site notice and system status. PR#2950
* Dev: Implement an Autoloader for loading plugin class files. PR#2412
* Dev: Replace WC_Logger type hinting in function signatures to use lower level WC_Logger_Interface. PR#2902
* Dev: Remove switch_line_items_pre_2_1_2() and switch_shipping_line_items_pre_2_1_2() functions. PR#2900
* Dev: [WC 3.5] Move subscription customer ID's into the post author column on sites running WC 3.5 and above. PR#2559
* Dev: Move payment retry data to custom tables. PR#2753
* Dev: Update file inclusions to use relative paths. PR#2936
* Dev: Add an API for third-parties to register their custom subscription date types. PR#2840
* Dev: Update the hook used for adding Subscriptions Settings. PR#2939
* Dev: Add a 'wcs_payment_gateways_change_payment_method' filter to allow third-parties to filter which payment methods are displayed when changing payment methods. PR#2571
* Dev: Trigger a new 'wcs_before_replace_pay_shortcode' action before displaying the change payment shortcode.
* Dev: Add the 'wcs_update_all_subscriptions_addresses_checked' filter to allow third-parties to filter the default checked status of the all_subscriptions_addresses field. PR#2948
2018.09.25 - version 2.3.7
* Fix: Don't apply subscription payment gateway filters while on the order-pay page. PR#2927
* Fix: Prevent admin users from changing product type when the product has active subscriptions. PR#2932
* Fix: Avoid calculating the initial order carts shipping without an address. PR#2923
* Fix: Remove unnecessary empty() check for PHP < 5.5 compat. PR#2940
* Fix: Reinstate switch orders being returned from WC_Subscription::get_related_orders() when called with the default $order_type param. This returns the behavior of this function to what it was pre v2.3. PR#2946
* Tweak: [WC 3.4] Dont escape the product attribute labels in the add-to-cart/variable-subscription.php template. PR#2914
* Tweak: Add a link to the subscription customer's profile on the admin edit subscription screen. PR#2911
* Tweak: [dev] Update calls of remove_action() and remove_filter() removing the unused 4th parameter. PR#2926
2018.09.10 - version 2.3.6
* New: Include subscription paid and completed UTC dates in REST API subscriptions response. PR#2895
* Fix: When switching during a free trial the days in the new cycle are equal to the days in the old cycle. This returns next payment date calculations to what it was pre 2.3.3. PR#2887
* Fix: Make sure to display the inactive plugin notice on sites running unsupported WC versions. PR#2878
* Fix: Reinstate the _customer_user admin subscriptions table filter by customer $_GET arg. PR#2884
* Tweak: Automatically add download permissions for manually created subscriptions. PR#2836
* Tweak: Modify renewal order staging note to include URLs of the live and staging site. PR#2881
* Tweak: Rename WC_Subscriptions_Change_Payment_Gateway::store_pay_shortcode_mesages(). PR#2899
* Tweak: Set "add to cart" and "place order" button text settings to default if no value is provided. PR#2676
2018.08.27 - version 2.3.5
* Fix: Exclude customers with at least 1 subscription from the WC inactivity user cleanup query. PR#2830
* Fix: Calculate PayPal trial args from the next payment date while resubscribing before the subscription's end date. PR#2828
* Fix: Only display the 2.3 upgrade notice after plugin upgrade, not after install. PR#2869
* Tweak: Add 'woocommerce_subscriptions_can_user_renew_early' filter to allow third-parties to filter renew early eligibility. PR#2859
* Tweak: Include resubscribe data in the subscription REST API response. PR#2863
* Tweak: Improve the performance of some queries by using cached customer subscriptions instead of meta queries. PR#2856
* Tweak: Improve the performance of the query which generates the data for the Subscriptions by Date report. PR#2788
* Tweak: Give customers the option to update their subscription tokens after changing their default method. PR#2819
2018.08.10 - version 2.3.4
* New: Add filter to bypass coupon removal for recurring carts. PR#2832
* Fix: Check if subscription is payable before populating the cart with a renewal order. PR#2838
* Fix: Add a margin to the bottom of subscription information email table to better align with other sections of the email. PR#2853
* Fix: Prevent infinite loops which can occur while trying to repair PayPal Standard subscriptions with `S-****` Profile IDs. PR#2848
* Fix: [WC3.4.4] Check refunded order totals in a WC version compatible way. Fixes an issue where limited coupons weren't removed after reaching their limit. PR#2850
* Tweak: Require payment for recurring carts which contain limited coupons which will expire and then require payment. PR#2850
2018.07.24 - version 2.3.3
* Fix: Prevent infinite loops while generating variable product min and max data. PR#2810
* Fix: Filter renewal order cart shipping packages, removing one time shipping products from shipping calculations. PR#2811
* Fix: Only generate persistent related order and customer subscription caches via the Transients API to avoid the possibility of retrieving out of date data stored in the option. PR#2823
* Fix: Update WC_Subscriptions_Order::maybe_autocomplete_order() to allow for it to handle orders before they have an ID (before they are inserted). PR#2784
* Fix: Adjust for possible differences in billing cycles because of rounding when calculating prorated totals for switch requests. PR#2617
* Tweak: Improve UX for variation selection when limited variable product is in cart. PR#2683
* Tweak: Remove code which supported for WC 2.5. PR#2806
* Tweak: Enforce array return value for `pre_get_users_subscriptions` filter. PR#2814
2018.07.10 - version 2.3.2
* Fix: Extend the next payment date after early renewal if there's no end date. PR#2804
* Fix: Prevent throwing type hinting errors when getting related orders from cache. RR#2805
* Tweak: Don't copying `_created_via` meta from subscriptions to related orders as this overrides the value set when the order was created. PR#2794
* Tweak: Make `wcs_get_subscriptions_for_order()` the canonical function for retrieving subscriptions for a given order (regardless of type). PR#2805
2018.07.06 - version 2.3.1
* Fix: Catchable fatal error from function parameter hinting. PR#2797
2018.07.04 - version 2.3.0
* New: Allow store managers to link an order with a subscription using the parent order relationship via a UI on the admin edit subscription screen. PR#2272
* New: Add an option to charge the full recurring amount at the time of sign up for synchronised subscription products. PR#2343
* New: Add new coupon setting which store managers to use to create recurring coupons which apply for a certain number of payments. PR * New: Add new sections to the system status. PR#2493
* New: Allow customers to renew subscriptions before their next payment date from their My Account Subscription page. PR#2544
* New: Add persistent cache of related order IDs in subscription meta. Improves performance when obtaining subscription related orders. PR#2572
* New: Add new sections to the system status. PR#2493
* New: Add persistent cache of customer subscriptions. PR#2635
* New: Add extra args ($order and $cart) to woocommerce_checkout_create_subscription filter. PR#2645
* New: Update Action Scheduler to v2.0.0.
* New: Add a new admin upgrade notice helper class `WCS_Upgrade_Notice_Manager`. PR#2622
* New: Add WCS_INIT_TIMESTAMP constant and use it to time background updates. PR#2739
* New: Display an admin notice when a site is downgraded. PR#2743
* Fix: Repair subscriptions which have been suspended in PayPal but not in WooCommerce. PR#2407
* Fix: Make sure wcs_get_product_limitation() uses the parent product when determining variation product subscription limitations. PR#2513
* Fix: Remove non-recurring fees from renewal carts. PR#2642
* Fix: Don't autocomplete orders which have a subtotal greater than 0. PR#2665
* Fix: [Reports] Exclude trashed subscriptions from all calculations. Fixes inconsistencies between some subscription counts. PR#2674
* Fix: Check if the recurring_carts variable has been set before calling count() on it. PR#2688
* Fix: Issues caused by a loophole where trashed or non grouped products remain a valid subscription product parent for switching. PR#2682
* Fix: Check if there is no shipping method for a shipping zone before trying to access it when displaying cart HTML. PR#2701
* Fix: Correctly calculate switching sign-up fee proration when switching between synced products. PR#2722
* Fix: Indirect modification of WC_Checkout::$shipping_methods PHP errors. PR#2729
* Fix: Only allow switching between products which are visible to the customer. PR#2727
* Fix: [WC3.4] Only trigger the woocommerce_after_add_to_cart_button action hook once on variable subscription single product pages. PR#2750
* Fix: [WC3.4] Fix missing endpoint settings. PR#2767
* Fix: Remove unused chosen shipping methods for recurring packages. Fixes an issue where if the number of available shipping methods changes, the recurring carts hold onto their previously chosen method. PR#2782
* Fix: Protect against possible errors when getting the subscriptions my account endpoint url. PR#2781
* Tweak: Prevent bulk deletion of variations in use by at least one subscription. PR#2678
* Tweak: Add better support for custom order types via `WC_Subscription::get_last_order()`. PR#2644
* Tweak: Add `WCS_Admin_Post_Types::get_date_column_content()` helper function for displaying date content in post tables. PR#2643
* Tweak: Change the Edit Subscription Schedule meta box titles. PR#2649
* Tweak: Hide Recurring Coupons in the initial cart if they don't apply. PR#2616
* Tweak: Add a filter to allow third-parties to filter orders by custom order types. PR#2667
* Tweak: Don't schedule events for subscription start & last payment dates. PR#2669
* Tweak: Add new `wcs_create_subscription` action. PR#2732
* Tweak: Include variations in the "Subscriptions by product" reports. PR#2704
* Tweak: Improve performance of getting a variable product's min and max variation data. PR#2723
* Tweak: Add Subscription endpoints to the WC_Query endpoints. This allows our endpoints to be considered by functions like is_wc_endpoint_url() and also wc_body_class(). PR#2749
* Tweak: Add an order note to renewal orders processed under staging site conditions. PR#2773
* Tweak: Add a new badge to the subscriptions admin menu item when a site is operating as a staging site. PR#2773
* Tweak: Add note to guest checkout setting, noting that an account is required when purchasing subscription products. PR#2751
* Tweak: Deprecate the 'wcs_pre_get_users_subscriptions' filter. PR#2785
* Tweak: Increase minimum required WC version to 2.6. PR#2786
* Tweak: Remove TLC transient library and the cache manager which implemented it. PR#2614
* Tweak: On site's already running WC 3.0 ensure all subscriptions have address indexes via a background repair script. PR#2605
* Tweak: Require PHP 5.6 or newer. PR#2325
* Tweak: Change 'created_via' order property for subscription orders. PR#2389
* Tweak: Boost performance of admin subscription search by using billing and shipping indexes. PR#2409
* Tweak: Add filter to control the automatic redirect behaviour of the Subscriptions menu item on My Account. PR#2633
2018.05.29 - version 2.2.21
* Tweak: Update WooCommerce tested up to compatibility flag.
* Fix: [GDPR] While processing erasure requests anonymise all user subscriptions with any status. PR#2720
* Fix: Fix PHP warnings which appear on the WooCommerce > Settings > Accounts & Privacy page and while exporting user personal data. PR#2719
2018.05.25 - version 2.2.20
* New: [GDPR] Export and erase subscription personal data when processing user export and erasure requests. PR#2692
* New: [GDPR] Add an automatic data removal system for ended subscriptions and their related orders. PR#2702
* New: [GDPR] Add details about the personal data the plugin collects to the privacy policy guide. PR#2700
* Tweak: Reorder wcs_get_subscriptions_for_order logic to be more performance friendly. PR#2697
* Tweak: Replace remote image sources with an internal asset. PR#2690
* Fix: [WC3.4] Prevent subscription related orders from being trashed/anonymised by WC's automatic clean up system. PR#2698
* Fix: [WC3.4] Only trigger the woocommerce_before_add_to_cart_button action hook once on variable subscription single product pages. PR#2706
2018.04.04 - version 2.2.19
* Fix: With Mixed Checkout disabled, only remove the add to cart notice when redirected straight to checkout. Fixes issue where error notices are removed incorrectly. PR#2541
* Fix: With Mixed Checkout disabled, only empty cart when the variation ID is the same but with different attributes. PR#2540
* Fix: Remove the "\n" character from variable subscription item tooltips in the admin subscriptions table. PR#2481
* Fix: Allow users to purchase limited to any status subscription products under circumstances where the customer is blocked from purchasing because of cancelled orders. PR#2485
* Fix: Prevent deletion of product variations in use by a subscription. PR#2507
* Fix: Get default product price when no price arg is passed into `get_price_string()`. PR#2558
* Fix: Avoid potential for division by zero errors when switching. PR#2574
* Fix: Only force payment method selection during switch if a new subscription will be created. PR#2567
* Fix: Remove trailing space from address_type variable. PR#2595
* Fix: Ensure the opening span tag is present for all args passed to get_price_string(). PR#2597
* Fix: Set the product's price to the sale price even if it's 0. Fixes display issues with subscription products on sale for $0. PR#2601
* Fix: While resubscribing, ensure subscriptions with multiple line items charge the correct amount for all line items, not just the 1st. PR#2585
* Fix: Hide product stock settings while editing variable products. PR#2563
* Fix: Allow subscription coupons to be applied while switching subscriptions. PR#1863
* Fix: Ensure subscriptions created via the API with an active status and a set_paid arg set to true are saved. PR#2609
* Fix: Ensure Net Gain/Loss calculations for subscription reports convert dates correctly to match the site's timezone. PR#2593
* Fix: Prevent the possibility for fatal errors caused by calling undeclared functions during the payment method change requests. PR#2613
* Tweak: Ensure sign up fees are numeric before attempting to use them in calculations. PR#2551
* Tweak: Only clear related order cache on renewal order changes. PR#2555
* Tweak: Improve checkout performance by avoiding related renewal orders query. PR#2550
* Tweak: Add the `$plain_text` arg to order item meta start and end hooks. PR#2515
* Tweak: Refactor the view subscription template. PR#2575
* Tweak: Add Subscription My Account endpoints to wpml-config.xml file. PR#2578
* Tweak: Add 'woocommerce_subscriptions_product_limited_for_user' filter. PR#2596
* Tweak: Clear the cart if the product being added to the cart is sold individually when mixed checkout is disabled. PR#2602
* Tweak: Use WC_DateTime objects and `getTimestamp()` rather than `format( 'U' )` to avoid possible issues in earlier PHP versions. PR#2588
* Tweak: Add pagination to the My Account Subscriptions table. PR#2537
* Tweak: Catch, log and display an admin notice after a scheduled subscription action timeout. PR#2484
2018.02.12 - version 2.2.18
* New: Provide custom options for subscription My Account endpoints. PR#2511
* Fix: Reinitialize tooltips after changing switching settings. PR#2517
* Fix: Only add inclusive tax rates to renewal cart items if product is taxable. PR#2524
* Fix: [WC3.3] Fix switching between grouped products by ensuring the switch request arguments are posted to the add to cart form. PR#2535
* Fix: Use correct meta key and compare argument when getting subscriptions with wcs_get_subscriptions() when ordered by end or trial date. PR#2528
2018.01.29 - version 2.2.17
* Fix: Use line item meta values in a WC version compatible way. PR#2469
* Fix: Only log cache manager messages if the logger has been loaded. PR#2468
* Fix: Init `WC()->mailer()` to make sure our retry email classes are available and loaded. PR#2476
* Fix: Update calls to 'woocommerce_payment_complete_order_status' to include order as 3rd argument. PR#2503
* Fix: Prevent wp_kses from stripping off the allow_clear attribute of Select2 elements. PR#2354
* Fix: Update `woocommerce_cart_totals_coupon_html` filter to include an extra arg introduced in WC 3.0. PR#2447
* Fix: Ensure the Upcoming Revenue report correctly calculates revenue in periods beyond the next payment date. PR#2461
* Fix: [WC3.2] Print the order downloads table in renewal order emails. PR#2522
* Fix: [WC3.3] Replace uses of deprecated `woocommerce_params` with 'woocommerce_get_script_data'. PR#2509
* Fix: [WC3.3] Get the active set of PayPal API credential depending on the gateway mode. PR#2514
* Fix: [WC3.3] Display the filter by customer on the admin subscriptions table. PR#2521
* Tweak: Add Subscriptions template overrides to system status. PR#2422
* Tweak: Do not empty cart when adding additional units of a subscription product when mixed checkout is disabled. PR#2464
* Tweak: Trigger a `do_action` when customers remove and readd line items to their subscription. PR#2458
* Tweak: Untrash subscriptions when parent order is untrashed. PR#2472
* Tweak: Skip the My Account Subscriptions table, linking directly to the subscription if customer only has one. PR#2474
* Tweak: Change the subscription product length/expiration label from 'Expire after' to Subscription length. PR#2483
* Tweak: Reword the Mixed Checkout setting description. PR#2490
* Tweak: Cache user subscriptions to improve performance of limitation queries and user API functions. PR#2388
* Tweak: Pass the `$number` parameter to callbacks hooked onto `woocommerce_subscription_periods` and `woocommerce_subscription_trial_periods`. PR#2520
2017.12.07 - version 2.2.16
* Fix: Update PayPal doc links. PR#2414
* Fix: [WC3.2] Make sure Subscriptions checks if the PayPal credentials have changed on correct hook. PR#2430
* Fix: Only allow subscription line items to be removed from the My Account page when they should be allowed. PR#2440
* Fix: Fix subscription ranges transient key when user has different language/locale than site default. PR#2286
* Fix: Replace use of deprecated function with wc_get_cart_url(). PR#2442
* Fix: Force payment method selection when switching when manual renewals are disabled. PR#2348
* Tweak: Deprecate WC_Subscriptions::add_notice() and WC_Subscriptions::print_notices(). PR#2453
* Tweak: Display "Free" for shipping that costs 0 only. PR#2437
* Tweak: Format PayPal totals as strings when comparing. PR#2271
* Tweak: Improve recurring fee support. PR#2462
2017.11.07 - version 2.2.15
* Fix: Don't include auto-draft subscriptions in the current subscriptions count in reports. PR#2414
* Fix: Reset cart item prorated amounts between calculations to avoid displaying double prorated prices. PR#2413
* Fix: Fix typo in "wcs_api_subscription_updated" hook - previously "wc_api_subscription_updated". PR#2364
* Fix: [WC3.2] Replace use of deprecated function with wc_get_checkout_url(). PR#2421
* Fix: Fix fatal error thrown while copying coupon line item meta between orders and subscriptions. PR#2426
* Tweak: [WC3.2] Add WC tested up to plugin header args. PR#2424
* Tweak: Introduce filter to give third-parties the ability to prevent customers from removing individual subscription line items. PR#2419
2017.11.01 - version 2.2.14
* Fix: [WC3.2] Update use of deprecated cart fee functions to use new APIs introduced in WC 3.2. PR#2397
* Fix: [WC3.2] Ensure line item download links are included in subscription related order emails. PR#2396
* Fix: Copy coupon line items from subscriptions to renewal orders. PR#2374
* Fix: Only apply recurring coupons to subscription products in parent orders #2375
* Fix: Allow for custom field IDs when saving subscription shipping and billing fields. PR#2392
* Tweak: Only save the order once when copying meta data between subscription and order objects - improves performance. PR#2383
* Tweak: Trigger a do_action when an error occurs during the renewal order creation process. PR#2403
* Tweak: Improve PayPal Standard error handling of IPNs which refer to subscriptions created with other systems. PR##2384
2017.10.13 - version 2.2.13
* Fix: Ensure wcs_get_subscriptions() returns the correct results when called with the 'customer_id' and 'product_id' arguments PR#2337
* Fix: Always set the order key when manually creating subscriptions from the admin dashboard PR#2350
* Fix: Delay granting download permissions until after the switch is complete - fixes missing download permissions after a switch PR#2339
* Tweak: Display subscription IDs in date update exceptions PR#2342
* Tweak: Cache the flag used to determine if subscriptions exist for a slight performance improvement PR#2360
* Tweak: [WC3.2] Add support for applying subscription coupon types to subscriptions and orders via admin edit subscription/order screens PR#2371
2017.09.15 - version 2.2.12
* Fix: Add missing argument number to filter for print_switch_link() - fixes PHP Warning: Missing argument 2 for WC_Subscriptions_Switcher::print_switch_link() PR#2266
* Fix: Store decimal price values in dot separated format in the database PR#2242
* Fix: Maintain backwards compatibility by triggering woocommerce_add_order_item_meta hooks when adding line items to a subscription from checkout PR#2267
* Fix: PayPal RT: Fix rounding errors and undefined index notice PR#2216
* Fix: Fix empty needle PHP notice when empty strings are returned from WC()->countries->inc_tax_or_vat() PR#1745
* Fix: Ensure updated subscription billing and shipping names are searchable in admin subscriptions table PR#2278
* Fix: Fix PayPal Standard cancellation IPN handling after paying for a failed PayPal Standard renewal order PR#2284
* Fix: Add the billing interval to trial period expiration to fix issues with calculating Upcoming Recurring Revenue report data PR#2245
* Fix: Allow payment on a subscription's most recent order for all order types not just renewal and/or parent orders PR#2295
* Fix: Ensure switch cart items form a separate recurring cart - switch items are processed through the checkout separately so should have separate recurring carts PR#2313
* Fix: [API] Save the subscription object before updating the dates PR#2308
* Fix: Fix the including of the WCS_Report_Dashboard class to ensure it's only included once PR#2300
* Fix: Never trigger gateway renewal payment hook on a subscription with an ended status PR#2318
* Fix: Only get parent order where a parent id exists PR#2322
* Fix: Set switch order item legacy values property correctly PR#2329
* Fix: Don't throw exception when an old PayPal Standard is suspended after a switch PR#2335
* Fix: Don't duplicate download permissions by checking for pre-existing download permissions on subscription when new download files are added to a product PR#2317
* Fix: Make WCS options translatable PR#2302
* Fix: Add wcs_update_order_item_type() to fix all the order item type change issues PR#2338
* Fix: Only display/add shipping if the recurring cart needs shipping PR#2269
* Tweak: Add a link to the wcs-ipn-failures log file on the failed IPN admin notice PR#2321
* Tweak: Update subscriptions shortcode PR#2306
* Tweak: Group payment method meta in subscription billing metabox by gateway ID PR#2305
* Tweak: Disable subscription report caching after errors PR#2297
* Tweak: Permanently delete subscriptions when an order is deleted PR#2288
* Tweak: Add wcs_renewal_order_payment_update_date_created filter PR#2289
* Tweak: Update WooCommerce.com support form links PR#2291
* Tweak: Refactor WC_Subscriptions_Manager::prepare_renewal() and add process_renewal() PR#2280
* Tweak: Apply Select2 to country fields on Edit Subscription screen PR#1745
2017.08.01 - version 2.2.11
* Fix: Do not save subscription product meta data on other post types, including WooCommerce Tab Manager and Jetpack post types. PR#2203
* Fix: Do not apply 'woocommerce_get_price' or 'woocommerce_product_get_price' filters to tax inclusive/exclusive prices to avoid ever applying them twice or to non price prices, like sign-up fees. Introduced in Subscriptions v2.2.5. PR#2261
* Fix: Copy custom and third-party order line item meta to cart line items during the renewal/resubscribe process so that the meta persists on the renewal/resubscribe orders and subscription. PR#2258
* Fix: Always use correct minimum variation price when generating variable price HTML, even if there is a free trial on one variation. PR#2254
* Fix: Never apply 'woocommerce_order_formatted_line_subtotal' filter twice. PR#2239
* Fix: Format plain text email for Subscription renewals correctly. PR#2255
* Tweak: Add Woo plugin header to be compatible with WooCommerce 3.1's updater. PR#2252
* Tweak: Add base composer.json for using Subscriptions with Composer. PR#2229
2017.07.20 - version 2.2.10
* Fix: Do not attempt to call WC 3.0 only method when WC 2.6 is active by fixing version check from 2.6 to 3.0. Props @lkraav. PR#2236
* Fix: Display "Limit Subscription" option on Edit Product screen even when Reviews are disabled. PR#2233
* Fix: Hide "from" price html string if all variations have identical price and billing schedule. PR#2142
* Fix: Guard against proration miscalculation in double switching within one billing period. PR#2225
* Tweak: Log old version and WooCommerce versions on update. PR#2230
2017.07.12 - version 2.2.9
* Fix: WooCommerce 3.1: Notices when loading the WooCommerce > Subscriptions administration page. PR#2206
* Fix: WooCommerce 3.1: Notices on cart redrection hook becuase of use of 'add_to_cart_fragments' hook. PR#2221
* Fix: WooCommerce 3.0: Fix download links in first (processing order) email. PR#2185
* Fix: WooCommerce 3.0: Repair subscriptions with missing _contains_synced_subscription meta not set when WooCommerce 3.0 was active with Subscriptions 2.2.0 through to 2.2.7. PR#2183
* Fix: WooCommerce 3.0: Fix inactive role being assigned to users when subscriptions are suspended with WooCommerce 3.0. PR#2195
* Tweak: New hook to allow feees to be modified on renewals and resubscribes: 'woocommerce_adjust_order_fees_for_setup_cart_for_renewal'. PR#2208
* Tweak: Truncate cache files after a threshold (50MB) to avoid growing indefinitely. PR#1774
* Fix: Set default recurring shipping method when initial shipping method is not available in the recurring options. PR#2214
* Fix: Get active price instead of only subscription price product meta to honour sale prices. Fixes prorated switching costs as well as incorrect price being displayed for variable products where one variation was cheaped because it was on sale. PR#2215
* Fix: Allow payment on only most recent order relating to a subscription that is pending payment to avoid assorted issues stemming from paying for older orders. PR#2209
* Fix: Remove old PayPal IPN payload handling to match changes in WooCommerce 3.1.1 and fix potential exploit. PR#2220
* Fix: Fix default value for product limitations for products which do not have the product limitation value saved or set on them. PR#2219
* Fix: Ignore URL scheme in duplicate site check to avoid incorrectly identifying site as a staging site with v2.2.8 when running on a site with WP_SITEURL set, but being overridden, either by a host like WP Engine, or by some other constant, like FORCE_SSL_ADMIN. PR#2227
2017.06.22 - version 2.2.8
* Fix: WooCommerce 3.0: Update use of deprecated 'woocommerce_stock_html' filter by using new wc_get_stock_html() method. PR#2175 & PR#2193
* Fix: Make sure subscriptions suspended at PayPal.com are also correctly suspended in WooCommerce. PR#2199
* Fix: Do not display manual gateways when paying for failed renewal with an automatic retry. PR#2177
* Fix: Compare the site URL stored by Subscriptions against the WP_SITEURL constant when that constant is set, instead of always comparing against the 'siteurl' option value. PR#2167
* Fix: Apply discounts from renewal orders rather than subscriptions for renewal carts so that any code or manual application of a discount to the renewal order is applied correctly. PR#2156
* Fix: Do not cancel auto-draft subscriptions before post deletion as they do not need to be cancelled and cancellation emails can cause confusion. PR#2173
* Fix: Add 3rd param to 'woocommerce_order_item_name' filter calls to make sure they match parameters on WooCommerce filters. PR#2159
* Fix: Only return parent product IDs if a parent product exists. Fixes broken switch URLs for grouped products. PR#2160
* Fix: Update subscription payment method when renewal has been paid and has pending status and retry. PR#2141
* Fix: Make sure trial calculations for synced variation products are correct with PayPal Standard. PR#2168
* Fix: Set correct PHPDoc for returned type in WC_Subscription::get_parent(). Props @davefx. PR#2169
* Fix: Set correct PHPDoc return type in wcs-renewal-functions.php. PR#2198
* Fix: Copy custom, non-prefixed, subscription meta data to renewal orders. PR#2157
* Fix: Take sale price into account when displaying "From" price for variable products. PR#2176
* Fix: Take sale price into account when switching. PR#2171
* Fix: Fix undefined var $switched_subscriptions. PR#2192
2017.05.26 - version 2.2.7
* Tweak: Integrate with My Account > Payment Methods actions to make sure when a customer deletes a payment method, subscriptions using that payment method are automatically updated to use a different token. Or if there are no other payment methods on the customer's account, a customer can't delete the payment method used for automatic payments. PR#1866
* Tweak: Do not display 'Free' on free shipping methods to improve compatibility with the approached used in WooCommerce 2.6 and newer. PR#1766
* Tweak: Call 'wcs_get_retry_rule_raw' even if no rule is defined so that it can be used to add additional rules beyond default rule set. PR#2138
* Tweak: Do not get products for non product post IDs to save performance overhead. PR#2034
* Fix: WooCommerce 3.0: Repair pending cancelled subscriptions that have not got a scheduled action or been correctly transitioned to cancelled as part of the 2.2.7 upgrade process. PR#2129
* Fix: WooCommerce 3.0: Fixes infinite loops when using a coupon for manual renewal via cart by storing coupon properties rather than full coupon objects in the session. PR#2116
* Fix: WooCommerce 3.0: Fix updating a subscription address after paying manual renewal that uses a different address to avoid addresses being incorrectly deleted and not udpated. PR#2145
* Fix: Register subscription report scripts on top level Reports admin screens for uses without store manage capability, but with capability to view reports. PR#2153
* Fix: Make sure login is required when purchasing subscriptions products and "Registration on checkout" is disabled. PR#1822
* Fix: Use more than 'ipn_track_id' for different PayPal IPN messages now that PayPal has suddently begun to use the same 'ipn_track_id' for different IPN messages. PR#2090
* Fix: Trigger order.created webhook when creating renewal orders by Subscriptions with WC < 3.0. PR#1793
* Fix: Lookup one time shipping setting value on the parent product on variations rather than on the variations to make sure we find the correct value. PR#2125
* Fix: Do not cancel subscriptions that are not using PayPal as the payment method when a PayPal Billing Agreement is cancelled (including subscriptions using manual renewal). PR#2127
* Fix: Allow single payment subscriptions to be cancelled by customer if that single payment is still in future (because there was a free trial). PR#2060
* Fix: Avoid errors by making sure deleted subscriptions are not returned in set of switched and users subscriptions by respective functions for getting those subscriptions. PR#2075 and PR#2131
* Fix: Change Edit Subscriptions admin screen "This order is no longer editable" text to avoid confusion. PR#2128
* Fix: Do not ignore variations with empty prices during min/max calculations to improve compatibility with 3rd party plugins, like Name Your Price. PR#2120
* Fix: Check status can be changed on payment failure to avoid throwing exceptions/errors when the status can't be changed, which is also almost always signifies that the status doesn't need to be changed to reflect the failure. PR#2140
* Fix: Make it is possible to change payment method to PayPal Standard for subscriptions imported or manually added (meaning they do not have a parent order). PR#1956
* Fix: Restore previous v3 customer/{id}/subscriptions response structure to REST API. PR#2150
* Fix: Add support for filtering subscriptions by customer ID in v3 legacy REST API. PR#2144
* Fix: Show General tab for variable subscription product edit page on page load. PR#2044
* Fix: Delete the retry date after subscription status changed. PR#2143
2017.05.05 - version 2.2.6
* Fix: WooCommerce 3.0: Guard against infinite loops caused by 3rd party code calling order methods with a post object by making sure we have an order object, not just an object. PR#2100
* Fix: WooCommerce 3.0: Improve compatibility with 3rd party code that adds custom address fields by making sure we check address method is callable before calling it, and falling back to meta data if that method doesn't exist. PR#2102
* Fix: WooCommerce 3.0: Set correct line item meta names when paying for a renewal or resubscribe order by not relying on WooCommerce 3.0's array access implementation. PR#2105
* Fix: WooCommerce 3.0: Assorted issues with dates not being scheduled and/or not being set at the correct time when running WooCommerce 3.0 by making sure we only save date properties after updating or deleting dates rather than also saving status transitions. PR#2091
* Fix: WooCommerce 3.0: Match WooCommerce 3.0 approach to adding variation attributes to cart/order line item name by making sure we use the line item name rather than product title to alter renewal cart item names. PR#2109
* Fix: WooCommerce 3.0: Match WooCommerce 3.0 filters for sign-up fee prices. Fixes compatibility with sign-up fees and Memberships. PR#2110
* Fix: Make sure a variable product is purchasable even if the variations tab wasn't loaded before saving the product, and make sure we sync the variable product's prices even if the variation's tabe wasn't loaded. PR#2111
* Fix: Make sure subscription is seen as having a zero total when customer completes the Change Payment Method flow to avoid charging anything at the time of changing payment method. PR#2082
* Fix: Fix resubscribing to products for 1 payment cuased by inconsistent variable type being returned by WC_Subscription::get_billing_interval(). PR#2098
* Fix: "Trying to get property of non-object" notice by checking order_type property exists before trying to access it. PR#2099
* Fix: Correct subscription variation field alignmenton WooCommerce > Edit Product screen. PR#2104
* Tweak: Improve upgrade logging by recording version at upgrade and not deleting logs after 6 weeks so we can trace time and day of upgrades in support and better diagnose issues. PR#2070
* Tweak: Adds more flexibility to next payment date recalculation on activation of a subscription with new 'woocommerce_subscription_activation_next_payment_date_threshold' hook. PR#1860
* Tweak: Improve when variations are saved by moving them to save on the 'woocommerce_save_product_variation' hook. PR#2111
* Tweak: Update Action Scheduler to v1.5.3. PR#2113
2017.04.21 - version 2.2.5
* Fix: WooCommerce 3.0: Only call get_id() if product is an object and has not been deleted. PR#2071
* Fix: WooCommerce 3.0: Do not attempt to access WC()->payment_gateways->payment_gateways() when reading the subscription object and setting the payment method, because there is no guarantee WC() will be setup yet (and we only need to do it when the method is called not when it is being instantiated. PR#2084
* Fix: WooCommerce 3.0: Do not set payment method title in set payment method function when instantiating subscription (i.e. prior to it being read). PR#2084
* Fix: WooCommerce 3.0: Calculate the next payment date using either last order paid date or the last order date, whichever is the later, to maintain backward compatiblity with versions prior to WooCommerce 3.0 support. PR#2087
* Fix: WooCommerce 3.0: Replace use of deprecated WooCommerce function removed in WC 3.0. PR#2088
* Fix: PHP 7.1 notices with products with empty signup fees and other properties after WooCommerce 3.0 changes for getting meta on products. PR#2064
* Fix: Allow dynamically setting properties on a subscription via WC_Subscription::__set() for backwards compatibility. PR#2079
* Fix: Do not validate admin payment method changes which will not result in a change to allow for changing meta on a payment method that is not active. PR#2085
* Tweak: Add wc_input_price class to subscription product price inputs to make sure they use decimal separator and other store settings for validation. PR#2068
2017.04.12 - version 2.2.4
* Fix: WooCommerce 3.0: Correctly handle switching between grouped products in WooCommerce 3.0 where a product can have more than one parent grouped product. PR#2063
* Fix: Do not incorrectly create pending renewal orders and suspend PayPal Standard Subscriptions at the time their payment is due. PayPal controls the billing schedule for these subscriptions. PR#2069
* Tweak: Add 'woocommerce_subscriptions_order_type_dropdown' filter. PR#2065
* Tweak: Include only Subscriptions strings in POT file.
2017.04.07 - version 2.2.3
* Fix: WooCommerce 3.0: Improve backward compatibility of get_date( 'start' ) calls for subscriptions without a date created set by WooCommerce 3.0 (which happens when manually adding a new subscriptions). PR#2047
* Fix: WooCommerce 3.0: Prevent saving subscriptions with a 0 start date/date created by making sure we set a default date created value when manually adding a new subscription. PR#2048
* Fix: WooCommerce 3.0: Remove the correct 3.0 core function responsible for sending order emails to avoid sending both WooCommerce order emails and Subscriptions order emails. PR#2045
* Fix: WooCommerce 3.0: Make sure synchronised product meta data is set correctly on subscription line items by using WooCommerce 3.0 compatible hook. PR#2049
* Fix: Make sure filters are applied when getting customer subscriptions with REST API endpoints by using WC_API_Subscriptions::get_subscriptions() instead of a custom query to get customer subscriptions. PR#1806
* Fix: Display correct variable subscription product "From" prices and grouped subscription products prices to match tax settings. PR#2054
* Fix: Don't attempt to save shipping and billing fields which aren't set when submitting the Edit Subscription screen to avoid notices. PR#2053
* Fix: Don't use method return value in write context in REST API to avoid errors on certain versions of PHP. PR#2051
2017.04.04 - version 2.2.2
* Fix: WooCommerce 3.0: Fix using $this when in a static context on newer versions of PHP affecting Edit Subscription and Edit Order screens. PR#2043
* Fix: WooCommerce 3.0: Grant new product download permissions to all subscriptions because WooCommerce no longer does it for orders (and subscriptions are a custom order type). PR#2039
* Fix: WooCommerce 3.0: Display subscription related System Status fields in the System Status page on 3.0 which removed old hooks. PR#2039
* Fix: WooCommerce 3.0: Fix updating payment method and elsewhere via the Edit Subscription administration screen. PR#2037
* Fix: WooCommerce 3.0: Store correct prorated price for switches against the order line item so it can be used for future switches. PR#2032
2017.04.04 - version 2.2.1
* Fix: WooCommerce 3.0: Add subscription shipping line item tax the same way WooCommerce 3.0 does it. PR#2023
* Fix: WooCommerce 3.0: Fix division by zero error when manually paying for renewal with offsite payment methods like PayPal. PR#2036
* Fix: Send customer renewal invoice emails for manual renewals and when creating a pending renewal. PR#2035
* Fix: Replace use of undefined variable within WC_Subscription::get_failed_payment_count(). PR#2025
2017.04.03 - version 2.2.0
* WooCommerce 3.0 Compatibility Release
* Tweak: add new getters for subscription related product meta data to conform to WooCommerce 3.0's new CRUD system and also prepare for subscription related product meta data to be moved to schemes that can be applied to any product instead of only subscription product types
* Tweak: add new subscription data store to abstract data storage of subscription data from the subscription class, matching WooCommerce 3.0's new approach to data abstraction.
* Tweak: add new subscription getters and setters for all subscription data to conform to WooCommerce 3.0's new CRUD architecture
* Tweak: add new subscription date APIs to work with dates as date/time objects and with nomclementure that aligns with WooCommerce 3.0
* Tweak: deprecate subscription last payment date APIs because they actual returned the last order date, forcing us to also update the last order date whenever a payment was processed. Two new APIs can now be used: last order date and last order date paid.
* Tweak: improve variable subscription product sync performance by using cache. Also align it with the approach WooCommerce takes.
* Tweak: update Select2 to version 4 to work with the version used by WooCommerce 3.0.
* Tweak: show recurring fees in the recurring totals section on Cart & Checkout pages if 3rd party extensions, like Checkout Add Ons, are adding fees to recurring carts. (PR#2005)
* Fix: don't show Subscription Data metabox title div on WooCommerce > Edit Subscription administration screen with WordPress 4.4. (PR#1998)
* Fix: remove option to order the WooCommerce > Subscriptions administration screen by Status, because this option is not supported. (PR#1996)
2017.03.06 - version 2.1.4
* Tweak: Lengthen PayPal IPN lock to 5 days to prevent creating duplicate renewal orders when a fatal error occurs in processing the IPN. Prevoiusly the lock was set to 5 minutes, meaning on the 2nd IPN would be ignored. Given fatal errors will rarely be fixed within 5 minutes, Subscriptions will now ignore 5 days worth of IPN retries.(PR#1838
* Tweak: Log exceptions caught while updating subscription statuses to make it easier to diagnose issues with 3rd party code and hosting environment that occur during status transitions. PR#1842
* Tweak: Remove lingering compatibility code for WooCommerce prior to version 2.4 as version 2.3 and older have not been supported since v2.1. PR#1750
* Fix: Changing payment method on manually added subscriptions. When manually creating a subscription via the WooCommerce > Add Subscription administration screen, make sure the order key meta data is set so its available when changing payment methods on that subscription. PR#1849
* Fix: Make sure customer and admin retry emails are always sent after the initial retry by making sure the WooCommerce mailer has be setup. PR#1840
* Fix: Do not suspend subscriptions using PayPal Standard as the payment method when switching using PayPal Reference Transactions as the payment method. PR#1831
* Fix: Calculate correct next payment date for subscriptions suspended for more than 30 billing periods e.g. 1 month for a daily subscription, 2.5 years for a month subscription etc. PR#1846
* Fix: Do not update the status of a failed or pending renewal order when changing the payment method on a subscription. PR#1720
* Fix: Make sure free shipping is available as a recurring shipping method for subscription products with a free trial or synced to a date in the future if the recurring total exceeds the Minimum Order Amount required for free shipping. PR#1830
* Fix: Do not incorrectly double slash some JavaScript file URLs. Fixes JavaScript on the WooCommerce > Edit Subscription administration screen with some hosts. PR#1853
* Fix: Do not copy backorder line item meta data to subscriptions or renewal orders for in-stock products. PR#1855
* Fix: Do not apply dynamic discounts from the WooCommerce Dynamic Pricing extension to renewal or resubcribe carts to avoid discounts being compounded when manually renewing or resubscribing. PR#1852
* Fix: Do not switch to staging mode when site is using the WP_SITEURL constant to set the site URL to a value that differs to the URL stored in the database. Uses WP_SITEURL constant now for site url when it is set, and get_site_url() only its not set. PR#1717
* Fix: Correct typo on the Customer Suspensions tooltip on the WooCommerce > Settings > Subscriptions > Miscellaneous administration screen. PR#1868
* Fix: Only setup automatic payments after switching if automatic payments are enabled. PR#1865
2017.01.24 - version 2.1.3
* Tweak: Set renewal order's status to 'pending' before payment retry to make sure that the status change hooks are triggered by WC_Order::update_status(). Fixes compatibility with custom retry rules that use an order status other than pending. (PR#1818)
* Tweak: Automatically transition resubscribe orders for $0 to 'complete' rather than 'processing', because the existing subscription had the pending-cancellation status and the new subscriptions first renewal will be when the first shipment is due to be sent. (PR#1796)
* Tweak: Update Action Scheduler to v1.5.2. (PR#1773)
* Tweak: Exclude Action Scheduler comments from comments RSS feed. (PR#1773 & Prospress/action-scheduler#66)
* Fix: Never reschedule single actions in Action Scheduler, even if the action has a scheduled date in the future. Fixes a duplicate payment processed when PHP's default timezone was being set to a time other than UTC, and Subscriptions < 2.1 scheduled the next payment in that timezone, then when the payment becomes due, PHP's default timezone has been changed back to UTC. (PR#1773 & Prospress/action-scheduler#69)
* Fix: Update renewal order line item cart data when renewal line item IDs are updated. Fixes assorted PHP warnings and notices that resulted from outdated item IDs, including "Division by zero" and "Undefined offset" notices. (PR#1814)
* Fix: Cancel & trash retries when corresponding renewal order is trashed/deleted to make sure the retry is not attempted (with no ill effect). (PR#1768)
* Fix: Undefined variable notice on occasion when viewing WooCommerce > Add Order screen when the retry system is enabled. (PR#1803)
* Fix: Display correct "New Subscription Details" in emails sent when switching (upgrading/downgrading) a subscription. (PR#1819)
* Fix: Responsiveness of recurring totals sections of checkout table. (PR#1809)
2016.12.12 - version 2.1.2
* Tweak: Reword the description on the Disable Automatic Payments option to make it clear it does not change existing subscriptions. (PR#1771)
* Fix: Renewal issues with servers running Memcached, which does not handle expiration times greater than 30 days, by no longer using TLC transients, which sets all transient expiration dates to 1 year in future. (PR#1776)
* Fix: Do not require InnoDB/SQL transactions for switching. Fixes "The original subscription item being switched cannot be found" errors when a customer attempts to upgrade or downgrade on servers without InnoDB active. (PR#1779)
* Fix: Pass entire product object from cart to check whether it is a subscription when removing subscription products from the cart. Fixes compatibility with 3rd party extensions with custom subscription product types. (PR#1778)
* Fix: Make sure all 'woocommerce_valid_order_statuses_for_payment' calls include an order object as the 2nd parameter for callbacks to match current WooCommerce behaviour. (PR#1789)
* Fix: Incorrect template displayed when browsing to a page with URL /subscriptions/ when using WooCommerce prior to version 2.6. (PR#1660)
* Fix: Do not add '_synced' to recurring cart keys if 3rd party code is calling calculate totals again, only add it once. (PR#1780)
* Fix: Display "Retry Payment" option in the "Order Actions" menu if the payment is due, even if the order has a status applied by customer Retry Rules. (PR#1767)
* Fix: Compatibility with switching and WPML. (PR#1780)
2016.11.26 - version 2.1.1
* Tweak: Delete Subscriptions transients when using the "Clear Transients" tool via the WooCommerce > System Status > Tools administration screen. (PR#1758)
* Tweak: Avoid infinite loops with old versions of the Shipping Multiple Addresses extension and potentially other extension that may manually instantiate the WC_Checkout object, which is normally a singleton accessed via WC()->checkout, WC()->checkout or WC_Checkout::instance(). (PR#1757)
* Tweak: When a subscription's date or status is updated, unschedule all corresponding scheduled actions, not just the first to ensure duplicate scheduled actions that may have been added by 3rd party code or manually are also unscheduled. (PR#1764)
* Fix: Do not require timestamps to be an integer in some date functions to fix issues where a string representation of a timestamp is used. Fixes issues with PayPal Standard Checkout & compatibility with the Groups for WooCommerce extension. (PR#1763)
2016.11.12 - version 2.1.0
* New: Subscription Reports to get insights into the performance of your subscription business: https://docs.woocommerce.com/document/subscriptions/reports/
* New: Failed Recurring Payment Retry System to help recover revenue that would otherwise be lost: https://docs.woocommerce.com/document/subscriptions/failed-payment-retry/
* New: More subscription emails to help you keep on top of important events, like customer suspension and expiration: https://docs.woocommerce.com/document/subscriptions/version-2-1/#section-4
* New: Cancellation date to keep track of when customers cancel subscriptions, not just when they end after being cancelled: https://docs.woocommerce.com/document/subscriptions/version-2-1/#section-5
* New: Allow resubscribing to subscriptions Pending Cancellation: https://docs.woocommerce.com/document/subscriptions/version-2-1/#resubscribe-to-subscriptions-pending-cancellation
* New: REST API Endpoints for Subscriptions built on WordPress REST API infrastructure: https://docs.woocommerce.com/document/subscriptions/version-2-1/#wp-rest-api-endpoints
* New: Additional order type filters on the WooCommerce > Orders administration screen to filter orders to show only subscription parent, renewal, resubscribe or switch orders: https://docs.woocommerce.com/document/subscriptions/version-2-1/#additional-order-type-filters
* Tweak: Always use Renewal Order totals and data for renewal payments, making it possible to easily add one-time fees or discounts to renewals: https://docs.woocommerce.com/document/subscriptions/version-2-1/#renewal-orders-always-used-for-renewal-data
* Tweak: Improved responsiveness and layout of the subscription pricing fields on the Edit Product screen: https://docs.woocommerce.com/document/subscriptions/version-2-1/#edit-product-interface-improvements
* Tweak: Use renewal order/subscription addresses as the default address fields loaded on checkout for renewal, resubscribe and switch checkouts. https://docs.woocommerce.com/document/subscriptions/version-2-1/#use-renewal-order-or-subscription-address-on-checkout
* Tweak: Process switches (upgrades and downgrades) on order status change instead of when the customer completes checkout: https://docs.woocommerce.com/document/subscriptions/version-2-1/#process-upgrades-and-downgrades-on-order-status-change
* Tweak: Small performance improvements by no longer calling deprecated hooks and caching some queries: https://docs.woocommerce.com/document/subscriptions/version-2-1/#performance-improvements
* Tweak: Apply add-to-cart validation to renewals and resubscribes (using the 'woocommerce_add_to_cart_validation' hook): https://docs.woocommerce.com/document/subscriptions/version-2-1/#add-to-cart-validation-applied-to-renewal-and-resubscribe-process
* Tweak: Link to the My Account > Subscriptions page on the Order Received/Thank you page when using WooCommerce 2.6 so that the customer can see all their subscriptions if they purchased multiple subscriptions in the transaction.
* Tweak: Use the 'pay_for_order' user capability check to determine whether a user can pay for a renewal and resubscribe rather than checking their ID against the customer ID on the subscription. (PR#1692 / PR#1716)
* Tweak: Increase next payment date threshold for end date to safeguard against payments being processed on the last day of a subscription. (PR#1689)
* Tweak: Only check for PayPal Reference Transaction support once per week instead of daily.
* Tweak: Consistently use the same tooltips in the store admin area as WooCommerce.
* Tweak: Initiate auto-switch process when loading the Grouped product page. (PR#1641)
* Tweak: New 'woocommerce_subscriptions_after_recurring_shipping_rates' hook.
* Tweak: Update scheduling system (Action Scheduler) to version 1.5.
* Fix: Do not create new orders when processing a renewal and resubscribe payment with different details to the original order by ensuring the cart hash used by WooCommerce is updated when creating the order. (PR#1687)
* Fix: Prevent My Account > Subscriptions endpoint page title overriding custom menus and other items on the page calling 'the_title' filter. (PR#1737)
* Fix: Do not change the status of subscriptions using PayPal Standard when the request to update the status at PayPal.com fails because of incorrect API credentials. (PR#1743)
* Fix: Display incorrect PayPal API credentials notice after a status change request or reference transaction check returns incorrect credentials error. (PR#1743)
* Fix: Calculate switching next payment date calculations for a free product to a non-free product correctly. (PR#1661)
* Fix: Process renewals with PayPal Reference Transactions correctly when the ALTERNATE_WP_CRON constant is defined. (PR#1733)
* Fix: Prevent grouped subscription products being switched to non-subscription product in the same grouped product. (PR#1666)
* Fix: Treat empty subscription suspension count option value as 0, meaning no suspensions are allowed. (PR#1728)
* Fix: Only attempt to get paid renewal orders if there are renewal orders. (PR#1718)
2016.09.23 - version 2.0.20
* Tweak: add new 'woocommerce_subscription_before_actions' and 'woocommerce_subscription_after_actions' hooks to the view-subscription.php template. (PR#1608)
* Tweak: use WC_Subscriptions_Product::is_subscription() when checking if a product is sync'd instead of checking the product type directly so that the 'woocommerce_is_subscription' filter is applied and additional product types can add support for synchronisation. (PR#1635)
* Tweak: warn administrators when trashing subscription parent orders from row actions that the related subscriptions will also be trashed. (PR#1647)
* Tweak: add new 'woocommerce_subscriptions_admin_related_orders_to_display' filter to make it easier to manipulate the list of related orders on the Edit Subscription and Edit Order screens. (PR#1631)
* Tweak: add new 'woocommerce_subscriptions_switch_is_identical_product ' filter provide a simple way for 3rd party extensions to determine whether a product should be considered as identical or not, for the purposes of a switch. (PR#1659)
* Tweak: add new 'wcs_paypal_ipn_note' filter to make it easier to modify the order notes logged when processing PayPal IPN requests. @props David Marín (PR#1657)
* Tweak: display a link to Paypal's subscription page in the Subscription Billing Information section of the Edit Subscription administration screen. @props David Marín (PR#1658)
* Fix: display tax correctly for carts with only sync/trials products. (PR#1599)
* Fix: calcaulte tax correctly for prorated sign-up fee during 2...n switch. (PR#1607)
* Fix: remove duplicate call to get items from a subscription on the view-subscription.php template. (PR#1615)
* Fix: guard against fatal errors when 3rd party code calls WordPress' current_user_can() function with invalid parameters. (PR#1652)
* Fix: replace show_hidden_panels Javascript function which was inadvertently displaying 3rd party panels on Edit Product screen. (PR#1637)
* Fix: add the chosen recurring shipping method variable to the parameters passed to callbacks on 'woocommerce_subscriptions_after_recurring_shipping_rates'. (PR#1643)
* Fix: make sure non-logged in users can buy limited subscriptions by avoiding the call to get_posts() in wcs_get_users_subscriptions() when no user ID is specified and no user is logged in. (PR#1649)
* Fix: recalculate free shipping availability based on recurring cart object when applicable to fix issues with free shipping being available for the initial order but not recurring order, either becuase of price requirements or coupons. (PR#1549)
* Fix: make sure 'woocommerce_scheduled_subscription_end_of_prepaid_term' hook is unscheduled when a subscription with the pending cancellation status is trashed. (PR#1589)
* Fix: only get downloadable files from directly related subscriptions, not old subscriptions for subscriptions created by resubscribing. (PR#1612)
* Fix: variable subscription "From:" price when one variation with a higher ID has a longer free trial than the lower priced variation. (PR#1602)
* Fix: remove unused "Email Subject (paid)" and "Email Heading (paid)" fields from the Customer Renewal Invoice email settings page. (PR#1601)
2016.08.12 - version 2.0.19
* Tweak: require new manually added subscriptions to have a customer to avoid issues with subscriptions created without a customer. (PR#1486)
* Tweak: set expiration on caching transients to avoid them being autoloaded on every request and unnecessarily using memory on those requests. (PR#1540)
* Fix: update Action Scheduler to apply timezone fixes and avoid dupilcate payments when a store's timezone is changed: https://github.com/Prospress/action-scheduler/pull/43 (PR#1569)
* Fix: incompatibility with WooCommerce 2.6.2+ which prevented the General tab on the WooCommerce > Edit Product administration screen from being displayed correctly. (PR#1571)
* Fix: shipping rate caching introduced in v2.0.18 for carts containing only products which are synchronised or have a free trial. (PR#1584)
* Fix: displaly appropriate notice when there is no recurring shipping method available because the customer's location has not been set. (PR#1579)
* Fix: page title conflict with bbPress subscription pages. (PR#1581)
* Fix: undefined index error when using variation bulk actions (PR#1561)
* Fix: redirect loop on product page when auto-switching a limited subscription that is on-hold. (PR#1557)
* Fix: issues on WP Engine and potentially other hosts when filtering orders displayed on the WooCoommerce > Orders administration screen to only show renewal orders as a result of WP Engine limiting query length. (PR#1555)
* Fix: undefined variable notice when checking if a product is limited. (PR#1552)
2016.07.22 - version 2.0.18
* Tweak: cache shipping package rates to prevent multiple re-calculations per request. (PR#1485)
* Tweak: remove multiple, redundant calls to $subscription->get_items() and WP_Posts_List->__construct() on admin subscriptions screen. (PR#1524)
* Tweak: support translation for subscription shortcode. (PR#1504)
* Tweak: add new 'woocommerce_subscriptions_after_recurring_shipping_rates' hook after displaying recurring shipping rates. (PR#1517)
* Tweak: use default nonce action for change payment URL so 3rd party code can use custom URLs is needed. (PR#1529)
* Tweak: remove duplicate PayPal log calls. (PR#1527)
* Tweak: slightly improve efficiency of wcs_can_user_resubscribe_to(). (PR#1501)
* Tweak: refactor wcs_user_has_subscription() to accept an array for statuses. (PR#1496)
* Tweak: update _paid_date post meta flag for manual / failed payment original / renewal orders. (PR#1488)
* Tweak: use WooCommerce's decimal place setting for rounding switch prorations. (PR#1483)
* Fix: recurring coupons with WooCommerce 2.6.3 (issue does not exist with WC 2.6.2 or 2.6.4+). (PR#1546)
* Fix: grant new product download file permissions to existing subscriptions for product which were not marked as downloadable or did not have downloadable files associated with them at the time the subscription was created. (PR#1533)
* Fix: show cancel button for on-hold subscriptions with empty next payment. (PR#1515)
* Fix: select the correct way to apply tax rates based on the 'woocommerce_adjust_non_base_location_prices' filter. (PR#1500)
* Fix: display price string for one payment subscriptions consistently between cart/checkout and my account. e.g. display "$100 for 1 year" everywhere, instead of "$100 for 1 year" on cart/checkout and "$100 / year" on My Account. (PR#1451)
* Fix: do not allow a customer with an active and cancelled subscription to a product limited to active status to resubscribe to the inactive subscription. (PR#1482)
* Fix: updates resubscribe button displayed on the limited simple subscriptoin product pages text from the old "Renew" terminology. (PR#1487)
* Fix: calculate correct renewal/resubscribe cart item taxes rates. (PR#1476)
* Fix: honour chosen shipping method as default method. (PR#1480)
* Fix: remove the mock trial added to switches with no prorated inital switch costs when creating the grouping key dates to fix incorrect "the next_payment date must occur after the trial end date" error in the rare case where the first renewal payment for the new subscription is scheduled less than 1 billing period in the future. (PR#1519)
* Fix: always allow subscription status updates while processing PayPal IPNs to avoid issues when processing renewals for PayPal accounts issuing out-of-odate subscription IDs that begin with S-. (PR#1526)
* Fix: responsiveness of Subscriptions administration screen list table to improve display on small screens. (PR#1502)
* Fix: do not use variable references ot fix 'nested by-reference foreach loop' notice with PHP7. (PR#1522)
* Fix: tab order of billing period and interval on Edit Product screen for subscription variations. (PR#1543)
* Fix: deviation calculations in wcs_estimate_period_between(). (PR#1455)
2016.06.24 - version 2.0.17
* Tweak: add support for bulk editing subscription variation prices using relative increase or decrease from existing price (either fixed amount or per cent). (PR#1425)
* Tweak: use filterable helper function when validating switch request to improve compatibilty with Name Your Price and other plugins. (PR#1453)
* Tweak: require payment when switching from $0 / period subscriptions to a non-zero / period subscription if the store is not disabling automatic payments so that future payments on the new subscription can be processed automatically. (PR#1420)
* Tweak: use new WooCommerce 2.6 hook to load the View Subscription template to so the view-subscription.php template does not require addition WC version checks. (PR#1459)
* Tweak: add tooltip to the next payment date displayed on the Subscriptions administration screen to indiciate that the date is only a guide when the payment gateway controls the billing schedule (like PayPal Standard). (PR#1445)
* Fix: make sure PayPal Standard subscriptions are cancelled at PayPal when switching a subscription with PayPal Standard as the payment method but using a different payment method for the switch transaction. (PR#1419)
* Fix: do not generate a renewal order for the PayPal Standard IPN message for $0.01 payments, which is used to get two trial periods on a subscription to align a synchronised payment date, not to actually process a $0.01 payment. (PR#1413)
* Fix: calculate correct next payment date when paying for old failed or manual renewal orders by updating the post dates on the order when the order's status is changed to indicate payment is completed. (PR#1435)
* Fix: do not reduce stock for initial order of synchronised products when no initial payment (like sign-up fee or prorated amount) is charged, as nothing is shipped for that order. (PR#1438)
* Fix: use new WooCommerce 2.6 hook to load the View Subscription template to prevent a PHP notice about deprecated my-account.php template. (PR#1459)
* Fix: provide empty default when accessing chosen shipping methods from the session to fix 'Invalid argument supplied for foreach()' PHP notice when no default shipping method is set. (PR#1456)
* Fix: update subscriptions using PayPal Reference Transactions to "pending-cancelation" status rather than "cancelled" when a PayPal Billing Agreement is cancelled to account for pre-paid time. (PR#1468)
* Fix: escape the style attribute for synchronisation fields on the Edit Product screen correctly to avoid escaping attribute quotes. (PR#1464)
* Fix: do not allow switching using PayPal Standard as the payment method for the switch. (PR#1461)
* Fix: do not unnecessarily copy switch related line item meta data to renewal orders. (PR#1423)
* Fix: display correct order date on hover in the Related Orders meta box. (PR#1442)
2016.06.10 - version 2.0.16
* Tweak: display recurring shipping selection fields on cart page instead of notice to select recurring shipping on checkout page (when unique recurring shipping methods are required). (PR#1431)
* Tweak: update cart hash creation for latest logic used in WooCommerce 2.6. (PR#1426)
* Tweak: throw an exception if a scheduled next payment or expiration hook is triggered for a subscription ID that no longer exists (due to a corrupted database). (PR#1429)
* Tweak: add order type parameter to WC_Subscription::get_last_order() so it can be used to return switch orders. (PR#1398)
* Fix: only validate recurring shipping for carts that have future recurring payments. (PR#1440)
* Fix: trigger subscription.created webhook for subscriptions purchased via checkout. (PR#1428)
* Fix: function declaration incompatible with WooCommerce 2.6 release candidate (specifically: WC_Subscription::set_payment_method()). (PR#1434)
* Fix: duplicate My Account navigation with WooCommerce 2.6 release candidate. (PR#1437)
* Fix: incorrect recurring shipping amount being applied to subscription products that do not require recurring shipping if a product with an identical billing schedule that required shipping was added then removed from the cart. (PR#1394)
* Fix: remove unused global variable in WCS_Query. (PR#1424)
* Fix: remove redundant in_the_loop() call in WCS_Query. (PR#1424)
2016.05.28 - version 2.0.15
* Tweak: WooCommerce 2.6 Compatibility.
* Tweak: with the upcoming WooCommerce 2.6, add a Subscriptions tab to the My Account tabs and display subscriptions on that page instead of the My Account page, which is now a "Dashboard" in WooCommerce 2.6. (PR#1377)
* Tweak: with the upcoming WooCommerce 2.6, display the new My Account tabs on the My Account > View Subscription page. (PR#1396)
* Tweak: improve display of the My Account > View Subscription page on small screens. (PR#1396)
* Tweak: pass $args param to 'woocommerce_new_subscription_data' filter. (PR#1410)
* Tweak: use pretty date on hover for Subscription admin screen dates. (PR#1416)
* Tweak: remove WooCommerce < 2.3 compatibility code as this versions are no longer supported. (PR#1395)
* Fix: do not attempt to validate recurring shipping methods when no recurring shipping is required, for example, if the subscription is for one payment or using a Subscribe All the Things product. (PR#1404)
* Fix: do not require payment for switches with $0 switching cost unless the subscription was using PayPal Standard as the payment method and when that's the case, update the subscription payment method after the switch payment is processed if the new payment method is not PayPal. (PR#1412)
* Fix: display of related orders meta box on administration Edit Order and Edit Subscription screens with WooCommerce 2.6. (PR#1387)
* Fix: always trigger subscription renewal payment hooks (i.e. 'woocommerce_subscription_renewal_payment_complete' and 'woocommerce_subscription_renewal_payment_failed') for the first renewal payment, even if there was no initial order for the subscription. Previously, the first payment was not considered a renewal payment, even if it was on a renewal order. (PR#1390)
* Fix: prioritise sign-up fee and trial length filters in cart calculations over value set on cart item. (PR#1378)
* Fix: display correct "Total" row heading for the Related Subscriptions table shown on the My Account > View Order page on small screens. (PR#1396)
* Fix: with the upcoming WooCommerce 2.6, do not create a new order instead of completing payment on the renewal order when completing renewal payment via cart/checkout. (PR#1407)
* Fix: with the upcoming WooCommerce 2.6, do not depend on the 'wc-admin-order-meta-boxes-modal' JavaScript, as it no longer exists. (PR#1407)
2016.05.14 - version 2.0.14
* Tweak: add automatic install plugin URL for WooCommerce when it's not installed. (PR#1345)
* Tweak: add new 'wcs_pre_get_users_subscriptions' filter for custom caching. (PR#1360)
* Fix: make sure shipping line items are added to subscriptions for subscription purchases where the recurring packages are different to the initial packages (i.e. subscriptions with free trial, sync'd or multiple subscription purchases with different shipping classes) and there is only one shipping method available and a customer had previously chosen a different method front end of the store, but that method has since been disabled. (PR#1319)
* Fix: don't empty the cart if adding a product already in the cart when there are no payment gateways which support multiple subscriptions and manual renewals are disabled. (PR#1347)
* Fix: calculate correct next payment and end date for synchronised subscriptions with a `0` trial period value (i.e. not empty or ''). (PR#1348)
* Fix: set default values for subscriptions dropdown fields when bulk adding variations. (PR#1350)
* Fix: rather than using the trial period and interval to determine when to calculate a product's expiration date from, use the date returned by WC_Subscriptions_Product::get_trial_expiration_date() to honour any 3rd party code attaching to the 'woocommerce_subscriptions_product_trial_expiration_date' hook. (PR#1339)
* Fix: display the correct recurring shipping price when store is using tax inclusive pricing. (PR#1367)
* Fix: only apply recurring percent coupons when there is no free trial. (PR#1365)
* Fix: make sure a recurring shipping method has been selected before allowing checkout for products with a free trial or synchronised. (PR#1358)
* Fix: display shipping addresses on the Order Received page and in order emails for orders that do not require shipping but are to purchase a subscription which does require shipping in future because they have a free trial or are synchronised. (PR#1358)
* Fix: potential fatal error when a customer views the View Subscription page for a subscription with a line item that can be switched but has been deleted. (PR#1376)
2016.04.22 - version 2.0.13
* Tweak: make recurring shipping packages globally available by storing them in WC()->shipping->packages. (PR#1294)
* Tweak: add new 'use_per_slash' param in wcs_price_string() function to allow code calling wcs_price_string() to choose whether to use a "/" or longer from "every" for subscriptions which renew each period. (PR#1297)
* Tweak: improve performance of POST requets to /wc-api/subscriptions/ to create a new subscription by only calculating customer's total spent amount once, instead of when creating the order and subscription. (PR#1316)
* Tweak: improve performance when loading the front-end product page for a variable subscription product that is limited for logged in users with a subscription to one of the variations of that product. (PR#1324)
* Fix: compatibility with Local Pickup Plus. (PR#1291 PR#1292 PR#1293 PR#1329)
* Fix: only modify shipping packages when cart contains a subscription. Fixes display of shipping methods selection fields when a customer attempts to pay for a failed or manual renewal order that contains a synced subscription product. (PR#1291)
* Fix: pass correct shipping package key to callbacks on the 'woocommerce_add_shipping_order_item' hook for recurring shipping fields (PR#1292)
* Fix: pass the recurring package key as index value to the cart-recurring-shipping.php template to fix compatibility with shipping extensions that hook into that, namely Local Pickup Plus. (PR#1293)
* Fix: incorrect tax rate applied to recurring totals when using Local Pickup Plus as the shipping method. (PR#1329)
* Fix: incorrect admin email being sent when paying for a failed renewal order. (PR#1310)
* Fix: make sure translations are ready before attempting to use them. Also load plugin text domain on 'init' instead of 'plugins_loaded' to improve compatibility with localisation extension. (PR#1303)
* Fix: display of inventory settings on the Edit Product admin screen when loading or changing to a subscription product type. (PR#1322)
* Fix: ensure sign up fee paid includes the paid tax if tax inclusive so that it is consistent with the sign up fee due amount and the prorated sign-up fee amount is calculated correctly when upgrading/downgrading. (PR#1312)
* Fix: do not discount sign-up fees with recurring coupons. (PR#1325)
* Fix: allow end date for a subscription to be the same as the last payment date. Fixes subscriptions with an abandonded PayPal order being able to be suspended/activated if that pending order is cancelled. (PR#1330)
* Fix: calculate correct end date for synchronised subscription products with a free trial. (PR#1327)
* Fix: prorated upgrade/downgrade amount when switching a synchronised subscription before the first payment date. (PR#1308)
* Fix: set correct number of installments when signing up for a synchronised subscription with an end date at PayPal Standard. (PR#1313)
* Fix: only allow one variation of a limited variable product to be added to the cart to avoid the customer being able to buy multiple variations of a limited product. (PR#1332)
* Fix: "The next_payment date must occur after the trial end date" error notice sometimes dislpayed on checkout when purchasing a synchronised product with a free trial period. (PR#1324)
* Fix: add fees applied to a renewal, initial order or subscription to the cart when paying for renewal, an initial sign-up or resubscribe. (PR#1334)
2016.03.18 - version 2.0.12
* Tweak: new 'woocommerce_my_subscriptions_actions' hook in the My Subscriptions table
* Fix: shipping bug when the packages for recurring orders were different to those for the initial order. Fixes compatibility with Table Rate shipping and occasional issues with manual renewals for products with a free trial or synchronised renewal date. Refactoring of shipping selection required to address the issue: shipping method selection fields are now displayed on checkout in the Recurring Totals section when the available recurring shipping rates are different to the rates for the initial order (either because the methods are different, the costs are different, or the package contents is different).
* Fix: error on WooCommerce > Edit Subscription admin screen for subscriptions with recurring coupons caused by attempting to use WC()->session on backend/admin requests
* Fix: search customer/user email address when searching via the WooCommerce > Subscriptions administration screen
* Fix: 404's of the "My Account > View Subscription" page after updating WooCommerce
* Fix: include up-to-date pot file
2016.03.03 - version 2.0.11
* Fix: activation issue with v2.0.10 on some sites due to get_editable_roles() function not being defined
* Tweak: don't allow subscribers to cancel subscriptions with pending cancellation status
2016.02.27 - version 2.0.10
* Tweak: large improvements to internationalisation of strings after a full audit of all strings made available for localisation. Subscriptions now makes use of string context more often, uses numbered placeholders for strings passed through sprintf/printf, consolidated strings with same context and added more comments for translators.
* Tweak: display details of product, shipping and tax line items at PayPal for subscription sign-ups via Express Checkout Reference Transactions instead of only displaying the billing agreement description.
* Tweak: add new wcs_get_address_type_to_display() method to have a single source for all localised address type display names
* Tweak: a number of small security improvements around validation of printing strings
* Tweak: new 'woocommerce_subscription_use_pending_cancel' filter to allow stores to switch off the use of the Pending Cancellation status applied until the end of any prepaid term on a subscription once it has been cancelled
* Tweak: use wp_json_encode() when possible (with WordPress v4.1 and newer) instead of PHP's json_encode(), the use of which is discouraged
* Tweak: move user role filter to after the default roles section and introduce wcs_get_new_user_role_names() to allow custom code to more easily customise the role assigned to a user for subscription events.
* Fix: Product add-on incompatibility: make sure product add-ons are only applied once for manual renewal payments for a previously failed automatic renewal payment.
* Fix: Checkout Add-ons incompatibility: add subscription fee line items to the cart for manual renewal and resubscribe to make sure Checkout Add-ons are applied to manual renewals and resubscribes
* Fix: compatibility with remote updaters, like WP Remote, Jetpack Manage by activating subscriptions on 'init' not 'admin_init' because remote udpaters won't trigger that hook.
* Fix: apply recurring coupons to manual renewals by making sure they are set in the cart at the time of renewal. Introduces the use of the following new psuedo coupons for carrying over recurring coupons to renewals: 'renewal_fee', 'renewal_percent' & 'renewal_cart'.
* Fix: make sure it is possible to link a subscription with a parent order by passing a 'order_id' argument when creating or updating a subscription via the REST API endpoints (i.e. /wc-api/v4/subscriptions/)
* Fix: don't show synchronisation fields on the Edit Product screen for a subscription that renews daily when toggling the downloadable or virtual checkboxes
* Fix: make sure you can bulk edit variations before a variable product is saved with WooCommerce v2.5 by using the product type field
* Fix: don't incorrectly log the "Free trial commenced for subscription" order note on a subscription when applying coupons to make the initial payment free. Instead, log the more general "Sign-up complete" order note whenever a subscription without an initial payment receives the first payment complete function call.
* Fix: don't allow resubscribing to subscriptions with a $0 / period price, because generally, this is done to charge the full cost of the subscription in the sign-up fee, and we don't charge sign-up fees on a resubscribe.
* Fix: occassional error when updating a subscription via the Edit Subscription screen: "Error updating subscription: A valid PayPal Billing Agreement ID value is required" caused by using disabled payment method meta fields (Subscriptions now uses readonly fields).
* Fix: send cancelled subscription emails to store managers when a subscription is deleted early in the process of deletion to ensure billing meta fields are still available to include in the email.
* Fix: log correct next payment date when processing a PayPal IPN payment request for a subscription that has a payment in the future. Also fixes an undefined index notice for these IPN requests for subscriptions with no free trial.
* Fix: allow disabled payment gateways that are still active as plugins to be treated as a valid payment method when saving a subscription via the Edit Subscription screen to avoid switching the subscription to use Manual renewals.
* Fix: always display order numbers not IDs to improve compatibility with plugins like Sequential Order numbers
* Fix: when a switch order's status is changed, don't cancel, suspend or mark the corresponding subscription as failed. Only do that on those status changes for the original order.
* Fix: display all subscriptions on the Subscriptions list table when filtering by payment method (previously the default posts per page value would be used, which is 5).
* Fix: leap year issues when creating subscription terms with PayPal Standard that can lead to prolonged free trial or subscription duration for subscripions that have an annual free trial or billing period.
* Fix: set correct subscription length options for subscription variations on the Edit Product screen when first loading the page (affects subscriptions with a billing interval other than 1)
* Fix: duplicate PayPal IPN blocking on sites running PHP prior to version 5.4.0.
2016.01.30 - version 2.0.9
* Notice: if you have customisations to the /add-to-cart/variable.php template you wish to apply to variable subscription products, you will need to create a new /add-to-cart/variable-subscription.php template in your theme as this version introduces a new template specifically for variable subscription products
* Tweak: display customer as recipient on WooCommerce > Settings > Email screen with WooCommerce 2.5+
* Tweak: automatically cancel a subscription with the 'pending-cancellation' status if the last renewal order is refunded
* Tweak: flush rewrite rules on activation / deactivation rather than just on upgrade to ensure /view-subscription/ rewrites are always available
* Tweak: use variation ID to test if a subscription's product line item can be switched (helps extensions, like Name Your Price, override if specific variations can be switched)
* Tweak: delete subscriptions on user deletion instead of simply trashing them
* Tweak: new filters for 3rd party developers to use for renewal/resubscribe: 'wcs_cart_contains_renewal', 'wcs_cart_contains_failed_renewal_order_payment', 'wcs_users_resubscribe_link_for_product', 'wcs_cart_contains_resubscribe'
* Tweak: display a notice on limited variable subscription products that can not be switched by introducing a new variable subscription template
* Fix: after the last payment a subscription with an end date, clear the next payment date instead of leaving it as the date of the last payment
* Fix: only display resubscribe notice if a subscription resubscribe was added to cart successfully
* Fix: remove download permissions when product line items are switched to make sure customer only has access to line items of the product they are currently subscribed to
* Fix: when checking whether to apply a discount, only call is_valid_for_product() with WooCommerce 2.5+ because it will always return false in prior versions
* Fix: make sure subscriptions are cancelled before being deleted by using the correct hook name (they were already being correctly cancelled when trashed)
* Fix: do not redirect for auto-switching on limited subscriptions if switching has been disabled in the store
* Fix: always create a failed renewal order for PayPal IPN messages relating to a failure when the subscription is active because PayPal may send the subscription suspended message before the payment failed message and therefore, we'd mark the old renewal order as failed instead of a new renewal order
* Fix: make sure resubscribe orders do not incorrectly charge signup fees after a failed or pending payment on the resubscribe order
* Fix: ignore suspended payment PayPal IPN messages for subscriptions with any status other than 'active' to avoid exceptions when attempting to suspend a subscription pending-cancellation or custom status that can't be suspended
* Fix: display the # symbol before subscription numbers/IDs in all places where WooCommerce displays the # symbol before the order number/ID
* Fix: make sure subscriptions created with PayPal Standard are correctly cancelled when changing the customer changes the payment method to PayPal but the store now supports PayPal Reference Transactions
* Fix: set the correct end date for a synchronised subscription by ensuring that no mock trial period in included in its date
* Fix: make sure correct totals are used for manual renewals (and manual payments for failed automatic renewals) when store is using tax inclusive pricing (by making sure the correct tax amount is added to the renewal item's price)
2016.01.07 - version 2.0.8
* Happy new year!
* Tweak: WooCommerce 2.5 email template compatibility
* Tweak: Use "Change Payment Method" as the default button text on the customer facing Change Payment method form instead of the payment gateways's order button text as often gateways will use something like "Place Order".
* Tweak: Move hardcoded # symbols used for Subscription ID inside translation functions so they can be localised.
* Fix: Display PayPal Subscription Profile ID for PayPal Standard Subscriptions on the Edit Subscription administration screen (but disable the input so that it is not editable by default).
* Fix: When changing a subscription's payment method via the Edit Subscription administration screen, make sure the status updated hook is trigger for the old payment method to allow gateways to cancel/suspend it as needed.
* Fix: When changing a subscription's payment method from PayPal to a different gateway via the Edit Subscription administration screen, suspend the existing subscription at PayPal to ensure no future payments are processed on it.
* Fix: Apply recurring cart discount coupons to products not excluded from that coupon even if the cart contains other products which are excluded from that coupon. Requires WooCommerce 2.5.
* Fix: Remove renewal/resubscribe cart items from cart when the renewal/resubscribe order or original subscription has been deleted to prevent errors.
* Fix: Correctly cache a subscriptions payment gateway rather than instantiating it again every time it is accessed for a small performance improvement.
* Fix: Display the View Subscription page when My Account page is set as the site's front page.
* Fix: Allow unlimited subscription suspension by customer from their My Account page
* Fix: Display "Total" row heading for My Subscriptions table on small displays
2015.12.16 - version 2.0.7
* New: Add a payment gateway filter to the dashboard admin subscriptions table
* New: Implement soft caching for get_related_orders()
* Tweak: Better "Name Your Price" extension switching compatibility
* Tweak: Trash a user's subscriptions when a user is deleted
* Tweak: Limit the `wcs_do_subscriptions_exist()` query to 1 result
* Tweak: Mention subscription string methods in code comments/doc to help avoid some confusion
* Fix: Fix for limiting and paging with the /subscriptions/ API endpoint
* Fix: Use `esc_url_raw()` for redirect url instead of `esc_url()`. Fixes an issue where the return from paypal displays checkout page again instead of order received/details
* Fix: Replaces `parse_str()` with `wp_parse_str()` to fix an issue with incorrectly escaped responses from PayPal in early PHP versions
* Fix: Prevent renewal orders being cancelled when clicking the "Cancel and return to .." link from PayPal
* Fix: Check whether an order needs payment before processing initial payments. Prevents a difficult to reproduce scenario where initial payments were processed multiple times
* Fix: Check if a cart contains a subscription AND the subtotal is 0 before removing any non subscriptions coupons if there is nothing for the coupon to be applied to. Fixes a compatibility issue with extensions like URL coupons.
* Fix: Fixes some php errors when a switch order fails
* Fix: Removes subscriptions from being calculated in reports. Fixes an issue where failed parent orders were incorrectly showing up in reports
* Fix: Filter needs_payment when processing change payment method requests. Fixes an issue with some payment gateways displaying duplicate fields on the change payment method form
* Fix: Paypal IPN tweaks for slow servers & popular stores - port of existing 1.5.x fixes
* Fix: Add additional cart item data when setting up resubscribe and renewal carts so that subscriptions with multiple line items of the same product don't get merged into the one line item with an incorrect quantity. Fixes an issue where if a subscription had 2 line items for the same product, on resubscribe, one of them would disappear
* Fix: Check if $this->payment_gateway property exists. Fixes an issue when subscriptions used on sites served using HHVM
* Fix: Prevent partially paying for a renewal order if not all renewal items are added to cart
* Fix: Changes the $subscription->needs_payment() function to also include switch order meta in the get get_posts query so the latest switch order or renewal order is checked if it needs payment. Fixes customer self reactivating subscription after prorated switch
* Fix: Zero the subscription order shipping value so that we have a clean slate to add to when we add_shipping() when switching. Fixes incorrect/double shipping order tax when switching
* Fix: Other minor misc spelling fixes and fixes to incorrect variable names
2015.11.16 - version 2.0.6
* New: Add a new `woocommerce_subscriptions_switched_item` callback for switching
* Tweak: Move `subscription_expired` and `subscription_end_of_prepaid_term` to the action deprecator
* Tweak: Deprecate WC_Subscriptions_Manager::subscription_trial_end()
* Fix: Add the correct `subscription_switch` meta to all subscription switches when there are multiple switches in the same order
* Fix: Allow autocomplete of orders that have multiple switches in the same order. Fixes an issue where switch emails were not being sent when multiple switched items were processed in the same order
* Fix: Adjust logic around switch label so that switching to $0 per period displays "Downgrade". Fixes an issue where "Crossgrade" was incorrectly displayed when downgrading to $0 per period
* Fix: Don't initiate auto-switch when a subscription needs payment
* Fix: Use the 'wc-pending' status rather than 'pending' (default WordPress) status when manually creating a subscription. Fixes an issue with display of pending subscriptions on the admin subscription list table
* Fix: Replace use of `__DIR__` with `dirname( __FILE__ )` to maintain compatibility with PHP 5.2.4
* Fix: Fix the logic checking for sync day in future by comparing the full date not just the day then the month/year if that day is after the current day. This ensures we don't see a day in the future with a month and year in the past or same as today as being a date in the future
* Fix: Display the resubscribe relationship in the admin edit order and subscription related orders table
* Fix: Directly access the `$_REQUEST['action']` variables instead of using `$wp_list_table->current_action()`. Fixes an issue where while filtering the admin subscriptions list table by customer, attempting to update a subscription status using the provided suspend, cancel and reactivate actions wouldn't actually update the status
* Fix: Honour previous filters applied to the admin subscription list table after updating an individual subscription status using the provided actions
2015.11.07 - version 2.0.5
* Tweak: the "Suspend" button is no longer displayed on a store manager's View Subscription page when 0 suspensions are allowed, to avoid confusion (store managers can always suspend subscriptions from the Manage Subscriptions screen)
* Tweak: use both order status and paid date meta data to find the completed payment count on a subscription because some payment gateways don't set the paid date and some stores may run custom code or 3rd party plugins using a custom order status other than "completed"
* Tweak: add new 'woocommerce_subscriptions_switch_error_message' filter and improve params on 'woocommerce_subscriptions_is_switch_valid' to allow 3rd party code, like Name Your Price, to allow their products to be switched
* Tweak: add new 'woocommerce_subscriptions_paid_order_statuses' filter for 3rd party code to declare what custom order status should be considered as marking an order as paid
* Fix: update the trial, next payment and end dates as well as the start date when changing the status of a order used to purchase a subscription (for stores which use manual payment methods which can take days before payment is received)
* Fix: incorrect tax calculation when resubscribing or manually renewing to a subscription when prices are tax inclusive
* Fix: always setting subscription start date to 1 minute in past when manually adding a subscription via the Edit Subscription screen (by updating the post cache)
* Fix: handling of 'recurring_payment_suspended_due_to_max_failed_payment' and 'recurring_payment_suspended' PayPal IPN requests which send a PayPal Express Checkout IPN payload for PayPal Standard Subscriptions
* Fix: incorrectly removing any non-Subscriptions role from a user when purchasing or deactivating a subscription (by removing and adding only the default role)
* Fix: PHP notice about undefined index 'txn_type' for PayPal IPNs relating to a refund
* Fix: errors relating to an order awaiting payment that has been set to false or deleted instead of being unset in the WooCommerce session
* Fix: incorrect transition of orders (including renewal orders) for $0 amounts to "completed", instead make sure they are transitioned to the default completed status (i.e. "processing")
2015.11.02 - version 2.0.4
* Tweak: cache available subscription lengths to improve performance of the WooCommerce > Subscriptions list table page
* Tweak: add safeguards to prevent a next payment within 2 hours when activating a subscription, or a new next payment date be calculated within 2 hours in the future. Works around issues with 3rd party code using date_default_timezone_set() and a daylight savings bug that will be fixed in a future release
* Tweak: add new filters to allow 3rd party extensions to make their product types switchable (specifically to allow Name Your Price products to be switchable without any changes other than price). Props @helgatheviking
* Tweak: display subscription details on customer facing change payment method process for gateways which use the Checkout > Pay page a 2nd time
* Tweak: when deleting a user, make a note on the subscriptions that user was associated with (which will automatically be cancelled)
* Fix: accumulated proration of sign-up fees when the customer switches a subscription multiple times (e.g. when sign-up fee proration is enabled and a customer upgrade from a product with a $100 fee to a $200 fee, then again to a $300 fee, only charge a $100 sign-up fee, not $200)
* Fix: don't suspend then reactivate subscriptions at PayPal on a renewal (introduced with 2.0.3) because store manager don't like the extra status change entries logged at PayPal and also PayPal doesn't sent a Subscription reactivated IPN, but does send a Subscription suspended IPN, which could lead to subscriptions remaining on-hold incorrectly if IPN handling code for PayPal Express Checkout/Digital Goods was handling it
* Fix: customer facing change payment method process for gateways which need to use the Checkout > Pay page a 2nd time, for example, to collect credit card details
* Fix: JavaScript pop-up notices relatd to invalid billing schedule modifications on the Edit Subscription screen, broken with v2.0.3
* Fix: don't attempt to cancel an expired, trashed or cancelled subscription when deleting a user (the subscription has already been deleted)
* Fix: don't record failed payment twice on a subscription with code calling WC_Subscription->payment_failed() with an unpaid renewal order
* Fix: handling of PayPal IPN for first payment that is sent before the payment is due for a subscription with a free trial date
* Fix: handling of PayPal IPN for subscription failure for a subscription has has previously been cancelled (not sure why PayPal sends this IPN when the subscriptoin has already been cancelled)
* Fix: don't send Customer Invoice email when using the the "Create Pending Renewal Order" action from the Edit Subscription screen for a subscription that uses manual renewals
* Fix: don't automatically complete a pending renewal order for $0 when using the "Create Pending Renewal Order" action from the Edit Subscription screen
* Fix: fix PHP notices dislpayed when removing multiple cart items from the cart which relate to a failed initial payment
* Fix: don't prorate sign-up fees for synchronised subscriptions when proration is enabled for the first renewal payment
* Fix: allow customers to pay failed parent orders which contain a subscription product limited to one of any status
* Fix: fatal errors when 3rd party code is calling WC_Subscriptions_Product::is_subscription() on a deleted product
* Fix: don't generate subscription renewal order for subsc_failed PayPal IPN messages
* Fix: increase PayPal IPN logging to help diagnose issues faster
* Fix: download links in the "download your files" email
2015.10.27 - version 2.0.3
* New: One Time Shipping feature: https://docs.woocommerce.com/document/subscriptions/store-manager-guide/#one-time-shipping
* Tweak: redirect to View Subscription page after changing payment method for payment methods redirecting back to My Account page
* Fix: reactivation of subscriptions using PayPal Standard as the payment method after a subscription renewal payment IPN message is sent (introduced with 2.0.2)
* Fix: use of start date in based on current GMT/UTC offset instead of GMT/UTC offset at the time the subscription was created to handle daylight savings time and changes to a site's timezone
* Fix: notices when saving a manually added subscription with the pending status via the WooCommerce > Add Subscription administration interface
* Fix: increase specificity of JS selector on Edit Product screen to make sure subscription pricing fields are only inserted once, even when other code is adding additional pricing sections
* Fix: return estimated subscription length instead of null for 3rd party code calling deprecated API functions
* Fix: always use WC_API_Subscriptions->get_subscription() to construct the API response for WC-API endpoints
2015.10.21 - version 2.0.2
* New: create pending renewal order action from the Edit Subscriptions screen
* New: process renewal action from the Edit Subscriptions screen
* New: 'woocommerce_subscriptions_validate_coupon_type' filter to improve compatibility with Free Gift Coupons extension
* Tweak: display HTTP errors that occur during upgrade
* Tweak: always allow a store manager to change a subscription to use "Manual" renewal method on the Edit Subscription screen, even if manual renewals are not enabled for checkout
* Fix: repair data not migrated correctly from Subscriptions 1.n, especially important for repairing incorrect dates for stores that upgraded with 2.0.0. Data repaired is dates, customer notes and line tax data.
* Fix: repair subscrpitions incorrectly expired due to incorrect expirate date set during the 2.0.0 upgrade process
* Fix: bug in upgrade process preventing line tax date being copied correctly
* Fix: bug in upgrade process preventing customer notes on subscription orders being copied to subscriptions
* Fix: bug in upgrade process where incorrect dates could be set on subscriptions (only affecting upgrades run with 2.0.0 not 2.0.1 and dates will be repaired on upgrade to this version)
* Fix: infinite loop during upgrade process if store had subscription order item meta data but the corresponding order item had been deleted
* Fix: call deprecated status change hooks: 'activated_subscription', 'suspended_subscription', 'subscription_put_on-hold', 'cancelled_subscription' and 'reactivated_subscription' to improve compatibility with plugins that have not been updated for Subscriptions 2.0 yet
* Fix: hide refund button on Edit Subscriptions screen: subscriptions can not be refunded, only orders
* Fix: handling of PayPal IPN recurring_payment_suspended_due_to_max_failed_payment messages - correctly create renewal order on failure instead of simply suspending the subscription
* Fix: occassional "Invalid argument supplied for foreach" notices on cart page when attempting to get shipping methods
* Fix: do not show "Free!" for grouped products with a free trial on the grouped product's page when product is in the cart
* Fix: paying for renewal of a limited subscription product
* Fix: customer changing payment method with PayPal RT
* Fix: [subscriptions] shortcode
2015.10.09 - version 2.0.1
* Tweak: add a log entry when processing an IPN request completes
* Fix: PayPal IPN handling for subscriptions purchased with older versions of WooCommerce
* Fix: renewal failure on stores running code attached to the deprecated 'woocommerce_subscriptions_renewal_order_created' hook and not returning the renewal order (which wasn't required previously because it was an action)
* Fix: checkout errors on stores running code calling the deprecated WC_Subscriptions_Order::get_recurring_total_tax() method
* Fix: upgrade error when upgrading a sync'd subscription that has been trashed for a product that has been permanently deleted
2015.10.05 - version 2.0.0
* New: purchase different subscription products in the same transaction: https://docs.woocommerce.com/document/subscriptions/version-2/#section-2
* New: administration interface for Adding or Editing a subscription: https://docs.woocommerce.com/document/subscriptions/version-2/#section-3
* New: downloadable content dripping: https://docs.woocommerce.com/document/subscriptions/version-2/#section-4
* New: customer facing View Subscription page: https://docs.woocommerce.com/document/subscriptions/version-2/#section-5
* New: support for PayPal Reference Transactions: https://docs.woocommerce.com/document/subscriptions/version-2/#section-8
* New: Pending Cancellation status applied to a subscription after it has been cancelled but the customer or store manager until the prepaid term ends: https://docs.woocommerce.com/document/subscriptions/version-2/#pending-cancellation
* Tweak: Subscriptions administration list table now includes recurring total, payment method and all search/sorting features for stores with a large number of subscriptions: https://docs.woocommerce.com/document/subscriptions/version-2/#list-table
* Tweak: Improved flow on renewal - create renewal orders before processing the payment: https://docs.woocommerce.com/document/subscriptions/version-2/#section-7
* Tweak: one end date is now used to refer to the date on which a subscription did or will expire or was cancelled: https://docs.woocommerce.com/document/subscriptions/version-2/#one-end-date
* Tweak: the renewal of a cancelled or expired subscription is now called "Resubscribe" to avoid confusion with normal renewal process: https://docs.woocommerce.com/document/subscriptions/version-2/#resubscribe-not-renew
2015.09.29 - version 1.5.31
* Tweak: introduce a new transient lock at the start of PayPal IPN handling to prevent duplicate IPN handling on sites taking more than a minute to process an IPN message and set the permanent lock
* Fix: handling of PayPal's 'recurring_payment_suspended_due_to_max_failed_payment' IPN message for subscriptions purchased with PayPal Standard
* Fix: infinite loop and memory exhaustion when attempting to switch a limited subscription product
2015.08.28 - version 1.5.30
* Fix: redundant pricing elements in subtotal and cart widget totals
* Fix: never given an additional free trials when renewing a cancelled subscription
* Fix: always set an end date for the a switched subscription
* Fix: don't copy over download permissions meta from initial order to renewal order/s
2015.07.28 - version 1.5.29
* Tweak: WooCommerce v2.4 compatibility
* Tweak: improve Javascript show/hide field logic on Edit Product to make it easier for 3rd party extensions to work with Subscriptions
* Fix: first renewal of synchronised subscriptions that are purchased within 23 hours of the first renewal payment being due
* Fix: fix cart calculations thrown off by a simple product that used to be a subscription
* Fix: copy multiple meta data values for the same key to renewal orders
* Fix: restrict switching if force http setting is enabled in WooCommerce as moving from https to http will log the user out. Switching relies on an ownership check, which will always fail, and will strip the query arguments from switching making people sign up for new subscriptions instead of switching the one they already have.
* Fix: manual payment flag being incorrect set on an order initial paid for via a manual payment method, then changed to "Pending" and paid for via a payment method that can process automatic renewals
2015.06.10 - version 1.5.28
* Fix: add compatibility for JSON encoded data in the 'custom' field passed to PayPal being changed in WC 2.3.11 to fix an exploit with serialized data
* Fix: enforce an array with only two values and no objects in the 'custom' field passed to PayPal to fix an exploit with serialized data
* Fix: only apply the price HTML string if there is a price (i.e. not 0 or empty)
2015.06.01 - version 1.5.27
* Fix: make sure subscriptions that were manual activated and do not have a corresponding next payment date can not be switched (i.e. upgraded/downgraded) to ensure proration calculations are correct