diff --git a/README.MD b/README.MD index 9ffb3f7..726e7af 100644 --- a/README.MD +++ b/README.MD @@ -135,6 +135,7 @@ Changelog * ENHANCEMENT: Updated text in ccexpiring.html template * ENHANCEMENT: Add Credit Cart Expiration Message test hook +* BUG FIX: No need to send out credit card expiration warning for non-recurring users * BUG FIX: Incorrect default message type to process when processing reminders * BUG FIX: Force values for $target_template and $template_type * BUG FIX: Didn't trigger error when $target_template or $template_type were empty diff --git a/build_readmes/current.txt b/build_readmes/current.txt index d827893..5cc7f8b 100644 --- a/build_readmes/current.txt +++ b/build_readmes/current.txt @@ -1,5 +1,6 @@ ENHANCEMENT: Updated text in ccexpiring.html template ENHANCEMENT: Add Credit Cart Expiration Message test hook +BUG FIX: No need to send out credit card expiration warning for non-recurring users BUG FIX: Incorrect default message type to process when processing reminders BUG FIX: Force values for $target_template and $template_type BUG FIX: Didn't trigger error when $target_template or $template_type were empty diff --git a/metadata.json b/metadata.json index 6f0d3a7..51106d7 100644 --- a/metadata.json +++ b/metadata.json @@ -11,7 +11,7 @@ "homepage": "https://eighty20results.com/wordpress-plugins/e20r-payment-warning-pmpro/", "sections" : { "description" : "

Generates and sends notices to active members for the supported membership plugin. The plugin will notify active members about any upcoming recurring payments, membership expirations and of any upcoming credit card expiration dates so the user can be informed and take action. The plugin receives its data directly from the supported payment gateways. This makes this plugin far more reliable and consistent in actually transmitting warnings/notices to your members.

Being a more reliable and up-to-date notification system than the standard Recurring Payment Email Reminder add-on for Paid Memberships Pro, the E20R Payment Warning for PMPro plugin will utilize the most recent information generated by the payment gateway itself, rather than rely on disconnected data stored on your local WordPress site. Note that this plugin, to the best of our knowledge, is PCI-DSS compliant. It does not store payment data locally on your web server (The information used to process Credit Card transactions is only stored on the payment gateway itself, not on your site).

", - "changelog": "

v4.4

  1. ENHANCEMENT: Updated text in ccexpiring.html template
  2. ENHANCEMENT: Add Credit Cart Expiration Message test hook
  3. BUG FIX: Incorrect default message type to process when processing reminders
  4. BUG FIX: Force values for $target_template and $template_type
  5. BUG FIX: Didn't trigger error when $target_template or $template_type were empty
  6. BUG FIX: Searching for email notice type returned too many results
  7. BUG FIX: Running Reminder message handler incorrectly included too many templates
  8. BUG FIX: Didn't load test hooks when configured

v4.3

  1. ENHANCEMENT: Simplify the add-on specific option names and upgrade the database
  2. ENHANCEMENT: Use new option names for add-ons and simplify add-on configuration
  3. ENHANCEMENT: Trigger change of add-on option names when loading settings (if applicable)
  4. ENHANCEMENT: Renamed render_addon_entry() method to render_addon_checkbox()
  5. ENHANCEMENT: Add label to indicate payment gateway module licensing status when activated
  6. ENHANCEMENT: No need to double-check when the decision had already been made to send the message
  7. ENHANCEMENT: Send admin email every 7 days when there are license warnings (expiring or expired license(s))
  8. ENHANCEMENT: Added PHPDoc blocks for all class variables in Payment_Reminder()
  9. ENHANCEMENT: Added PHPDoc blocks for load_hooks() method in Payment_Reminder()
  10. ENHANCEMENT: More debug logging for User_Data::save_to_db() function
  11. BUG FIX: Load the payment reminder message filters on init (decides whether to send the message, etc)
  12. BUG FIX: Don't return user_data before processing payment/subscription because email address changed
  13. BUG FIX: Check and set license status when plugin is being deactivated
  14. BUG FIX: Didn't check state of license when triggering toggle_addon handler
  15. BUG FIX: For an add-on to be active, it also needed to be licensed (wrong behavior)
  16. BUG FIX: For an add-on to have status 'active', it needs to be both active and licensed
  17. BUG FIX: Didn't always trigger Payment_Reminder::should_send_reminder_message()
  18. BUG FIX: Didn't trigger the 'e20r-payment-warning-send-email' filter which triggered date check of message(s)

v4.2

  1. BUG FIX: Didn't check for boolean return from e20r_pw_addon_get_user_payments and e20r_pw_addon_get_user_subscriptions
  2. BUG FIX: Returned Boolean when should return original User_Data structure

v4.1

  1. BUG FIX: Make sure the loaded E20R_Background_Process class has the is_queue_good() method
  2. ENHANCEMENT: Updated warning label for Timeout setting
  3. ENHANCEMENT: Added Global_Settings::render_select(), creates SELECT HTML element using settings array in add_settings_field() method. Supports the following settings: 'select_options', 'option_default', 'option_label', 'option_default_label', 'option_name'
  4. ENHANCEMENT: More dynamic Global_Setting::render_textbox() method; New settings available in array for add_settings_field() method. Supports the following settings; 'option_name', 'rows', 'cols', 'placeholder'
  5. ENHANCEMENT: Added new global setting; data_fetch_timeout = 23 (hours)
  6. ENHANCEMENT: Applied WP Code Style & reordered Global_Settings() class
  7. ENHANCEMENT: Added static Fetch_User_Data::should_continue() method
  8. ENHANCEMENT: Added static Fetch_User_Data::ending_fetch() method
  9. ENHANCEMENT: Updated PHPDoc Fetch_User_Data::block for get_local_user_data() method
  10. ENHANCEMENT: Applied WP Code Style to Fetch_User_Data() class
  11. ENHANCEMENT: Refactored Handle_Payments::task()
  12. ENHANCEMENT: Refactored Handle_Subscriptions::task()
  13. ENHANCEMENT: Added timeout handling for background User Data Fetch tasks (Subscriptions and Payments)
  14. ENHANCEMENT: Add filter to override configured timeout value: `e20r-payment-warning-fetch-timeout` (accepts 1 argument, an integer value for the number of hours the timeout is supposed to last. Can be negative)
  15. ENHANCEMENT: Add debug setting for the Timeout handler for background jobs: E20R_DEBUG_TIMEOUT (boolean constant). Uses the e20r-payment-warning-fetch-timeout filter to set value to -2 (always timed out)

v4.0

  1. ENHANCEMENT: Refactored send_message() method
  2. BUG FIX: Didn't process all activation activities consistently.
  3. BUG FIX: SQL error when column & index exists prior to upgrade
  4. BUG FIX: Possible DB error when upgrading table schema for plugin
  5. BUG FIX: Incorrect namespace for DB_Tables() class
  6. BUG FIX: DB_Tables() class had incorrect file name for autoloader
  7. BUG FIX: Would sometimes fail to run due to bad queue data
  8. BUG FIX: Didn't always find the Email Notices for this plugin to transmit/send
  9. BUG FIX: Failed to generate a complete message with substitution variables expanded
  10. BUG FIX: Didn't try to load message body when instantiating Email_Message() class
  11. BUG FIX: Reminder override (only used to debug) was too strict
  12. BUG FIX: Couldn't locate templates in some situations
  13. BUG FIX: Moved message content filters to Email_Message() class
  14. BUG FIX: payment_date substitution variable was incorrectly defined
  15. BUG FIX: Numerous updates to Reminder_Editor::configure_cpt_templates() method
  16. BUG FIX: Didn't load the Payment_Warning templates in a lot of circumstances
  17. BUG FIX: Didn't process deactivation logic
  18. BUG FIX: Load the expected module logic in all situations
  19. BUG FIX: Load modules dependent on licensing
  20. ENHANCEMENT: Add overrides when E20R_DEBUG_OVERRIDE constant is defined and true
  21. ENHANCEMENT: Refactored get_gateway_class_name() method in payment gateway modules
  22. ENHANCEMENT: Allow searching for a template by it's slug value (Reminder_Editor::find_template_by_slug())
  23. ENHANCEMENT: Special processing for previous_payment_date substitution variable in Reminder_Editor::load_filter_value() method
  24. ENHANCEMENT: Added previous_payment_date substitution variable (and help)
  25. ENHANCEMENT: Added cancel_link substitution variable (and help)
  26. ENHANCEMENT: Added cancel_link_login substitution variable (and help)
  27. ENHANCEMENT: More efficient processing of substitution variables
  28. ENHANCEMENT: Specifically handling email message body processing
  29. ENHANCEMENT: Move DB Table create/remove operation to own class (DB_Tables)
  30. ENHANCEMENT: Moved DB updates to own DB_Tables() class
  31. ENHANCEMENT: Enable message transmission override when running in Payment Warning Debug mode
  32. ENHANCEMENT: More efficient and consistent way of loading gateway modules

v3.8.3

  1. ENHANCEMENT: Remove unused class instantiation
  2. ENHANCEMENT: More precise debug logging in Fetch_User_Data class
  3. ENHANCEMENT: Include the type of sub-handler being processed in the Large_Request_Handler class
  4. ENHANCEMENT: Add support for version 2018-05-21 of the Stripe API
  5. ENHANCEMENT: Better debug info for the next_payment_date() module
  6. ENHANCEMENT: Add bug fixes from the Utilities submodule

v3.8.2

  1. ENHANCEMENT: Added the 2/28/2018 API version support for Stripe

v3.8.1

  1. ENHANCEMENT: Updated Utilities infrastructure to prepare for version 4.0 with GDPR support

v3.8

  1. ENHANCEMENT: Added has_licensed_gateway() method
  2. ENHANCEMENT: Added a standard gateway module
  3. ENHANCEMENT: Refactored settings to Global_Settings class
  4. ENHANCEMENT: Refactored WP Settings page for Payment Warnings to own class (Global_Settings)
  5. ENHANCEMENT: Made load_options a static function for Global_Settings
  6. ENHANCEMENT: Refactored membership plugin specific setting handlers
  7. ENHANCEMENT: Refactored Membership module level settings
  8. ENHANCEMENT: Fixed PHPDoc blocks for Global_Settings
  9. ENHANCEMENT: Add new Stripe API versions to list
  10. ENHANCEMENT: Be more discering about the hooks/filters being when not doing a CRON job or the user isn't logged in
  11. ENHANCEMENT: Limit activity when not logged in or executing the CRON jobs
  12. ENHANCEMENT: Only load certain actions if we're exclusively executing a CRON job
  13. ENHANCEMENT: Only load certain actions if we're exclusively loading the WP backend
  14. ENHANCEMENT: Updated Utilities module (now includes a custom is_admin() method and stub for Support)
  15. ENHANCEMENT: Always load the remote webhook/silent post/IPN handler functions for the plugin
  16. ENHANCEMENT: Removed unneeded DEBUG output
  17. ENHANCEMENT: Don't load hooks for Reminder Editor unless user is logged in or we're executing a Cron job
  18. BUG FIX: Fatal error in Payment_Reminder::load_schedule() method
  19. BUG FIX: Need to load Cron job handlers when in wp-admin
  20. BUG FIX: Changed all non-static calls to load_options() to Global_Settings::load_options()
  21. BUG FIX: Attempted to load unneded actions/filters in Global_Settings
  22. BUG FIX: Didn't use the Global_Settings::load_admin_settings() method for the admin_menu action

v3.7

  1. ENHANCEMENT: Implemented IPN handler for locally cached PayPal gateway data
  2. ENHANCEMENT: Added default Credit Card fields for PayPal IPN data
  3. ENHANCEMENT: Added new Stripe API version (2018-01-23)
  4. ENHANCEMENT: Only remove records if we're configured to do so
  5. BUG FIX: Didn't properly complete a license status check & post/send warnings to admin
  6. BUG FIX: Don't load webhook handler if there isn't one defined for the add-on

v3.6

  1. ENHANCEMENT/FIX: Disallow accessing Email Notices on front-end of site (as a post/page or an archive)
  2. ENHANCEMENT: Build debug and release kits for plugin

v3.5

  1. ENHANCEMENT: Add 'purge records from local DB when stale' option on Payment Warnings settings page
  2. ENHANCEMENT: Optionally trigger purge operation using 'e20r-payment-warning-clear-old-records' filter with the new setting
  3. ENHANCEMENT: Add admin configurable purge operation at end of Payments info download job
  4. ENHANCEMENT: Add admin configurable purge operation at end of Subscription info download job
  5. ENHANCEMENT: Clarify debug message in Handle_Messages::complete() method
  6. BUG FIX: Incorrect version number when 'e20rpw_db_version' option isn't set

v3.4

  1. BUG FIX: Incorrect class type for try/catch operations in Stripe.com gateway add-on
  2. BUG FIX: Incorrect class type for try/catch operations in Check gateway add-on

v3.3

  1. ENHANCEMENT: Allow outside party to configure the message types available with the 'e20r-payment-warning-message-types' filter
  2. ENHANCEMENT: Default option value for the e20r_pw_sent_* options should be array( $today => array())
  3. ENHANCEMENT: Message type text_value now matches the values from the e20rpw_warning_message_types filter
  4. ENHANCEMENT: Preserve up to 30 days of message sent to logs (when we sent the message to the specified email address)
  5. ENHANCEMENT: Added filter to allow configuration of number of days to preserve.
  6. ENHANCEMENT: Support sending admin notices for user configured message types
  7. BUG FIX: Message type text_value in Reminder_Editor::define_message_types() didn't match default `e20rpw_warning_message_types` filter values
  8. BUG FIX: Sent too many admin notices to admin

v3.2

  1. BUG FIX: Didn't disable the default PMPro expiration warning emails

v3.1

  1. ENHANCEMENT: Add .editorconfig
  2. ENHANCEMENT: Remove old Email Editor functionality and replace it with the Email Notice submodule
  3. ENHANCEMENT: Adding ability to change the action name for the background process
  4. ENHANCEMENT: Add CreditCard Expiration warning admin message (when applicable)
  5. ENHANCEMENT: Add data fetch for Credit Card Expiration warnings
  6. ENHANCEMENT: Added documentation for functions/variables in Large_Request_Handler
  7. ENHANCEMENT: Process multiple payment gateway data fetch operations at the same time
  8. ENHANCEMENT: Specify the number of messages sent to each member (warning messages) in the admin notice(s)
  9. ENHANCEMENT: Add 'load_schedule()' method to support Email Notice submodule
  10. ENHANCEMENT: Refactored and added PHPDoc modules for all methods
  11. ENHANCEMENT: Add all methods/capabilities needed to support Email Notice module & deactivate the old Template Editor functionality
  12. ENHANCEMENT: Allow processing for multiple payment gateways (in Handle_Subscriptions and Handle_Payments classes)
  13. ENHANCEMENT: Add support for processing payment & subscription data from multiple payment gateways at once in Payment Warning Add-on classes
  14. ENHANCEMENT: Add support for locking/processing multiple payment gateways at the same time
  15. ENHANCEMENT: Start using the Email Notice submodule to send/process/create warning messages
  16. ENHANCEMENT: Allow sending multiple different messages on the same day to the same user
  17. ENHANCEMENT: Add PHPDoc for all methods in Email_Message class
  18. ENHANCEMENT: Refactored class.handle-payments.php
  19. ENHANCEMENT: Refactored class.handle-subscriptions.php
  20. ENHANCEMENT: Subscription & Payment data collection didn't always work when having multiple active gateways!
  21. ENHANCEMENT: Update get_handler() method to support multiple different payment gateways and sending different message types.
  22. ENHANCEMENT: Load licensed modules
  23. ENHANCEMENT: Make the get_active_addons() method public
  24. ENHANCEMENT: Add section to let admin set message types to activate/send warnings for in Payment Warning Settings
  25. ENHANCEMENT: Add handlers for !!saved_cc_info!! and !!billing_address!! substitution variables for Payment Warnings
  26. ENHANCEMENT: Add get_payment_info() method (generated list of credit card info from payment gateway)
  27. ENHANCEMENT: Add format_billing_info() method (generates and formats the PMPro billing address on file for a user)
  28. ENHANCEMENT: Add PHPDoc for some functions/methods
  29. ENHANCEMENT: Add required implementations for custom_post_column() and set_custom_edit_columns() method (adds message type label in edit.php list for the defined Email Notice).
  30. ENHANCEMENT: Renamed !!billing_info!! substitution variable to !!billing_address!!
  31. ENHANCEMENT: Moved handlers for billing_address and saved_cc_info substitution variables to Email_Message class
  32. ENHANCEMENT: Add PHPDoc blocks for methods in User_Data class
  33. ENHANCEMENT: Add company_name setting
  34. ENHANCEMENT: Configure the footer of the email notices using Payment Warning settings & filters
  35. ENHANCEMENT: Add company_address option to Payment Warnings Settings page
  36. ENHANCEMENT: Add render_textarea() method for Settings API
  37. ENHANCEMENT: Including PayPal Merchant API library
  38. ENHANCEMENT: Removing unused method from Email_Message() class
  39. ENHANCEMENT: Refactor maybe_extract_class_name() method (now in parent gateway class)
  40. ENHANCEMENT: Add 'gateway_module' column support to database table
  41. ENHANCEMENT: Refactor filter/action hook loading to parent class for all add-ons
  42. ENHANCEMENT: Make gateway name check more fuzzy in verify_gateway_processor() method
  43. ENHANCEMENT: Make load_webhook_handler() method generic
  44. ENHANCEMENT: Refactor maybe_extract_class_name() method and move to parent class for all add-ons
  45. ENHANCEMENT: Improved PHPDoc blocks for methods & variables in E20R_PW_Gateway_Addon class
  46. ENHANCEMENT: Specify the add-on module being processed in debug messages where it makes sense
  47. ENHANCEMENT: Renamed from set_active_non_subscription_members() method to get_active_non_subscription_members()
  48. ENHANCEMENT: Renamed set_active_subscription_members() to get_active_subscription_members()
  49. ENHANCEMENT: Cache user records by type and payment warning add-on module
  50. ENHANCEMENT: Added gateway_addon_check() method. Returns true if add-on name and payment gateway module matches
  51. ENHANCEMENT: Clear all of the per add-on member data caches
  52. ENHANCEMENT: When running in DEBUG mode, clear the cache for members every time
  53. ENHANCEMENT: Allow Stripe add-on module to run in parallel with other payment warning add-on modules
  54. ENHANCEMENT: Assign the type of add-on used to fetch an upstream user record in the local DB
  55. ENHANCEMENT: Stripe specific get_gateway_class_name() method
  56. ENHANCEMENT: Moved maybe_extract_class_name() method to parent class
  57. ENHANCEMENT: Load standard hooks for this gateway in parent class
  58. ENHANCEMENT: Improved documentation of Stripe_Gateway_Addon class
  59. ENHANCEMENT: Various minor updates (doc & variable cast) to PayPal_Gateway_Addon class
  60. ENHANCEMENT: Implement PayPal API calls with the PayPal Merchants API library
  61. ENHANCEMENT: Add upstream fetch of subscription data for PayPal
  62. ENHANCEMENT: Add upstream fetch of payment/transaction data for PayPal
  63. ENHANCEMENT: Convert PayPal transaction timestamps to local (server local) timestamps
  64. ENHANCEMENT: Add stub for handling relevant PayPal IPN messages
  65. ENHANCEMENT: Allow admin to configure the PayPal service they use with PMPro
  66. ENHANCEMENT: Update the Example_Gateway_Addon with expected/required method stubs & documentation
  67. ENHANCEMENT: Rename Example_Addon to Example_Gateway_Addon to match naming structure of other implemented add-ons
  68. ENHANCEMENT: Various required updates (required methods etc) for the incomplete Check Payment Gateway add-on
  69. ENHANCEMENT: Refactor Cron_Handler class
  70. ENHANCEMENT: Load data from all active and licensed payment gateway modules at once
  71. ENHANCEMENT: Add @PHPDoc blocks for more variables in User_Data class
  72. ENHANCEMENT: Add @PHPDoc blocks for more methods in User_Data class
  73. ENHANCEMENT: Link User_Data class to the add-on being processed
  74. ENHANCEMENT: Use boolean value to identify whether a local record has been loaded for the User_Data instance
  75. ENHANCEMENT: Add public has_record_saved() method
  76. ENHANCEMENT: Updated variable documentation (PHPDoc) for Handle_Subscriptions class
  77. ENHANCEMENT: Set/get add-on using the Handle_Subscriptions class
  78. ENHANCEMENT: Updated variable documentation (PHPDoc) for Handle_Payments class
  79. ENHANCEMENT: Set/get add-on using the Handle_Payments class
  80. ENHANCEMENT: Limit upstream data fetch operation to the add-on instantiating the Handle_Payments class
  81. ENHANCEMENT: Add Upgrade() class/methods for new DB version
  82. ENHANCEMENT: Bump required DB version number to support new table column for add-on type
  83. ENHANCEMENT: Renamed e20r_pw_addon_add_remote_call_handler action hook to e20r_pw_addon_remote_call_handler
  84. ENHANCEMENT: Prevent directory listing of logs directory (for Gateway library debug logs)
  85. ENHANCEMENT: Prevent web server access to *.log files in logs/ directory
  86. ENHANCEMENT/FIX: Configure Payment_Warning as the module using the Send_Email class
  87. ENHANCEMENT/FIX: Don't show 'no records found' warning message for inactive add-on modules
  88. BUG FIX: Didn't load the correct pmpro_save_membership_level action hook
  89. BUG FIX: Don't trigger add-on check twice in load_addon_settings()
  90. BUG FIX: Would try to process empty $user_data in task() method for Handle_Payments class
  91. BUG FIX: Would try to process empty $user_data in task() method for Handle_Subscriptions class
  92. BUG FIX: Skipped user if there wasn't a pre-existing record in the local DB
  93. BUG FIX: Didn't exclude records for other payment gateway modules
  94. BUG FIX: Would sometimes double the records to process in the get_all_user_records() method
  95. BUG FIX: Only display Payment Warning message types for payment warning messages
  96. BUG FIX: Don't internationalize date for payment in Stripe_Gateway_Addon class
  97. BUG FIX: Removed e20r_pw_message_substitution_variables filter
  98. BUG FIX: Didn't trigger e20r-email-notice-custom-variable-filter handlers for billing address & Credit Card data
  99. BUG FIX: PHP Warning message in Email_Message class
  100. BUG FIX: Typo in the !!saved_cc_info!! substitution variable handler
  101. BUG FIX: Didn't clear the Active Addon cache when saving the Options page
  102. BUG FIX: Incorrectly assumed the $e20r_pw_addons (array) list always contains the list of active add-ons
  103. BUG FIX: Would cache an empty list of active add-ons (if they existed)
  104. BUG FIX: Update get_reminder_type() to handle new Email Notice submodule
  105. BUG FIX: Didn't use the supplied subscription ID
  106. BUG FIX: Didn't properly handle fetching data from multiple active payment gateways
  107. BUG FIX: Didn't dispatch the Payment Reminder queues properly
  108. BUG FIX: Didn't always load/locate the proper queue handler for messages
  109. BUG FIX: Didn't send all of the messages in the defined list of messages for that warning type
  110. BUG FIX: Didn't load Credit Card user data correctly
  111. BUG FIX: Didn't always process all types of warning messages
  112. BUG FIX: Used localized date
  113. BUG FIX: Only include active payment profiles for Credit Card Expiration Warnings

v2.0

  1. BUG FIX: Update Email Editor sources
  2. BUG FIX: Refresh Utilities submodule to fix licensing issues
  3. ENHANCEMENT: Framework for Check Gateway support

v1.9.16

  1. ENHANCEMENT: Security update

v1.9.15

  1. ENHANCEMENT: Move E20R_Async_Request class to Utilities submodule
  2. ENHANCEMENT: Move E20R_Background_Process class to Utilities submodule
  3. ENHANCEMENT: Remove unused namespaces from Fetch_User_Data class
  4. ENHANCEMENT: Rename PayPal Gateway add-on module
  5. ENHANCEMENT: Add OAuth2 Client Secret and Key settings to PayPal add-on settings
  6. ENHANCEMENT: Move the PayPal REST API SDK library to libraries/
  7. ENHANCEMENT: Upgraded Utilities submodule to include the Background processing library
  8. BUG FIX: Didn't include Handle_Messages in move of Background Processing to Utilities module
  9. BUG FIX: Didn't start the background job when we expected it to
  10. BUG FIX: Fatal error if unexpected module/class file is present in add-on directory
  11. BUG FIX: Didn't handle Stripe API errors well
  12. BUG FIX: Report error if no transaction ID is found for Stripe charge/invoice

v1.9.14

  1. BUG FIX: Didn't always load active recurring payment member data
  2. BUG FIX: Didn't load previously recurring membership records that are now expiring
  3. BUG FIX: Should always set status to 'recurring' in set_active_subscription_members()
  4. BUG FIX: Handle situations where user has a recurring level and we have to auto-detect
  5. ENHANCEMENT: Simplified config of non-recurring payment status (always active based on what PMPro believes)
  6. ENHANCEMENT: Simplified config of status (always active based on what PMPro believes)
  7. ENHANCEMENT: Reduce debug logging levels

v1.9.13

  1. BUG FIX: Would sometimes double up on the entry count in the queue

v1.9.12

  1. ENHANCEMENT/FIX: Clear old temporary data/keys/values from options table

v1.9.11

  1. REFACTOR: Moved monitoring for background data collection job to fetch_gateway_payment_info action
  2. BUG FIX: Moved monitoring cron job scheduler to Cron_Handler class

v1.9.10

  1. ENHANCEMENT: Faster completion of scheduled job checks
  2. ENHANCEMENT: Also add monitoring if the mutex is set
  3. BUG FIX: Delay first execution of monitoring action

v1.9.9

  1. ENHANCEMENT: Add monitoring for background data collection job
  2. ENHANCEMENT: Clear mutex (lock) options (if they exists) once the background jobs are done/have completed
  3. ENHANCEMENT: Added Cron schedule for 30 minute repeating check of background data collection status

v1.9.8

  1. BUG FIX: Didn't trigger remote data update
  2. ENHANCEMENT: Updated Utilities/Licensing modules

v1.9.7

  1. ENHANCEMENT: Added array_isnt_empty() function which returns true if the array contains values (can still fail an '! empty()' call)
  2. ENHANCEMENT: Simplify placeholder text for license input
  3. BUG FIX: Problems when activating or managing multiple licenses from different plugin entities at the same time.
  4. BUG FIX: Extra slashes in Subject
  5. BUG FIX: Support new argument for e20r-license-add-new-licenses filter
  6. BUG FIX: Would fail to save/activate valid licenses in certain situations

v1.9.6

  1. BUG FIX: Didn't always appear to clear job from queue on successful save during payment processing
  2. BUG FIX: Would sometimes double up the times it processed a non-recurring payment record
  3. BUG FIX: Would load credit cards in an unexpected format causing double-save operations
  4. BUG FIX: Doubly certain we won't attempt to save the CC info twice
  5. BUG FIX: Didn't return the correct/a membership level name
  6. BUG FIX: Didn't use a consistent user_payment_status value ('active')
  7. BUG FIX: Variable substitution for messages providing incorrect information
  8. BUG FIX: Would sometimes process same batch twice
  9. BUG FIX: Queue lock time variable wasn't initialized anywhere
  10. BUG FIX: Would load too many templates to process messages for
  11. BUG FIX: Incorrect namespace for Email_Message class action handlers
  12. ENHANCEMENT: Update debug enabled AJAX handler
  13. ENHANCEMENT: Load data from local DB, _not_ upstream, when processing messages
  14. ENHANCEMENT: Using new names for configure_remote_subscription_data_fetch() and configure_remote_payment_data_fetch() in Cron_Handler
  15. ENHANCEMENT: Renamed get_remote_subscription_data() to configure_remote_subscription_data_fetch()
  16. ENHANCEMENT: Renamed get_remote_payment_data() to configure_remote_payment_data_fetch()
  17. ENHANCEMENT: Set cache timeout for active nonrecurring subscription data to 12 hours
  18. ENHANCEMENT: Set cache duration to 12 hours for active_subscr_users
  19. ENHANCEMENT: Set cache duration to 12 hours for all_active_users
  20. ENHANCEMENT: Set cache duration to last 4 hours for current_{$type} (type specific) current records
  21. ENHANCEMENT: Use local DB lookup (e20rpw_user_info table) for reminder/expiration notices
  22. ENHANCEMENT: Refactor and move clear_queue() to parent class (E20R_Background_Process)
  23. ENHANCEMENT: Refreshed Utilities tools/classes
  24. ENHANCEMENT: Added fixes and updates from EWWW Image Optimizer code to background processing classes
  25. ENHANCEMENT: Clear the message queue for the messages background handler
  26. ENHANCEMENT: Refactor and move clear_queue() to parent class (E20R_Background_Process)
  27. ENHANCEMENT: Transitioning to Utlities submodule (github) and License/Client_License classes for addon gateways
  28. ENHANCEMENT: More descriptive placeholder for new license input
  29. ENHANCEMENT: Uses static Email_Message::default_variable_help() function
  30. ENHANCEMENT: Add PHPDoc for add_placeholder_variables()
  31. ENHANCEMENT: Renamed get_remote_subscription_data() to configure_remote_subscription_data_fetch()
  32. ENHANCEMENT: Renamed get_remote_payment_data() to configure_remote_payment_data_fetch()
  33. ENHANCEMENT: Use configured date format for membership end date in email notices
  34. ENHANCEMENT: Apply variable substitution via filter for template(s)/message type(s)
  35. ENHANCEMENT: Made replace_variable_text() function static & a filter hook
  36. ENHANCEMENT: Added e20rpw_variable_help filter to result of default_variable_help()
  37. ENHANCEMENT: Add get_active_queue() method
  38. ENHANCEMENT: Account for differences between single site & multisite columns in DB
  39. ENHANCEMENT: Add error checking for unlock_process()
  40. ENHANCEMENT: Add clear_queue() to core (parent) function

v1.9.5

  1. BUG FIX: Only load active and non-recurring billing members
  2. BUG FIX: Load all recurring payment records that are active (and w/o enddate) or have an enddate in the futur

v1.9.4

  1. BUG FIX: Use appropriate autoload value for update_option()
  2. BUG FIX: Didn't update the e20r_pw_next_gateway_check option value
  3. BUG FIX: Return record list from set_active_subscription_members()
  4. BUG FIX: Return record list from set_all_active_members()
  5. BUG FIX: Would return whatever records were previously loaded if incorrect type was given
  6. BUG FIX: Prevented from saving end of membership date due to typo in variable name
  7. BUG FIX: Typo in reminder_type supplied for non-recurring memberships
  8. BUG FIX: Didn't force the reminder type (recurring) for the user data when processing
  9. BUG FIX: Didn't force the reminder type (expiration) for the user data when processing
  10. BUG FIX: Returned boolean value when looking for email address for recipients of message(s)
  11. ENHANCEMENT: Added error checking in get_remote_payment_data() for get_all_user_records() return values
  12. ENHANCEMENT: No longer declaring the type of data to save (recurring/payment)
  13. ENHANCEMENT: No longer need to specify type of record being saved in save_to_db()
  14. ENHANCEMENT: Preventing get_remote_subscription_data() from running more than once at a time
  15. ENHANCEMENT: Preventing get_remote_payment_data() from running more than once at a time
  16. ENHANCEMENT: Remove subscription data fetch lock w/error checking & messages to dashboard
  17. ENHANCEMENT: Remove non-recurring payment data fetch lock w/error checking & messages to dashboard

v1.9.3

  1. BUG FIX: Didn't update the version number for the DB after successfully upgraded
  2. ENHANCEMENT: Adding DB v3 update

v1.9.2

  1. BUG FIX: Didn't use the default method - get_all_user_records() - when loading member/user data
  2. BUG FIX: Explicitly instantiate User_Data() class for expiration or recurring billing info when loading
  3. BUG FIX: Didn't always load the required user records in get_all_user_records() method
  4. BUG FIX: Make default reminder processing option be 'ccexpiration' (Credit Cards) since all other options explicitly set their data type (recurring, expiring)
  5. BUG FIX: Make default user record type option be 'ccexpiration' (Credit Cards) since all other options explicitly set their data type (recurring, expiring)
  6. BUG FIX: Didn't always set the level ID we should expect for the member
  7. BUG FIX: DB uses MySQL date string, got timestamp from membership level setting (seconds since epoch)
  8. BUG FIX: Didn't set the correct end of (active) membership date for non-recurring members
  9. BUG FIX: Didn't return error if date is bad or empty in set_end_of_membership_date()
  10. BUG FIX: Should process default send email action before anything that could modify it
  11. BUG FIX: Would fail to send notifications for non-recurring members
  12. BUG FIX: Wouldn't respect skip admin notice setting
  13. ENHANCEMENT/FIX: Add end of membership date if subscription plan is cancelled
  14. ENHANCEMENT: Use local membership enddate if no date is supplied to set_end_of_membership_date() method
  15. ENHANCEMENT: Remove any instance of the charge or subscription record data
  16. ENHANCEMENT: Force the reminder_type based on whether the membership (for the user) is recurring or not
  17. ENHANCEMENT: More debug logging and status checks when clearing the background job queue for payment handler
  18. ENHANCEMENT: Name add_local_order() more appropriately for something only processing subscriptions (add_local_subscription_order())

v1.9.1

  1. BUG FIX: Didn't use the correct table name when updating the DB

v1.9.0

  1. BUG FIX: Fixed version numbering for DB tables
  2. BUG FIX: Namespace fix for Licensing classes
  3. ENHANCEMENT/FIX: Activation SQL for database table(s)
  4. ENHANCEMENT/FIX: Update namespace for new Utilities submodule & relocation to Tools NS for Cron & Background job classes
  5. ENHANCEMENT: Use Utilities as submodule
  6. ENHANCEMENT: Move cron & background handler code to Tools/
  7. ENHANCEMENT: Move Email Message handler code to Tools/
  8. ENHANCEMENT: Move utilities (Utilities & Cache handling) classes to own submodule
  9. ENHANCEMENT: Add option for info banner on completion of message operation
  10. ENHANCEMENT: Add database upgrade infrastructure
  11. ENHANCEMENT: Add Database Upgrade functionality
  12. ENHANCEMENT: Use licensing/utilities submodule

v1.8.9

  1. BUG FIX: Didn't send message for users in certain situations
  2. BUG FIX: PHP Warning message fixed in send_admin_notice() method
  3. BUG FIX: Didn't return actual value (implicit false actually retuned)
  4. ENHANCEMENT: Code style improvements

v1.8.8

  1. BUG FIX: Typo in help text for saved credit card info
  2. ENHANCEMENT: Don't send email notice to admin if no messages of the type was sent
  3. ENHANCEMENT: Add filter to let notice to admin get sent if no messages of the type was sent ('e20r-payment-warning-skip-admin-message-if-none-sent')

v1.8.6

  1. BUG FIX: Didn't check if admin had enabled payment & subscription data download

v1.8.5

  1. BUG FIX: Didn't run email notice transmission within the first day of activation

v1.8.4

  1. BUG FIX: Didn't run data collection within the first day of activation

v1.8.3

  1. BUG FIX: Database table creation failure

v1.8.2

  1. BUG FIX: Invalid format array caused save errors for user data
  2. BUG FIX: Didn't save the correct modified timestamp
  3. BUG FIX: Incorrect column definition for e20rpw_user_info.modified
  4. BUG FIX: Removed credit card admin notice (for now)
  5. ENHANCEMENT: Added index for modified timestamp

v1.8.1

  1. BUG FIX: Didn't render the Fetch from remote Payment Gateways setting

v1.8.0

  1. BUG FIX: Would trigger upstream gateway data fetch for any message cron job
  2. ENHANCEMENT/FIX: Synchronize name of Background Processing class constructor variables ($handle)
  3. ENHANCEMENT/FIX: Only process Payment & Subscription data from remote payment gateways when explicitly permitted
  4. ENHANCEMENT: Explicit control over background processing handles
  5. ENHANCEMENT: Remove modified column data (want to use trigger to update timestamp)
  6. ENHANCEMENT: Added debug to validate type of user record operation (insert or update)
  7. ENHANCEMENT: Added E20R_DEBUG_OVERRIDE constant to force the gateway download delays in the schedule to be overridden when in WP_DEBUG (define())

v1.7.2

  1. BUG FIX: Didn't update subscription info in local DB

v1.7.1

  1. BUG FIX: Didn't save the current timestamp when modifying user's record
  2. BUG FIX: Didn't use the subscription of charge ID to identify current/pre-exisiting record in DB
  3. BUG FIX: Use default & ON UPDATE trigger value in DB for modified column

v1.7.0

  1. BUG FIX: Don't exit if there's no current post ID when loading media
  2. ENHANCEMENT/FIX: Clean up any weird template settings
  3. ENHANCEMENT: Added default substitution variables w/help info
  4. ENHANCEMENT: Add substitution variable help on Template Editor page

v1.6.6

  1. BUG FIX: Sent duplicate notices to the same user

v1.6.5

  1. BUG FIX: Didn't extract the correct credit card info for the Payment Details

v1.6.4

  1. BUG FIX: Didn't always calculate the right number of sent message notifications
  2. BUG FIX: Didn't send notification email for user

v1.6.3

  1. BUG FIX: Didn't clear the charge/subscription data
  2. ENHANCEMENT/FIX: Update record based on subscription or charge ID (not MemberOrder ID)
  3. ENHANCEMENT: Better debug logging when clearing a scheduled event (on completion)
  4. ENHANCEMENT: Upgrading Utilities class to v1.9
  5. ENHANCEMENT: Use a membership agnostic option for fetching membership level specific data
  6. ENHANCEMENT: Simplify debug output during license check loopback prevention

v1.6.2

  1. BUG FIX: Cleaned up CSS file for plugin (not used)
  2. BUG FIX: Didn't let PMPro Webhook actions to trigger for Stripe.com
  3. BUG FIX: Empty Javascript & Style load caused 404 error in wp-admin backend
  4. ENHANCEMENT/FIX: Use static constant (plugin_slug)
  5. ENHANCEMENT: Refactored admin_enqueue_script()
  6. ENHANCEMENT: Added webhook_handler() method to PayPal Express gateway add-on (stub)
  7. ENHANCEMENT: Added PHPDoc for webhook_hander method()

v1.6.1

  1. ENHANCEMENT/FIX: load_webhook_handler() checks that add-on is active before loading the AJAX handler(s)
  2. ENHANCEMENT: Moved logic for load_webhook_handler() to E20R_PW_Gateway_Addon class
  3. ENHANCEMENT: Handling most of the heavy lifting for the load_webhook_handler() method in the E20R_PW_Gateway_Addon class (Stripe.com add-on)
  4. ENHANCEMENT: Handling most of the heavy lifting for the load_webhook_handler() method in the E20R_PW_Gateway_Addon class (PayPal Express add-on)
  5. ENHANCEMENT: Added 'handler_name' attribute to global add-on settings array ($e20r_pw_addons) for PayPal Express addon
  6. ENHANCEMENT: Added 'handler_name' attribute to global add-on settings array ($e20r_pw_addons) for Stripe.com addon
  7. ENHANCEMENT: Added new API version to version array for Stripe.com

v1.6

  1. BUG FIX: Would sometimes timeout during add-on/gateway activation
  2. BUG FIX: Didn't consistently save the license status for the add-on being processed
  3. BUG FIX: Used the wrong stub filter for the PayPal Express Gateway class
  4. ENHANCEMENT/FIX: An add-on is only active if it's both licenseed and the is_active status (checkbox) is checked
  5. ENHANCEMENT/FIX: Update licensing class to v1.4 - Includes fixes for invalid product key provided, etc
  6. ENHANCEMENT/FIX: No longer checking license to enable the Template editor
  7. ENHANCEMENT/FIX: Renamed the E20R_Stripe_Gateway_Addon class to Stripe_Gateway_Addon
  8. ENHANCEMENT: Fix filter name: e20r_pw_addon_stripe_gateway_addon_name
  9. ENHANCEMENT: Use the global settings when checking the status for the Stripe_Gateway_Addon activation logic
  10. ENHANCEMENT: Simplify restoring values for is_active and active_license in the Stripe_Gateway_Addon config array
  11. ENHANCEMENT: Rename 'add-ons' to the more descriptive 'Gateways' and fix the descriptive text for the options
  12. ENHANCEMENT: Remove redundant 'Gateway' from label

v1.5.4

  1. BUG FIX: DeBUG FIX: Selected the wrong template type for Recurring Payment warning (and credit card expiration warning)

v1.5.3

  1. BUG FIX: Deactivate PayPal Express completely

v1.5.2

  1. BUG FIX: Didn't always confirm that jobs were scheduled
  2. ENHANCEMENT/FIX: Make plugin activation/deactivation functions static

v1.5.1

  1. BUG FIX: Included escaped text in email body
  2. BUG FIX: Would sometimes send multiple instances of same message to same user on same day
  3. BUG FIX: Didn't correctly handle expiration and credit card expiration messages
  4. BUG FIX: Uses has_active_subscription variable to determine staus for user record
  5. BUG FIX: Didn't always send reminder message for non-recurring message types
  6. BUG FIX: Set correct access for class parameters
  7. BUG FIX: Update action hook handler for e20r_pw_addon_gateway_subscr_statuses filter in stripe gateway class
  8. ENHANCEMENT/FIX: Incorrect template type for Credit Card Expiration message
  9. ENHANCEMENT/FIX: Use dedicated template type setting for Credit Card expiration notice
  10. ENHANCEMENT/FIX: Moved subscription mismatch handler to core gateway handler class
  11. ENHANCEMENT/FIX: Moved email address mismatch handler to core gateway handler class
  12. ENHANCEMENT/FIX: Add abstract load_webhook_handler() method to core gateway handler class
  13. ENHANCEMENT/FIX: Add abstract get_local_customer_id() method to core gateway handler class
  14. ENHANCEMENT: Load all active members to active_members variable (set_all_active_members() method)
  15. ENHANCEMENT: Added cache clear for new all_active_members cache
  16. ENHANCEMENT: No longer stores subscription or charge data in local db tables
  17. ENHANCEMENT: Remove debug info from logs
  18. ENHANCEMENT: Renamed should_send_payment_reminder() method to should_send_reminder_message()
  19. ENHANCEMENT: Move save_subscription_mismatch action handler to core class
  20. ENHANCEMENT: Rename valid_stripe_subscription_statuses() to valid_gateway_subscription_statuses()
  21. ENHANCEMENT: Stop saving transaction data to local DB (subscriptions and charges)
  22. ENHANCEMENT: Only used the subscription ID in the e20r_pw_addon_save_subscription_mismatch action hooks
  23. ENHANCEMENT: Add initial framework for PayPal Express payment gateway add-on
  24. ENHANCEMENT: Remove subscription list and charge list from local DB storage
  25. ENHANCEMENT: Add ccexpiration as a valid reminder type
  26. ENHANCEMENT: Add libraries directory to build script
  27. ENHANCEMENT: Minor updates to Example add-on class stub
  28. ENHANCEMENT: Add REST API library for PayPal/PayPal Express

v1.5

  1. ENHANCEMENT: Add private next_scheduled() method to calculate the next timestamp for a Cron job in Cron_Handler
  2. ENHANCEMENT: Use next_scheduled() method to provide timestamp for when Cron jobs start in Cron_Handler
  3. ENHANCEMENT: Added updated_membership_level() method to Payment_Warning Class
  4. ENHANCEMENT: Added update_discount_codes() method to Payment_Warning Class
  5. ENHANCEMENT: Added get_util_cache_key() method to Utilities class
  6. ENHANCEMENT/FIX: Dropping cache values for Cron schedules after discount code or level updates
  7. BUG FIX: Displayed extra slash characters in message body
  8. BUG FIX: Displayed extra slash charaters in message title/subject
  9. BUG FIX: Didn't update the next scheduled option for the upstream gateway data collection operation

v1.4.4

  1. BUG FIX: Didn't always identify the right user list for the Subject field

v1.4.3

  1. BUG FIX: Didn't expand the user list properly for the notification message(s)

v1.4.2

  1. BUG FIX: Didn't always allow cron job(s) to execute

v1.4.1

  1. BUG FIX: Typo in e20r_payment_warning_schedule_override filter name
  2. ENHANCEMENT: Add fetch_remote_info test method & override scheduled run info during DEBUG

v1.4

  1. BUG FIX: Didn't set translation/language domain on init/startup of plugin
  2. BUG FIX: Didn't always apply first-run logic on activation of plugin
  3. BUG FIX: Attempted to run email notice cron jobs on activation
  4. BUG FIX: Didn't schedule the background cron actions
  5. BUG FIX: Clear all existing user entries in active_members member variable
  6. BUG FIX: Would include too many users when loading active non_subscription based members/users
  7. BUG FIX: Would include too many users when loading active subscription based members/users
  8. BUG FIX: Didn't dispatch request handler for large number(s) of records to process
  9. ENHANCEMENT: Reduce memory footprint during load of User_Data class
  10. ENHANCEMENT: Allow coder to specify whether to load data or not in maybe_load_from_db() method
  11. ENHANCEMENT: Allow override of recurring membership status (via variable - boolean)
  12. ENHANCEMENT: Reduced memory footprint in initial load of user records (deferred data load to task hander).
  13. ENHANCEMENT: Added get_action() method to Handle_Payments and Handle_Subscriptions classes
  14. ENHANCEMENT: Don't run gateway check immediately on plugin activation
  15. ENHANCEMENT: Allow override from manual initiation of plugin CRON job(s)
  16. ENHANCEMENT: Removed unneeded logging
  17. ENHANCEMENT: Rename get_active_*_members() methods to set_active_*_members()
  18. ENHANCEMENT: Ignore orders that are made with a different gateway environment (live|sandbox) than the currently configured PMPro Payment Gateway key(s)/settings
  19. ENHANCEMENT: Setting membership status manually
  20. ENHANCEMENT: Clean up memory
  21. ENHANCEMENT: Assign all active user records to active_members variable (avoid duplication)
  22. ENHANCEMENT: Renamed handler array variable to task_handler
  23. ENHANCEMENT: Improved debug logging for Subscription handler task() method
  24. ENHANCEMENT: Added get_action() method

v1.3.1

  1. BUG FIX: Would sometimes ignore settings for emailing warnings during scheduled events
  2. BUG FIX: Wouldn't honor the delay frequency (reduce load on server
  3. BUG FIX: Would stomp it's own large request handling for payments & subscriptions
  4. ENHANCEMENT: Allow WP Crontrol plugin to manually override data fetch
  5. ENHANCEMENT: Use different instances of the large request handler for subscriptions and payments
  6. ENHANCEMENT: Use string identifier for the action name in Large_Request_Handler

v1.3

  1. ENHANCEMENT: Update copyright notice (year)
  2. ENHANCEMENT: Improved granularity for error/debug logging
  3. ENHANCEMENT: Fetch background process handler(s) with Payment_Warnings::get_handler() method
  4. ENHANCEMENT: Add get_handler() method to return the specified request handler
  5. ENHANCEMENT: Add private variables for the request handlers to Payment_Warnings class
  6. ENHANCEMENT: Use Payment_Warnings::get_handler() to fetch message handler
  7. ENHANCEMENT: More descriptive variable name in constructor for Large_Request_Handler class
  8. ENHANCEMENT/FIX: Move the required handler instantiations to the main Payment_Warnings class
  9. ENHANCEMENT/FIX: Move all request based processing (background processing) to main Payment_Warnings class
  10. BUG FIX: Didn't always handle message sending correctly
  11. BUG FIX: Clean up schedule handling in E20R_Background_Process class
  12. BUG FIX: Didn't always dispatch large requests

v1.2

  1. BUG FIX: Didn't disable the default PMPro actions for expiration warnings, credit card expiration warnings and recurring payment notices if the equivalent functionality is active in this plugin
  2. ENHANCEMENT: Add placeholder to allow adding PMPro Template Editor messages if present

v1.1

  1. ENHANCEMENT: Add ability to process large number of users across multiple requests
  2. ENHANCEMENT: Process at most 250 user data records at a time
  3. ENHANCEMENT: Add filter to let admin set # of requests to process per dispatch (TODO: Make this a global setting)
  4. ENHANCEMENT: Only trigger processing for subscriptions (payment warning data) if enabled
  5. ENHANCEMENT: Use passed background processing handler class from received data in task() method
  6. ENHANCEMENT: Removed unneeded debug logging from Background Processing class
  7. ENHANCEMENT: Disable debug/test actions
  8. ENHANCEMENT: Add readme.md documentation file for Github repo
  9. ENHANCEMENT: Include readme.md file in build
  10. BUG FIX: Would display incorrect debug message when plugin was licensed
  11. BUG FIX: Attempted to save and dispatch background job during data loop in task() method
  12. BUG FIX: Didn't dispatch large request handler properly (Now class is instantiated during/before `plugins_loaded` action hook to ensure proper execution)
  13. BUG FIX: Attempted to save and dispatch large request handler data during loop
  14. BUG FIX: Only process subscription data in get_remote_subscription_data() method
  15. BUG FIX: Only process payment data in get_remote_payment_data() method
  16. BUG FIX: Didn't include the amount_from_currency() method for Stripe specific amount formatting
", + "changelog": "

v4.4

  1. ENHANCEMENT: Updated text in ccexpiring.html template
  2. ENHANCEMENT: Add Credit Cart Expiration Message test hook
  3. BUG FIX: No need to send out credit card expiration warning for non-recurring users
  4. BUG FIX: Incorrect default message type to process when processing reminders
  5. BUG FIX: Force values for $target_template and $template_type
  6. BUG FIX: Didn't trigger error when $target_template or $template_type were empty
  7. BUG FIX: Searching for email notice type returned too many results
  8. BUG FIX: Running Reminder message handler incorrectly included too many templates
  9. BUG FIX: Didn't load test hooks when configured

v4.3

  1. ENHANCEMENT: Simplify the add-on specific option names and upgrade the database
  2. ENHANCEMENT: Use new option names for add-ons and simplify add-on configuration
  3. ENHANCEMENT: Trigger change of add-on option names when loading settings (if applicable)
  4. ENHANCEMENT: Renamed render_addon_entry() method to render_addon_checkbox()
  5. ENHANCEMENT: Add label to indicate payment gateway module licensing status when activated
  6. ENHANCEMENT: No need to double-check when the decision had already been made to send the message
  7. ENHANCEMENT: Send admin email every 7 days when there are license warnings (expiring or expired license(s))
  8. ENHANCEMENT: Added PHPDoc blocks for all class variables in Payment_Reminder()
  9. ENHANCEMENT: Added PHPDoc blocks for load_hooks() method in Payment_Reminder()
  10. ENHANCEMENT: More debug logging for User_Data::save_to_db() function
  11. BUG FIX: Load the payment reminder message filters on init (decides whether to send the message, etc)
  12. BUG FIX: Don't return user_data before processing payment/subscription because email address changed
  13. BUG FIX: Check and set license status when plugin is being deactivated
  14. BUG FIX: Didn't check state of license when triggering toggle_addon handler
  15. BUG FIX: For an add-on to be active, it also needed to be licensed (wrong behavior)
  16. BUG FIX: For an add-on to have status 'active', it needs to be both active and licensed
  17. BUG FIX: Didn't always trigger Payment_Reminder::should_send_reminder_message()
  18. BUG FIX: Didn't trigger the 'e20r-payment-warning-send-email' filter which triggered date check of message(s)

v4.2

  1. BUG FIX: Didn't check for boolean return from e20r_pw_addon_get_user_payments and e20r_pw_addon_get_user_subscriptions
  2. BUG FIX: Returned Boolean when should return original User_Data structure

v4.1

  1. BUG FIX: Make sure the loaded E20R_Background_Process class has the is_queue_good() method
  2. ENHANCEMENT: Updated warning label for Timeout setting
  3. ENHANCEMENT: Added Global_Settings::render_select(), creates SELECT HTML element using settings array in add_settings_field() method. Supports the following settings: 'select_options', 'option_default', 'option_label', 'option_default_label', 'option_name'
  4. ENHANCEMENT: More dynamic Global_Setting::render_textbox() method; New settings available in array for add_settings_field() method. Supports the following settings; 'option_name', 'rows', 'cols', 'placeholder'
  5. ENHANCEMENT: Added new global setting; data_fetch_timeout = 23 (hours)
  6. ENHANCEMENT: Applied WP Code Style & reordered Global_Settings() class
  7. ENHANCEMENT: Added static Fetch_User_Data::should_continue() method
  8. ENHANCEMENT: Added static Fetch_User_Data::ending_fetch() method
  9. ENHANCEMENT: Updated PHPDoc Fetch_User_Data::block for get_local_user_data() method
  10. ENHANCEMENT: Applied WP Code Style to Fetch_User_Data() class
  11. ENHANCEMENT: Refactored Handle_Payments::task()
  12. ENHANCEMENT: Refactored Handle_Subscriptions::task()
  13. ENHANCEMENT: Added timeout handling for background User Data Fetch tasks (Subscriptions and Payments)
  14. ENHANCEMENT: Add filter to override configured timeout value: `e20r-payment-warning-fetch-timeout` (accepts 1 argument, an integer value for the number of hours the timeout is supposed to last. Can be negative)
  15. ENHANCEMENT: Add debug setting for the Timeout handler for background jobs: E20R_DEBUG_TIMEOUT (boolean constant). Uses the e20r-payment-warning-fetch-timeout filter to set value to -2 (always timed out)

v4.0

  1. ENHANCEMENT: Refactored send_message() method
  2. BUG FIX: Didn't process all activation activities consistently.
  3. BUG FIX: SQL error when column & index exists prior to upgrade
  4. BUG FIX: Possible DB error when upgrading table schema for plugin
  5. BUG FIX: Incorrect namespace for DB_Tables() class
  6. BUG FIX: DB_Tables() class had incorrect file name for autoloader
  7. BUG FIX: Would sometimes fail to run due to bad queue data
  8. BUG FIX: Didn't always find the Email Notices for this plugin to transmit/send
  9. BUG FIX: Failed to generate a complete message with substitution variables expanded
  10. BUG FIX: Didn't try to load message body when instantiating Email_Message() class
  11. BUG FIX: Reminder override (only used to debug) was too strict
  12. BUG FIX: Couldn't locate templates in some situations
  13. BUG FIX: Moved message content filters to Email_Message() class
  14. BUG FIX: payment_date substitution variable was incorrectly defined
  15. BUG FIX: Numerous updates to Reminder_Editor::configure_cpt_templates() method
  16. BUG FIX: Didn't load the Payment_Warning templates in a lot of circumstances
  17. BUG FIX: Didn't process deactivation logic
  18. BUG FIX: Load the expected module logic in all situations
  19. BUG FIX: Load modules dependent on licensing
  20. ENHANCEMENT: Add overrides when E20R_DEBUG_OVERRIDE constant is defined and true
  21. ENHANCEMENT: Refactored get_gateway_class_name() method in payment gateway modules
  22. ENHANCEMENT: Allow searching for a template by it's slug value (Reminder_Editor::find_template_by_slug())
  23. ENHANCEMENT: Special processing for previous_payment_date substitution variable in Reminder_Editor::load_filter_value() method
  24. ENHANCEMENT: Added previous_payment_date substitution variable (and help)
  25. ENHANCEMENT: Added cancel_link substitution variable (and help)
  26. ENHANCEMENT: Added cancel_link_login substitution variable (and help)
  27. ENHANCEMENT: More efficient processing of substitution variables
  28. ENHANCEMENT: Specifically handling email message body processing
  29. ENHANCEMENT: Move DB Table create/remove operation to own class (DB_Tables)
  30. ENHANCEMENT: Moved DB updates to own DB_Tables() class
  31. ENHANCEMENT: Enable message transmission override when running in Payment Warning Debug mode
  32. ENHANCEMENT: More efficient and consistent way of loading gateway modules

v3.8.3

  1. ENHANCEMENT: Remove unused class instantiation
  2. ENHANCEMENT: More precise debug logging in Fetch_User_Data class
  3. ENHANCEMENT: Include the type of sub-handler being processed in the Large_Request_Handler class
  4. ENHANCEMENT: Add support for version 2018-05-21 of the Stripe API
  5. ENHANCEMENT: Better debug info for the next_payment_date() module
  6. ENHANCEMENT: Add bug fixes from the Utilities submodule

v3.8.2

  1. ENHANCEMENT: Added the 2/28/2018 API version support for Stripe

v3.8.1

  1. ENHANCEMENT: Updated Utilities infrastructure to prepare for version 4.0 with GDPR support

v3.8

  1. ENHANCEMENT: Added has_licensed_gateway() method
  2. ENHANCEMENT: Added a standard gateway module
  3. ENHANCEMENT: Refactored settings to Global_Settings class
  4. ENHANCEMENT: Refactored WP Settings page for Payment Warnings to own class (Global_Settings)
  5. ENHANCEMENT: Made load_options a static function for Global_Settings
  6. ENHANCEMENT: Refactored membership plugin specific setting handlers
  7. ENHANCEMENT: Refactored Membership module level settings
  8. ENHANCEMENT: Fixed PHPDoc blocks for Global_Settings
  9. ENHANCEMENT: Add new Stripe API versions to list
  10. ENHANCEMENT: Be more discering about the hooks/filters being when not doing a CRON job or the user isn't logged in
  11. ENHANCEMENT: Limit activity when not logged in or executing the CRON jobs
  12. ENHANCEMENT: Only load certain actions if we're exclusively executing a CRON job
  13. ENHANCEMENT: Only load certain actions if we're exclusively loading the WP backend
  14. ENHANCEMENT: Updated Utilities module (now includes a custom is_admin() method and stub for Support)
  15. ENHANCEMENT: Always load the remote webhook/silent post/IPN handler functions for the plugin
  16. ENHANCEMENT: Removed unneeded DEBUG output
  17. ENHANCEMENT: Don't load hooks for Reminder Editor unless user is logged in or we're executing a Cron job
  18. BUG FIX: Fatal error in Payment_Reminder::load_schedule() method
  19. BUG FIX: Need to load Cron job handlers when in wp-admin
  20. BUG FIX: Changed all non-static calls to load_options() to Global_Settings::load_options()
  21. BUG FIX: Attempted to load unneded actions/filters in Global_Settings
  22. BUG FIX: Didn't use the Global_Settings::load_admin_settings() method for the admin_menu action

v3.7

  1. ENHANCEMENT: Implemented IPN handler for locally cached PayPal gateway data
  2. ENHANCEMENT: Added default Credit Card fields for PayPal IPN data
  3. ENHANCEMENT: Added new Stripe API version (2018-01-23)
  4. ENHANCEMENT: Only remove records if we're configured to do so
  5. BUG FIX: Didn't properly complete a license status check & post/send warnings to admin
  6. BUG FIX: Don't load webhook handler if there isn't one defined for the add-on

v3.6

  1. ENHANCEMENT/FIX: Disallow accessing Email Notices on front-end of site (as a post/page or an archive)
  2. ENHANCEMENT: Build debug and release kits for plugin

v3.5

  1. ENHANCEMENT: Add 'purge records from local DB when stale' option on Payment Warnings settings page
  2. ENHANCEMENT: Optionally trigger purge operation using 'e20r-payment-warning-clear-old-records' filter with the new setting
  3. ENHANCEMENT: Add admin configurable purge operation at end of Payments info download job
  4. ENHANCEMENT: Add admin configurable purge operation at end of Subscription info download job
  5. ENHANCEMENT: Clarify debug message in Handle_Messages::complete() method
  6. BUG FIX: Incorrect version number when 'e20rpw_db_version' option isn't set

v3.4

  1. BUG FIX: Incorrect class type for try/catch operations in Stripe.com gateway add-on
  2. BUG FIX: Incorrect class type for try/catch operations in Check gateway add-on

v3.3

  1. ENHANCEMENT: Allow outside party to configure the message types available with the 'e20r-payment-warning-message-types' filter
  2. ENHANCEMENT: Default option value for the e20r_pw_sent_* options should be array( $today => array())
  3. ENHANCEMENT: Message type text_value now matches the values from the e20rpw_warning_message_types filter
  4. ENHANCEMENT: Preserve up to 30 days of message sent to logs (when we sent the message to the specified email address)
  5. ENHANCEMENT: Added filter to allow configuration of number of days to preserve.
  6. ENHANCEMENT: Support sending admin notices for user configured message types
  7. BUG FIX: Message type text_value in Reminder_Editor::define_message_types() didn't match default `e20rpw_warning_message_types` filter values
  8. BUG FIX: Sent too many admin notices to admin

v3.2

  1. BUG FIX: Didn't disable the default PMPro expiration warning emails

v3.1

  1. ENHANCEMENT: Add .editorconfig
  2. ENHANCEMENT: Remove old Email Editor functionality and replace it with the Email Notice submodule
  3. ENHANCEMENT: Adding ability to change the action name for the background process
  4. ENHANCEMENT: Add CreditCard Expiration warning admin message (when applicable)
  5. ENHANCEMENT: Add data fetch for Credit Card Expiration warnings
  6. ENHANCEMENT: Added documentation for functions/variables in Large_Request_Handler
  7. ENHANCEMENT: Process multiple payment gateway data fetch operations at the same time
  8. ENHANCEMENT: Specify the number of messages sent to each member (warning messages) in the admin notice(s)
  9. ENHANCEMENT: Add 'load_schedule()' method to support Email Notice submodule
  10. ENHANCEMENT: Refactored and added PHPDoc modules for all methods
  11. ENHANCEMENT: Add all methods/capabilities needed to support Email Notice module & deactivate the old Template Editor functionality
  12. ENHANCEMENT: Allow processing for multiple payment gateways (in Handle_Subscriptions and Handle_Payments classes)
  13. ENHANCEMENT: Add support for processing payment & subscription data from multiple payment gateways at once in Payment Warning Add-on classes
  14. ENHANCEMENT: Add support for locking/processing multiple payment gateways at the same time
  15. ENHANCEMENT: Start using the Email Notice submodule to send/process/create warning messages
  16. ENHANCEMENT: Allow sending multiple different messages on the same day to the same user
  17. ENHANCEMENT: Add PHPDoc for all methods in Email_Message class
  18. ENHANCEMENT: Refactored class.handle-payments.php
  19. ENHANCEMENT: Refactored class.handle-subscriptions.php
  20. ENHANCEMENT: Subscription & Payment data collection didn't always work when having multiple active gateways!
  21. ENHANCEMENT: Update get_handler() method to support multiple different payment gateways and sending different message types.
  22. ENHANCEMENT: Load licensed modules
  23. ENHANCEMENT: Make the get_active_addons() method public
  24. ENHANCEMENT: Add section to let admin set message types to activate/send warnings for in Payment Warning Settings
  25. ENHANCEMENT: Add handlers for !!saved_cc_info!! and !!billing_address!! substitution variables for Payment Warnings
  26. ENHANCEMENT: Add get_payment_info() method (generated list of credit card info from payment gateway)
  27. ENHANCEMENT: Add format_billing_info() method (generates and formats the PMPro billing address on file for a user)
  28. ENHANCEMENT: Add PHPDoc for some functions/methods
  29. ENHANCEMENT: Add required implementations for custom_post_column() and set_custom_edit_columns() method (adds message type label in edit.php list for the defined Email Notice).
  30. ENHANCEMENT: Renamed !!billing_info!! substitution variable to !!billing_address!!
  31. ENHANCEMENT: Moved handlers for billing_address and saved_cc_info substitution variables to Email_Message class
  32. ENHANCEMENT: Add PHPDoc blocks for methods in User_Data class
  33. ENHANCEMENT: Add company_name setting
  34. ENHANCEMENT: Configure the footer of the email notices using Payment Warning settings & filters
  35. ENHANCEMENT: Add company_address option to Payment Warnings Settings page
  36. ENHANCEMENT: Add render_textarea() method for Settings API
  37. ENHANCEMENT: Including PayPal Merchant API library
  38. ENHANCEMENT: Removing unused method from Email_Message() class
  39. ENHANCEMENT: Refactor maybe_extract_class_name() method (now in parent gateway class)
  40. ENHANCEMENT: Add 'gateway_module' column support to database table
  41. ENHANCEMENT: Refactor filter/action hook loading to parent class for all add-ons
  42. ENHANCEMENT: Make gateway name check more fuzzy in verify_gateway_processor() method
  43. ENHANCEMENT: Make load_webhook_handler() method generic
  44. ENHANCEMENT: Refactor maybe_extract_class_name() method and move to parent class for all add-ons
  45. ENHANCEMENT: Improved PHPDoc blocks for methods & variables in E20R_PW_Gateway_Addon class
  46. ENHANCEMENT: Specify the add-on module being processed in debug messages where it makes sense
  47. ENHANCEMENT: Renamed from set_active_non_subscription_members() method to get_active_non_subscription_members()
  48. ENHANCEMENT: Renamed set_active_subscription_members() to get_active_subscription_members()
  49. ENHANCEMENT: Cache user records by type and payment warning add-on module
  50. ENHANCEMENT: Added gateway_addon_check() method. Returns true if add-on name and payment gateway module matches
  51. ENHANCEMENT: Clear all of the per add-on member data caches
  52. ENHANCEMENT: When running in DEBUG mode, clear the cache for members every time
  53. ENHANCEMENT: Allow Stripe add-on module to run in parallel with other payment warning add-on modules
  54. ENHANCEMENT: Assign the type of add-on used to fetch an upstream user record in the local DB
  55. ENHANCEMENT: Stripe specific get_gateway_class_name() method
  56. ENHANCEMENT: Moved maybe_extract_class_name() method to parent class
  57. ENHANCEMENT: Load standard hooks for this gateway in parent class
  58. ENHANCEMENT: Improved documentation of Stripe_Gateway_Addon class
  59. ENHANCEMENT: Various minor updates (doc & variable cast) to PayPal_Gateway_Addon class
  60. ENHANCEMENT: Implement PayPal API calls with the PayPal Merchants API library
  61. ENHANCEMENT: Add upstream fetch of subscription data for PayPal
  62. ENHANCEMENT: Add upstream fetch of payment/transaction data for PayPal
  63. ENHANCEMENT: Convert PayPal transaction timestamps to local (server local) timestamps
  64. ENHANCEMENT: Add stub for handling relevant PayPal IPN messages
  65. ENHANCEMENT: Allow admin to configure the PayPal service they use with PMPro
  66. ENHANCEMENT: Update the Example_Gateway_Addon with expected/required method stubs & documentation
  67. ENHANCEMENT: Rename Example_Addon to Example_Gateway_Addon to match naming structure of other implemented add-ons
  68. ENHANCEMENT: Various required updates (required methods etc) for the incomplete Check Payment Gateway add-on
  69. ENHANCEMENT: Refactor Cron_Handler class
  70. ENHANCEMENT: Load data from all active and licensed payment gateway modules at once
  71. ENHANCEMENT: Add @PHPDoc blocks for more variables in User_Data class
  72. ENHANCEMENT: Add @PHPDoc blocks for more methods in User_Data class
  73. ENHANCEMENT: Link User_Data class to the add-on being processed
  74. ENHANCEMENT: Use boolean value to identify whether a local record has been loaded for the User_Data instance
  75. ENHANCEMENT: Add public has_record_saved() method
  76. ENHANCEMENT: Updated variable documentation (PHPDoc) for Handle_Subscriptions class
  77. ENHANCEMENT: Set/get add-on using the Handle_Subscriptions class
  78. ENHANCEMENT: Updated variable documentation (PHPDoc) for Handle_Payments class
  79. ENHANCEMENT: Set/get add-on using the Handle_Payments class
  80. ENHANCEMENT: Limit upstream data fetch operation to the add-on instantiating the Handle_Payments class
  81. ENHANCEMENT: Add Upgrade() class/methods for new DB version
  82. ENHANCEMENT: Bump required DB version number to support new table column for add-on type
  83. ENHANCEMENT: Renamed e20r_pw_addon_add_remote_call_handler action hook to e20r_pw_addon_remote_call_handler
  84. ENHANCEMENT: Prevent directory listing of logs directory (for Gateway library debug logs)
  85. ENHANCEMENT: Prevent web server access to *.log files in logs/ directory
  86. ENHANCEMENT/FIX: Configure Payment_Warning as the module using the Send_Email class
  87. ENHANCEMENT/FIX: Don't show 'no records found' warning message for inactive add-on modules
  88. BUG FIX: Didn't load the correct pmpro_save_membership_level action hook
  89. BUG FIX: Don't trigger add-on check twice in load_addon_settings()
  90. BUG FIX: Would try to process empty $user_data in task() method for Handle_Payments class
  91. BUG FIX: Would try to process empty $user_data in task() method for Handle_Subscriptions class
  92. BUG FIX: Skipped user if there wasn't a pre-existing record in the local DB
  93. BUG FIX: Didn't exclude records for other payment gateway modules
  94. BUG FIX: Would sometimes double the records to process in the get_all_user_records() method
  95. BUG FIX: Only display Payment Warning message types for payment warning messages
  96. BUG FIX: Don't internationalize date for payment in Stripe_Gateway_Addon class
  97. BUG FIX: Removed e20r_pw_message_substitution_variables filter
  98. BUG FIX: Didn't trigger e20r-email-notice-custom-variable-filter handlers for billing address & Credit Card data
  99. BUG FIX: PHP Warning message in Email_Message class
  100. BUG FIX: Typo in the !!saved_cc_info!! substitution variable handler
  101. BUG FIX: Didn't clear the Active Addon cache when saving the Options page
  102. BUG FIX: Incorrectly assumed the $e20r_pw_addons (array) list always contains the list of active add-ons
  103. BUG FIX: Would cache an empty list of active add-ons (if they existed)
  104. BUG FIX: Update get_reminder_type() to handle new Email Notice submodule
  105. BUG FIX: Didn't use the supplied subscription ID
  106. BUG FIX: Didn't properly handle fetching data from multiple active payment gateways
  107. BUG FIX: Didn't dispatch the Payment Reminder queues properly
  108. BUG FIX: Didn't always load/locate the proper queue handler for messages
  109. BUG FIX: Didn't send all of the messages in the defined list of messages for that warning type
  110. BUG FIX: Didn't load Credit Card user data correctly
  111. BUG FIX: Didn't always process all types of warning messages
  112. BUG FIX: Used localized date
  113. BUG FIX: Only include active payment profiles for Credit Card Expiration Warnings

v2.0

  1. BUG FIX: Update Email Editor sources
  2. BUG FIX: Refresh Utilities submodule to fix licensing issues
  3. ENHANCEMENT: Framework for Check Gateway support

v1.9.16

  1. ENHANCEMENT: Security update

v1.9.15

  1. ENHANCEMENT: Move E20R_Async_Request class to Utilities submodule
  2. ENHANCEMENT: Move E20R_Background_Process class to Utilities submodule
  3. ENHANCEMENT: Remove unused namespaces from Fetch_User_Data class
  4. ENHANCEMENT: Rename PayPal Gateway add-on module
  5. ENHANCEMENT: Add OAuth2 Client Secret and Key settings to PayPal add-on settings
  6. ENHANCEMENT: Move the PayPal REST API SDK library to libraries/
  7. ENHANCEMENT: Upgraded Utilities submodule to include the Background processing library
  8. BUG FIX: Didn't include Handle_Messages in move of Background Processing to Utilities module
  9. BUG FIX: Didn't start the background job when we expected it to
  10. BUG FIX: Fatal error if unexpected module/class file is present in add-on directory
  11. BUG FIX: Didn't handle Stripe API errors well
  12. BUG FIX: Report error if no transaction ID is found for Stripe charge/invoice

v1.9.14

  1. BUG FIX: Didn't always load active recurring payment member data
  2. BUG FIX: Didn't load previously recurring membership records that are now expiring
  3. BUG FIX: Should always set status to 'recurring' in set_active_subscription_members()
  4. BUG FIX: Handle situations where user has a recurring level and we have to auto-detect
  5. ENHANCEMENT: Simplified config of non-recurring payment status (always active based on what PMPro believes)
  6. ENHANCEMENT: Simplified config of status (always active based on what PMPro believes)
  7. ENHANCEMENT: Reduce debug logging levels

v1.9.13

  1. BUG FIX: Would sometimes double up on the entry count in the queue

v1.9.12

  1. ENHANCEMENT/FIX: Clear old temporary data/keys/values from options table

v1.9.11

  1. REFACTOR: Moved monitoring for background data collection job to fetch_gateway_payment_info action
  2. BUG FIX: Moved monitoring cron job scheduler to Cron_Handler class

v1.9.10

  1. ENHANCEMENT: Faster completion of scheduled job checks
  2. ENHANCEMENT: Also add monitoring if the mutex is set
  3. BUG FIX: Delay first execution of monitoring action

v1.9.9

  1. ENHANCEMENT: Add monitoring for background data collection job
  2. ENHANCEMENT: Clear mutex (lock) options (if they exists) once the background jobs are done/have completed
  3. ENHANCEMENT: Added Cron schedule for 30 minute repeating check of background data collection status

v1.9.8

  1. BUG FIX: Didn't trigger remote data update
  2. ENHANCEMENT: Updated Utilities/Licensing modules

v1.9.7

  1. ENHANCEMENT: Added array_isnt_empty() function which returns true if the array contains values (can still fail an '! empty()' call)
  2. ENHANCEMENT: Simplify placeholder text for license input
  3. BUG FIX: Problems when activating or managing multiple licenses from different plugin entities at the same time.
  4. BUG FIX: Extra slashes in Subject
  5. BUG FIX: Support new argument for e20r-license-add-new-licenses filter
  6. BUG FIX: Would fail to save/activate valid licenses in certain situations

v1.9.6

  1. BUG FIX: Didn't always appear to clear job from queue on successful save during payment processing
  2. BUG FIX: Would sometimes double up the times it processed a non-recurring payment record
  3. BUG FIX: Would load credit cards in an unexpected format causing double-save operations
  4. BUG FIX: Doubly certain we won't attempt to save the CC info twice
  5. BUG FIX: Didn't return the correct/a membership level name
  6. BUG FIX: Didn't use a consistent user_payment_status value ('active')
  7. BUG FIX: Variable substitution for messages providing incorrect information
  8. BUG FIX: Would sometimes process same batch twice
  9. BUG FIX: Queue lock time variable wasn't initialized anywhere
  10. BUG FIX: Would load too many templates to process messages for
  11. BUG FIX: Incorrect namespace for Email_Message class action handlers
  12. ENHANCEMENT: Update debug enabled AJAX handler
  13. ENHANCEMENT: Load data from local DB, _not_ upstream, when processing messages
  14. ENHANCEMENT: Using new names for configure_remote_subscription_data_fetch() and configure_remote_payment_data_fetch() in Cron_Handler
  15. ENHANCEMENT: Renamed get_remote_subscription_data() to configure_remote_subscription_data_fetch()
  16. ENHANCEMENT: Renamed get_remote_payment_data() to configure_remote_payment_data_fetch()
  17. ENHANCEMENT: Set cache timeout for active nonrecurring subscription data to 12 hours
  18. ENHANCEMENT: Set cache duration to 12 hours for active_subscr_users
  19. ENHANCEMENT: Set cache duration to 12 hours for all_active_users
  20. ENHANCEMENT: Set cache duration to last 4 hours for current_{$type} (type specific) current records
  21. ENHANCEMENT: Use local DB lookup (e20rpw_user_info table) for reminder/expiration notices
  22. ENHANCEMENT: Refactor and move clear_queue() to parent class (E20R_Background_Process)
  23. ENHANCEMENT: Refreshed Utilities tools/classes
  24. ENHANCEMENT: Added fixes and updates from EWWW Image Optimizer code to background processing classes
  25. ENHANCEMENT: Clear the message queue for the messages background handler
  26. ENHANCEMENT: Refactor and move clear_queue() to parent class (E20R_Background_Process)
  27. ENHANCEMENT: Transitioning to Utlities submodule (github) and License/Client_License classes for addon gateways
  28. ENHANCEMENT: More descriptive placeholder for new license input
  29. ENHANCEMENT: Uses static Email_Message::default_variable_help() function
  30. ENHANCEMENT: Add PHPDoc for add_placeholder_variables()
  31. ENHANCEMENT: Renamed get_remote_subscription_data() to configure_remote_subscription_data_fetch()
  32. ENHANCEMENT: Renamed get_remote_payment_data() to configure_remote_payment_data_fetch()
  33. ENHANCEMENT: Use configured date format for membership end date in email notices
  34. ENHANCEMENT: Apply variable substitution via filter for template(s)/message type(s)
  35. ENHANCEMENT: Made replace_variable_text() function static & a filter hook
  36. ENHANCEMENT: Added e20rpw_variable_help filter to result of default_variable_help()
  37. ENHANCEMENT: Add get_active_queue() method
  38. ENHANCEMENT: Account for differences between single site & multisite columns in DB
  39. ENHANCEMENT: Add error checking for unlock_process()
  40. ENHANCEMENT: Add clear_queue() to core (parent) function

v1.9.5

  1. BUG FIX: Only load active and non-recurring billing members
  2. BUG FIX: Load all recurring payment records that are active (and w/o enddate) or have an enddate in the futur

v1.9.4

  1. BUG FIX: Use appropriate autoload value for update_option()
  2. BUG FIX: Didn't update the e20r_pw_next_gateway_check option value
  3. BUG FIX: Return record list from set_active_subscription_members()
  4. BUG FIX: Return record list from set_all_active_members()
  5. BUG FIX: Would return whatever records were previously loaded if incorrect type was given
  6. BUG FIX: Prevented from saving end of membership date due to typo in variable name
  7. BUG FIX: Typo in reminder_type supplied for non-recurring memberships
  8. BUG FIX: Didn't force the reminder type (recurring) for the user data when processing
  9. BUG FIX: Didn't force the reminder type (expiration) for the user data when processing
  10. BUG FIX: Returned boolean value when looking for email address for recipients of message(s)
  11. ENHANCEMENT: Added error checking in get_remote_payment_data() for get_all_user_records() return values
  12. ENHANCEMENT: No longer declaring the type of data to save (recurring/payment)
  13. ENHANCEMENT: No longer need to specify type of record being saved in save_to_db()
  14. ENHANCEMENT: Preventing get_remote_subscription_data() from running more than once at a time
  15. ENHANCEMENT: Preventing get_remote_payment_data() from running more than once at a time
  16. ENHANCEMENT: Remove subscription data fetch lock w/error checking & messages to dashboard
  17. ENHANCEMENT: Remove non-recurring payment data fetch lock w/error checking & messages to dashboard

v1.9.3

  1. BUG FIX: Didn't update the version number for the DB after successfully upgraded
  2. ENHANCEMENT: Adding DB v3 update

v1.9.2

  1. BUG FIX: Didn't use the default method - get_all_user_records() - when loading member/user data
  2. BUG FIX: Explicitly instantiate User_Data() class for expiration or recurring billing info when loading
  3. BUG FIX: Didn't always load the required user records in get_all_user_records() method
  4. BUG FIX: Make default reminder processing option be 'ccexpiration' (Credit Cards) since all other options explicitly set their data type (recurring, expiring)
  5. BUG FIX: Make default user record type option be 'ccexpiration' (Credit Cards) since all other options explicitly set their data type (recurring, expiring)
  6. BUG FIX: Didn't always set the level ID we should expect for the member
  7. BUG FIX: DB uses MySQL date string, got timestamp from membership level setting (seconds since epoch)
  8. BUG FIX: Didn't set the correct end of (active) membership date for non-recurring members
  9. BUG FIX: Didn't return error if date is bad or empty in set_end_of_membership_date()
  10. BUG FIX: Should process default send email action before anything that could modify it
  11. BUG FIX: Would fail to send notifications for non-recurring members
  12. BUG FIX: Wouldn't respect skip admin notice setting
  13. ENHANCEMENT/FIX: Add end of membership date if subscription plan is cancelled
  14. ENHANCEMENT: Use local membership enddate if no date is supplied to set_end_of_membership_date() method
  15. ENHANCEMENT: Remove any instance of the charge or subscription record data
  16. ENHANCEMENT: Force the reminder_type based on whether the membership (for the user) is recurring or not
  17. ENHANCEMENT: More debug logging and status checks when clearing the background job queue for payment handler
  18. ENHANCEMENT: Name add_local_order() more appropriately for something only processing subscriptions (add_local_subscription_order())

v1.9.1

  1. BUG FIX: Didn't use the correct table name when updating the DB

v1.9.0

  1. BUG FIX: Fixed version numbering for DB tables
  2. BUG FIX: Namespace fix for Licensing classes
  3. ENHANCEMENT/FIX: Activation SQL for database table(s)
  4. ENHANCEMENT/FIX: Update namespace for new Utilities submodule & relocation to Tools NS for Cron & Background job classes
  5. ENHANCEMENT: Use Utilities as submodule
  6. ENHANCEMENT: Move cron & background handler code to Tools/
  7. ENHANCEMENT: Move Email Message handler code to Tools/
  8. ENHANCEMENT: Move utilities (Utilities & Cache handling) classes to own submodule
  9. ENHANCEMENT: Add option for info banner on completion of message operation
  10. ENHANCEMENT: Add database upgrade infrastructure
  11. ENHANCEMENT: Add Database Upgrade functionality
  12. ENHANCEMENT: Use licensing/utilities submodule

v1.8.9

  1. BUG FIX: Didn't send message for users in certain situations
  2. BUG FIX: PHP Warning message fixed in send_admin_notice() method
  3. BUG FIX: Didn't return actual value (implicit false actually retuned)
  4. ENHANCEMENT: Code style improvements

v1.8.8

  1. BUG FIX: Typo in help text for saved credit card info
  2. ENHANCEMENT: Don't send email notice to admin if no messages of the type was sent
  3. ENHANCEMENT: Add filter to let notice to admin get sent if no messages of the type was sent ('e20r-payment-warning-skip-admin-message-if-none-sent')

v1.8.6

  1. BUG FIX: Didn't check if admin had enabled payment & subscription data download

v1.8.5

  1. BUG FIX: Didn't run email notice transmission within the first day of activation

v1.8.4

  1. BUG FIX: Didn't run data collection within the first day of activation

v1.8.3

  1. BUG FIX: Database table creation failure

v1.8.2

  1. BUG FIX: Invalid format array caused save errors for user data
  2. BUG FIX: Didn't save the correct modified timestamp
  3. BUG FIX: Incorrect column definition for e20rpw_user_info.modified
  4. BUG FIX: Removed credit card admin notice (for now)
  5. ENHANCEMENT: Added index for modified timestamp

v1.8.1

  1. BUG FIX: Didn't render the Fetch from remote Payment Gateways setting

v1.8.0

  1. BUG FIX: Would trigger upstream gateway data fetch for any message cron job
  2. ENHANCEMENT/FIX: Synchronize name of Background Processing class constructor variables ($handle)
  3. ENHANCEMENT/FIX: Only process Payment & Subscription data from remote payment gateways when explicitly permitted
  4. ENHANCEMENT: Explicit control over background processing handles
  5. ENHANCEMENT: Remove modified column data (want to use trigger to update timestamp)
  6. ENHANCEMENT: Added debug to validate type of user record operation (insert or update)
  7. ENHANCEMENT: Added E20R_DEBUG_OVERRIDE constant to force the gateway download delays in the schedule to be overridden when in WP_DEBUG (define())

v1.7.2

  1. BUG FIX: Didn't update subscription info in local DB

v1.7.1

  1. BUG FIX: Didn't save the current timestamp when modifying user's record
  2. BUG FIX: Didn't use the subscription of charge ID to identify current/pre-exisiting record in DB
  3. BUG FIX: Use default & ON UPDATE trigger value in DB for modified column

v1.7.0

  1. BUG FIX: Don't exit if there's no current post ID when loading media
  2. ENHANCEMENT/FIX: Clean up any weird template settings
  3. ENHANCEMENT: Added default substitution variables w/help info
  4. ENHANCEMENT: Add substitution variable help on Template Editor page

v1.6.6

  1. BUG FIX: Sent duplicate notices to the same user

v1.6.5

  1. BUG FIX: Didn't extract the correct credit card info for the Payment Details

v1.6.4

  1. BUG FIX: Didn't always calculate the right number of sent message notifications
  2. BUG FIX: Didn't send notification email for user

v1.6.3

  1. BUG FIX: Didn't clear the charge/subscription data
  2. ENHANCEMENT/FIX: Update record based on subscription or charge ID (not MemberOrder ID)
  3. ENHANCEMENT: Better debug logging when clearing a scheduled event (on completion)
  4. ENHANCEMENT: Upgrading Utilities class to v1.9
  5. ENHANCEMENT: Use a membership agnostic option for fetching membership level specific data
  6. ENHANCEMENT: Simplify debug output during license check loopback prevention

v1.6.2

  1. BUG FIX: Cleaned up CSS file for plugin (not used)
  2. BUG FIX: Didn't let PMPro Webhook actions to trigger for Stripe.com
  3. BUG FIX: Empty Javascript & Style load caused 404 error in wp-admin backend
  4. ENHANCEMENT/FIX: Use static constant (plugin_slug)
  5. ENHANCEMENT: Refactored admin_enqueue_script()
  6. ENHANCEMENT: Added webhook_handler() method to PayPal Express gateway add-on (stub)
  7. ENHANCEMENT: Added PHPDoc for webhook_hander method()

v1.6.1

  1. ENHANCEMENT/FIX: load_webhook_handler() checks that add-on is active before loading the AJAX handler(s)
  2. ENHANCEMENT: Moved logic for load_webhook_handler() to E20R_PW_Gateway_Addon class
  3. ENHANCEMENT: Handling most of the heavy lifting for the load_webhook_handler() method in the E20R_PW_Gateway_Addon class (Stripe.com add-on)
  4. ENHANCEMENT: Handling most of the heavy lifting for the load_webhook_handler() method in the E20R_PW_Gateway_Addon class (PayPal Express add-on)
  5. ENHANCEMENT: Added 'handler_name' attribute to global add-on settings array ($e20r_pw_addons) for PayPal Express addon
  6. ENHANCEMENT: Added 'handler_name' attribute to global add-on settings array ($e20r_pw_addons) for Stripe.com addon
  7. ENHANCEMENT: Added new API version to version array for Stripe.com

v1.6

  1. BUG FIX: Would sometimes timeout during add-on/gateway activation
  2. BUG FIX: Didn't consistently save the license status for the add-on being processed
  3. BUG FIX: Used the wrong stub filter for the PayPal Express Gateway class
  4. ENHANCEMENT/FIX: An add-on is only active if it's both licenseed and the is_active status (checkbox) is checked
  5. ENHANCEMENT/FIX: Update licensing class to v1.4 - Includes fixes for invalid product key provided, etc
  6. ENHANCEMENT/FIX: No longer checking license to enable the Template editor
  7. ENHANCEMENT/FIX: Renamed the E20R_Stripe_Gateway_Addon class to Stripe_Gateway_Addon
  8. ENHANCEMENT: Fix filter name: e20r_pw_addon_stripe_gateway_addon_name
  9. ENHANCEMENT: Use the global settings when checking the status for the Stripe_Gateway_Addon activation logic
  10. ENHANCEMENT: Simplify restoring values for is_active and active_license in the Stripe_Gateway_Addon config array
  11. ENHANCEMENT: Rename 'add-ons' to the more descriptive 'Gateways' and fix the descriptive text for the options
  12. ENHANCEMENT: Remove redundant 'Gateway' from label

v1.5.4

  1. BUG FIX: DeBUG FIX: Selected the wrong template type for Recurring Payment warning (and credit card expiration warning)

v1.5.3

  1. BUG FIX: Deactivate PayPal Express completely

v1.5.2

  1. BUG FIX: Didn't always confirm that jobs were scheduled
  2. ENHANCEMENT/FIX: Make plugin activation/deactivation functions static

v1.5.1

  1. BUG FIX: Included escaped text in email body
  2. BUG FIX: Would sometimes send multiple instances of same message to same user on same day
  3. BUG FIX: Didn't correctly handle expiration and credit card expiration messages
  4. BUG FIX: Uses has_active_subscription variable to determine staus for user record
  5. BUG FIX: Didn't always send reminder message for non-recurring message types
  6. BUG FIX: Set correct access for class parameters
  7. BUG FIX: Update action hook handler for e20r_pw_addon_gateway_subscr_statuses filter in stripe gateway class
  8. ENHANCEMENT/FIX: Incorrect template type for Credit Card Expiration message
  9. ENHANCEMENT/FIX: Use dedicated template type setting for Credit Card expiration notice
  10. ENHANCEMENT/FIX: Moved subscription mismatch handler to core gateway handler class
  11. ENHANCEMENT/FIX: Moved email address mismatch handler to core gateway handler class
  12. ENHANCEMENT/FIX: Add abstract load_webhook_handler() method to core gateway handler class
  13. ENHANCEMENT/FIX: Add abstract get_local_customer_id() method to core gateway handler class
  14. ENHANCEMENT: Load all active members to active_members variable (set_all_active_members() method)
  15. ENHANCEMENT: Added cache clear for new all_active_members cache
  16. ENHANCEMENT: No longer stores subscription or charge data in local db tables
  17. ENHANCEMENT: Remove debug info from logs
  18. ENHANCEMENT: Renamed should_send_payment_reminder() method to should_send_reminder_message()
  19. ENHANCEMENT: Move save_subscription_mismatch action handler to core class
  20. ENHANCEMENT: Rename valid_stripe_subscription_statuses() to valid_gateway_subscription_statuses()
  21. ENHANCEMENT: Stop saving transaction data to local DB (subscriptions and charges)
  22. ENHANCEMENT: Only used the subscription ID in the e20r_pw_addon_save_subscription_mismatch action hooks
  23. ENHANCEMENT: Add initial framework for PayPal Express payment gateway add-on
  24. ENHANCEMENT: Remove subscription list and charge list from local DB storage
  25. ENHANCEMENT: Add ccexpiration as a valid reminder type
  26. ENHANCEMENT: Add libraries directory to build script
  27. ENHANCEMENT: Minor updates to Example add-on class stub
  28. ENHANCEMENT: Add REST API library for PayPal/PayPal Express

v1.5

  1. ENHANCEMENT: Add private next_scheduled() method to calculate the next timestamp for a Cron job in Cron_Handler
  2. ENHANCEMENT: Use next_scheduled() method to provide timestamp for when Cron jobs start in Cron_Handler
  3. ENHANCEMENT: Added updated_membership_level() method to Payment_Warning Class
  4. ENHANCEMENT: Added update_discount_codes() method to Payment_Warning Class
  5. ENHANCEMENT: Added get_util_cache_key() method to Utilities class
  6. ENHANCEMENT/FIX: Dropping cache values for Cron schedules after discount code or level updates
  7. BUG FIX: Displayed extra slash characters in message body
  8. BUG FIX: Displayed extra slash charaters in message title/subject
  9. BUG FIX: Didn't update the next scheduled option for the upstream gateway data collection operation

v1.4.4

  1. BUG FIX: Didn't always identify the right user list for the Subject field

v1.4.3

  1. BUG FIX: Didn't expand the user list properly for the notification message(s)

v1.4.2

  1. BUG FIX: Didn't always allow cron job(s) to execute

v1.4.1

  1. BUG FIX: Typo in e20r_payment_warning_schedule_override filter name
  2. ENHANCEMENT: Add fetch_remote_info test method & override scheduled run info during DEBUG

v1.4

  1. BUG FIX: Didn't set translation/language domain on init/startup of plugin
  2. BUG FIX: Didn't always apply first-run logic on activation of plugin
  3. BUG FIX: Attempted to run email notice cron jobs on activation
  4. BUG FIX: Didn't schedule the background cron actions
  5. BUG FIX: Clear all existing user entries in active_members member variable
  6. BUG FIX: Would include too many users when loading active non_subscription based members/users
  7. BUG FIX: Would include too many users when loading active subscription based members/users
  8. BUG FIX: Didn't dispatch request handler for large number(s) of records to process
  9. ENHANCEMENT: Reduce memory footprint during load of User_Data class
  10. ENHANCEMENT: Allow coder to specify whether to load data or not in maybe_load_from_db() method
  11. ENHANCEMENT: Allow override of recurring membership status (via variable - boolean)
  12. ENHANCEMENT: Reduced memory footprint in initial load of user records (deferred data load to task hander).
  13. ENHANCEMENT: Added get_action() method to Handle_Payments and Handle_Subscriptions classes
  14. ENHANCEMENT: Don't run gateway check immediately on plugin activation
  15. ENHANCEMENT: Allow override from manual initiation of plugin CRON job(s)
  16. ENHANCEMENT: Removed unneeded logging
  17. ENHANCEMENT: Rename get_active_*_members() methods to set_active_*_members()
  18. ENHANCEMENT: Ignore orders that are made with a different gateway environment (live|sandbox) than the currently configured PMPro Payment Gateway key(s)/settings
  19. ENHANCEMENT: Setting membership status manually
  20. ENHANCEMENT: Clean up memory
  21. ENHANCEMENT: Assign all active user records to active_members variable (avoid duplication)
  22. ENHANCEMENT: Renamed handler array variable to task_handler
  23. ENHANCEMENT: Improved debug logging for Subscription handler task() method
  24. ENHANCEMENT: Added get_action() method

v1.3.1

  1. BUG FIX: Would sometimes ignore settings for emailing warnings during scheduled events
  2. BUG FIX: Wouldn't honor the delay frequency (reduce load on server
  3. BUG FIX: Would stomp it's own large request handling for payments & subscriptions
  4. ENHANCEMENT: Allow WP Crontrol plugin to manually override data fetch
  5. ENHANCEMENT: Use different instances of the large request handler for subscriptions and payments
  6. ENHANCEMENT: Use string identifier for the action name in Large_Request_Handler

v1.3

  1. ENHANCEMENT: Update copyright notice (year)
  2. ENHANCEMENT: Improved granularity for error/debug logging
  3. ENHANCEMENT: Fetch background process handler(s) with Payment_Warnings::get_handler() method
  4. ENHANCEMENT: Add get_handler() method to return the specified request handler
  5. ENHANCEMENT: Add private variables for the request handlers to Payment_Warnings class
  6. ENHANCEMENT: Use Payment_Warnings::get_handler() to fetch message handler
  7. ENHANCEMENT: More descriptive variable name in constructor for Large_Request_Handler class
  8. ENHANCEMENT/FIX: Move the required handler instantiations to the main Payment_Warnings class
  9. ENHANCEMENT/FIX: Move all request based processing (background processing) to main Payment_Warnings class
  10. BUG FIX: Didn't always handle message sending correctly
  11. BUG FIX: Clean up schedule handling in E20R_Background_Process class
  12. BUG FIX: Didn't always dispatch large requests

v1.2

  1. BUG FIX: Didn't disable the default PMPro actions for expiration warnings, credit card expiration warnings and recurring payment notices if the equivalent functionality is active in this plugin
  2. ENHANCEMENT: Add placeholder to allow adding PMPro Template Editor messages if present

v1.1

  1. ENHANCEMENT: Add ability to process large number of users across multiple requests
  2. ENHANCEMENT: Process at most 250 user data records at a time
  3. ENHANCEMENT: Add filter to let admin set # of requests to process per dispatch (TODO: Make this a global setting)
  4. ENHANCEMENT: Only trigger processing for subscriptions (payment warning data) if enabled
  5. ENHANCEMENT: Use passed background processing handler class from received data in task() method
  6. ENHANCEMENT: Removed unneeded debug logging from Background Processing class
  7. ENHANCEMENT: Disable debug/test actions
  8. ENHANCEMENT: Add readme.md documentation file for Github repo
  9. ENHANCEMENT: Include readme.md file in build
  10. BUG FIX: Would display incorrect debug message when plugin was licensed
  11. BUG FIX: Attempted to save and dispatch background job during data loop in task() method
  12. BUG FIX: Didn't dispatch large request handler properly (Now class is instantiated during/before `plugins_loaded` action hook to ensure proper execution)
  13. BUG FIX: Attempted to save and dispatch large request handler data during loop
  14. BUG FIX: Only process subscription data in get_remote_subscription_data() method
  15. BUG FIX: Only process payment data in get_remote_payment_data() method
  16. BUG FIX: Didn't include the amount_from_currency() method for Stripe specific amount formatting
", "faq": "

Can I configure the plugin?

Yes, you can specify your company's billing address, the company name and select the message types to process for as well as the payment gateways to enable data collection for (assuming you have a valid license for it).

Go to the Payment Warnings settings page. The page can be found by navigating to `/wp-admin/` -> \"Settings\" -> \"Payment Warnings\". The key settings should be listed there.

There are also a number of filter hooks for a programmer to use that will modify certain details of the plugin configuration.

What types of warning messages can this plugin send?

There are 3 default warning message types you can configure the plugin to process and send on the Payment Warnings Settings page. These 3 warning message types are:

How do I change/update the email message templates?

All template handling is, as of v3.0 and later, managed as \"Email Notices\".

Email Notices are a form of WordPress posts and have their own taxonomy, so the 3 default warning message types can be created by going to the \"Email Notices\" menu option in the `/wp-admin/` backend and selecting \"New Email Notice\".

The plugin creates the \"E20R Payment Warning Notices\" Email Type for you when it's activated, but there are no predefined message warning templates created for you.

For the plugin to send warning messages, it needs to be able to find at least one template for the Reminder Type it is processing. As a result, **you will have to create that message and configure it to be sent on whatever day before the expiration/payment date**. See the \"Message Settings\" metabox on the Edit Email Notice page after you have supplied a title and saved the new message template as a \"E20R Payment Warning Notices\" Email Type.

How do I select when (what day) to send the warning

After saving a Payment Warning Notice in the Email Notice section, when the message reloads, you'll notice a \"Message Settings\" metabox on the right-hand side of the Email Notice Editor page.

Here you can add/remove the \"Send on day #\" value(s). There are no limits to the number of days when that specific message can be sent.

Can the system send more than 1 message of a given type per day to the same user?

Yes, you can configure multiple different message templates of the same Message Type and for the same day.

Note that all of the configured message types will be sent at around the same time.

Messages are typically sent between 4:30am and 6am for the timezone your WordPress server is configured for - see the \"Timezone\" setting for WordPress on the \"Settings\" -> \"General\" page. By default, WordPress uses the UTC or GMT timezone. That is, unless you configure it to use something else. We recommend you select a timezone that reflects the majority of your site's audience.

How do I insert user specific information in the template?

The Email Notices supports the use of a predetermined number of what we call 'substitution variables'. You'll recognize a 'substitution variable' by the fact that it has a leading and trailing pair of '!!' (double bangs). For example: To display the first name of the user in the email greeting, you can use the `!!first_name!!` variable. As the plugin processes the message for that user, it will replace the `!!first_name!!` name with the actual first name of the user (assuming they've provided one).

