LifterLMS PayPal Version 3.0.0-alpha.3

  • New minimum LifterLMS core version requirement: 7.0.0-alpha.3.
  • Changed the invoice_prefix CP gateway option to site_prefix.
  • Improved PayPal plan creation requests to automatically create the related product as needed.
  • Added product (course/membership) bulk sync admin tool.
  • Added an API for syncing recurring orders statuses to the related PayPal subscription.
  • Added a success message when onboarding is completed.
  • Fixed an issue causing PayPal subscription to be inadvertently reactivated during certain scenarios when changing payment methods.
  • Fixed an undefined variable error which could be encountered when using constants/environment variables to define PayPal API credentials.
  • Added an upgrade routine used to inform pre 3.x users about plugin changes.
  • Changed the default alternative payment methods list to be an empty array.
  • Fixed issue causing the legacy gateway to display when adding or removing a coupon during checkout.
  • Fixed an issue causing the PayPal button to get “stuck” when changing gateways after adding or removing a coupon during checkout.
  • Added a webhook notification handler for recording failed subscription payments.
  • Fixed validation feedback issues encountered on iOS browsers.

LifterLMS Version 7.0.0-alpha.3

  • Add max-length sanitization to admin settings which specify a max length.
  • Fixed invalid user links on admin order screens when viewing incomplete orders missing a registered user.
  • Added new function llms_is_secure().
  • Added lifterlms- and llms- as automatically stripped prefixed when using llms_strip_prefixes().
  • Added new temporary metadata, temp_gateway_ids to orders for use by gateways when switching payment methods.
  • Moved LLMS.Spinner Javascript into an @lifterlms/components module and removed its reliance on jQuery.
  • Disabled scroll-behavior: scroll on checkout screens to address a validity reporting issue on Chromium-based browsers.

LifterLMS Version 6.8.0

Bug Fixes
  • Fixed Hello Theme’s word-break and spacing for quiz answer options. #2132
  • Fixed text/label alignment in Twenty-Twenty-Two theme.
  • Fixed regression introduced in version 6.3.0 which prevented the Courses nav item from being customized in the BuddyPress profile nav menu. #2142
Developer Notes
  • Added new filter llms_product_get_restrictions hook to filter the list of restrictions placed on a given product. #2201

LifterLMS PayPal Version 3.0.0-alpha.2

  • New minimum LifterLMS core version requirement: 7.0.0-alpha.2.
  • Fixed various translation functions using the incorrect textdomain.
  • When PayPal error responses provide specific error “details” the detailed error is returned and the generic error type is used as a fallback when details don’t exist.
  • Removed the PayPal account email option as it isn’t functionally necessary to record.
  • Improved PayPal Connect onboarding: the connected PayPal account must have a confirmed email address, subscribed to the PPCP “product”, and be eligible to receive payment before the gateway can be used at checkout.
  • Added PayPal button customization settings.
  • Fixed an issue encountered when attempting to perform two or more partial refunds on a single PayPal transaction.
  • Added webhook handling for PayPal subscription change events and refunds for recurring payment transactions originating from the PayPal account dashboard.

LifterLMS Version 7.0.0-alpha.2

New Features
  • Added handling for admin settings options that store their option values in a nested array.
  • Added new AJAX checkout and payment source switching endpoints for payment gateways to utilize instead of the preexisting synchronous form submission methods.
Bug Fixes
  • Don’t attempt to lookup the default payment gateway from user meta data.
  • Fixes Hello Theme’s word-break and spacing for quiz answer options. Also fixes text/label alignment in Twenty-Twenty-Two Theme. #2132
Deprecations
  • Deprecated LLMS_Controller_Orders::switch_payment_source() in favor of LLMS_Controller_Checkout::switch_payment_source().
  • Deprecated the lifterlms_update_option_{$type} action in favor of the llms_update_option_{$type} filter.
  • Method LLMS_Controller_Orders::confirm_pending_order() is deprecated in favor of LLMS_Controller_Checkout::confirm_pending_order().
  • Method LLMS_Controller_Orders::create_pending_order() is deprecated in favor of LLMS_Controller_Checkout::create_pending_order().
  • Method LLMS_Controller_Orders::switch_payment_source() is deprecated in favor of LLMS_Controller_Checkout::switch_payment_source().
  • Deprecated hook llms_{$method}_title in favor of llms_{$method}_refund_title.
Developer Notes
  • Added admin settings helper function, llms_get_dashicon_link(), intended to enable the addition of external resource helper links to settings field descriptions.
  • The LLMS_Student object can be instantiated as an empty object and bypass current user autoloading. In the future this may affect integrations using the lifterlms_new_pending_order action hook which will receive an “empty” student object during order setup by gateways utilizing new AJAX-powered checkout endpoints.
  • Added a filter, llms_gateway_{$this->id}_logging_enabled, which will allow force enabling/disabling of gateway logging functions.
  • Improved payment gateway secure string logging by adding a method, add_secure_string() allowing developers to add secure strings during runtime without the necessity of registering the strings using filters.
  • Implemented new gateway feature: modify_recurring_payments. #2176
  • Admin settings fields now display after_html for additional field types which support desc.
  • Added new filter llms_transaction_can_be_refunded enabling custom refund restrictions to be applied to a transaction.
Updated Templates

LifterLMS Version 7.0.0-alpha.1

New Features
  • Added new AJAX checkout and payment source switching endpoints for payment gateways to utilize instead of the preexisting synchronous form submission methods.
Bug Fixes
  • Don’t attempt to lookup the default payment gateway from user meta data.
Deprecations
  • Deprecated LLMS_Controller_Orders::switch_payment_source() in favor of LLMS_Controller_Checkout::switch_payment_source().
  • Method LLMS_Controller_Orders::confirm_pending_order() is deprecated in favor of LLMS_Controller_Checkout::confirm_pending_order().
  • Method LLMS_Controller_Orders::create_pending_order() is deprecated in favor of LLMS_Controller_Checkout::create_pending_order().
  • Method LLMS_Controller_Orders::switch_payment_source() is deprecated in favor of LLMS_Controller_Checkout::switch_payment_source().
  • Deprecated hook llms_{$method}_title in favor of llms_{$method}_refund_title.
Developer Notes
  • The LLMS_Student object can be instantiated as an empty object and bypass current user autoloading. In the future this may affect integrations using the lifterlms_new_pending_order action hook which will receive an “empty” student object during order setup by gateways utilizing new AJAX-powered checkout endpoints.
  • Improved payment gateway secure string logging by adding a method, add_secure_string() allowing developers to add secure strings during runtime without the necessity of registering the strings using filters.
  • Implemented new gateway feature: modify_recurring_payments. #2176
  • Added new filter llms_transaction_can_be_refunded enabling custom refund restrictions to be applied to a transaction.
Updated Templates

LifterLMS Version 6.6.0

PHP Minimum Required Version Change
  • Raised the minimum supported PHP version to 7.4.
WordPress Minimum Required Version Change
  • Raised the minimum supported WordPress core version to 5.6.
New Features
  • Added support for WordPress 6.0.
Bug Fixes
  • Fixed the ability for 3rd party plugins to use the lifterlms_external_engagement_handler_arguments and lifterlms_external_engagement_query_arguments filters.
  • Added automatic exclusion of “no cache” pages from the WP Engine server-side cache when using “pretty” permalinks. #1717
  • Stop subtracting LifterLMS order note comments from global comment counts via the wp_count_comments filter on WordPress 6.0 and later. See related WordPress Trac ticket #19901