Each payment warning message type has its own list of variables you can use, and the \"Substitution Variables\" metabox below the Email Notice editor field will be updated to reflect the supported variables once you select the \"Reminder Type\" and Save/Update the template (as a draft, for instance).

Is this plugin PCI-DSS compliant?

In short; Yes.

This plugin does not save the credit card number for any of your members. In accordance with the documentation from the Payment Card Industry association requirements, we're storing the brand of the card plus its last 4 digits (so they can tell which card it is). We also save the expiration month and expiration year so we can identify when to send a Credit Card Expiration Warning when needed.

What data does the plugin save (from the payment gateway)?

We only fetch data for active members of the site (i.e. their PMPro membership status is \"active\"). Once a member becomes inactive, we delete their data from the local cache.

For members with recurring billing plans we save;

For members who's membership was paid with a one-time payment, we save;

How often does the plugin download data from the gateway?

It depends on the membership level definitions, and to some extent the discount codes defined for the Membership plugin.

By default, the plugin attempts to calculate the \"half-life\" of the shortest membership period defined (either as a membership level or in a discount code) and set the schedule for data collection to be once every 1/2 the shortest membership period. For example, if you have a membership level that is defined as a week - 7 day - long membership, the data collection would be scheduled for once every 3 days.

In the cases where the \"half-life\" of the shortest membership level period is more than 1 week, the plugin will schedule data collection to happen at least once per week.

" } } diff --git a/readme.txt b/readme.txt index 883f3b0..78b8d40 100644 --- a/readme.txt +++ b/readme.txt @@ -129,6 +129,7 @@ If you sponsor the development of gateway support you will receive forum support * ENHANCEMENT: Updated text in ccexpiring.html template * ENHANCEMENT: Add Credit Cart Expiration Message test hook +* BUG FIX: No need to send out credit card expiration warning for non-recurring users * BUG FIX: Incorrect default message type to process when processing reminders * BUG FIX: Force values for $target_template and $template_type * BUG FIX: Didn't trigger error when $target_template or $template_type were empty