a:2:{s:7:"timeout";i:1575438456;s:5:"value";s:245751:"{"new_version":"3.2.3","stable_version":"3.2.3","name":"Restrict Content Pro","slug":"restrict-content-pro","url":"https:\/\/restrictcontentpro.com\/downloads\/restrict-content-pro\/?changelog=1","last_updated":"2019-11-14 09:12:26","homepage":"https:\/\/restrictcontentpro.com\/downloads\/restrict-content-pro\/","package":"https:\/\/restrictcontentpro.com\/edd-sl\/package_download\/MTU3NTY5NDA1Njo3MTk1YzRkNDM3MDg4OTJhN2JiMWEyZTg1ODJlM2M3Zjo0Nzk6ZWIwNGY3ZDM2ZDY5MjU1MDlkODEyOTE2Mzg3YjZmYzU6aHR0cHNALy91c3dvcmt3b3JsZC5jb206MA==","download_link":"https:\/\/restrictcontentpro.com\/edd-sl\/package_download\/MTU3NTY5NDA1Njo3MTk1YzRkNDM3MDg4OTJhN2JiMWEyZTg1ODJlM2M3Zjo0Nzk6ZWIwNGY3ZDM2ZDY5MjU1MDlkODEyOTE2Mzg3YjZmYzU6aHR0cHNALy91c3dvcmt3b3JsZC5jb206MA==","sections":{"description":"","changelog":"<p><strong>Version 3.2.3, October 7, 2019<\/strong><\/p>\n<ul>\n<li>Modified templates: subscription.php<\/li>\n<li>New: Added the ability to recover pending and failed payments. A \"Complete Payment\" link has been added to the list of payments on the\u00a0[subscription_details]\u00a0shortcode.<\/li>\n<li>Tweak: Added terms\/privacy checkboxes to\u00a0[register_form_stripe]\u00a0shortcode if enabled. This also fixed an issue where the shortcode was validating for these checkboxes but not displaying them.<\/li>\n<li>Tweak: CSV Importer: improve CSV mime type detection.<\/li>\n<li>Tweak: CSV Importer: if incorrect file type is detected, include the detected file type in the error message.<\/li>\n<li>Tweak: Localize Stripe error messages that occur via JavaScript. Also add a new filter\u00a0rcp_stripe_error_messages\u00a0to allow these error messages to be modified.<\/li>\n<li>Tweak: Include original Stripe error message if we don't have our own localized version.<\/li>\n<li>Tweak: Show admin notice if manual membership cancellation fails.<\/li>\n<li>Fix: Sign up fees not being applied if someone attempts a payment, doesn't complete it, then tries a second time. This typically only occurred with the PayPal gateway, which allows you to not complete a payment in progress.<\/li>\n<li>Fix:\u00a0Heuristics.Phishing.Email.SpoofedDomain\u00a0false positive from virus scanners, due to us making a link to\u00a0developer.paypal.com, which actually led to our documentation on how to use that site to get API credentials.<\/li>\n<li>Fix: Add missing try\/catch block during certain Stripe operations.<\/li>\n<li>Fix: Correct formatting on\u00a0sprintf()\u00a0functions.<\/li>\n<li>Fix: Undefined property errors while updating pending payments via cron job.<\/li>\n<li>Fix: Under certain circumstances, RCP was incorrectly creating a second Stripe customer record.<\/li>\n<li>Fix: Stripe webhook conflicts when RCP is installed on two separate sites but both use the same Stripe account.<\/li>\n<li>Fix: Remove\u00a0admin_url()\u00a0base from\u00a0rcp_get_invoice_url()\u00a0function. In certain edge cases this was resulting in\u00a0admin_url()\u00a0being included in email notifications.<\/li>\n<li>Fix: Update WP_User display name when editing Customer first\/last name via Customer Details page.<\/li>\n<li>Fix: Email verification link not working when using plain text emails.<\/li>\n<li>Fix: CSV Importer - use email as the username if username is omitted from the CSV file.<\/li>\n<li>Fix: Recurring fees not being properly passed to payment gateway during registration.<\/li>\n<li>Fix: Do not apply prorated credits when multiple memberships are enabled and registering via\u00a0[register_form_stripe].<\/li>\n<li>Fix: \"Renews automatically\" incorrectly displaying on\u00a0[subscription_details]\u00a0shortcode for inactive memberships.<\/li>\n<li>Fix:\u00a0rcp_get_user_payments()\u00a0was returning all user payments if the current user was logged out. It now returns an empty array.<\/li>\n<li>Fix: Display issues on admin payments table on mobile devices.<\/li>\n<\/ul>\n<p><strong>Version 3.2.2, September 17, 2019<\/strong><\/p>\n<ul>\n<li>Improvement: Updated French translation.<\/li>\n<li>Improvement: Display clearer error messages when there's a problem adding a discount code.<\/li>\n<li>Fix: Registration type changing mid-registration, which could impact signup fees with some gateways.<\/li>\n<li>Fix: Stripe invalid request error when someone with a non-recurring Stripe membership visits the page containing the\u00a0[rcp_update_card]\u00a0shortcode.<\/li>\n<li>Fix: Incorrect use of\u00a0date_i18n()\u00a0instead of\u00a0date()\u00a0when saving payment dates via webhooks.<\/li>\n<li>Fix: Filter the password reset URL to use the designated RCP login form when \"Redirect Default Login URL\" is enabled.<\/li>\n<\/ul>\n<p><strong>Version 3.2.1, September 12, 2019<\/strong><\/p>\n<ul>\n<li>Fix: Incorrect Stripe subscription start date if a member manually renews a membership prior to expiration and the initial payment hasn't yet been fully captured at the time the subscription is created.<\/li>\n<li>Fix: Unable to process free membership if Stripe is the selected payment gateway.<\/li>\n<li>Fix: Registration errors when a customer has a membership for a level that has been deleted.<\/li>\n<li>Fix: Missing\u00a0rcp_stripe_signup_payment_failed\u00a0action when initial Stripe payment fails.<\/li>\n<li>Tweak: Update\u00a0rcp_is_trialing()\u00a0function to remove use of deprecated class.<\/li>\n<li>Tweak: Include RCP upgrade date and \"upgraded from\" version in system info report.<\/li>\n<\/ul>\n<p><strong>Version 3.2, September 10, 2019<\/strong><\/p>\n<ul>\n<li>Important: Stripe Checkout gateway has been removed. If you\u2019re using it, you will automatically be changed over to our normal Stripe gateway, which uses Stripe Elements. The [register_form_stripe] shortcode still functions, but it may look different.<\/li>\n<li>New: Updated the Stripe gateway to use Payment Intents API. This complies with SCA regulations.<\/li>\n<li>New: Stripe card declined notices now appear inline and no longer require a page refresh.<\/li>\n<li>New: Added\u00a0%update_billing_card_url%\u00a0template tag, which serves as a direct link to the \u201cupdate billing card\u201d page for the membership associated with the user\u2019s most recent payment. Recommended for use in the Renewal Payment Failed email.<\/li>\n<li>Tweak: Changes to registration form JavaScript. Initial membership processing is now handled via ajax. Testing is recommended if you have custom code that interacts with the registration JavaScript.<\/li>\n<li>Tweak: The first payment in a Stripe subscription is now always a one-time charge. The subscription is created with a delayed start date (until the next billing cycle).<\/li>\n<li>Tweak: Stripe gateway no longer uses Stripe Coupon codes. Instead, new plans are created for each duration\/amount combination.<\/li>\n<li>Tweak: Stripe gateway no longer handles signup fees via customer account balance. They are incorporated into an initial one-time charge that handles the first payment.<\/li>\n<li>Tweak: The\u00a0rcp_stripe_charge_create_args\u00a0filter is now deprecated and replaced with\u00a0rcp_stripe_create_payment_intent_args. This is due to replacing the Charges API with the Payment Intents API. Some arguments may now differ.<\/li>\n<li>Tweak: Stripe error messages are now able to be translated.<\/li>\n<li>Fix: Stripe gateway doesn\u2019t use the \u201crecurring_price\u201d that\u2019s passed into the gateway class.<\/li>\n<li>Fix: Stripe incorrectly applying one-time discounts after a free trial.<\/li>\n<\/ul>\n<p><strong>Version 3.1.2, August 22, 2019<\/strong><\/p>\n<ul>\n<li>New: An admin notice will be displayed if you have the Stripe Checkout gateway enabled, explaining that the gateway will be removed in RCP version 3.2 due to SCA regulations. Read more here:\u00a0<a href=\"https:\/\/docs.restrictcontentpro.com\/article\/1552-stripe-checkout\" rel=\"nofollow\">https:\/\/docs.restrictcontentpro.com\/article\/1552-stripe-checkout<\/a><\/li>\n<li>New: Added a\u00a0date_completed\u00a0column to the\u00a0wp_rcp_queue\u00a0table.<\/li>\n<li>New: Unauthorized users are now redirected away from category archive pages if the category is restricted. (Requires that Hide Restricted Posts be checked on.)<\/li>\n<li>New: Allow filtering by both level and status on Restrict &gt; Memberships page. Note: you must choose a status filter first, then you can change the membership level.<\/li>\n<li>New: Add support for a\u00a0redirect\u00a0query arg when generating a\u00a0resend_verification\u00a0link.<\/li>\n<li>New: Add \"Status\" dropdown to the \"add payment\" form on the admin Membership Details page.<\/li>\n<li>Tweak: Moved\u00a0_rcp_reminder_sent_*\u00a0user meta to membership meta.<\/li>\n<li>Tweak: Adjust Redirect Default Login URL setting description to convey that the\u00a0[login_form]\u00a0shortcode is required on the page and not optional.<\/li>\n<li>Fix: Free trial incorrectly granted again under certain circumstances.<\/li>\n<li>Fix: If a customer signs up for a one-time payment membership and does not complete payment, they are unable to try again. (Usually only seen with the PayPal payment gateway.)<\/li>\n<li>Fix: CSV import not setting correct password for new users.<\/li>\n<li>Fix: CSV import missing old\u00a0rcp_user_import_user_added\u00a0action hook.<\/li>\n<li>Fix: Incorrect ajax parameter used for error message when uploading a CSV import file fails.<\/li>\n<li>Fix: Don't show an error message on\u00a0[rcp_update_card]\u00a0shortcode if the current user does not have a membership at all.<\/li>\n<li>Fix: Ensure that\u00a0free\u00a0membership status is always converted to\u00a0active\u00a0(backwards compatibility with pre-3.0).<\/li>\n<\/ul>\n<p><strong>Version 3.1.1, July 31, 2019<\/strong><\/p>\n<ul>\n<li>New: Add message to\u00a0[rcp_update_card]\u00a0shortcode when a user is unable to update their card details.<\/li>\n<li>New: Add action\u00a0rcp_edit_customer_after_memberships_section\u00a0to Customer Details page, allowing third party plugins to add a whole new customer section.<\/li>\n<li>New: On Customer Details page, display whether or not the customer has trialled before.<\/li>\n<li>Tweak: Add a space between the Norwegian Krone currency symbol and the price (previous:\u00a010kr\u00a0new:\u00a010 kr).<\/li>\n<li>Tweak: Removed the 2-day grace period on the expiration cron job. Use this custom code if you want to add it back in:\u00a0<a href=\"https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-add-expiration-grace-period.php\">https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-add-expiration-grace-period.php<\/a><\/li>\n<li>Tweak: Include RCP payment ID in Stripe one-time charge metadata.<\/li>\n<li>Fix: Generate a new subscription key on renewals if existing one is blank. This fixes a problem with renewals not activating via PayPal if the existing membership didn't have a subscription key (which might be the case if the membership was imported).<\/li>\n<li>Fix: EDD Downloads not showing excerpts to users without access if excerpts are globally enabled.<\/li>\n<li>Fix: Under certain circumstances, deactivated membership levels can be renewed when they shouldn't be able to. If you want to allow deactivated levels to be renewed, use the\u00a0rcp_can_renew_deactivated_membership_levels\u00a0filter. Example:\u00a0<a href=\"https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-renew-deactivated-levels.php\">https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-renew-deactivated-levels.php<\/a><\/li>\n<li>Fix: Expiration emails being sent when creating a new membership with the \"expired\" status.<\/li>\n<li>Fix: reCAPTCHA errors when using [register_form_stripe].<\/li>\n<li>Fix: Registration not working in Internet Explorer due to JavaScript\u00a0assign()\u00a0error.<\/li>\n<li>Fix: Stop using\u00a0date_i18n()\u00a0in database datetime validation.<\/li>\n<li>Fix: Pending payment ID can be incorrect if someone attempts a payment multiple times for the same membership.<\/li>\n<li>Fix: 3.0 migration - check for and show clear error if the user being migrated doesn't exist (due to orphaned user meta).<\/li>\n<\/ul>\n<p><strong>Version 3.1, July 17, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: card-update-form.php, paypal-express-confirm.php, register-single.php, register.php, subscription.php.<\/li>\n<li>New: Add support for multiple active memberships per customer.<\/li>\n<li>New (WARNING): Authorize.net has been removed from core and moved to a separate add-on. The new add-on can be installed here: <a href=\"https:\/\/wordpress.org\/plugins\/rcp-authorize-net\/\" target=\"_blank\" rel=\"noopener\">https:\/\/wordpress.org\/plugins\/rcp-authorize-net\/<\/a><\/li>\n<li>New: One-time discounts can now be configured on a per-discount basis rather than globally.<\/li>\n<li>New: Stripe gateway has been updated to use Stripe Elements.<\/li>\n<li>New: CSV user import tool now available in Restrict &gt; Tools &gt; Import.<\/li>\n<li>New: Added WP-CLI integration.<\/li>\n<li>New: Expiration and renewal notices can now be limited to certain membership levels only.<\/li>\n<li>New: Added support for bulk adding memberships to existing users from the Users table.<\/li>\n<li>New: Added \"payment received\" email template for admins.<\/li>\n<li>New: Use WP_List_Table for all admin table pages.<\/li>\n<li>New: Add default email template content on new installs.<\/li>\n<li>New: Log all payment events in the customer notes.<\/li>\n<li>New: Send customer name in Stripe API request.<\/li>\n<li>New: Add payment meta and membership level meta functions.<\/li>\n<li>New: Signup fees are no longer applied when manually renewing an existing membership.<\/li>\n<li>New: Stripe gateway tested with API version\u00a02019-05-16.<\/li>\n<li>Tweak: Stop unchecking \"auto renew\" when a membership expires.<\/li>\n<li>Tweak: All translation files have been updated from plugin source code.<\/li>\n<li>Tweak: Updated plugin author name and URL.<\/li>\n<li>Fix: RCP datepicker styles affecting other plugin datepickers.<\/li>\n<li>Fix: Reduce the three RCP membership columns on the Users table to one single \"Membership\" column. This reduces database queries and improves loading time on this page.<\/li>\n<li>Fix: Payments are now only recorded via webhooks\/IPNs if we can match the payment to a very specific RCP membership. This resolves issues if the same PayPal account is used for multiple different products and one customer is involved in both products.<\/li>\n<\/ul>\n<p><strong>Version 3.0.10, June 20, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: change-password.php, invoice.php.<\/li>\n<li>Fix: Pending memberships no longer expire when passing their expiration date; they just remain pending.<\/li>\n<li>Fix: Discount codes not being forced to all lowercase when being edited.<\/li>\n<li>Fix: Trial memberships not being considered \"paid\" when restricting content.<\/li>\n<li>Fix: $membership parameter missing from expired email filters.<\/li>\n<li>Fix: Stop using Stripe idempotency keys on discount code API requests.<\/li>\n<li>Fix: Imported memberships being incorrectly disabled after a renewal payment failure.<\/li>\n<li>Fix: Incorrect calculation in RCP_Registration::get_total() when combining both fees and credits.<\/li>\n<li>Fix: Admin notices not displaying after using bulk action in membership\/customers table.<\/li>\n<li>Fix: Invoices not supporting RTL.<\/li>\n<li>Fix: Proration credit incorrectly given when upgrading \/ downgrading while still in the middle of a free trial.<\/li>\n<li>Fix: Hide \"New Password\" fields on password reset page when the reset link is invalid.<\/li>\n<li>Fix: Memberships table \"Cancel\" action fails due to invalid nonce.<\/li>\n<li>Fix: Stripe error when recreating customers that had previously been deleted earlier that day.<\/li>\n<li>Fix: When a discount code is used that has been restricted to certain membership levels, the membership levels restriction becomes invalidated.<\/li>\n<\/ul>\n<p><strong>Version 3.0.9, May 20, 2019<\/strong><\/p>\n<ul>\n<li>Security Fix: Harden permission checks when performing membership actions.<\/li>\n<li>Fix: Auto renew checkbox incorrectly appearing for lifetime memberships.<\/li>\n<li>Fix: Display bug on email search dropdown when manually adding memberships\/customers.<\/li>\n<li>Fix: User role granted while membership is still pending.<\/li>\n<\/ul>\n<p><strong>Version 3.0.8, May 9, 2019<\/strong><\/p>\n<ul>\n<li>New: Add clear membership notes explaining where a cancellation originated from (customer action vs admin action vs webhook).<\/li>\n<li>New: Add get_user_id() method to RCP_Emails class.<\/li>\n<li>New: Add $membership parameter to \"rcp_subscription_details_action_links\" action.<\/li>\n<li>Tweak: Adjust logic in cron job that expires memberships, which will now allow the 2-day grace period to be removed with custom code.<\/li>\n<li>Fix: rcp_get_term_restrictions() - Can return an array with \"access_level\" =&gt; \"None\", which breaks restriction functionality.<\/li>\n<li>Fix: Registration form not able to be submitted after completing CAPTCHA.<\/li>\n<\/ul>\n<p><strong>Version 3.0.7, May 7, 2019<\/strong><\/p>\n<ul>\n<li>Fix: Membership level not loading correctly in registration form when using the `id` attribute.<\/li>\n<li>Fix: 3.0 migration - force old expiration date to all lowercase to prevent errors with unexpected capitalization on \"none\" value.<\/li>\n<\/ul>\n<p><strong>Version 3.0.6, May 6, 2019<\/strong><\/p>\n<ul>\n<li>New: Add option to disable loading Stripe Javascript when not needed.<\/li>\n<li>New: Add helper functions for checking WooCommerce purchase\/viewing permissions.<\/li>\n<li>New: Introduce new function: rcp_has_term_restrictions(). This should also improve loading time as it reduces the usage of the more intensive function rcp_get_post_ids_assigned_to_restricted_terms().<\/li>\n<li>Tweak: Reintroduce rcp_user_has_access() helper function for checking access level.<\/li>\n<li>Tweak: Force debug logging off during 3.0 migration. This makes it go much faster.<\/li>\n<li>Tweak: Rename stripe.js handle to avoid JS conflicts. It's now called \"rcp-stripe-js-v2\".<\/li>\n<li>Tweak: Remove the current membership level from RCP_Membership-&gt;get_upgrade_paths(). This creates better separation between can_renew() and upgrade_possible(). This adjustment also fixed the following issues:\n<ol>\n<li>If upgrades are disabled, non-recurring memberships can't be renewed early.<\/li>\n<li>Don't show \"upgrade or change membership\" link when there's only one membership level on the site.<\/li>\n<li>Improve registration form UI when you're signed up to a free membership level and it's the only level available on the site.<\/li>\n<\/ol>\n<\/li>\n<li>Fix: Registration errors when the total amount due today is $0 due to one-time 100% off discounts, negative signup fees, or prorated credits. Note: this required massive changes to our register.js file so if you use any of our JavaScript functions\/triggers we recommend testing on a staging site before upgrading your live site.<\/li>\n<li>Fix: PayPal Standard - incorrectly triggering \"rcp_webhook_recurring_payment_processed\" hook on initial payment.<\/li>\n<li>Fix: When an admin changes a membership's level, the user role is lost if the role is the same for both the old level and the new one.<\/li>\n<li>Fix: Customer \/ membership search not working on emails with + symbols.<\/li>\n<li>Fix: Don't show update billing card form for PayPal Standard \/ Express signups. Cards cannot actually be updated via RCP for those gateways; they need to be updated inside PayPal directly.<\/li>\n<li>Fix: If someone signs up for a lifetime membership via PayPal, doesn't complete payment, they're unable to try again.<\/li>\n<li>Fix: If a membership is in the trial period, then gets cancelled, the customer cannot renew the membership again until it expires.<\/li>\n<\/ul>\n<p><strong>Version 3.0.5, April 16, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: paypal-express-confirm.php<\/li>\n<li>New: Allow \"Payment Method\" to be modified on Edit membership screen.<\/li>\n<li>New: Add Idempotency Keys to Stripe POST Requests.<\/li>\n<li>New: Introduce new customer \/ membership helper functions.<\/li>\n<li>New: Add email auto search when adding a new membership \/ customer.<\/li>\n<li>New: Add \"rcp_add_membership_after\" hook to Add Membership page.<\/li>\n<li>Tweak: Reorder and rename email templates to provide better clarity.<\/li>\n<li>Tweak: Update membership \"recurring_amount\" value on automatic renewals.<\/li>\n<li>Fix: rcp_get_customer_gateway_id() not working correctly for Stripe Checkout.<\/li>\n<li>Fix: Incorrect payment gateway slug being used for \"PayPal Express\" payments.<\/li>\n<li>Fix: Add additional checks to ensure members get the correct user role when their membership is activated.<\/li>\n<li>Fix: rcp_get_membership_by() returning disabled membership records when it shouldn't be.<\/li>\n<li>Fix: Expired users cron job query not locating all relevant memberships.<\/li>\n<li>Fix: Initial Authorize.net payment being recorded twice.<\/li>\n<li>Fix: Incorrect subscription link URL for live Authorize.net subscriptions.<\/li>\n<li>Fix: \"subtotal\" payment column not being set for automatic renewals.<\/li>\n<li>Fix: Check if membership ID is set for payments before attempting to complete a registration. This caused problems when inserting payments via the REST API.<\/li>\n<li>Fix: JavaScript errors when adding a custom currency without specific name formatting.<\/li>\n<li>Fix: Registration not failing gracefully if customer record fails to be created.<\/li>\n<li>Fix: Incorrect setting description for \"maximum number of simultaneous connections per member\".<\/li>\n<li>Fix: 3.0 migration - incorrect user query on multisite installation when RCP is not network activated.<\/li>\n<li>Fix: 3.0 migration - skip membership import if membership level cannot be retrieved. This would occur if someone had a membership for a level that has since been deleted.<\/li>\n<li>Fix: Delete \"rcp_pending_payment_id\" meta value on registration failure.<\/li>\n<li>Fix: Undefined index notices on PayPal IPN when certain events come through.<\/li>\n<li>Fix: Credits not displayed on PayPal Express confirmation page.<\/li>\n<\/ul>\n<p><strong>Version 3.0.4, March 22, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: card-update-form.php, change-password.php, login.php, lostpassword.php, paypal-express-confirm.php, profile-editor.php, register-single.php, register.php,<\/li>\n<li>New: Add new \"transaction_type\" column to payments table to differentiate between renewals, upgrades, downgrades, and new registrations.<\/li>\n<li>New: Gateway Subscription\/Customer IDs now link to relevant pages in payment gateway.<\/li>\n<li>New: Add gateway column to admin payments table.<\/li>\n<li>New: Add generic \"rcp-button\" class to all buttons in templates.<\/li>\n<li>New: Add \"rcp_stripe_existing_plan_id\" filter to Stripe plan ID when checking if a plan exists.<\/li>\n<li>Tweak: Update Stripe PHP library.<\/li>\n<li>Tweak: Prefix plugin name with \"WordPress\" in Stripe setAppInfo calls.<\/li>\n<li>Tweak: Include Stripe partner ID in setAppInfo calls.<\/li>\n<li>Tweak: Add extra checks to ensure cancellation emails do not get sent on upgrades\/downgrades.<\/li>\n<li>Tweak: Braintree: search for existing customer by ID when processing a payment.<\/li>\n<li>Tweak: When calculating prorate credit amount, apply filter to $0 return values.<\/li>\n<li>Tweak: Adjust description on \"Membership Level\" setting for discount codes.<\/li>\n<li>Fix: Expiration date not extended if a user has 0 historical payments while manually renewing their membership before the expiration date. (This may have affected imported users renewing for the first time.)<\/li>\n<li>Fix: Certain circumstances may cause PayPal Express to charge an incorrect amount on manual renewals, if the first payment was discounted for other reasons.<\/li>\n<li>Fix: Plugin upgrade process not running if manually upgrading the plugin in a way that involves reactivating the plugin.<\/li>\n<li>Fix: Improve WP_User_Query backwards compatibility when checking \"rcp_status\" meta key\/value.<\/li>\n<li>Fix: Deprecated rcp_get_member_cancel_url() function returning wrong membership ID.<\/li>\n<li>Fix: Memberships admin table bulk actions not working.<\/li>\n<li>Fix: Stripe Checkout transaction IDs not linked in admin.<\/li>\n<li>Fix: Credits incorrectly being added to payment record during renewals.<\/li>\n<li>Fix: Restricting by role through the meta box doesn't work if the user doesn't also have a membership.<\/li>\n<li>Fix: PayPal Standard amount verification causes IPN to fail if there's a record mismatch. This would only happen if you'd edited a membership level price at some point.<\/li>\n<li>Fix: User role sometimes not being added on membership activation.<\/li>\n<li>Fix: No longer require object_id when adding a new membership. This fixes some issues with backwards compatibility when using update_user_meta() with old values.<\/li>\n<\/ul>\n<p><strong>Version 3.0.3, March 7, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: card-form-full.php<\/li>\n<li>New: Add a button to change the membership level when editing a membership.<\/li>\n<li>New: Add support for screen options on Customers and Memberships pages.<\/li>\n<li>New: Add note to customer profile when the customer upgrades or downgrades their membership.<\/li>\n<li>Tweak: Updated country list on registration form.<\/li>\n<li>Tweak: Added note in rcp_create_tables() PHPDocs about how to create new database tables in 3.0.<\/li>\n<li>Tweak: The \"Restrict\" menu item is no longer translated to\u00a0Norwegian.<\/li>\n<li>Tweak: Add note when creating a discount code if no membership levels have been created yet.<\/li>\n<li>Fix: Plugin activation error when Yoast is also activated.<\/li>\n<li>Fix: \"View all payments\" link on Edit Customer page incorrectly showing payments by all customers.<\/li>\n<li>Fix: Email verification link not rendering in emails.<\/li>\n<li>Fix: User ID number not being stored with PayPal payments.<\/li>\n<li>Fix: Update regex for Stripe plan names.<\/li>\n<li>Fix: If the Renewal Payment Failed admin email template is disabled, the checkbox cannot be unchecked.<\/li>\n<li>Fix: Fatal error when searching on customer\/membership pages and the search yields 0 results.<\/li>\n<li>Fix:\u00a0PHP warning in rcp_has_post_restrictions() when post is restricted to multiple user roles.<\/li>\n<li>Fix: Unable to cancel PayPal Express memberships.<\/li>\n<li>Fix:\u00a0Fatal error when using WordPress core's \"retrieve_password_title\" filter.<\/li>\n<li>Fix: Passwords were incorrectly sanitized when creating new users, potentially resulting in a different password being saved.<\/li>\n<li>Fix: Undefined index REQUEST_METHOD when running certain CLI commands.<\/li>\n<li>Fix: PayPal IPN verification was being performed even if it was disabled.<\/li>\n<\/ul>\n<p><strong>Version 3.0.2, March 4, 2019<\/strong><\/p>\n<ul>\n<li>New: Added error logging to batch processor.<\/li>\n<li>New: Membership counts on membership levels table are now clickable and link to the memberships page filtered by level.<\/li>\n<li>New: Allow Stripe Connect notice to be dismissed.<\/li>\n<li>Tweak: Updated French translation.<\/li>\n<li>Tweak: Expand \"Username already taken\" error message to provide more clarity.<\/li>\n<li>Fix: Default user role not being removed when custom role is added. This could result in a member having two roles.<\/li>\n<li>Fix: PHP notice when submitting the log in form with a username that doesn't exist.<\/li>\n<li>Fix: Users who were pending email verification were incorrectly allowed to view restricted WooCommerce products.<\/li>\n<li>Fix: Membership level name not being added to Stripe Checkout modal under certain circumstances.<\/li>\n<li>Fix: \"Items\" count on memberships table not updating when filtering.<\/li>\n<li>Fix: Admins unable to view restricted content if they do not have a membership.<\/li>\n<li>Fix: Check payment_status in PayPal IPN when processing renewals.<\/li>\n<li>Fix: Fatal error on WooCommerce archive when using taxonomy restrictions and the current users not have a membership.<\/li>\n<li>Fix: Upgrades not activating correctly when using PayPal Standard.<\/li>\n<li>Fix: Incorrect wording in \"Update Billing Card Page\" setting description.<\/li>\n<li>Fix: Excerpts in EDD [downloads] shortcode incorrectly restricted.<\/li>\n<li>Fix: Undefined index error on fresh installs on settings and system info pages.<\/li>\n<\/ul>\n<p><strong>Version 3.0.1, February 28, 2019<\/strong><\/p>\n<ul>\n<li>Fix: Automatic update notices not appearing in admin dashboard.<\/li>\n<\/ul>\n<p><strong>Version 3.0, February 27, 2019<\/strong><\/p>\n<ul>\n<li>Warning: Version 3.0 requires PHP version 5.6 or higher. Please do not upgrade unless you meet these requirements.<\/li>\n<li>Modified template files: card-update-form.php, invoice.php, paypal-express-confirm.php, register.php, register-single.php, register-total-details.php, subscription.php, woocommerce-single-no-access.php<\/li>\n<li>New: Membership data has been migrated to custom tables. This sets the foundation for supporting multiple memberships per user in the future. You will be prompted to migrate your data after upgrading.<\/li>\n<li>New: Added a batch processing API.<\/li>\n<li>New: Added support for payment plans.<\/li>\n<li>New: You can now restrict content to multiple user roles through the \"restrict this content\" meta box.<\/li>\n<li>New: You can now restrict content to custom user roles when using the [restrict] shortcode.<\/li>\n<li>New: Memberships can now be sorted by expiration date.<\/li>\n<li>New: The \"Auto Add Users to Level\" setting has been added to the system info file.<\/li>\n<li>New: The PayPal Express confirmation screen has been updated to include additional information, including discounts, fees, and credits.<\/li>\n<li>New: object_id is now supported in RCP_Payments::count().<\/li>\n<li>New: Original join dates are now stored (in the wp_rcp_customers table).<\/li>\n<li>New: \"Prevent Account Sharing\" setting now accepts a maximum number of simultaneous connections.<\/li>\n<li>New: When a user account is deleted, associated recurring subscriptions are now automatically cancelled.<\/li>\n<li>Tweak: \"Subscription Levels\" have been renamed to \"Membership Levels\".<\/li>\n<li>Tweak: \"Free Content Message\" and \"Paid Content Message\" have been merged into one single \"Restricted Content Message\" setting.<\/li>\n<li>Tweak: The Stripe API library has been updated.<\/li>\n<li>Tweak: The \"Email IPN Report\" feature has been removed.<\/li>\n<li>Tweak: Our login functions now use wp_signon(). This allows greater support for third party plugins that integrate with the login system, such as Jetpack Protect.<\/li>\n<li>Tweak: The invoice template has been expanded to include fees, discounts, and credits that were applied to that payment.<\/li>\n<li>Tweak: The login link text in the registration template has been adjusted.<\/li>\n<li>Tweak: Improved error messaging when adding\/updating membership levels fails.<\/li>\n<li>Fix: Password reset links will now work with SendGrid click tracking.<\/li>\n<li>Fix: RCP user meta is now removed during uninstall.<\/li>\n<li>Fix: The payment_id column name in the wp_rcp_payment_meta table has been renamed to rcp_payment_id. This fixes a conflict with the Give plugin.<\/li>\n<li>Fix: The admin bar is no longer hidden for users who have the \"edit_posts\" capability.<\/li>\n<li>Fix: Under certain circumstances it was possible for rcp_get_ip() to return a CSV of IP addresses instead of a single IP.<\/li>\n<li>Fix: Databases are now registered when switching sites on multisite.<\/li>\n<li>Fix: Fixed a DateTime::__construct() fatal error in Authorize.net when signing up for a free trial.<\/li>\n<li>Fix: In the wp_rcp_payments table, the following column types have been updated: id (now unsigned), object_id (now unsigned), user_id (changed from mediumint to bigint(20) and now unsigned).<\/li>\n<\/ul>\n<p><strong>Version 2.9.15, December 19, 2018<\/strong><\/p>\n<ul>\n<li>New: An admin notice is displayed on sites running PHP versions lower than 5.6. Restrict Content Pro version 3.0 will raise its PHP version requirement to 5.6 or higher, so if you're using an older version make sure you upgrade that before RCP 3.0!<\/li>\n<\/ul>\n<p><strong>Version 2.9.14, August 27, 2018<\/strong><\/p>\n<ul>\n<li>New: Introduce \"RCP_DISABLE_EMAILS\" constant. When set, RCP will not send out any emails. Great for using on staging\/development sites.<\/li>\n<li>New: Added filter \"rcp_email_payment_received_subject\" on \"Payment Received\" email subject.<\/li>\n<li>New: Added action \"rcp_membership_level_row_actions\" in subscription level row actions.<\/li>\n<li>New: Added \"Date Generated\" to system info file.<\/li>\n<li>New: Allow passing in date start\/end in RCP_Payments::get_earnings().<\/li>\n<li>Tweak: Updated Spanish translation.<\/li>\n<li>Tweak: Updated Norwegian translation.<\/li>\n<li>Tweak: Get current user ID as fallback in rcp_get_return_url() if no user ID is provided.<\/li>\n<li>Tweak:\u00a0Change composer\/installers version requirement tilde to caret.<\/li>\n<li>Fix: Outdated certificate in Authorize.net SDK causing connection failures.<\/li>\n<li>Fix:\u00a0Counts in Restrict &gt; Members sometimes incorrect when searching for a member.<\/li>\n<li>Fix: SQL syntax error in RCP_Levels::get_levels() limit clause.<\/li>\n<li>Fix: Prevent redirect loop when using \"Hide Restricted Posts\" feature and the redirect page is restricted.<\/li>\n<li>Fix: Content excerpt length was being set to 50, but then filtered to 100. The filter has been removed and the default is now set to 100, to avoid any actual changes.<\/li>\n<li>Fix: Unable to set list_order value in RCP_Levels::insert().<\/li>\n<li>Fix:\u00a0Member incorrectly gets \"cancelled\" status when moving from paid level to old style free trial. This does not affect free trials that have been integrated into a paid subscription level via the \"Trial Duration\" field.<\/li>\n<li>Fix:\u00a0Only block access to content via REST API if user can't access it.<\/li>\n<\/ul>\n<p><strong>Version 2.9.13, May 24, 2018<\/strong><\/p>\n<ul>\n<li>New: Added options to show Terms of Service and Privacy Policy checkboxes on the registration form. This lets you require your members agree to these terms before registering. The time and date someone agreed to the terms is shown on the member's edit screen in the WordPress admin.<\/li>\n<li>New: Added new filters so developers can customize the email subject and message body for emails that are sent to admins when someone's subscription status changes.<\/li>\n<li>Fix: When setting expiration dates using the bulk edit feature, the time is now set to 23:59:59 instead of 00:00:00.<\/li>\n<li>Fix: Settings pages now work properly on sites running non-English languages.<\/li>\n<li>Fix: Searches now work properly when there's a stray space character before or after the search term.<\/li>\n<li>Fix: PHP 7.2 warning no longer happens when viewing the System Info report.<\/li>\n<\/ul>\n<p><strong>Version 2.9.12, May 8, 2018<\/strong><\/p>\n<ul>\n<li>Fix: Syntax error when activating the plugin on older versions of PHP.<\/li>\n<li>Fix: Javascript not loading on the password reset form.<\/li>\n<li>Fix: Two PHP notices when using Google Authenticator.<\/li>\n<li>Fix: Error in German translation files.<\/li>\n<li>Fix: Only load stylesheets when required in the restricted content message display.<\/li>\n<li>Fix: Do not show payment date on pending payments, since they're not paid yet.<\/li>\n<li>Fix: Free members could not see restricted content under certain conditions.<\/li>\n<li>Tweak: Remove log in notice after changing password, since you are not logged out.<\/li>\n<li>Enhancement: Pass the error ID to rcp_error_messages_html filter.<\/li>\n<\/ul>\n<p><strong>Version 2.9.11, April 19, 2018<\/strong><\/p>\n<ul>\n<li>Modified templates: payment-express-confirm.php.<\/li>\n<li>New: You can now easily connect your Stripe account with Stripe Connect. See your settings page for more details.<\/li>\n<li>New: Identify RCP pages (registration form, profile form, etc.) on the Pages &gt; All Pages screen.<\/li>\n<li>New: Added rcp_restricted_post_redirect_url filter to allow developers to dynamically control where someone redirects when trying to view a restricted post they don't have access to.<\/li>\n<li>Tweak: Automatically change the currency symbol shown in the Currency Position setting when the Currency option is changed.<\/li>\n<li>Tweak: Deprecated the cp_check_paypal_return_price_after_discount() function.<\/li>\n<li>Tweak: Add HTML classes to the PayPal Express confirmation form elements.<\/li>\n<li>Tweak: Change the wording in the PayPal settings to make it clear that the API keys are not optional.<\/li>\n<li>Tweak: Added trial information to debug logging in the gateway class.<\/li>\n<li>Tweak: Force debug logging of critical errors.<\/li>\n<li>Tweak: Added fees and level ID to the Subscription Levels section of the System Info file.<\/li>\n<li>Fix: Accessibility issues on the registration form.<\/li>\n<li>Fix: Improve the user experience on the [register_form_stripe] shortcode when someone that's logged out enters an email address that already exists.<\/li>\n<li>Fix: Improve member search feature.<\/li>\n<li>Fix: Errors when cancelling a subscription when an existing member moves from a PayPal subscription to a Stripe subscription.<\/li>\n<li>Fix: Braintree webhook compatibility issue with the old standalone Braintree add-on.<\/li>\n<li>Fix: Duplicate subscriptions created in Stripe under certain conditions.<\/li>\n<li>Fix: Improve the Stripe Checkout experience when using the [register_form_stripe] shortcode. It's now clear that processing is happening in the background after the Stripe Checkout popup closes.<\/li>\n<li>Fix: Updated Brazilian translation files.<\/li>\n<li>Fix: Member status was improperly set to cancelled when changing from PayPal to another gateway, if the PayPal IPN was delayed.<\/li>\n<\/ul>\n<p><strong>Version 2.9.10, March 1, 2018<\/strong><\/p>\n<ul>\n<li>Modified templates: login.php, invoice.php.<\/li>\n<li>New: Add \"Preview\" and \"Send Test Email\" buttons for all email templates.<\/li>\n<li>Fix: Password reset success message not shown if already logged in.<\/li>\n<li>Fix: Members incorrectly receiving \"cancelled subscription\" emails when renewing expired memberships.<\/li>\n<li>Fix: Admins unable to view restricted posts in archives when \"Hide Restricted Posts\" is enabled.<\/li>\n<li>Fix: Delete database cache when adding\/editing subscription levels.<\/li>\n<li>Fix: Payment date in invoice template not localized.<\/li>\n<li>Tweak: Set sslverify to true wherever used.<\/li>\n<\/ul>\n<p><strong>Version 2.9.9, February 12, 2018<\/strong><\/p>\n<ul>\n<li>Tweak: Updated German translation.<\/li>\n<li>Fix: Unable to create new Stripe plans with Stripe API version 2018-02-05 or later.<\/li>\n<li>Fix: \"Hide Restricted Posts\" feature not showing posts in archives for members of free subscription levels.<\/li>\n<li>Fix: Admin \"cancel at payment gateway\" option not working when used in conjunction with \"revoke access now\".<\/li>\n<li>Fix: Only cancel memberships via gateway cancellation webhook if member is active.<\/li>\n<li>Fix: array_key_exists() error when get_post_type() returns false.<\/li>\n<li>Fix: New PayPal Express payments not getting assigned a subscription key.<\/li>\n<li>Fix: Subscription level is blank on manual payment emails sent to administrator.<\/li>\n<li>Fix: register.js file being loaded in [card_details] shortcode if the user cannot actually update their card details.<\/li>\n<li>Fix: JavaScript conflict with other plugins that uses hashes in admin page URLs.<\/li>\n<li>Fix: \"Can't combine currencies on a single customer\" Stripe error when Stripe currency differs from RCP currency.<\/li>\n<\/ul>\n<p><strong>Version 2.9.8, January 12, 2018<\/strong><\/p>\n<ul>\n<li>Tweak: Cancelled users who have expired are now changed to the \"expired\" status. This will update the status of all cancelled users who have reached their expiration date.<\/li>\n<li>Fix: Issue where PayPal payments were recorded twice in RCP under certain conditions.<\/li>\n<li>Fix: PayPal SoftDescriptor truncated error if the site name + subscription name is too long.<\/li>\n<li>New: Added rcp_reminder_notice_periods filter to allow developers to customize email reminder periods.<\/li>\n<li>New: Added rcp_invoice_bill_to action hook to allow developers to customize the invoice Bill To area.<\/li>\n<li>Tweak: Updated Braintree JavaScript to the latest version.<\/li>\n<li>Tweak: Added more debug logs to cron jobs that send renewal\/expiration email reminders.<\/li>\n<li>Fix: First and last name could be blank in Braintree under certain conditions.<\/li>\n<li>Enhancement: Made it more obvious that a member can update their payment card on the [subscription_details] page when their subscription is expired.<\/li>\n<li>Fix: No longer log PayPal as the gateway used on free registrations, because PayPal was not used!<\/li>\n<li>Fix: Undefined index notice when using the [restrict] shortcode if there wasn't a Free Content Message configured in the settings.<\/li>\n<\/ul>\n<p><strong>Version 2.9.7, December 12, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Registration totals are now properly formatted to 2 decimal places when appropriate.<\/li>\n<li>Fix: Issue where proration calculation amounts were incorrect due to date formatting.<\/li>\n<li>Fix: Set expiration on logged in transients when using Disable Account Sharing feature.<\/li>\n<li>Fix: Reports now work properly when switching from Last Year and back to This Year.<\/li>\n<li>Fix: CSV payment export now properly handles negative amounts.<\/li>\n<li>Fix: Issue where free members were marked as pending if they started to purchase a paid subscription and did not complete it.<\/li>\n<li>Fix: Issue with WooCommerce product visibility when products restricted to user level.<\/li>\n<li>Fix: Renew Your Subscription link no longer shows for members that have no expiration date.<\/li>\n<li>Fix: Members with overdue Stripe subscriptions will no longer be double billed if they go through the registration form and renew or subscribe to a different membership.<\/li>\n<li>Fix: Timestamp is now preserved when editing payments.<\/li>\n<li>Fix: Settings tabs now work on translated sites.<\/li>\n<li>Fix: Issue where pending member counts were incorrect under certain conditions.<\/li>\n<li>Tweak: If a member cancels a PayPal Express payment, they'll be returned to the page they came from instead of always going back to the registration page.<\/li>\n<li>Tweak: Adjusted markup on registration form pricing table.<\/li>\n<li>New: Added more data to payment export CSV files.<\/li>\n<\/ul>\n<p><strong>Version 2.9.6, October 20, 2017<\/strong><\/p>\n<ul>\n<li>Fix: New subscriptions immediately cancelled when upgrading from another level and paying with PayPal. That no longer happens.<\/li>\n<li>Fix: Roles defined on the subscription level are now reapplied to expired users when they are reactivated via some way other than the registration form.<\/li>\n<li>Fix: Manual Payment emails to the admin are now sent to the addresses you have in the Admin Notification Email setting under Restrict &gt; Settings &gt; Email.<\/li>\n<li>Fix: Stripe discount codes now properly work regardless of the case used when entering them.<\/li>\n<li>Fix: Improve error message display in Stripe gateway.<\/li>\n<li>Fix: Trailing zeroes are no longer stripped from amounts in emails.<\/li>\n<li>Fix: [subscription_details] shortcode will now show the subscription level name if the member is still pending.<\/li>\n<li>Fix: Earnings now calculate properly for very old payments that exist before payments had a status.<\/li>\n<li>Fix: Confirm dialog no longer shows twice if you want to delete a payment. Once is enough.<\/li>\n<li>Fix: Debug logging now uses the site's configured timezone when logging.<\/li>\n<li>Fix: When specifying a subscription level ID with the [register_form] shortcode, the form will no longer show if the subscription level is unlimited and the member already has the level.<\/li>\n<li>Fix: PHP notice when viewing the [subscription_details] page while logged out.<\/li>\n<li>Fix: _rcp_new_subscription usermeta flag now properly removed on free users when registration processing is complete.<\/li>\n<li>Fix: Changed the font size in the settings page tabs, and fixed the display of the active tab.<\/li>\n<li>Tweak: Swapped the order of the Stripe key settings to match the order Stripe shows them to make things a little easier.<\/li>\n<li>Tweak: Exclude admins from Prevent Account Sharing feature.<\/li>\n<\/ul>\n<p><strong>Version 2.9.5, October 16, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Issue where expired members or manually renewing members paying via Stripe could have ended up with two subscriptions in Stripe.<\/li>\n<li>Fix: Updated the Authorize.net SDK to the latest version, to help with all the Authorize.net fixes listed below.<\/li>\n<li>Fix: Authorize.net will now authorize cards before creating a subscription, which should reduce or eliminate failed payments due to Authorize.net delaying captures.<\/li>\n<li>Fix: Authorize.net now does single charges instead of one-time recurring charges when auto-renew is disabled or not selected.<\/li>\n<li>Fix: Proration message no longer shows if the member isn't eligible for proration.<\/li>\n<li>Fix: Downgrading from a paid to a free subscription will now properly cancel the paid subscription.<\/li>\n<li>Fix: Authorize.net will no longer attempt to create invalid subscriptions with a duration greater than 1 year, since they don't support that.<\/li>\n<li>Fix: Removed Alipay from Stripe Checkout since Stripe no longer supports Alipay via Stripe Checkout. Alipay will be introduced again in the future using another method.<\/li>\n<li>Fix: [register_form_stripe] shortcode behavior is now more consistent with the [register_form] shortcode. It now shows the subscription name in the Stripe Checkout popup instead of the site name. It also now supports image.<\/li>\n<li>Fix: REST API requests failing when the Prevent Account Sharing option is enabled.<\/li>\n<li>Fix: PHP notice when using RCP_Payments::get_payment() with a non-existent payment ID.<\/li>\n<li>Fix: PHP notice Undefined property: RCP_Emails::$payment_id when sending emails.<\/li>\n<li>Fix: When a member has a lifetime membership, RCP no longer shows that membership level to them on the registration page because renewing a lifetime membership makes no sense.<\/li>\n<li>Fix: rcp_is_post_taxonomy_restricted() is unavailable during AJAX requests, which caused issues with certain WooCommerce extensions.<\/li>\n<li>Fix: Invoice notes now better support multiple paragraphs and other formatting.<\/li>\n<li>Fix: RCP_Payments::get_payment_by() now works properly with strings as parameters.<\/li>\n<li>Fix: Braintree compatibility with old Braintree add-on that existed before Braintree was merged into RCP.<\/li>\n<li>New: New action hooks for developers: rcp_options_install and rcp_create_tables.<\/li>\n<li>New: Allow admins to manually verify accounts that are subject to email verification.<\/li>\n<li>New: Added rcp_get_currency_symbol function to get the just the currency symbol of the site's currency.<\/li>\n<li>New: Password reset form now shows a success message after members successfully reset their passwords.<\/li>\n<li>Tweak: Discount code input fields on the registration form are now wrapped in a span element, to make layouts in CSS easier.<\/li>\n<li>Tweak: Change capability required to view Tools menu from rcp_view_payments to rcp_manage_settings. For admin users, this means nothing since you already have both of those capabilities. This is for fine grained access control to menus, if needed.<\/li>\n<li>Tweak: Improve rcp_has_post_restrictions() checks to better support legacy data.<\/li>\n<\/ul>\n<p><strong>Version 2.9.4, September 22, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Payments over 999 were being improperly saved in the database with a comma for a thousand separator, which caused the invoice to show the incorrect amount due to currency formatting.<\/li>\n<li>Fix: Move the rcp_form_processing hook to run later in the registration process, to fix some integration issues with other plugins.<\/li>\n<li>Fix: %amount% email tag was sometimes showing the incorrect amount.<\/li>\n<li>Fix: Registration form hanging when signing up for a free plan and Braintree is the only gateway enabled.<\/li>\n<li>Fix: Login form now supports the class attribute on the [login_form] shortcode.<\/li>\n<li>Fix: PHP notice when saving a post if \"Members of subscription level\" is selected but a radio option below it was not selected.<\/li>\n<li>Fix: Updated admin-styles.min.css<\/li>\n<li>Tweak: Improve description in the tooltip for the Email Verification setting.<\/li>\n<li>New: Allow an empty space to be saved in the message attribute for the [restrict] shortcode.<\/li>\n<li>New: %discount_code% email tag now supported, to show which discount code was used, if any.<\/li>\n<li>New: Added Norwegian translation.<\/li>\n<\/ul>\n<p><strong>Version 2.9.3, September 15, 2017<\/strong><\/p>\n<ul>\n<li>Fix: The subscription level dropdown when editing Pending members now shows their pending subscription level instead of the first one in the list.<\/li>\n<li>Tweak: Subscription level ID numbers are now easier to read in the admin list.<\/li>\n<li>New: rcp_post_excerpt filter added for developers to customize the excerpt content.<\/li>\n<li>New: rcp_verification_redirect_url filter added for developers to customize the redirect URL for email verification links.<\/li>\n<\/ul>\n<p><strong>Version 2.9.2, September 7, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Improved security of Prevent Account Sharing feature.<\/li>\n<li>Fix: Avoid sending personally identifiable information (the email address) in email verification links.<\/li>\n<li>Fix: Renewal Payment Email no longer sent when a Stripe payment is declined during initial registration.<\/li>\n<li>Fix: Braintree payment profile ID not set on some members under certain conditions.<\/li>\n<li>Fix: Incorrect expiration date on PayPal non-recurring payments.<\/li>\n<li>Fix: Member status and expiration issues when a member renews early with the Manual Payment gateway.<\/li>\n<li>Fix: PHP notice when rcp_user_can_access() is used in a template on a 404 page.<\/li>\n<li>Fix: Recurring flag is now removed from members when they changed to free subscription levels.<\/li>\n<li>Fix: Remove _is_paid post meta data when Remove Data on Uninstall option is enabled.<\/li>\n<li>Tweak: Improve text on subscription cancellation notice.<\/li>\n<li>Tweak: Payment Received Emails no longer sent for free registrations.<\/li>\n<li>New: Search members by payment profile ID.<\/li>\n<li>New: Edit \/ View links on Page settings for quicker access to editing and viewing.<\/li>\n<li>New: Add link to member profile on the Edit Payment page.<\/li>\n<li>New: rcp_reminder_subscription_args filter to allow developers to change email reminder behavior.<\/li>\n<\/ul>\n<p><strong>Version 2.9.1, August 29, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Some email template tags not working.<\/li>\n<li>Fix: Payments made with Manual Payments option now remaining pending until approved.<\/li>\n<li>Fix: Removed duplicate query on payment view page in admin.<\/li>\n<li>Fix: RCP_Payments::get_earnings() now supports querying earnings of multiple user ids<\/li>\n<li>Fix: Incorrect number of table columns in payment view screen when there are no payments.<\/li>\n<li>Fix: Payment date on invoices is now translation ready and will use your date format in the WordPress settings.<\/li>\n<li>Fix: Username search results overlapped on Add New Subscription page.<\/li>\n<li>Fix: PayPal Express confirmation page is now responsive and looks better on mobile devices.<\/li>\n<li>Fix: Zip code field is now longer so that input doesn't get cut off visually.<\/li>\n<li>Fix: Join date is no longer overwritten when someone renews the same subscription level.<\/li>\n<li>Fix: CSS now loads on pages with the [subscription_details] shortcode to make it look better.<\/li>\n<li>Fix: When updating PayPal billing card you will no longer get the error \"Error updating subscription\".<\/li>\n<li>Fix: Postal code and CVV are now sent to Braintree to help with fraud detection.<\/li>\n<li>Fix: Misspelled description on settings page.<\/li>\n<li>Fix: Undefined variable $note on the rare occasion a member's expiration date fails to update.<\/li>\n<li>Fix: Authorize.net transactions linked to the wrong gateway in the admin payment view.<\/li>\n<li>Fix: HTML span nesting issue in register.php template.<\/li>\n<li>Fix: Paid users no longer given \"free\" status when the subscription level duration is set to 0. They now get \"active\" status.<\/li>\n<li>Fix: Member join date now uses the local timezone.<\/li>\n<li>Fix: Incorrect \"subscription renewed\" note during new signups.<\/li>\n<li>Fix: PayPal Express auto-renewing members not being marked as recurring.<\/li>\n<li>Fix: Added back the rcp_edit_member action hook that was mistakenly removed in 2.9.<\/li>\n<li>Tweak: Allow subscription price to be entered with only one digit after the decimal.<\/li>\n<li>Tweak: rcp_print_user_payments() function is now deprecated.<\/li>\n<li>New: Added rcp_payments_page_table_row_actions action hook for developers.<\/li>\n<li>New: Added rcp_set_status_value filter for developers to allow filtering of new status in RCP_Member::set_status().<\/li>\n<li>New: Added rcp_payments_total_columns filter to payment view table for developers.<\/li>\n<\/ul>\n<p><strong>Version 2.9, August 14, 2017<\/strong><\/p>\n<ul>\n<li>New: Added subscription renewal reminder notice emails<\/li>\n<li>New: Added support for restricting complete post types<\/li>\n<li>New: Added support for custom user roles in user role restriction options<\/li>\n<li>New: Added Debug Mode option to assist in resolving problems<\/li>\n<li>New: A template tag has been added to email settings for retrieving the URL to the most recent invoice on a member's account<\/li>\n<li>New: Password reset emails are now sent in the standard HTML email as all other RCP emails<\/li>\n<li>New: Admin screens for subscription levels, discount codes, and payment records now include status filters<\/li>\n<li>Tweak: The [register_form] shortcode now permits multiple subscription level IDs to be specified<\/li>\n<li>Tweak: The redirect performed after logging in now uses wp_safe_redirect()<\/li>\n<li>Tweak: The process-data.php file has been broken up into multiple PHP files to make it easier for developers<\/li>\n<li>Tweak: RCP_Payment_Gateway now includes better inline documentation<\/li>\n<li>Tweak: The register-single.php template file now includes a log in link<\/li>\n<li>Tweak: A new action hook has been added that fires after successful member registration<\/li>\n<li>Tweak: Payment records now get created earlier and include a pending status<\/li>\n<li>Tweak: Payment records now store the discount code that was used<\/li>\n<li>Tweak: Payment records now store the exact subscription level ID related to the payment<\/li>\n<li>Tweak: Payment records now store the slug of the payment gateway used, such as stripe<\/li>\n<li>Tweak: Invoice download links are now available from the edit member screen<\/li>\n<li>Bug: Memberships were not properly renewed in Authorize.net if they included a free trial<\/li>\n<li>Bug: PayPal Express could return a fatal error on the confirmation screen for some PayPal accounts<\/li>\n<li>Bug: Stripe customer ID not saved early enough during registration<\/li>\n<li>Bug: rcp_member_get_expiration_date filter did not include necessary $formatted and $pending variables<\/li>\n<li>Bug: WooCommerce: products in restricted category\/tag were still accessible via direct URL<\/li>\n<li>Bug: WooCommerce: active members could not view products restricted to \"Active subscribers only\"<\/li>\n<li>Bug: Expiration date incorrectly calculated for manual renewals<\/li>\n<li>Bug: Subscriptions that auto renew but started with a 100% discount expire improperly<\/li>\n<li>Bug: Registration submit button disabled improperly if reCaptcha is enabled but API keys are not entered<\/li>\n<li>Bug: Stripe Checkout modal shows price even when signing up for a free trial with the [register_form_stripe] shortcode<\/li>\n<li>Bug: Filter in rcp_currency_filter() not used properly<\/li>\n<li>Bug: Subscription ID saved to Stripe customer metadata before subscription is actually created in Stripe<\/li>\n<li>Bug: Pending users can view content protected by [restrict] shortcode<\/li>\n<li>Bug: Duplicate subscriptions created on customers in Stripe if their customer record had a previously delinquent subscription<\/li>\n<\/ul>\n<p><strong>Version 2.8.6, June 7, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Login redirect now works with the redirect_to parameter when added by WordPress.<\/li>\n<li>Fix: Incorrect filter names for registration headers in register-single.php template.<\/li>\n<li>Enhancement: Registration form now passes more form fields when calculating totals, for better add-on compatibility.<\/li>\n<\/ul>\n<p><strong>Version 2.8.5, April 17, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Misspelling of Province on credit card form.<\/li>\n<li>Fix: Memberships sometimes cancelled in when moving from recurring to non-recurring subscription.<\/li>\n<li>Update Finnish translation.<\/li>\n<li>Fix: Round pending subscription amount, which fixes calculation issue with certain gateways like PayPal.<\/li>\n<li>Add member and subscription level metadata to subscriptions on stripe.com.<\/li>\n<li>Fix: Developers - RCP_Member::get_renewed_date() now properly returns a string instead of an array.<\/li>\n<li>Fix: Extra slashes are no longer added to discount code descriptions when saving\/updating.<\/li>\n<\/ul>\n<p><strong>Version 2.8.4, April 5, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Stripe Checkout popup loads twice under certain conditions.<\/li>\n<li>Fix: Trailing zeroes stripped from the price displayed on invoices.<\/li>\n<li>Fix: Post restrictions not working as expected under certain conditions when restricted to tags, categories, or other custom taxonomies.<\/li>\n<\/ul>\n<p><strong>Version 2.8.3, March 30, 2017<\/strong><\/p>\n<ul>\n<li>New: Add confirmation dialog when deleting a discount code.<\/li>\n<li>Fix: PHP notice when exporting payments if the member's account has been deleted.<\/li>\n<li>Fix: Rounding errors with percentage discounts.<\/li>\n<li>Fix: Only show admin notices to users that have necessary capabilities.<\/li>\n<li>Fix: Free trial email being sent twice.<\/li>\n<li>Fix: Stripe receipt emails will now respect the Stripe account settings.<\/li>\n<li>Fix: Missing closing anchor element on View Receipt link.<\/li>\n<li>Fix: Incorrect trial end dates in PayPal Express.<\/li>\n<li>Fix: Trailing zeroes not required when editing payments.<\/li>\n<li>Fix: System info report not showing parent theme template overrides.<\/li>\n<li>Fix: Stripe subscriptions sometimes cancelled during upgrades if the webhook is delayed.<\/li>\n<li>Enhancement: Improve performance of can_access() method.<\/li>\n<\/ul>\n<p><strong>Version 2.8.2, March 17, 2017<\/strong><\/p>\n<ul>\n<li>New: You can now require new members to verify their email before gaining access to restricted content (Restrict &gt; Settings &gt; Emails).<\/li>\n<li>New: There's now a confirmation screen when cancelling a subscription via [subscription_details].<\/li>\n<li>New: Add a member note when the user's subscription level changes.<\/li>\n<li>New: Add filter for the login redirect URL ( rcp_login_redirect_url ).<\/li>\n<li>Fix: Upgrades improperly given both proration and full expiration date extension.<\/li>\n<li>Fix: If initial PayPal Express payment fails, user's account is not set back to \"pending\".<\/li>\n<li>Fix: Stripe customer balance not removed if payment fails.<\/li>\n<li>Fix: Posts restricted by term not included in rcp_is_restricted_content().<\/li>\n<li>Fix: Styling issues on payments table on Edit Member screen. Payments table is also now responsive.<\/li>\n<li>Fix: Cancelled member who signs up for a recurring Stripe subscription incorrectly receives the \"Expired\" email.<\/li>\n<li>Fix: Username validation fails on multisite installations when using uppercase characters.<\/li>\n<li>Fix: Stripe.js loaded twice when EDD Stripe is also activated.<\/li>\n<li>Fix: Disabling upgrades removes renewal link from [subscription_details] page.<\/li>\n<li>Fix: Auto renew checkbox remains visible when selecting a free level with an unlimited duration.<\/li>\n<li>Fix: SQL syntax error on plugin activation.<\/li>\n<li>Fix: Display an error message when attempting to edit a member that doesn't exist.<\/li>\n<li>Fix: PayPal subscr_eot IPN incorrectly expiring some memberships that have since been updated.<\/li>\n<li>Tweak: Always use RCP_Member::get_expiration_date() method where possible instead of getting user meta directly.<\/li>\n<li>Tweak: Improve member notes format during initial signup.<\/li>\n<li>Tweak: When reCAPTCHA is activated you can no longer submit the registration form until it's been filled out.<\/li>\n<li>Tweak: Removed the second display of the subscription level price on the register-single.php template.<\/li>\n<li>Tweak: Changed the heading on the members page from \"Paid Subscribers\" to \"Members\".<\/li>\n<\/ul>\n<p><strong>Version 2.8.1, March 9, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Error on sites running a WordPress version prior to 4.7.<\/li>\n<\/ul>\n<p><strong>Version 2.8, March 9, 2017<\/strong><\/p>\n<ul>\n<li>New: Added Braintree Payments gateway.<\/li>\n<li>New: Added support for one-time discounts.<\/li>\n<li>New: Added an option to remove all data from the database when uninstalling Restrict Content Pro.<\/li>\n<li>New: Payment profiles for member accounts can now be cancelled directly from the member Edit screen when setting their status to \"Cancelled\".<\/li>\n<li>New: Added filter to allow custom metadata to be attached to Stripe subscriptions.<\/li>\n<li>New: Added a setting to select whether Auto Renew is checked on by default for new subscribers.<\/li>\n<li>New: Admin emails can now be customized and configured with template tags.<\/li>\n<li>New: Added actions in metabox display template and in save meta function.<\/li>\n<li>Tweak: Help tabs have been updated and made available for translation.<\/li>\n<li>Tweak: All plugin CSS has been refactored to be more clear and consistent.<\/li>\n<li>Tweak: Use count on discount codes now get properly adjusted when account registration fails.<\/li>\n<li>Fix: If registration with a free trial fails, it is not possible for members to try again.<\/li>\n<li>Fix: Manual renewals improperly prorate payment amounts.<\/li>\n<li>Fix: Payment profile IDs do not have whitespace removed.<\/li>\n<li>Fix: Responsive tables do not work with all themes.<\/li>\n<li>Fix: Incorrect behavior with some restriction functions due to empty metadata being saved.<\/li>\n<\/ul>\n<p><strong>Version 2.7.4, March 3, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Two subscriptions with the same name may result in incorrect\u00a0charge\/duration in Stripe.<\/li>\n<li>Fix: Content restricted to 'any' level was accessible to pending members.<\/li>\n<li>Fix: Some posts incorrectly\u00a0being included in\u00a0rcp_get_post_ids_assigned_to_restricted_terms(). This would only be noticed if \"Hide Restricted Posts\" is checked on.<\/li>\n<li>Fix: Incorrect expiration date given to member if they register, don't complete payment, then register again days later.<\/li>\n<li>Fix: Stripe Checkout spinner icon still visible after closing modal without completing payment.<\/li>\n<li>Fix: Payment form not re-appearing when removing an applied discount code.<\/li>\n<li>Tweak: Pass $event variable to hooks in Stripe gateway, like\u00a0rcp_stripe_charge_succeeded and\u00a0rcp_stripe_charge_failed.<\/li>\n<li>New: Add user note when recurring charge fails.<\/li>\n<li>New: Add new RCP_Member methods for set_subscription_id() and set_subscription_key().<\/li>\n<li>New: Filters for expiring soon email message and subject. Filters are:\u00a0rcp_expiring_soon_email and\u00a0rcp_expiring_soon_subject.<\/li>\n<\/ul>\n<p><strong>Version 2.7.3, February 21, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Free trials not working properly in PayPal Express.<\/li>\n<li>Fix: Older unrestricted posts being improperly treated as restricted.<\/li>\n<li>Fix: Undefined variable in rcp_stripe_charge_failed hook.<\/li>\n<li>Fix: Payments made with Authorize.net have invalid date attached.<\/li>\n<li>Fix: Register button text not passed through rcp_registration_register_button filter.<\/li>\n<li>Tweak: Stop using deprecated functions internally.<\/li>\n<li>New: Per Stripe's recommendation, load Stripe.js on all pages if Stripe is enabled. Helps with Stripe's fraud detection.<\/li>\n<li>New: Add dynamic rcp_set_status_{$status} developer hook in RCP_Member.<\/li>\n<li>New: Email admin when a new manual payment is received.<\/li>\n<li>New: Add [is_expired] shortcode for showing content to expired members only.<\/li>\n<li>New: rcp_save_settings filter for developers to use when RCP settings are saved.<\/li>\n<li>New: Option to Always\/Never show excerpts, or decide on an individual post by post basis. The new option is under Restrict &gt; Settings &gt; Misc.<\/li>\n<li>New: Search by first\/last name on the Members list page.<\/li>\n<\/ul>\n<p><strong>Version 2.7.2, February 14, 2017<\/strong><\/p>\n<ul>\n<li>Enhancement: Add a note to a member's record when the \"expiring soon\" email is sent.<\/li>\n<li>New: Added the rcp_export_members_get_data_row and rcp_export_payments_get_data_row filters, making it easier to custom data to member and payment exports.<\/li>\n<li>New: Introduced a new function, rcp_is_valid_currency(), to determine if a given currency code matches the currency selected in the settings.<\/li>\n<li>New: Added action hooks to the invoice template, making it easier to programmatically add information to the invoice. New hooks are: rcp_invoice_items, rcp_invoice_items_before_total_price, rcp_invoice_additional_info, rcp_invoice_after_additional_info.<\/li>\n<li>Enhancement: Set user display name to username if first and last names are not filled out during registration.<\/li>\n<li>Fix: Member notes added programmatically not saved when editing a member in the admin.<\/li>\n<li>Fix: jQuery Migrate notice on registration form.<\/li>\n<li>Fix: Login failure if username is an email address but is different from the account's actual email address.<\/li>\n<li>Fix: Two cancellation emails sent when a member cancels.<\/li>\n<li>Fix: rcp_get_current_url() not working when used behind a reverse proxy.<\/li>\n<li>Fix: Only send the trial email when a member signs up for an old style trial plan, instead of the trial and active emails.<\/li>\n<li>Fix: Remove brackets from lost password email link, making it work better with some email apps.<\/li>\n<li>Fix: Don't load gateway webhook processing when not needed, such as during ajax, cron, and admin page views.<\/li>\n<li>Fix: Totals not showing on the registration form on mobile devices.<\/li>\n<li>Fix: Trial members not getting an activation email.<\/li>\n<li>Fix: Table layout issue with [subscription_details] shortcode.<\/li>\n<li>Fix: HTML emails have extra spacing when sent through Mandrill with the WPMandrill plugin.<\/li>\n<li>Fix: Quick\/bulk editing WooCommerce products no longer wipes out restriction settings.<\/li>\n<li>Fix: Incomplete email subject line on admin notifications of free trials.<\/li>\n<li>Fix: PHP notice: undefined gateway_obj on free registrations.<\/li>\n<li>Fix: Email tags not parsed on plain text emails.<\/li>\n<li>Tweak: Deprecate the unused rcp_rstrstr() function.<\/li>\n<li>Developer: Introduced can_cancel() and cancel_payment_profile() methods in RCP_Member. rcp_can_member_cancel() and rcp_cancel_member_payment_profile() are now wrappers for these new methods.<\/li>\n<\/ul>\n<p><strong>Version 2.7.1, February 8, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Missing Stripe token when using Stripe Checkout<\/li>\n<\/ul>\n<p><strong>Version 2.7, February 8, 2017<\/strong><\/p>\n<ul>\n<li>New: Added Authorize.net integration<\/li>\n<li>New: Added support for free trials with payment detail collection<\/li>\n<li>New: Added support for failed payment email notifications<\/li>\n<li>New: Added support for HTML emails with new email templates<\/li>\n<li>New: Added a better integration with Easy Digital Downloads<\/li>\n<li>New: Added support for automatically removing subscription level-assigned user roles when members expire \/ cancel<\/li>\n<li>New: Content restricted via taxonomy term is now compatible with our redirect feature<\/li>\n<li>New: HTML classes now added via post_class to restricted content<\/li>\n<li>New: Members now redirected away from all restricted content when they do not have access and Hide Restricted Posts is enabled<\/li>\n<li>New: An option to hide the WordPress toolbar has been added<\/li>\n<li>New: A column for \"Payment Status\" has been added to the [subscription_details] shortcode<\/li>\n<li>New: Automatically apply a discount code by including it in the registration URL<\/li>\n<li>Tweak: [subscription_details] is now fully responsive<\/li>\n<li>Tweak: Payment method selection now uses radio buttons<\/li>\n<li>Tweak: Direct links to merchant details screens has been added to payments list in the member edit screen<\/li>\n<li>Tweak: All back-end pages now use h1 tags for page headers<\/li>\n<li>Fix: First\/last name and billing address not sent to PayPal Pro<\/li>\n<li>Fix: Incorrect language detected by System Info report<\/li>\n<li>Fix: Incorrect payment \/ discount ID sometimes returned when creating new records<\/li>\n<li>Fix: Incorrect description under 2Checkout Test Seller ID field<\/li>\n<li>Fix: Invalid integer error when using Alipay in Stripe Checkout<\/li>\n<li>Fix: Existing users cannot subscribe with Stripe Checkout<\/li>\n<li>Fix: Invalid HTML markup in profile editor<\/li>\n<li>Fix: Fatal error when attempting to create a discount code when Stripe API credentials are not set up<\/li>\n<li>Fix: Database tables inaccessible in WordPress multisite when network activated<\/li>\n<li>Fix: Registration form validation skipped when using Stripe Checkout<\/li>\n<li>Fix: Account details not emailed to customers when using Stripe Checkout shortcode<\/li>\n<li>Fix: Users with rcp_manage_discounts capability unable to add new discount codes<\/li>\n<li>Fix: Memberships are now activated immediately after successful PayPal Pro payment (rather than a few second delay)<\/li>\n<\/ul>\n<p><strong>Version 2.6.16, January, 21 2017<\/strong><\/p>\n<ul>\n<li>Fix: Issue where expired and pending members were locked out of all site content, regardless of restriction settings.<\/li>\n<\/ul>\n<p><strong>Version 2.6.15, January, 19 2017<\/strong><\/p>\n<ul>\n<li>Fix: Issue where expired members could still restricted access content under certain conditions.<\/li>\n<\/ul>\n<p><strong>Version 2.6.14, January, 6 2017<\/strong><\/p>\n<ul>\n<li>New: Added option for opting into beta updates.<\/li>\n<li>Updated Spanish es_ES language files.<\/li>\n<\/ul>\n<p><strong>Version 2.6.13, December 9, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Conflict with AffiliateWP REST API<\/li>\n<\/ul>\n<p><strong>Version 2.6.12, December 5, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Missing Stripe token error when using Stripe Checkout gateway.<\/li>\n<\/ul>\n<p><strong>Version 2.6.11, November 29, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Properly show errors on password reset form when errors occur during password resets.<\/li>\n<li>Fix: Ensure valid prices are entered the subscription level add\/edit screen.<\/li>\n<li>Fix: Fatal error on Stripe purchases when card fails.<\/li>\n<li>Fix: Fatal error when activating the plugin on old, unsupported versions of PHP.<\/li>\n<li>Fix: Prevent Account Sharing didn't work properly under certain conditions.<\/li>\n<li>Fix: Stripe Checkout prevented other payment options from being used if Stripe Checkout was selected first.<\/li>\n<li>Fix: Alipay showed on Stripe Checkout even if not enabled.<\/li>\n<li>Fix: Incorrect expiration date shown in Active Subscription emails.<\/li>\n<li>Fix: PayPal issue where the URL was formatted incorrectly on certain web hosts.<\/li>\n<li>Fix: First level not automatically selected on the registration form.<\/li>\n<li>Enhancement: Add Swedish translation files.<\/li>\n<\/ul>\n<p><strong>Version 2.6.10, October 27, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Bug introduced in 2.6.9 that caused some members to not be able to see content they have access to.<\/li>\n<\/ul>\n<p><strong>Version 2.6.9, October 26, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Alipay option shows in Stripe Checkout on some sites when it's disabled.<\/li>\n<li>Fix: Expiration date formatted incorrectly on the member edit screen for some sites.<\/li>\n<li>Fix: Wrong expiration date showed for some pending members on the Members page.<\/li>\n<li>Fix: Comments visible for users without access on some posts when the post was restricted by role only.<\/li>\n<li>Fix: Duplicate HTML ID in the profile editor template.<\/li>\n<li>Fix: Member status did not get set to pending if upgrading from a free trial to a paid membership when using the Manual Payment gateway.<\/li>\n<li>Fix: Member expiration date was incorrectly calculated when upgrading from one membership to another when using the Manual Payment gateway.<\/li>\n<li>Fix: Set From Name and From Email headers in the Expiring Soon emails.<\/li>\n<li>Fix: Invalid character in SoftDescriptor during registration when using PayPal Pro.<\/li>\n<li>Tweak: Pass the discount and subscription ID to the rcp_discounts_once_per_user filter.<\/li>\n<li>Enhancement: Added \"View User Account\" link to payment records on the Payments page.<\/li>\n<\/ul>\n<p><strong>Version 2.6.8, October 3, 2016<\/strong><\/p>\n<ul>\n<li>Fix: User registration does not complete when using Stripe Checkout with a 100% discount code.<\/li>\n<li>Fix: Unrecognized options in Stripe Checkout.<\/li>\n<li>Fix: Cancellation emails were sent twice when a member cancels a subscription.<\/li>\n<li>Fix: improve security of all member-facing forms.<\/li>\n<li>Tweak: use rcp_get_currency() helper function throughout the plugin instead of direct option calls. Improves compatibility for developers.<\/li>\n<li>Enhancement: Send RCP plugin name, version, and your site URL to Stripe when making charges. Useful for debugging issues with Stripe. Stripe refers to this as setAppInfo.<\/li>\n<\/ul>\n<p><strong>Version 2.6.7, September 20, 2016<\/strong><\/p>\n<ul>\n<li>Tweak: Better error handling for Stripe processing failures<\/li>\n<li>Tweak: Improved performance of registration form processing<\/li>\n<li>Tweak: Removed \"Cancel\" button from edit member screen to reduce confusion<\/li>\n<li>Tweak: Notice is now displayed when enabling login redirect without a login form on the redirect page<\/li>\n<li>Fix: Logos on invoices can extend beyond container<\/li>\n<li>Fix: Invalid integer error with Stripe when using discounts<\/li>\n<li>Fix: Custom date range not clickable in Reports<\/li>\n<li>Fix: Content improperly restricted to free members when using access levels<\/li>\n<li>Fix: Incorrect filter name in payment meta DB class<\/li>\n<li>Fix: Check if DONOTCACHE page is already defined before defining it<\/li>\n<li>Fix: Incorrect capability checked when generating invoice<\/li>\n<li>Fix: Member join date not set properly when manually changing a member's subscription level<\/li>\n<li>Fix: Memory leak on edit member page that could cause session expired notices<\/li>\n<li>Fix: [restrict] shortcode improperly restricts to free members<\/li>\n<li>Fix: User role not updated when downgrading \/ upgrading<\/li>\n<li>Fix: Subscription level cache not flushed when updating subscription level<\/li>\n<li>Fix: Free accounts cannot be registered when 2Checkout gateway is active<\/li>\n<\/ul>\n<p>Version 2.6.6, August 8, 2016<\/p>\n<ul>\n<li>Fix: Payments not logged with PayPal Pro and PayPal Express when auto-renew is disabled.<\/li>\n<li>Fix: Incorrect subscription level selected on the registration form when manually specifying the subscription level ID in the URL.<\/li>\n<li>Fix: A subscription level's metadata is now deleted when the subcription level is deleted in the admin.<\/li>\n<li>Enhancement: Removed the use of PHP extract function from all shortcodes.<\/li>\n<li>Enhancement: The rcp_locate_template function now supports registering custom template locations via the rcp_template_stack filter.<\/li>\n<li>Enhancement: Added the rcp_available_template_tags action hook to let developers add new email template tags to the Available Template Tags display in the Email settings tab.<\/li>\n<\/ul>\n<p>Version 2.6.5, August 1, 2016<\/p>\n<ul>\n<li>Fix: Stripe gateway not working properly on some sites. Fixes invalid request errors due to TLS.<\/li>\n<li>Fix: \"Last Week\" earnings report not working properly.<\/li>\n<li>Fix: PayPal Pro gateway not working properly on some accounts that do not use automatic renewals.<\/li>\n<li>Fix: Issue where paid members could not renew their expired subscriptions on the registration form.<\/li>\n<li>Fix: Remove empty spaces from Stripe API keys when saving to prevent copy and paste errors when entering the keys in settings.<\/li>\n<li>Fix: Show an error message on registration form if Stripe keys are not entered.<\/li>\n<li>Fix: Define CAL_GREGORIAN constant on systems that do not do it already.<\/li>\n<li>Fix: Update settings description for Hide Premium Posts.<\/li>\n<li>Enhancement: Add Recurring column to member CSV export.<\/li>\n<\/ul>\n<p>Version 2.6.4, July 26, 2016<\/p>\n<ul>\n<li>Fix: Discounted total calculation bug when discounted total is $1000 or more.<\/li>\n<li>Fix: Stripe Checkout missing token error when used with the [register_form] shortcode and the ID option.<\/li>\n<li>Fix: Stripe subscription expiration dates improperly extended under certain conditions.<\/li>\n<li>Fix: Subscription name blank in emails when the subscription was added manually.<\/li>\n<li>Fix: Timezone configurations not always respected when calculating expirations.<\/li>\n<li>Fix: Invoices not showing the email address defined in settings.<\/li>\n<li>Fix: Registration form error message when a site only has free subscriptions activated.<\/li>\n<li>Fix: Auto-fill the email address on the Stripe Checkout form when possible.<\/li>\n<li>Enhancement: Added a rcp_is_sandbox helper function for determining if a site is in sandbox mode.<\/li>\n<li>Updated: Dutch language files.<\/li>\n<\/ul>\n<p>Version 2.6.3, July 11, 2016<\/p>\n<ul>\n<li>Fix: Issue with taxonomy restrictions introduced in 2.6.2.<\/li>\n<\/ul>\n<p>Version 2.6.2, July 11, 2016<\/p>\n<ul>\n<li>Fix: Issue with content restriction interface on post edit screen that caused it to show the improper setting when \"Members of any subscription level\" was set.<\/li>\n<\/ul>\n<p>Version 2.6.1, July 8, 2016<\/p>\n<ul>\n<li>Fix: Issue that caused content to be visible when the Paid Only option was used without any other restrictions defined.<\/li>\n<li>Fix: Display issue with the new user interface for restricting content.<\/li>\n<\/ul>\n<p>Version 2.6, July 7, 2016<\/p>\n<ul>\n<li>New: Redesigned user interface for restricting content on posts and pages<\/li>\n<li>New: All admin list tables are now fully responsive<\/li>\n<li>New: \u00a0Added contextual tool tips and improved setting descriptions throughout the plugin<\/li>\n<li>New: Replaced PDF invoices with HTML invoices, making invoices faster and easier to customize, and also reduced the size of the plugin files significantly<\/li>\n<li>New: Comments on restricted content are now automatically hidden from members without necessary access privileges<\/li>\n<li>New:\u00a0A new Add-ons page has been added to the Restrict menu<\/li>\n<li>New: Added support for Alipay in Stripe Checkout<\/li>\n<li>New: Payment transaction IDs are now linked directly to the merchant processor page<\/li>\n<li>New: PayPal customers can now update the credit \/ debit card attached to their subscription<\/li>\n<li>New: Join and renewal dates are now stored in meta data for members<\/li>\n<li>New: Added metadata APIs for subscription levels and payments<\/li>\n<li>New: Added improved database upgrade API<\/li>\n<li>Tweak: Fixed widths have been removed from labels on registration form<\/li>\n<li>Tweak: Improved member counts that are significantly faster<\/li>\n<li>Tweak: Indexes have been added to all database tables to improve performance<\/li>\n<li>Tweak: Stripe API libraries have been updated to the latest version<\/li>\n<li>Tweak: Updated French translation<\/li>\n<li>Fix: Expiring \/ renewing soon email\u00a0not sent to customers that upgrade<\/li>\n<li>Fix: \"Cannot combine currencies on customer\" error in Stripe<\/li>\n<li>Fix: \"No such plan: false\" error in Stripe<\/li>\n<li>Fix: Incorrect locale parameter passed to Stripe Checkout<\/li>\n<li>Fix: Payment Received emails are sent even when disabled<\/li>\n<li>Fix: Payment amount not properly sanitized in PayPal IPN processing<\/li>\n<li>Fix: Incorrect support forum link<\/li>\n<li>Fix: Pending\u00a0expiration date shown in subscription.php template file<\/li>\n<li>Fix: Coupon codes not created in Stripe when only Stripe Checkout is enabled<\/li>\n<li>Fix: Revoke access link does not actually revoke access<\/li>\n<li>Fix: &lt;LI&gt; tag cannot be changed in register.php without breaking registration<\/li>\n<li>Fix: Editing a discount code results in a duplicate code being created in Stripe<\/li>\n<li>Fix: Activate License button missing<\/li>\n<li>Fix: Password not validated during Change Password form submission<\/li>\n<\/ul>\n<p>Version 2.5.4, May 16, 2016<\/p>\n<ul>\n<li>Fix: Missing amount verification during PayPal IPN processing<\/li>\n<li>Fix: Incorrect page set for \"Update Billing Card Page\" during plugin install<\/li>\n<li>Fix: Incorrect submit button text shows when using Stripe Checkout and\u00a0a free level is selected<\/li>\n<li>Fix: %subscription_name% email tag returns wrong subscription name when upgrading subscription<\/li>\n<li>Fix: Non-translatable strings in PayPal Express Confirmation template<\/li>\n<li>Fix: WP cron events not deleted when plugin is uninstalled<\/li>\n<li>Tweak: Improved\u00a0access checks for [restrict] shortcode, including the introduction of a new \"rcp_restrict_shortcode_has_access\" filter<\/li>\n<\/ul>\n<p>Version 2.5.3, April 29, 2016<\/p>\n<ul>\n<li>Fix: Missing text domains on strings<\/li>\n<li>Fix: One-time charges through Stripe not connected to customer in Stripe<\/li>\n<li>Fix: Currency sign on Stripe Checkout modal incorrect when not using USD<\/li>\n<li>Fix: Missing text strings in POT file<\/li>\n<li>Fix: Formatting problems with amounts over 1000<\/li>\n<li>Fix: Unrestricted WooCommerce products get restricted improperly<\/li>\n<li>Fix: Previous subscription not always cancelled in merchant processor when upgrading subscription levels<\/li>\n<li>Fix: Previous subscription not cancelled when upgrading to one-time payment option<\/li>\n<li>Fix: Refunds report introduced in 2.5 accidentally removed<\/li>\n<li>New: Added Portuguese translation<\/li>\n<\/ul>\n<p>Version 2.5.2, April 7, 2016<\/p>\n<ul>\n<li>Fix: Trailing zeros missing from final price on registration form<\/li>\n<li>Fix: Incorrect column span on registration form<\/li>\n<li>Fix: Incorrect date recorded for some Stripe payments<\/li>\n<\/ul>\n<p><strong>Version 2.5.1, April 5, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Prorating amounts over 1000 fails<\/li>\n<li>Fix: WooCommerce products incorrectly hidden when catalogue visibility is disabled<\/li>\n<li>Fix: Nav menus cannot be saved when Restrict Content Pro is active<\/li>\n<li>Tweak: Removed Description column in pricing details section of registration form<\/li>\n<\/ul>\n<p>Version 2.5, March 29, 2016<\/p>\n<ul>\n<li>New: Added support for upgrading and downgrading between subscription levels with proration<\/li>\n<li>New: Added improved discount, signup fee, and price display on registration<\/li>\n<li>New: Added support for Stripe Checkout<\/li>\n<li>New: Improved payment history display on Member details page<\/li>\n<li>New: Added a View Member link to payment history rows<\/li>\n<li>New: Added a System Info report to aid in technical support<\/li>\n<li>New: Added a Refund report to the Reports page<\/li>\n<li>New: Added improved support for detecting re-activated subscriptions in Stripe<\/li>\n<li>New: Added new shortcodes for displaying membership information of currently logged in member<\/li>\n<li>New: Currently stored credit \/ debit card details now show on card update form<\/li>\n<li>New: Content restriction options added to custom taxonomies<\/li>\n<li>Fix: Is Recurring flag not set properly on successful\u00a0but\u00a0late payments<\/li>\n<li>Fix: \u00a0Initial payments not collected in PayPal Pro gateway<\/li>\n<li>Fix: Members not emailed when membership is added manually by site admin<\/li>\n<li>Fix: WP Approve User integration improperly disallows access to content with no restrictions<\/li>\n<li>Fix: PayPal Express and Pro\u00a0show an error if the initial amount is less than 0<\/li>\n<li>Fix: Zero-decimal currencies not supported properly in Stripe<\/li>\n<li>Fix: Incorrect URL to Help page<\/li>\n<li>Fix: WooCommerce products still accessible even when restricted<\/li>\n<li>Fix: Payment dates do not match up with payment processor<\/li>\n<li>Fix: Subscription price not updated in Stripe when updated in Restrict Content Pro<\/li>\n<li>Fix:\u00a0Renewal dates not\u00a0properly synced with merchant processor when payments are processed<\/li>\n<li>Fix: PayPal Express logs the profile ID instead of the transaction ID<\/li>\n<\/ul>\n<p>Version 2.4.11, February 12, 2016<\/p>\n<ul>\n<li>Fix: PayPal Sandbox rejecting Express and Pro signups due to http version<\/li>\n<li>Fix: Recurring payments in 2Checkout not processed properly<\/li>\n<li>Tweak: Updated PayPal APIs to version 124<\/li>\n<\/ul>\n<p>Version 2.4.10, February 7, 2016<\/p>\n<ul>\n<li>Fix: Signup fees reversed in Stripe resulting in credits being given instead of fees<\/li>\n<\/ul>\n<p>Version 2.4.9, February 2, 2016<\/p>\n<ul>\n<li>Fix: Expiration date not set when a pending date was already set<\/li>\n<li>Fix: Custom report ranges that span year boundaries display improperly<\/li>\n<li>Fix: Discount codes permitted non-valid amounts to be saved<\/li>\n<li>Fix: Subscription levels could be created without a name<\/li>\n<li>Fix: HTML emails were not possible due to htmlspecialchars() function<\/li>\n<li>New: Added new hooks for when payment processing during signup fails<\/li>\n<\/ul>\n<p><strong>Version 2.4.8, January 22, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Duplicate 0.00 transactions with Stripe when using a signup fee<\/li>\n<li>Fix: Incorrect expiration dates\u00a0with registrations through Stripe<\/li>\n<\/ul>\n<p>Version 2.4.7, December 29, 2015<\/p>\n<ul>\n<li>Fix: Expiration dates incorrectly set after renewing or upgrading an existing account<\/li>\n<li>Fix: \"Profile Description Invalid\" error sometimes in PayPal Express<\/li>\n<li>New: Added class names to table columns for the Members table<\/li>\n<li>Tweak: Added nocache headers to the lost password processing screens<\/li>\n<\/ul>\n<p>Version 2.4.6, December 18, 2015<\/p>\n<ul>\n<li>Fix: Apply Discount button was missing from register-single.php template file<\/li>\n<li>New: Members can now log in via email<\/li>\n<\/ul>\n<p><strong>Version 2.4.5, December 11, 2015<\/strong><\/p>\n<ul>\n<li>Fix: Logged out users shown Account Pending Verification message on all posts and pages<\/li>\n<\/ul>\n<p><strong>Version 2.4.4, December 10, 2015<\/strong><\/p>\n<ul>\n<li>Fix: Expiration date doubled when members subscribe with PayPal, cancel before completing payment, then subscribe again.<\/li>\n<li>Fix: Typo email settings<\/li>\n<\/ul>\n<p>Version 2.4.3, November 24, 2015<\/p>\n<ul>\n<li>Fix: Bug with upgrading currently active subscriptions<\/li>\n<li>Fix: Missing INS processing for 2Checkout<\/li>\n<li>Fix: Undefined variable when discount code is not used<\/li>\n<li>New: Added action hooks to the top and bottom of the Restrict this Content metabox<\/li>\n<li>New: Added filters to the member queries run during\u00a0cron jobs<\/li>\n<\/ul>\n<p>Version 2.4.2, November 7, 2015<\/p>\n<ul>\n<li>Fix: Bug with Stripe webhook processing that could prevent account cancellations from working properly when cancelled from Stripe<\/li>\n<\/ul>\n<p>Version 2.4.1, November 4, 2015<\/p>\n<ul>\n<li>Fix: Discount codes not discounting price in payment gateways<\/li>\n<\/ul>\n<p>Version 2.4, November 2, 2015<\/p>\n<ul>\n<li>New: Added support for 2Checkout<\/li>\n<li>New: Added support for WP Approve User plugin for requiring admins approve user accounts<\/li>\n<li>Fix: PayPal payment dates and expiration dates getting out of sync<\/li>\n<\/ul>\n<p><strong>Version 2.3.8, October 21, 2015<\/strong><\/p>\n<ul>\n<li>Fix: Duplicate active email sent for users that register with a 100% discount code<\/li>\n<li>Fix: Active email not sent properly for new registrations<\/li>\n<li>Fix: Trial email sent improperly when 100% discount code is used<\/li>\n<li>Fix: 100% discount code generates \"Free subscriptions cannot be automatically renewed\" error<\/li>\n<\/ul>\n<p>Version 2.3.7, October 21, 2015<\/p>\n<ul>\n<li>Fix: Missing Stripe token error<\/li>\n<\/ul>\n<p>Version 2.3.6, October 20, 2015<\/p>\n<ul>\n<li>Fix: Active \/ Welcome emails sent even for non-new accounts<\/li>\n<li>Fix: Admin notification after updating payment persists across page loads<\/li>\n<li>Fix: Manually created payments do not flush the earnings cache<\/li>\n<li>Fix: User search field results shown incorrectly when no results found<\/li>\n<li>Fix: Spelling errors across several admin pages<\/li>\n<li>Fix: New Subscription emails show incorrect expiration date in some cases<\/li>\n<li>Fix: Non-numeric amounts can be entered for payments<\/li>\n<li>Fix: Stripe customer credit properly supported now<\/li>\n<\/ul>\n<p>Version 2.3.5, October 6, 2015<\/p>\n<ul>\n<li>Fix: Expiration date is sometimes shown incorrectly in Payment Received emails<\/li>\n<li>Fix: Payment dates not always respecting server's timestamp<\/li>\n<li>Fix: Undefined index notices when activating\/deactivating discount codes when Stripe is enabled<\/li>\n<li>Fix: Spelling error, \"logout\" should be \"log out\"<\/li>\n<li>Fix: Spelling error, \"Mail Chimp\" should be \"MailChimp\"<\/li>\n<li>Fix: Grammar error, \"Setup\" should be \"Set Up\"<\/li>\n<li>Fix: Incorrect link to documentation<\/li>\n<li>Fix: Undefined index notices when settings have not been saved<\/li>\n<\/ul>\n<p>Version 2.3.4, September 24, 2015<\/p>\n<ul>\n<li>Fix: Variable typo that caused PayPal Standard IPN processing to not work properly<\/li>\n<\/ul>\n<p>Version 2.3.3, September 22, 2015<\/p>\n<ul>\n<li>Fix: renew() method incorrectly setting member status in some cases<\/li>\n<\/ul>\n<p>Version 2.3.2, September 22, 2015<\/p>\n<ul>\n<li>Fix: PayPal Express IPNs not being processed properly on all accounts<\/li>\n<\/ul>\n<p>Version 2.3.1, September 18, 2015<\/p>\n<ul>\n<li>Fix: Reset password URL not working<\/li>\n<\/ul>\n<p><strong>Version 2.3, September 18, 2015<\/strong><\/p>\n<ul>\n<li>New: Added the ability to bulk edit member accounts<\/li>\n<li>New: Added support for reCaptcha v2.0 from Google<\/li>\n<li>New: Added Payment Received email option<\/li>\n<li>New: Account, Profile, and Card Update pages are now created automatically during install<\/li>\n<li>Fix: account page text is too large in Twenty Fifteen theme<\/li>\n<li>Fix: Renew link improperly shown for free members<\/li>\n<li>Fix: Last Week earnings not shown properly when it crosses a month boundary<\/li>\n<\/ul>\n<p><strong>Version 2.2.7, August 19, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug that caused expiration dates to be set too far in the future during registration.<\/li>\n<\/ul>\n<p><strong>Version 2.2.6, August 11, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with negative signup fees and recurring subscriptions in Stripe<\/li>\n<li>Fixed a bug that caused declined card errors to not get caught when updating the billing card<\/li>\n<li>Added a confirmation message to the Update Billing Card form<\/li>\n<\/ul>\n<p>Version 2.2.5, August 6, 2015<\/p>\n<ul>\n<li>Fixed a bug with expiration dates getting set too far ahead for customers that register through Stripe<\/li>\n<\/ul>\n<p><strong>Version 2.2.4, August 3, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with expiration dates being calculated incorrectly when calculating for a subscription level that never expires<\/li>\n<li>Fixed a bug that caused the Active Subscription email to include the wrong expiration date<\/li>\n<li>Fixed a bug that caused the Screen Options tab to not save properly<\/li>\n<li>Tweak to ensure the member's display name is set during registration<\/li>\n<\/ul>\n<p><strong>Version 2.2.3, July 20, 2015<\/strong><\/p>\n<ul>\n<li>Fixed an issue with fatal errors\u00a0when updating pages that contain the RCP shortcodes on some websites.<\/li>\n<li>Updated New User notification emails to contain the user login names<\/li>\n<li>Tweak registration form JS to ensure that clicking Register multiple times doesn't cause issues<\/li>\n<li>Added member status to the member export<\/li>\n<\/ul>\n<p><strong>Version 2.2.2, July 9, 2015<\/strong><\/p>\n<ul>\n<li>Fixed an issue with calculating member's new expiration date when accounts are renewed.<\/li>\n<\/ul>\n<p>Version 2.2.1, July 8, 2015<\/p>\n<ul>\n<li>Fixed an issue with WooCommerce products not being shown to registered users<\/li>\n<\/ul>\n<p>Version 2.2, July 6, 2015<\/p>\n<ul>\n<li>Added support for restricting WooCommerce products<\/li>\n<li>Added support for 2-factor authentication through Google Authenticator<\/li>\n<li>Added members' payment profile IDs to member export file<\/li>\n<li>Added new action hooks to login form template file<\/li>\n<li>Fixed issue with members not being logged in automatically during registration<\/li>\n<li>Fixed \"unexpected output\" during activation<\/li>\n<\/ul>\n<p>Version 2.1.11, June 18, 2015<\/p>\n<ul>\n<li>Fixed a PHP notice during installation<\/li>\n<li>Fixed an issue with discount code validation on single registration forms<\/li>\n<li>Fixed an issue with discount codes not being re-validated when the level is changed<\/li>\n<li>Fixed an issue with one-time Stripe charges getting attributed to the wrong user<\/li>\n<li>Fixed an issue with the Help page not redirecting to the documentation site<\/li>\n<\/ul>\n<p>Version 2.1.10, May 27, 2015<\/p>\n<ul>\n<li>Fixed an issue with signup fees not working in Stripe<\/li>\n<li>Added new useremail template tag for emails<\/li>\n<\/ul>\n<p>Version 2.1.9, May 27, 2015<\/p>\n<ul>\n<li>Fixed an issue with credit\/debit card form not displaying if the first level is Free<\/li>\n<li>Fixed a fatal error in the PayPal Pro gateway that occurred if API credentials had not been entered<\/li>\n<li>Tweaked the card number field to have a max length of 20 characters<\/li>\n<li>Tweaked the description text\u00a0in settings<\/li>\n<\/ul>\n<p><strong>Version 2.1.8, May 21, 2015<\/strong><\/p>\n<ul>\n<li>Fixed an error message when updating discounts with Stripe active<\/li>\n<li>Fixed an issue with payment settings disappearing when plugin is reactivated<\/li>\n<li>Fixed a typo in the settings page<\/li>\n<li>Fixed an issue with email notifications not being sent when accounts are cancelled<\/li>\n<\/ul>\n<p><strong>Version 2.1.7, May 21, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with reCaptcha over SSL<\/li>\n<\/ul>\n<p><strong>Version 2.1.6, May 13, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a fatal error when updating credit \/ debit cards in Stripe<\/li>\n<li>Fixed a bug that caused the \"Active\" email to be sent to trial subscribers<\/li>\n<\/ul>\n<p><strong>Version 2.1.5, May 12, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with expiration dates on Unlimited plans<\/li>\n<li>Fixed a bug with the price not showing up on the single register template<\/li>\n<li>Fixed a\u00a0bug with the Stripe libraries not being loaded if another plugin had already loaded it<\/li>\n<\/ul>\n<p><strong>Version 2.1.4, May 11, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug that caused emails to not be sent to free or trial members.<\/li>\n<\/ul>\n<p>Version 2.1.3, May 9, 2015<\/p>\n<ul>\n<li>Fixed a bug that caused the credit \/ debit card form to not be displayed when passing the id=\"x\" parameter to the register form short code.<\/li>\n<\/ul>\n<p>Version 2.1.2, May 6, 2015<\/p>\n<ul>\n<li>Fixed a bug that caused PayPal Standard subscriptions to not get activated<\/li>\n<\/ul>\n<p><strong>Version 2.1.1, May 4, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with editing \/ creating discount codes when the Stripe gateway is inactive<\/li>\n<\/ul>\n<p><strong>Version 2.1, April 30, 2015<\/strong><\/p>\n<ul>\n<li><strong>This is a major release. Please see <a href=\"https:\/\/pippinsplugins.com\/?p=60420\">release post<\/a> for detailed information.<\/strong><\/li>\n<li>Stripe, PayPal Pro, and PayPal Express now included for free. Braintree integration is also free as an add-on.<\/li>\n<li>New payment gateway API for developers to build additional payment processor integrations.<\/li>\n<li>New Manual Payment gateway for processing manual payments.<\/li>\n<li>Dramatically improved registration form processing.<\/li>\n<li>Registration form now submits via ajax and displays error messages without a page \u00a0reload.<\/li>\n<li>Better member cancellation options from member's account pages<\/li>\n<li>Site admins can now cancel member's payment profile from Restrict &gt; Members.<\/li>\n<li>Improved and re-organized settings screen.<\/li>\n<li>New RCP_Member class for developers.<\/li>\n<li>New RCP_Payment_Gateway class for developers.<\/li>\n<li>New rcp_user_can_access() function for developers.<\/li>\n<li>Numerous other new functions for developers.<\/li>\n<\/ul>\n<p><strong>Version 2.0.17, April 20, 2015<\/strong><\/p>\n<ul>\n<li>Minor XSS security fix<\/li>\n<\/ul>\n<p><strong>Version 2.0.16, February 11, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a conflict with The Event Calendar plugin<\/li>\n<li>Updated the French translation files<\/li>\n<\/ul>\n<p><strong>Version 2.0.15, January 29, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with signup fees in PayPal over 1,000<\/li>\n<li>Updated the plugin updater class<\/li>\n<li>Fixed a spelling error<\/li>\n<li>Modified the shortcodes include file to always be included<\/li>\n<li>Fixed an incorrect user ID variable during the process that adds a manual subscription to a user<\/li>\n<li>Introduced\u00a0rcp_before_subscription_form_fields hook<\/li>\n<li>Fixed two method declarations in the WP_Logging class<\/li>\n<\/ul>\n<p><strong>Version 2.0.14, November 19, \u00a02014<\/strong><\/p>\n<ul>\n<li>Added an option to let non-recurring members renew their access from their account page<\/li>\n<\/ul>\n<p><strong>Version 2.0.13, October 29, 2014<\/strong><\/p>\n<ul>\n<li>Fixed a bug in the updater that caused update checks to run too often.<\/li>\n<\/ul>\n<p><strong>Version 2.0.12, October 21, 2014<\/strong><\/p>\n<ul>\n<li>Improved plugin updater class<\/li>\n<\/ul>\n<p>Version 2.0.11, October 7, 2014<\/p>\n<ul>\n<li>Updated language files<\/li>\n<\/ul>\n<p>Version 2.0.10, October 1, 2014<\/p>\n<ul>\n<li>Fixed a bug with adding subscriptions manually to user accounts<\/li>\n<\/ul>\n<p>Version 2.0.9, August 27, 2014<\/p>\n<ul>\n<li>Updated the Restrict menu icon to use dashicons<\/li>\n<li>Automatically add \/ remove user roles anytime their subscription level is changed in the admin<\/li>\n<li>Default the login redirect to the home page<\/li>\n<li>Fixed a few typos<\/li>\n<li>Added a fallback\u00a0cal_days_in_month() function for hosts that don't have it enabled<\/li>\n<\/ul>\n<p>Version 2.0.8, August 14, 2014<\/p>\n<ul>\n<li>Fixed a bug \u00a0with CSS not loading on the subscription details and profile editor short codes<\/li>\n<li>Added an Edit Member button to the View Member details screen<\/li>\n<li>Improved the Members page filtering and search<\/li>\n<li>Added support for setting the From Name and From Email address in Settings &gt; Emails<\/li>\n<li>Cancelled members now actually get marked as Cancelled instead of staying as Active and then getting marked as Expired<\/li>\n<li>Linked the admin notice on first install to the Restrict &gt; Settings page<\/li>\n<li>Fixed an inaccurate field description in settings<\/li>\n<li>Improved the license activation process and fixed a bug that prevented license keys from being activated<\/li>\n<\/ul>\n<p>Version 2.0.7, June 24, 2014<\/p>\n<ul>\n<li>Fixed a bug with the Payment Export not including all payments.<\/li>\n<\/ul>\n<p>Version 2.0.6, June 19, 2014<\/p>\n<ul>\n<li>Fixed a bug with payment method forms showing when signing up for a free\u00a0subscription level<\/li>\n<li>Fixed a bug with the discount field showing when signing up for a free subscription level<\/li>\n<li>Fixed a bug with the Auto Renew field showing when signing up for a free subscription level<\/li>\n<\/ul>\n<p>Version 2.0.5, May 20, 2014<\/p>\n<ul>\n<li>Added an option to control the number of members that are exported with the CSV export<\/li>\n<li>Fixed a bug with the auto-renew options not showing on individual registration forms<\/li>\n<li>Fixed a bug with pending members getting the Expiring Soon notice<\/li>\n<li>Added year\/month options to the Payment CSV export<\/li>\n<li>Added an option to manually toggle a member's trialing status<\/li>\n<li>Fixed a bug with amounts in the PDF Invoices<\/li>\n<\/ul>\n<p>Version 2.0.4, May 13, 2014<\/p>\n<ul>\n<li>Fixed a bug with the wp_editor() used in the Messages section of settings<\/li>\n<li>Fixed a bug with user roles not being set properly on registration<\/li>\n<\/ul>\n<p>Version 2.0.3, May 13, 2014<\/p>\n<ul>\n<li>Fixed a bug with discount codes not getting\u00a0attached to user accounts<\/li>\n<li>Fixed a bug with rcp_get_user_role() when the user isn't part of the site<\/li>\n<\/ul>\n<p>Version 2.0.2, April 21, 2014<\/p>\n<ul>\n<li>Fixed a bug with custom registration forms related to the Stripe payment gateway<\/li>\n<\/ul>\n<p><strong>Version 2.0.1, April 18, 2014<\/strong><\/p>\n<ul>\n<li>Fixed a bug that caused a fatal error with wp_get_current_user() during certain actions<\/li>\n<li>Fixed a bug with the login form redirect on the subscription_details short code<\/li>\n<\/ul>\n<p><strong>Version<\/strong> 2.0, April 11, 2014<\/p>\n<ul>\n<li>Added support for PDF Invoices of subscription payments<\/li>\n<li>Greatly improved the member's subscription details area<\/li>\n<li>Added support for custom registration pages with the [register_form id=\"x\"] short code<\/li>\n<li>Added improved caching \/ performance throughout the plugin, primarily related to subscription level and payment queries<\/li>\n<li>Added support for restricting posts based on the category they are filed in<\/li>\n<li>Added integration for the Limit Login Attempts plugin<\/li>\n<li>Added custom capabilities for all admin pages<\/li>\n<li>Added a new setting for PayPal Page Style<\/li>\n<li>Added an option to control whether all subscriptions auto renew or not<\/li>\n<li>Added new rcp_edit_member hook<\/li>\n<li>Added new RCP profile editor hooks<\/li>\n<li>Added options to disable each of the emails individually<\/li>\n<li>Tweak: improve the way the login form shows when a user is logged in<\/li>\n<li>Tweak: properly set the exact time when creating a manual payment<\/li>\n<li>Tweak: improve issue with members expiring on the wrong day when signing up on the last day of the month<\/li>\n<li>Tweak: always show the registration levels on the registration page<\/li>\n<li>Tweak: improved expiration cron jobs<\/li>\n<\/ul>\n<p>Version 1.9.6, February 5, 2014<br \/>\nAdded better support for 100% discount codes and non-PayPal payment gateways.<\/p>\n<p>Added better caching to the subscription level database class.<br \/>\nVersion 1.9.5, January 21, 2014<\/p>\n<ul>\n<li>Improved validation of the user information when saving the profile form.<\/li>\n<li>Fixed a bug that would allow a user to update their email to that of another user.<\/li>\n<li>Fixed a bug that would allow a user to completely remove their email.<\/li>\n<\/ul>\n<p>Version 1.9.4, December 23, 2013<\/p>\n<ul>\n<li>Fixed a bug with the user role not saving when first creating a subscription level<\/li>\n<li>Improved the UI of the Cancel buttons in admin headers<\/li>\n<li>Added a JS action for rcp_discount_applied<\/li>\n<li>Added .rcp_gateway_fields class<\/li>\n<\/ul>\n<p>Version 1.9.3 - December 9, 2013<\/p>\n<ul>\n<li>Improve reliability of license activation and deactivation<\/li>\n<li>Only setup user transients if single-login is enabled<\/li>\n<li>Fix bug with Last Month report view when current month is December<\/li>\n<li>Rewrite PayPal redirect to make all args filterable<\/li>\n<li>Removed erroneous ID attribute<\/li>\n<li>Better filters for email messages and receipients<\/li>\n<li>Better organization of user level checks<\/li>\n<li>Add support for setting the user role on a per-subscription basis<\/li>\n<li>Fixed bug with updating subscription levels when no changes were made<\/li>\n<li>Improved the expired users cron job<\/li>\n<\/ul>\n<p>Version 1.9.2 - October 25, 2013<\/p>\n<ul>\n<li>Fixed a bug with payment amounts over 1000<\/li>\n<\/ul>\n<p>Version 1.9.1 - October 21, 2013<\/p>\n<ul>\n<li>Fixed an undefined index error on the subscription Add New screen.<\/li>\n<li>Fixed a bug with the subscription level order getting overwritten when updating a level.<\/li>\n<\/ul>\n<p>Version 1.9 - October 4, 2013<\/p>\n<ul>\n<li>Added support for signup fees and discounts for subscription levels.<\/li>\n<li>Added the ability to search payments.<\/li>\n<li>Added payment transaction ID tracking.<\/li>\n<\/ul>\n<p>Version 1.8.1<\/p>\n<ul>\n<li>Fixed a bug with subscription level duration units not saving correctly.<\/li>\n<\/ul>\n<p>Version 1.8<\/p>\n<ul>\n<li>Added a brand new Reports page with earnings and signup graphs.<\/li>\n<\/ul>\n<p>Version 1.7<\/p>\n<ul>\n<li>Added support for manually creating payments.<\/li>\n<li>Fixed a bug with 'class' and other attributes getting stripped from Subscription Level descriptions.<\/li>\n<\/ul>\n<p>Version 1.6.3<\/p>\n<ul>\n<li>Fixed a bug with the Expiring Soon emails getting sent to recurring subscribers.<\/li>\n<\/ul>\n<p>Version 1.6.2<\/p>\n<ul>\n<li>Fixed a problem with the discount table creation.<\/li>\n<\/ul>\n<p>Version 1.6.1<\/p>\n<ul>\n<li>Fixed a problem with the [restrict] short code.<\/li>\n<\/ul>\n<p>Version 1.6<\/p>\n<ul>\n<li>Added the ability to restrict discount codes to specific subscription levels<\/li>\n<li>Added a \"Remember Me\" checkbox to the login form<\/li>\n<li>Added new options to the \"Restrict This Content\" meta box that allows content to be restricted to multiple subscription levels<\/li>\n<li>Non-recurring subscribers can now renew their membership at any time<\/li>\n<li>Added new Renewal Notice reminders that can be automatically sent before a user expires.<\/li>\n<\/ul>\n<p>Version 1.5.7<\/p>\n<ul>\n<li>Fixed a problem with not being able to set subscription durations to higher than 127 days\/months\/years.<\/li>\n<li>Added Hebrew translation files<\/li>\n<\/ul>\n<p>Version 1.5.6<\/p>\n<ul>\n<li>Added a new, better plugin updater system. <strong>You MUST enter your license key in the plugin settings to get future updates.<\/strong><\/li>\n<li>Improved the expiration \/ renewal date text on the Subscription Details short code.<\/li>\n<li>Renamed the Payments settings tab to General.<\/li>\n<\/ul>\n<p>Version 1.5.5<\/p>\n<ul>\n<li>Improved RTL compatibility.<\/li>\n<li>Fixed an issue with LI and UL tags getting stripped from subscription level descriptions.<\/li>\n<\/ul>\n<p>Version 1.5.4<\/p>\n<ul>\n<li>Fixed another issue with UTF8 encoding\/decoding.<\/li>\n<\/ul>\n<p>Version 1.5.3<\/p>\n<ul>\n<li>Fixed an issue with UTF8 encoding\/decoding.<\/li>\n<\/ul>\n<p>Version 1.5.2<\/p>\n<ul>\n<li>Updated manual update_user_meta() calls for member status to use rcp_set_status()<\/li>\n<li>Fixed an additional issue with PayPal payments not getting recorded.<\/li>\n<\/ul>\n<p>Version .1.5.1<\/p>\n<ul>\n<li>Fixed and issue with PayPal payments not getting recorded.<\/li>\n<\/ul>\n<p>Version 1.5<\/p>\n<ul>\n<li>New: Trial memberships can now upgrade to paid memberships at any time.<\/li>\n<li>New: Site admins can view all pad content.<\/li>\n<li>New: Usernames in Restrict &gt; Members are now linked to the user\\'s profile.<\/li>\n<li>New: Members can now be searched from Restrict &gt; Members.<\/li>\n<li>New: Added a new [rcp_profile_editor] short code.<\/li>\n<li>New: Registration, login, change password, and profile editor forms now included template files that can be easily, and safely modified.<\/li>\n<li>New: Added an option to delete payments.<\/li>\n<li>New: Added an option to view all payments by user.<\/li>\n<li>New: Added member first names to user export.<\/li>\n<li>New: Rewrote export system to be more flexible and extensible.<\/li>\n<li>New: Wrote new database interaction classes to make it easier for extensions to record \/ modify data.<\/li>\n<li>New: Added an option to revent account sharing.<\/li>\n<li>New: Added new action hooks.<\/li>\n<li>Fix: email field on registration wasn\\'t given a .valid or .error class.<\/li>\n<li>Fix: Admin javascript alerts are now localized for translation.<\/li>\n<li>Fix: Expiration date could not be left blank.<\/li>\n<li>Fix: User expiration dates were not localized.<\/li>\n<li>Fix: reCaptcha caused a fatal error if not configured correctly.<\/li>\n<li>Fix: stripslashes on subscription level names.<\/li>\n<li>Fix: The Upgrade link in [subscription_details] was shown even when only one free subscription level was active.<\/li>\n<li>Tweaked: Improved the registration processing function.<\/li>\n<li>Tweaked: Improved the default CSS.<\/li>\n<\/ul>\n<p>Version 1.4.4.2<\/p>\n<ul>\n<li>Added new email tags for %firstname%, %lastname%, and %displayname%.<\/li>\n<li>Fixed a bug with the %username% email tag.<\/li>\n<\/ul>\n<p>Version 1.4.4.1<\/p>\n<ul>\n<li>Fixed a missing parameter error with rcp_count_members()<\/li>\n<\/ul>\n<p>Version 1.4.4<\/p>\n<ul>\n<li>Introduced new Logs page to view gateway error logs<\/li>\n<li>Fixed an error in the PayPal gateway that caused members to not renew correctly<\/li>\n<\/ul>\n<p>Version 1.4.3<\/p>\n<ul>\n<li>Added new %amount% tag to the email templates<\/li>\n<li>Fixed a bug with teh PayPal cancellation link<\/li>\n<li>Fixed the subject line of the free email<\/li>\n<li>Fixed the %blogname% email template tag<\/li>\n<li>Improved file structure and organization<\/li>\n<li>Improved code documentation<\/li>\n<\/ul>\n<p>Version 1.4.2<\/p>\n<ul>\n<li>Fixed a security vulnerability with the function that writes to the database<\/li>\n<li>Fixed a bug with setting discount codes to percentage type<\/li>\n<li>Fixed a JS bug on the registration form for showing \/ hiding auto renew and the discount<\/li>\n<\/ul>\n<p>Version 1.4.1<\/p>\n<ul>\n<li>Forced auto-renew to false when signing up for a forever plan<\/li>\n<li>Fixed a bug with wpdb-&gt;prepare()<\/li>\n<\/ul>\n<p>Version 1.4<\/p>\n<ul>\n<li>Renamed Redirect page to Success page<\/li>\n<li>Added new rcp_is_paid_content filter<\/li>\n<li>Added a new logging system for tracking payment gateway errors<\/li>\n<li>Fixed issues with $wpdb-&gt;prepare() notices<\/li>\n<li>Made \"View Details\" always visible on the Users page<\/li>\n<li>Improved data sanitization<\/li>\n<li>Added a new notice when a user is updated<\/li>\n<li>Added new feature for \"User Notes\"<\/li>\n<li>Improved default CSS<\/li>\n<li>Added Arabic language files<\/li>\n<li>Added Portuguese language files<\/li>\n<li>Added new rcp_redirect_from_wp_login() function<\/li>\n<li>Removed user-registration-enabled check for the registration form<\/li>\n<\/ul>\n<p>Version 1.3.3<\/p>\n<ul>\n<li>Updated default language files.<\/li>\n<li>Fixed some missing text domains.<\/li>\n<li>Fixed a double slash in script URLs.<\/li>\n<li>Improved the function that checks to see if a payment has been recorded yet.<\/li>\n<li>Added a function to ensure RCP can be network activated.<\/li>\n<li>Fixed problem with HTML in subscription level descriptions.<\/li>\n<\/ul>\n<p>Version 1.3.2.3<\/p>\n<ul>\n<li>Added new rcp_pre_edit_discount action<\/li>\n<li>Improved data sanitization for discount codes<\/li>\n<li>Added new rcp_pre_add_discount hook<\/li>\n<li>Added Spanish translation files<\/li>\n<li>Added new rcp_show_subscription_level() function for determing if a level should be shown on the signup form<\/li>\n<\/ul>\n<p>Version 1.3.2.2<\/p>\n<ul>\n<li>Fixed a bug with a white screen after free signups<\/li>\n<\/ul>\n<p>Version 1.3.2.1<\/p>\n<ul>\n<li>Fixed a small bug with subscription lengths<\/li>\n<\/ul>\n<p>Version 1.3.2<\/p>\n<ul>\n<li>Moved reCaptcha to a new rcp_show_captcha() function so it can be more easily modified<\/li>\n<li>Added new \"rcp_return_url\" filter so that the URL users are returned to can be more easily modified<\/li>\n<li>Fixed several potential security flaws<\/li>\n<li>Improved data validation and sanitization throughout the plugin<\/li>\n<li>Improved internationalization of date formats<\/li>\n<li>Fixed a problem with restricting to free users and access levels at the same time<\/li>\n<li>Added do_shortcode() to teaser messages so that they render short codes<\/li>\n<li>Improved documentation and help text throughout the plugin<\/li>\n<li>Added new \"rcp_access_levels\" filter for modifying the available access levels<\/li>\n<li>Fixed some broken images in the Help page<\/li>\n<li>Updated French language files<\/li>\n<li>Fixed a problem with calculating users first expiration date that caused members to expire before their renewing payment was made<\/li>\n<li>Added new \"rcp_errors_before\" and \"rcp_errors_after\" for adding content before\/after error messages are displayed<\/li>\n<li>Improved the functions that calculate a discounted price<\/li>\n<li>Added a new function for storing discount codes in user\\'s meta<\/li>\n<li>Added new registration-functions.php and performed significant code cleanup<\/li>\n<li>Added a new filter \"rcp_default_user_level\" for the default user role given to members on signup<\/li>\n<\/ul>\n<p>Version 1.3.1.1<\/p>\n<ul>\n<li>Fixed a problem with allow furl_open<\/li>\n<\/ul>\n<p>Version 1.3.1<\/p>\n<ul>\n<li>Fixed a bug with the auto updater<\/li>\n<li>Replaced a global with a constant<\/li>\n<li>Fixed a bug with expired users cron jobs<\/li>\n<\/ul>\n<p>Version 1.3<\/p>\n<ul>\n<li>Documentated conflict with object caching<\/li>\n<li>Improved the email setting labels<\/li>\n<li>Hid the payment gateway checkboxes unless more than one gateway is available<\/li>\n<li>Added new rcp_get_currencies() function that can be filtered to allow more currencies<\/li>\n<li>Dramatically improved the rcp_curreny_filter() function with filters for other plugins to use to customize currency display<\/li>\n<li>Added new meta key for storing the PayPal recurring payment ID<\/li>\n<li>Improved security checks in IPN listener<\/li>\n<li>Fixed incorrect email address in IPN email log<\/li>\n<li>Added an option to disable IPN verification from PayPal<\/li>\n<li>Fixed the code prettifier in the help page<\/li>\n<li>Fixed a problem with the expired users cron job and users with no expiration date<\/li>\n<li>Fixed a bug with subscription level IDs in the registration form<\/li>\n<li>Fixed incorrect variable in rcp_set_status<\/li>\n<li>Added unique ID to each subscription level in the registration form<\/li>\n<li>Made default user level filterable<\/li>\n<li>Rewrote the settings page to follow the WP core UI<\/li>\n<li>Fixed a problem with the update notifier<\/li>\n<li>Improved the Paid Only option label to make it more clear<\/li>\n<li>Added a new filter to the meta box fields array to allow extra fields to be added<\/li>\n<li>Improved front end JS<\/li>\n<li>Added new filter to the rcp_excerpt_by_id() function<\/li>\n<li>Added Polish language files<\/li>\n<li>DIscount code input now gets hidden when a free subscription level is selected<\/li>\n<li>Added improved number formatting<\/li>\n<li>Improved rcp_get_members()<\/li>\n<li>Replaced custom SQL query with rcp_get_subscription_levels()<\/li>\n<li>Fixed problems with sorting users by subscription level<\/li>\n<\/ul>\n<p>Version 1.2.4<\/p>\n<ul>\n<li>Added an ID to the discount codes P tag on the registration form<\/li>\n<li>Fixed a security flaw in the signup process that created a way for users to get access to premium content for free<\/li>\n<li>Registration fields now retain their information on submission error<\/li>\n<li>Fixed a missing argument in rcp_log_user_in()<\/li>\n<li>Fixed a problem with the function that calculates the discounted price<\/li>\n<li>Made discounts active by default<\/li>\n<li>Added some additional hooks to PayPal gateway<\/li>\n<li>Added an option to cancel subscription from the [subscription_details] shortcode for new signups<\/li>\n<li>Minor improvements to the PayPal gateway<\/li>\n<\/ul>\n<p>Version 1.2.3<\/p>\n<ul>\n<li>Made some improvements to the PayPal verification to help prevent verification failures<\/li>\n<li>Updated default language files<\/li>\n<li>Fixed a problem with the JS that hides the auto renew option when a free subscription is selected<\/li>\n<li>Added new option to disable admin notifications<\/li>\n<li>Added an option to export free users<\/li>\n<li>Fixed the level query arg for auto plan selection<\/li>\n<\/ul>\n<p>Version 1.2.2<\/p>\n<ul>\n<li>Fixed a bug with the user expiration cron job that sends out expiration notices<\/li>\n<\/ul>\n<p>Version 1.2.1<\/p>\n<ul>\n<li>Fixed a couple of minor bugs with the user page columns<\/li>\n<li>Changed \"Free\" to 0 in the rcp_currency_filter() function<\/li>\n<li>Removed the IPN error log option<\/li>\n<li>Added tax=0 to the PayPal redirect<\/li>\n<li>Updated the login form to auto redirect to the current page<\/li>\n<li>Added JS to hide the auto renew option when a free subscription is selected<\/li>\n<li>Improved markup of the subscription details short code<\/li>\n<li>Added support for the Turkish Lira currency<\/li>\n<li>Moved load_plugin_textdomain() to an init hooked function<\/li>\n<li>Added action hooks and filters to the PayPal listener<\/li>\n<\/ul>\n<p>Version 1.2.0<\/p>\n<ul>\n<li>Fixed a bug that caused bad encoding of apostrophes in the email \"From\" name.<\/li>\n<li>Fixed a bug that prevented admins from manually adding subscriptions to users.<\/li>\n<li>A few minor code improvements.<\/li>\n<li>Improved file organization.<\/li>\n<li>Updated language files.<\/li>\n<\/ul>\n<p>Version 1.1.9<\/p>\n<ul>\n<li>Updated the default language files to include new strings for translation.<\/li>\n<li>Added do_action() hooks to the add\/edit subscription level functions.<\/li>\n<li>Improved the payment gateway system.<\/li>\n<li>Added ajaxed live search to the \"Add New Subscription\" form.<\/li>\n<li>Fixed a bug with the PayPal Sandbox mode<\/li>\n<\/ul>\n<p>Version 1.1.8<\/p>\n<ul>\n<li>Fixed a bug that caused non-active members to have an expiration date of 1970 in the [subscription_details] shortcode.<\/li>\n<li>Improved the registration form CSS slightly.<\/li>\n<li>Added a new advanced query arg that can be used on the Members page in the admin for displaying all members that signed up live vs. those that were added by admins.<\/li>\n<li>Added missed jQuery UI theme images for the datepicker.<\/li>\n<li>Fixed the double message problem with admin alert emails.<\/li>\n<\/ul>\n<p>Version 1.1.7.2<\/p>\n<ul>\n<li>Fixed a formatting bug with the discounts table when no codes have been created yet.<\/li>\n<li>Fixed a formatting bug with the subscriptions levels table when no levels have been created yet.<\/li>\n<li>Fixed the data type of the payment\\'s table \"amount\" column.<\/li>\n<\/ul>\n<p>Version 1.1.7.1<\/p>\n<ul>\n<li>Fixed a bug that caused the cron job added in the previous version to run constantly.<\/li>\n<\/ul>\n<p>Version 1.1.7<\/p>\n<ul>\n<li>Added a cron job that checks for expired users every day and sends an email to the user when they have expired.<\/li>\n<li>Fixed a bug were subscription access levels were reset to 0 when editing.<\/li>\n<li>Fixed a few issues with utf8 encoding.<\/li>\n<\/ul>\n<p>Version 1.1.6<\/p>\n<ul>\n<li>Added a meta box option for restricting content based upon the subscription level.<\/li>\n<li>Added a \"subscription=ID\" parameter to the [restrict] short code for limiting content to specific subscription levels.<\/li>\n<li>Updated Help page with information about access levels and restricting to subscription levels.<\/li>\n<li>Improved some admin CSS and jQuery loading.<\/li>\n<li>Improved the layout of the \"Restrict this Content\" metabox so that it can now be placed in the side column.<\/li>\n<li>Added new demonstration videos to the Help page on how to restrict content.<\/li>\n<\/ul>\n<p>Version 1.1.5<\/p>\n<ul>\n<li>Moved the \"members per page\" and \"payments per page\" to the screen options tab.<\/li>\n<li>Added FAQs to the Help page.<\/li>\n<li>Added a div.rcp-payment-history around the user\\'s payment history.<\/li>\n<li>Added missing class attribute to \"no payments recorded\" message in the [subscription_details] shortcode.<\/li>\n<\/ul>\n<p>Version 1.1.4<\/p>\n<ul>\n<li>Added support for access level restriction on free content.<\/li>\n<li>Added do_shortcode() to the [is_not_paid] short code.<\/li>\n<li>Made the first subscription level checked by default on the registration page.<\/li>\n<li>Added missing HTML element classes to the registration form.<\/li>\n<\/ul>\n<p>Version 1.1.3<\/p>\n<ul>\n<li>Released the Math Verification add-on: http:\/\/codecanyon.net\/item\/restrict-content-pro-math-verification\/1876095<\/li>\n<li>Fixed an undefined variable bug in the front end JS.<\/li>\n<li>Added option to redirect default WP login URL to custom page.<\/li>\n<li>Added and in-dashboard plugin updater so that new releases can be updated to automatically from Wordpress.<\/li>\n<li>Fixed a bug with the \"Hide Premium Posts\" option.<\/li>\n<\/ul>\n"},"banners":{"high":"","low":""},"icons":"a:0:{}","description":[""],"changelog":["<p><strong>Version 3.2.3, October 7, 2019<\/strong><\/p>\n<ul>\n<li>Modified templates: subscription.php<\/li>\n<li>New: Added the ability to recover pending and failed payments. A \"Complete Payment\" link has been added to the list of payments on the\u00a0[subscription_details]\u00a0shortcode.<\/li>\n<li>Tweak: Added terms\/privacy checkboxes to\u00a0[register_form_stripe]\u00a0shortcode if enabled. This also fixed an issue where the shortcode was validating for these checkboxes but not displaying them.<\/li>\n<li>Tweak: CSV Importer: improve CSV mime type detection.<\/li>\n<li>Tweak: CSV Importer: if incorrect file type is detected, include the detected file type in the error message.<\/li>\n<li>Tweak: Localize Stripe error messages that occur via JavaScript. Also add a new filter\u00a0rcp_stripe_error_messages\u00a0to allow these error messages to be modified.<\/li>\n<li>Tweak: Include original Stripe error message if we don't have our own localized version.<\/li>\n<li>Tweak: Show admin notice if manual membership cancellation fails.<\/li>\n<li>Fix: Sign up fees not being applied if someone attempts a payment, doesn't complete it, then tries a second time. This typically only occurred with the PayPal gateway, which allows you to not complete a payment in progress.<\/li>\n<li>Fix:\u00a0Heuristics.Phishing.Email.SpoofedDomain\u00a0false positive from virus scanners, due to us making a link to\u00a0developer.paypal.com, which actually led to our documentation on how to use that site to get API credentials.<\/li>\n<li>Fix: Add missing try\/catch block during certain Stripe operations.<\/li>\n<li>Fix: Correct formatting on\u00a0sprintf()\u00a0functions.<\/li>\n<li>Fix: Undefined property errors while updating pending payments via cron job.<\/li>\n<li>Fix: Under certain circumstances, RCP was incorrectly creating a second Stripe customer record.<\/li>\n<li>Fix: Stripe webhook conflicts when RCP is installed on two separate sites but both use the same Stripe account.<\/li>\n<li>Fix: Remove\u00a0admin_url()\u00a0base from\u00a0rcp_get_invoice_url()\u00a0function. In certain edge cases this was resulting in\u00a0admin_url()\u00a0being included in email notifications.<\/li>\n<li>Fix: Update WP_User display name when editing Customer first\/last name via Customer Details page.<\/li>\n<li>Fix: Email verification link not working when using plain text emails.<\/li>\n<li>Fix: CSV Importer - use email as the username if username is omitted from the CSV file.<\/li>\n<li>Fix: Recurring fees not being properly passed to payment gateway during registration.<\/li>\n<li>Fix: Do not apply prorated credits when multiple memberships are enabled and registering via\u00a0[register_form_stripe].<\/li>\n<li>Fix: \"Renews automatically\" incorrectly displaying on\u00a0[subscription_details]\u00a0shortcode for inactive memberships.<\/li>\n<li>Fix:\u00a0rcp_get_user_payments()\u00a0was returning all user payments if the current user was logged out. It now returns an empty array.<\/li>\n<li>Fix: Display issues on admin payments table on mobile devices.<\/li>\n<\/ul>\n<p><strong>Version 3.2.2, September 17, 2019<\/strong><\/p>\n<ul>\n<li>Improvement: Updated French translation.<\/li>\n<li>Improvement: Display clearer error messages when there's a problem adding a discount code.<\/li>\n<li>Fix: Registration type changing mid-registration, which could impact signup fees with some gateways.<\/li>\n<li>Fix: Stripe invalid request error when someone with a non-recurring Stripe membership visits the page containing the\u00a0[rcp_update_card]\u00a0shortcode.<\/li>\n<li>Fix: Incorrect use of\u00a0date_i18n()\u00a0instead of\u00a0date()\u00a0when saving payment dates via webhooks.<\/li>\n<li>Fix: Filter the password reset URL to use the designated RCP login form when \"Redirect Default Login URL\" is enabled.<\/li>\n<\/ul>\n<p><strong>Version 3.2.1, September 12, 2019<\/strong><\/p>\n<ul>\n<li>Fix: Incorrect Stripe subscription start date if a member manually renews a membership prior to expiration and the initial payment hasn't yet been fully captured at the time the subscription is created.<\/li>\n<li>Fix: Unable to process free membership if Stripe is the selected payment gateway.<\/li>\n<li>Fix: Registration errors when a customer has a membership for a level that has been deleted.<\/li>\n<li>Fix: Missing\u00a0rcp_stripe_signup_payment_failed\u00a0action when initial Stripe payment fails.<\/li>\n<li>Tweak: Update\u00a0rcp_is_trialing()\u00a0function to remove use of deprecated class.<\/li>\n<li>Tweak: Include RCP upgrade date and \"upgraded from\" version in system info report.<\/li>\n<\/ul>\n<p><strong>Version 3.2, September 10, 2019<\/strong><\/p>\n<ul>\n<li>Important: Stripe Checkout gateway has been removed. If you\u2019re using it, you will automatically be changed over to our normal Stripe gateway, which uses Stripe Elements. The [register_form_stripe] shortcode still functions, but it may look different.<\/li>\n<li>New: Updated the Stripe gateway to use Payment Intents API. This complies with SCA regulations.<\/li>\n<li>New: Stripe card declined notices now appear inline and no longer require a page refresh.<\/li>\n<li>New: Added\u00a0%update_billing_card_url%\u00a0template tag, which serves as a direct link to the \u201cupdate billing card\u201d page for the membership associated with the user\u2019s most recent payment. Recommended for use in the Renewal Payment Failed email.<\/li>\n<li>Tweak: Changes to registration form JavaScript. Initial membership processing is now handled via ajax. Testing is recommended if you have custom code that interacts with the registration JavaScript.<\/li>\n<li>Tweak: The first payment in a Stripe subscription is now always a one-time charge. The subscription is created with a delayed start date (until the next billing cycle).<\/li>\n<li>Tweak: Stripe gateway no longer uses Stripe Coupon codes. Instead, new plans are created for each duration\/amount combination.<\/li>\n<li>Tweak: Stripe gateway no longer handles signup fees via customer account balance. They are incorporated into an initial one-time charge that handles the first payment.<\/li>\n<li>Tweak: The\u00a0rcp_stripe_charge_create_args\u00a0filter is now deprecated and replaced with\u00a0rcp_stripe_create_payment_intent_args. This is due to replacing the Charges API with the Payment Intents API. Some arguments may now differ.<\/li>\n<li>Tweak: Stripe error messages are now able to be translated.<\/li>\n<li>Fix: Stripe gateway doesn\u2019t use the \u201crecurring_price\u201d that\u2019s passed into the gateway class.<\/li>\n<li>Fix: Stripe incorrectly applying one-time discounts after a free trial.<\/li>\n<\/ul>\n<p><strong>Version 3.1.2, August 22, 2019<\/strong><\/p>\n<ul>\n<li>New: An admin notice will be displayed if you have the Stripe Checkout gateway enabled, explaining that the gateway will be removed in RCP version 3.2 due to SCA regulations. Read more here:\u00a0<a href=\"https:\/\/docs.restrictcontentpro.com\/article\/1552-stripe-checkout\" rel=\"nofollow\">https:\/\/docs.restrictcontentpro.com\/article\/1552-stripe-checkout<\/a><\/li>\n<li>New: Added a\u00a0date_completed\u00a0column to the\u00a0wp_rcp_queue\u00a0table.<\/li>\n<li>New: Unauthorized users are now redirected away from category archive pages if the category is restricted. (Requires that Hide Restricted Posts be checked on.)<\/li>\n<li>New: Allow filtering by both level and status on Restrict &gt; Memberships page. Note: you must choose a status filter first, then you can change the membership level.<\/li>\n<li>New: Add support for a\u00a0redirect\u00a0query arg when generating a\u00a0resend_verification\u00a0link.<\/li>\n<li>New: Add \"Status\" dropdown to the \"add payment\" form on the admin Membership Details page.<\/li>\n<li>Tweak: Moved\u00a0_rcp_reminder_sent_*\u00a0user meta to membership meta.<\/li>\n<li>Tweak: Adjust Redirect Default Login URL setting description to convey that the\u00a0[login_form]\u00a0shortcode is required on the page and not optional.<\/li>\n<li>Fix: Free trial incorrectly granted again under certain circumstances.<\/li>\n<li>Fix: If a customer signs up for a one-time payment membership and does not complete payment, they are unable to try again. (Usually only seen with the PayPal payment gateway.)<\/li>\n<li>Fix: CSV import not setting correct password for new users.<\/li>\n<li>Fix: CSV import missing old\u00a0rcp_user_import_user_added\u00a0action hook.<\/li>\n<li>Fix: Incorrect ajax parameter used for error message when uploading a CSV import file fails.<\/li>\n<li>Fix: Don't show an error message on\u00a0[rcp_update_card]\u00a0shortcode if the current user does not have a membership at all.<\/li>\n<li>Fix: Ensure that\u00a0free\u00a0membership status is always converted to\u00a0active\u00a0(backwards compatibility with pre-3.0).<\/li>\n<\/ul>\n<p><strong>Version 3.1.1, July 31, 2019<\/strong><\/p>\n<ul>\n<li>New: Add message to\u00a0[rcp_update_card]\u00a0shortcode when a user is unable to update their card details.<\/li>\n<li>New: Add action\u00a0rcp_edit_customer_after_memberships_section\u00a0to Customer Details page, allowing third party plugins to add a whole new customer section.<\/li>\n<li>New: On Customer Details page, display whether or not the customer has trialled before.<\/li>\n<li>Tweak: Add a space between the Norwegian Krone currency symbol and the price (previous:\u00a010kr\u00a0new:\u00a010 kr).<\/li>\n<li>Tweak: Removed the 2-day grace period on the expiration cron job. Use this custom code if you want to add it back in:\u00a0<a href=\"https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-add-expiration-grace-period.php\">https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-add-expiration-grace-period.php<\/a><\/li>\n<li>Tweak: Include RCP payment ID in Stripe one-time charge metadata.<\/li>\n<li>Fix: Generate a new subscription key on renewals if existing one is blank. This fixes a problem with renewals not activating via PayPal if the existing membership didn't have a subscription key (which might be the case if the membership was imported).<\/li>\n<li>Fix: EDD Downloads not showing excerpts to users without access if excerpts are globally enabled.<\/li>\n<li>Fix: Under certain circumstances, deactivated membership levels can be renewed when they shouldn't be able to. If you want to allow deactivated levels to be renewed, use the\u00a0rcp_can_renew_deactivated_membership_levels\u00a0filter. Example:\u00a0<a href=\"https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-renew-deactivated-levels.php\">https:\/\/github.com\/restrictcontentpro\/library\/blob\/master\/rcp-renew-deactivated-levels.php<\/a><\/li>\n<li>Fix: Expiration emails being sent when creating a new membership with the \"expired\" status.<\/li>\n<li>Fix: reCAPTCHA errors when using [register_form_stripe].<\/li>\n<li>Fix: Registration not working in Internet Explorer due to JavaScript\u00a0assign()\u00a0error.<\/li>\n<li>Fix: Stop using\u00a0date_i18n()\u00a0in database datetime validation.<\/li>\n<li>Fix: Pending payment ID can be incorrect if someone attempts a payment multiple times for the same membership.<\/li>\n<li>Fix: 3.0 migration - check for and show clear error if the user being migrated doesn't exist (due to orphaned user meta).<\/li>\n<\/ul>\n<p><strong>Version 3.1, July 17, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: card-update-form.php, paypal-express-confirm.php, register-single.php, register.php, subscription.php.<\/li>\n<li>New: Add support for multiple active memberships per customer.<\/li>\n<li>New (WARNING): Authorize.net has been removed from core and moved to a separate add-on. The new add-on can be installed here: <a href=\"https:\/\/wordpress.org\/plugins\/rcp-authorize-net\/\" target=\"_blank\" rel=\"noopener\">https:\/\/wordpress.org\/plugins\/rcp-authorize-net\/<\/a><\/li>\n<li>New: One-time discounts can now be configured on a per-discount basis rather than globally.<\/li>\n<li>New: Stripe gateway has been updated to use Stripe Elements.<\/li>\n<li>New: CSV user import tool now available in Restrict &gt; Tools &gt; Import.<\/li>\n<li>New: Added WP-CLI integration.<\/li>\n<li>New: Expiration and renewal notices can now be limited to certain membership levels only.<\/li>\n<li>New: Added support for bulk adding memberships to existing users from the Users table.<\/li>\n<li>New: Added \"payment received\" email template for admins.<\/li>\n<li>New: Use WP_List_Table for all admin table pages.<\/li>\n<li>New: Add default email template content on new installs.<\/li>\n<li>New: Log all payment events in the customer notes.<\/li>\n<li>New: Send customer name in Stripe API request.<\/li>\n<li>New: Add payment meta and membership level meta functions.<\/li>\n<li>New: Signup fees are no longer applied when manually renewing an existing membership.<\/li>\n<li>New: Stripe gateway tested with API version\u00a02019-05-16.<\/li>\n<li>Tweak: Stop unchecking \"auto renew\" when a membership expires.<\/li>\n<li>Tweak: All translation files have been updated from plugin source code.<\/li>\n<li>Tweak: Updated plugin author name and URL.<\/li>\n<li>Fix: RCP datepicker styles affecting other plugin datepickers.<\/li>\n<li>Fix: Reduce the three RCP membership columns on the Users table to one single \"Membership\" column. This reduces database queries and improves loading time on this page.<\/li>\n<li>Fix: Payments are now only recorded via webhooks\/IPNs if we can match the payment to a very specific RCP membership. This resolves issues if the same PayPal account is used for multiple different products and one customer is involved in both products.<\/li>\n<\/ul>\n<p><strong>Version 3.0.10, June 20, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: change-password.php, invoice.php.<\/li>\n<li>Fix: Pending memberships no longer expire when passing their expiration date; they just remain pending.<\/li>\n<li>Fix: Discount codes not being forced to all lowercase when being edited.<\/li>\n<li>Fix: Trial memberships not being considered \"paid\" when restricting content.<\/li>\n<li>Fix: $membership parameter missing from expired email filters.<\/li>\n<li>Fix: Stop using Stripe idempotency keys on discount code API requests.<\/li>\n<li>Fix: Imported memberships being incorrectly disabled after a renewal payment failure.<\/li>\n<li>Fix: Incorrect calculation in RCP_Registration::get_total() when combining both fees and credits.<\/li>\n<li>Fix: Admin notices not displaying after using bulk action in membership\/customers table.<\/li>\n<li>Fix: Invoices not supporting RTL.<\/li>\n<li>Fix: Proration credit incorrectly given when upgrading \/ downgrading while still in the middle of a free trial.<\/li>\n<li>Fix: Hide \"New Password\" fields on password reset page when the reset link is invalid.<\/li>\n<li>Fix: Memberships table \"Cancel\" action fails due to invalid nonce.<\/li>\n<li>Fix: Stripe error when recreating customers that had previously been deleted earlier that day.<\/li>\n<li>Fix: When a discount code is used that has been restricted to certain membership levels, the membership levels restriction becomes invalidated.<\/li>\n<\/ul>\n<p><strong>Version 3.0.9, May 20, 2019<\/strong><\/p>\n<ul>\n<li>Security Fix: Harden permission checks when performing membership actions.<\/li>\n<li>Fix: Auto renew checkbox incorrectly appearing for lifetime memberships.<\/li>\n<li>Fix: Display bug on email search dropdown when manually adding memberships\/customers.<\/li>\n<li>Fix: User role granted while membership is still pending.<\/li>\n<\/ul>\n<p><strong>Version 3.0.8, May 9, 2019<\/strong><\/p>\n<ul>\n<li>New: Add clear membership notes explaining where a cancellation originated from (customer action vs admin action vs webhook).<\/li>\n<li>New: Add get_user_id() method to RCP_Emails class.<\/li>\n<li>New: Add $membership parameter to \"rcp_subscription_details_action_links\" action.<\/li>\n<li>Tweak: Adjust logic in cron job that expires memberships, which will now allow the 2-day grace period to be removed with custom code.<\/li>\n<li>Fix: rcp_get_term_restrictions() - Can return an array with \"access_level\" =&gt; \"None\", which breaks restriction functionality.<\/li>\n<li>Fix: Registration form not able to be submitted after completing CAPTCHA.<\/li>\n<\/ul>\n<p><strong>Version 3.0.7, May 7, 2019<\/strong><\/p>\n<ul>\n<li>Fix: Membership level not loading correctly in registration form when using the `id` attribute.<\/li>\n<li>Fix: 3.0 migration - force old expiration date to all lowercase to prevent errors with unexpected capitalization on \"none\" value.<\/li>\n<\/ul>\n<p><strong>Version 3.0.6, May 6, 2019<\/strong><\/p>\n<ul>\n<li>New: Add option to disable loading Stripe Javascript when not needed.<\/li>\n<li>New: Add helper functions for checking WooCommerce purchase\/viewing permissions.<\/li>\n<li>New: Introduce new function: rcp_has_term_restrictions(). This should also improve loading time as it reduces the usage of the more intensive function rcp_get_post_ids_assigned_to_restricted_terms().<\/li>\n<li>Tweak: Reintroduce rcp_user_has_access() helper function for checking access level.<\/li>\n<li>Tweak: Force debug logging off during 3.0 migration. This makes it go much faster.<\/li>\n<li>Tweak: Rename stripe.js handle to avoid JS conflicts. It's now called \"rcp-stripe-js-v2\".<\/li>\n<li>Tweak: Remove the current membership level from RCP_Membership-&gt;get_upgrade_paths(). This creates better separation between can_renew() and upgrade_possible(). This adjustment also fixed the following issues:\n<ol>\n<li>If upgrades are disabled, non-recurring memberships can't be renewed early.<\/li>\n<li>Don't show \"upgrade or change membership\" link when there's only one membership level on the site.<\/li>\n<li>Improve registration form UI when you're signed up to a free membership level and it's the only level available on the site.<\/li>\n<\/ol>\n<\/li>\n<li>Fix: Registration errors when the total amount due today is $0 due to one-time 100% off discounts, negative signup fees, or prorated credits. Note: this required massive changes to our register.js file so if you use any of our JavaScript functions\/triggers we recommend testing on a staging site before upgrading your live site.<\/li>\n<li>Fix: PayPal Standard - incorrectly triggering \"rcp_webhook_recurring_payment_processed\" hook on initial payment.<\/li>\n<li>Fix: When an admin changes a membership's level, the user role is lost if the role is the same for both the old level and the new one.<\/li>\n<li>Fix: Customer \/ membership search not working on emails with + symbols.<\/li>\n<li>Fix: Don't show update billing card form for PayPal Standard \/ Express signups. Cards cannot actually be updated via RCP for those gateways; they need to be updated inside PayPal directly.<\/li>\n<li>Fix: If someone signs up for a lifetime membership via PayPal, doesn't complete payment, they're unable to try again.<\/li>\n<li>Fix: If a membership is in the trial period, then gets cancelled, the customer cannot renew the membership again until it expires.<\/li>\n<\/ul>\n<p><strong>Version 3.0.5, April 16, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: paypal-express-confirm.php<\/li>\n<li>New: Allow \"Payment Method\" to be modified on Edit membership screen.<\/li>\n<li>New: Add Idempotency Keys to Stripe POST Requests.<\/li>\n<li>New: Introduce new customer \/ membership helper functions.<\/li>\n<li>New: Add email auto search when adding a new membership \/ customer.<\/li>\n<li>New: Add \"rcp_add_membership_after\" hook to Add Membership page.<\/li>\n<li>Tweak: Reorder and rename email templates to provide better clarity.<\/li>\n<li>Tweak: Update membership \"recurring_amount\" value on automatic renewals.<\/li>\n<li>Fix: rcp_get_customer_gateway_id() not working correctly for Stripe Checkout.<\/li>\n<li>Fix: Incorrect payment gateway slug being used for \"PayPal Express\" payments.<\/li>\n<li>Fix: Add additional checks to ensure members get the correct user role when their membership is activated.<\/li>\n<li>Fix: rcp_get_membership_by() returning disabled membership records when it shouldn't be.<\/li>\n<li>Fix: Expired users cron job query not locating all relevant memberships.<\/li>\n<li>Fix: Initial Authorize.net payment being recorded twice.<\/li>\n<li>Fix: Incorrect subscription link URL for live Authorize.net subscriptions.<\/li>\n<li>Fix: \"subtotal\" payment column not being set for automatic renewals.<\/li>\n<li>Fix: Check if membership ID is set for payments before attempting to complete a registration. This caused problems when inserting payments via the REST API.<\/li>\n<li>Fix: JavaScript errors when adding a custom currency without specific name formatting.<\/li>\n<li>Fix: Registration not failing gracefully if customer record fails to be created.<\/li>\n<li>Fix: Incorrect setting description for \"maximum number of simultaneous connections per member\".<\/li>\n<li>Fix: 3.0 migration - incorrect user query on multisite installation when RCP is not network activated.<\/li>\n<li>Fix: 3.0 migration - skip membership import if membership level cannot be retrieved. This would occur if someone had a membership for a level that has since been deleted.<\/li>\n<li>Fix: Delete \"rcp_pending_payment_id\" meta value on registration failure.<\/li>\n<li>Fix: Undefined index notices on PayPal IPN when certain events come through.<\/li>\n<li>Fix: Credits not displayed on PayPal Express confirmation page.<\/li>\n<\/ul>\n<p><strong>Version 3.0.4, March 22, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: card-update-form.php, change-password.php, login.php, lostpassword.php, paypal-express-confirm.php, profile-editor.php, register-single.php, register.php,<\/li>\n<li>New: Add new \"transaction_type\" column to payments table to differentiate between renewals, upgrades, downgrades, and new registrations.<\/li>\n<li>New: Gateway Subscription\/Customer IDs now link to relevant pages in payment gateway.<\/li>\n<li>New: Add gateway column to admin payments table.<\/li>\n<li>New: Add generic \"rcp-button\" class to all buttons in templates.<\/li>\n<li>New: Add \"rcp_stripe_existing_plan_id\" filter to Stripe plan ID when checking if a plan exists.<\/li>\n<li>Tweak: Update Stripe PHP library.<\/li>\n<li>Tweak: Prefix plugin name with \"WordPress\" in Stripe setAppInfo calls.<\/li>\n<li>Tweak: Include Stripe partner ID in setAppInfo calls.<\/li>\n<li>Tweak: Add extra checks to ensure cancellation emails do not get sent on upgrades\/downgrades.<\/li>\n<li>Tweak: Braintree: search for existing customer by ID when processing a payment.<\/li>\n<li>Tweak: When calculating prorate credit amount, apply filter to $0 return values.<\/li>\n<li>Tweak: Adjust description on \"Membership Level\" setting for discount codes.<\/li>\n<li>Fix: Expiration date not extended if a user has 0 historical payments while manually renewing their membership before the expiration date. (This may have affected imported users renewing for the first time.)<\/li>\n<li>Fix: Certain circumstances may cause PayPal Express to charge an incorrect amount on manual renewals, if the first payment was discounted for other reasons.<\/li>\n<li>Fix: Plugin upgrade process not running if manually upgrading the plugin in a way that involves reactivating the plugin.<\/li>\n<li>Fix: Improve WP_User_Query backwards compatibility when checking \"rcp_status\" meta key\/value.<\/li>\n<li>Fix: Deprecated rcp_get_member_cancel_url() function returning wrong membership ID.<\/li>\n<li>Fix: Memberships admin table bulk actions not working.<\/li>\n<li>Fix: Stripe Checkout transaction IDs not linked in admin.<\/li>\n<li>Fix: Credits incorrectly being added to payment record during renewals.<\/li>\n<li>Fix: Restricting by role through the meta box doesn't work if the user doesn't also have a membership.<\/li>\n<li>Fix: PayPal Standard amount verification causes IPN to fail if there's a record mismatch. This would only happen if you'd edited a membership level price at some point.<\/li>\n<li>Fix: User role sometimes not being added on membership activation.<\/li>\n<li>Fix: No longer require object_id when adding a new membership. This fixes some issues with backwards compatibility when using update_user_meta() with old values.<\/li>\n<\/ul>\n<p><strong>Version 3.0.3, March 7, 2019<\/strong><\/p>\n<ul>\n<li>Modified template files: card-form-full.php<\/li>\n<li>New: Add a button to change the membership level when editing a membership.<\/li>\n<li>New: Add support for screen options on Customers and Memberships pages.<\/li>\n<li>New: Add note to customer profile when the customer upgrades or downgrades their membership.<\/li>\n<li>Tweak: Updated country list on registration form.<\/li>\n<li>Tweak: Added note in rcp_create_tables() PHPDocs about how to create new database tables in 3.0.<\/li>\n<li>Tweak: The \"Restrict\" menu item is no longer translated to\u00a0Norwegian.<\/li>\n<li>Tweak: Add note when creating a discount code if no membership levels have been created yet.<\/li>\n<li>Fix: Plugin activation error when Yoast is also activated.<\/li>\n<li>Fix: \"View all payments\" link on Edit Customer page incorrectly showing payments by all customers.<\/li>\n<li>Fix: Email verification link not rendering in emails.<\/li>\n<li>Fix: User ID number not being stored with PayPal payments.<\/li>\n<li>Fix: Update regex for Stripe plan names.<\/li>\n<li>Fix: If the Renewal Payment Failed admin email template is disabled, the checkbox cannot be unchecked.<\/li>\n<li>Fix: Fatal error when searching on customer\/membership pages and the search yields 0 results.<\/li>\n<li>Fix:\u00a0PHP warning in rcp_has_post_restrictions() when post is restricted to multiple user roles.<\/li>\n<li>Fix: Unable to cancel PayPal Express memberships.<\/li>\n<li>Fix:\u00a0Fatal error when using WordPress core's \"retrieve_password_title\" filter.<\/li>\n<li>Fix: Passwords were incorrectly sanitized when creating new users, potentially resulting in a different password being saved.<\/li>\n<li>Fix: Undefined index REQUEST_METHOD when running certain CLI commands.<\/li>\n<li>Fix: PayPal IPN verification was being performed even if it was disabled.<\/li>\n<\/ul>\n<p><strong>Version 3.0.2, March 4, 2019<\/strong><\/p>\n<ul>\n<li>New: Added error logging to batch processor.<\/li>\n<li>New: Membership counts on membership levels table are now clickable and link to the memberships page filtered by level.<\/li>\n<li>New: Allow Stripe Connect notice to be dismissed.<\/li>\n<li>Tweak: Updated French translation.<\/li>\n<li>Tweak: Expand \"Username already taken\" error message to provide more clarity.<\/li>\n<li>Fix: Default user role not being removed when custom role is added. This could result in a member having two roles.<\/li>\n<li>Fix: PHP notice when submitting the log in form with a username that doesn't exist.<\/li>\n<li>Fix: Users who were pending email verification were incorrectly allowed to view restricted WooCommerce products.<\/li>\n<li>Fix: Membership level name not being added to Stripe Checkout modal under certain circumstances.<\/li>\n<li>Fix: \"Items\" count on memberships table not updating when filtering.<\/li>\n<li>Fix: Admins unable to view restricted content if they do not have a membership.<\/li>\n<li>Fix: Check payment_status in PayPal IPN when processing renewals.<\/li>\n<li>Fix: Fatal error on WooCommerce archive when using taxonomy restrictions and the current users not have a membership.<\/li>\n<li>Fix: Upgrades not activating correctly when using PayPal Standard.<\/li>\n<li>Fix: Incorrect wording in \"Update Billing Card Page\" setting description.<\/li>\n<li>Fix: Excerpts in EDD [downloads] shortcode incorrectly restricted.<\/li>\n<li>Fix: Undefined index error on fresh installs on settings and system info pages.<\/li>\n<\/ul>\n<p><strong>Version 3.0.1, February 28, 2019<\/strong><\/p>\n<ul>\n<li>Fix: Automatic update notices not appearing in admin dashboard.<\/li>\n<\/ul>\n<p><strong>Version 3.0, February 27, 2019<\/strong><\/p>\n<ul>\n<li>Warning: Version 3.0 requires PHP version 5.6 or higher. Please do not upgrade unless you meet these requirements.<\/li>\n<li>Modified template files: card-update-form.php, invoice.php, paypal-express-confirm.php, register.php, register-single.php, register-total-details.php, subscription.php, woocommerce-single-no-access.php<\/li>\n<li>New: Membership data has been migrated to custom tables. This sets the foundation for supporting multiple memberships per user in the future. You will be prompted to migrate your data after upgrading.<\/li>\n<li>New: Added a batch processing API.<\/li>\n<li>New: Added support for payment plans.<\/li>\n<li>New: You can now restrict content to multiple user roles through the \"restrict this content\" meta box.<\/li>\n<li>New: You can now restrict content to custom user roles when using the [restrict] shortcode.<\/li>\n<li>New: Memberships can now be sorted by expiration date.<\/li>\n<li>New: The \"Auto Add Users to Level\" setting has been added to the system info file.<\/li>\n<li>New: The PayPal Express confirmation screen has been updated to include additional information, including discounts, fees, and credits.<\/li>\n<li>New: object_id is now supported in RCP_Payments::count().<\/li>\n<li>New: Original join dates are now stored (in the wp_rcp_customers table).<\/li>\n<li>New: \"Prevent Account Sharing\" setting now accepts a maximum number of simultaneous connections.<\/li>\n<li>New: When a user account is deleted, associated recurring subscriptions are now automatically cancelled.<\/li>\n<li>Tweak: \"Subscription Levels\" have been renamed to \"Membership Levels\".<\/li>\n<li>Tweak: \"Free Content Message\" and \"Paid Content Message\" have been merged into one single \"Restricted Content Message\" setting.<\/li>\n<li>Tweak: The Stripe API library has been updated.<\/li>\n<li>Tweak: The \"Email IPN Report\" feature has been removed.<\/li>\n<li>Tweak: Our login functions now use wp_signon(). This allows greater support for third party plugins that integrate with the login system, such as Jetpack Protect.<\/li>\n<li>Tweak: The invoice template has been expanded to include fees, discounts, and credits that were applied to that payment.<\/li>\n<li>Tweak: The login link text in the registration template has been adjusted.<\/li>\n<li>Tweak: Improved error messaging when adding\/updating membership levels fails.<\/li>\n<li>Fix: Password reset links will now work with SendGrid click tracking.<\/li>\n<li>Fix: RCP user meta is now removed during uninstall.<\/li>\n<li>Fix: The payment_id column name in the wp_rcp_payment_meta table has been renamed to rcp_payment_id. This fixes a conflict with the Give plugin.<\/li>\n<li>Fix: The admin bar is no longer hidden for users who have the \"edit_posts\" capability.<\/li>\n<li>Fix: Under certain circumstances it was possible for rcp_get_ip() to return a CSV of IP addresses instead of a single IP.<\/li>\n<li>Fix: Databases are now registered when switching sites on multisite.<\/li>\n<li>Fix: Fixed a DateTime::__construct() fatal error in Authorize.net when signing up for a free trial.<\/li>\n<li>Fix: In the wp_rcp_payments table, the following column types have been updated: id (now unsigned), object_id (now unsigned), user_id (changed from mediumint to bigint(20) and now unsigned).<\/li>\n<\/ul>\n<p><strong>Version 2.9.15, December 19, 2018<\/strong><\/p>\n<ul>\n<li>New: An admin notice is displayed on sites running PHP versions lower than 5.6. Restrict Content Pro version 3.0 will raise its PHP version requirement to 5.6 or higher, so if you're using an older version make sure you upgrade that before RCP 3.0!<\/li>\n<\/ul>\n<p><strong>Version 2.9.14, August 27, 2018<\/strong><\/p>\n<ul>\n<li>New: Introduce \"RCP_DISABLE_EMAILS\" constant. When set, RCP will not send out any emails. Great for using on staging\/development sites.<\/li>\n<li>New: Added filter \"rcp_email_payment_received_subject\" on \"Payment Received\" email subject.<\/li>\n<li>New: Added action \"rcp_membership_level_row_actions\" in subscription level row actions.<\/li>\n<li>New: Added \"Date Generated\" to system info file.<\/li>\n<li>New: Allow passing in date start\/end in RCP_Payments::get_earnings().<\/li>\n<li>Tweak: Updated Spanish translation.<\/li>\n<li>Tweak: Updated Norwegian translation.<\/li>\n<li>Tweak: Get current user ID as fallback in rcp_get_return_url() if no user ID is provided.<\/li>\n<li>Tweak:\u00a0Change composer\/installers version requirement tilde to caret.<\/li>\n<li>Fix: Outdated certificate in Authorize.net SDK causing connection failures.<\/li>\n<li>Fix:\u00a0Counts in Restrict &gt; Members sometimes incorrect when searching for a member.<\/li>\n<li>Fix: SQL syntax error in RCP_Levels::get_levels() limit clause.<\/li>\n<li>Fix: Prevent redirect loop when using \"Hide Restricted Posts\" feature and the redirect page is restricted.<\/li>\n<li>Fix: Content excerpt length was being set to 50, but then filtered to 100. The filter has been removed and the default is now set to 100, to avoid any actual changes.<\/li>\n<li>Fix: Unable to set list_order value in RCP_Levels::insert().<\/li>\n<li>Fix:\u00a0Member incorrectly gets \"cancelled\" status when moving from paid level to old style free trial. This does not affect free trials that have been integrated into a paid subscription level via the \"Trial Duration\" field.<\/li>\n<li>Fix:\u00a0Only block access to content via REST API if user can't access it.<\/li>\n<\/ul>\n<p><strong>Version 2.9.13, May 24, 2018<\/strong><\/p>\n<ul>\n<li>New: Added options to show Terms of Service and Privacy Policy checkboxes on the registration form. This lets you require your members agree to these terms before registering. The time and date someone agreed to the terms is shown on the member's edit screen in the WordPress admin.<\/li>\n<li>New: Added new filters so developers can customize the email subject and message body for emails that are sent to admins when someone's subscription status changes.<\/li>\n<li>Fix: When setting expiration dates using the bulk edit feature, the time is now set to 23:59:59 instead of 00:00:00.<\/li>\n<li>Fix: Settings pages now work properly on sites running non-English languages.<\/li>\n<li>Fix: Searches now work properly when there's a stray space character before or after the search term.<\/li>\n<li>Fix: PHP 7.2 warning no longer happens when viewing the System Info report.<\/li>\n<\/ul>\n<p><strong>Version 2.9.12, May 8, 2018<\/strong><\/p>\n<ul>\n<li>Fix: Syntax error when activating the plugin on older versions of PHP.<\/li>\n<li>Fix: Javascript not loading on the password reset form.<\/li>\n<li>Fix: Two PHP notices when using Google Authenticator.<\/li>\n<li>Fix: Error in German translation files.<\/li>\n<li>Fix: Only load stylesheets when required in the restricted content message display.<\/li>\n<li>Fix: Do not show payment date on pending payments, since they're not paid yet.<\/li>\n<li>Fix: Free members could not see restricted content under certain conditions.<\/li>\n<li>Tweak: Remove log in notice after changing password, since you are not logged out.<\/li>\n<li>Enhancement: Pass the error ID to rcp_error_messages_html filter.<\/li>\n<\/ul>\n<p><strong>Version 2.9.11, April 19, 2018<\/strong><\/p>\n<ul>\n<li>Modified templates: payment-express-confirm.php.<\/li>\n<li>New: You can now easily connect your Stripe account with Stripe Connect. See your settings page for more details.<\/li>\n<li>New: Identify RCP pages (registration form, profile form, etc.) on the Pages &gt; All Pages screen.<\/li>\n<li>New: Added rcp_restricted_post_redirect_url filter to allow developers to dynamically control where someone redirects when trying to view a restricted post they don't have access to.<\/li>\n<li>Tweak: Automatically change the currency symbol shown in the Currency Position setting when the Currency option is changed.<\/li>\n<li>Tweak: Deprecated the cp_check_paypal_return_price_after_discount() function.<\/li>\n<li>Tweak: Add HTML classes to the PayPal Express confirmation form elements.<\/li>\n<li>Tweak: Change the wording in the PayPal settings to make it clear that the API keys are not optional.<\/li>\n<li>Tweak: Added trial information to debug logging in the gateway class.<\/li>\n<li>Tweak: Force debug logging of critical errors.<\/li>\n<li>Tweak: Added fees and level ID to the Subscription Levels section of the System Info file.<\/li>\n<li>Fix: Accessibility issues on the registration form.<\/li>\n<li>Fix: Improve the user experience on the [register_form_stripe] shortcode when someone that's logged out enters an email address that already exists.<\/li>\n<li>Fix: Improve member search feature.<\/li>\n<li>Fix: Errors when cancelling a subscription when an existing member moves from a PayPal subscription to a Stripe subscription.<\/li>\n<li>Fix: Braintree webhook compatibility issue with the old standalone Braintree add-on.<\/li>\n<li>Fix: Duplicate subscriptions created in Stripe under certain conditions.<\/li>\n<li>Fix: Improve the Stripe Checkout experience when using the [register_form_stripe] shortcode. It's now clear that processing is happening in the background after the Stripe Checkout popup closes.<\/li>\n<li>Fix: Updated Brazilian translation files.<\/li>\n<li>Fix: Member status was improperly set to cancelled when changing from PayPal to another gateway, if the PayPal IPN was delayed.<\/li>\n<\/ul>\n<p><strong>Version 2.9.10, March 1, 2018<\/strong><\/p>\n<ul>\n<li>Modified templates: login.php, invoice.php.<\/li>\n<li>New: Add \"Preview\" and \"Send Test Email\" buttons for all email templates.<\/li>\n<li>Fix: Password reset success message not shown if already logged in.<\/li>\n<li>Fix: Members incorrectly receiving \"cancelled subscription\" emails when renewing expired memberships.<\/li>\n<li>Fix: Admins unable to view restricted posts in archives when \"Hide Restricted Posts\" is enabled.<\/li>\n<li>Fix: Delete database cache when adding\/editing subscription levels.<\/li>\n<li>Fix: Payment date in invoice template not localized.<\/li>\n<li>Tweak: Set sslverify to true wherever used.<\/li>\n<\/ul>\n<p><strong>Version 2.9.9, February 12, 2018<\/strong><\/p>\n<ul>\n<li>Tweak: Updated German translation.<\/li>\n<li>Fix: Unable to create new Stripe plans with Stripe API version 2018-02-05 or later.<\/li>\n<li>Fix: \"Hide Restricted Posts\" feature not showing posts in archives for members of free subscription levels.<\/li>\n<li>Fix: Admin \"cancel at payment gateway\" option not working when used in conjunction with \"revoke access now\".<\/li>\n<li>Fix: Only cancel memberships via gateway cancellation webhook if member is active.<\/li>\n<li>Fix: array_key_exists() error when get_post_type() returns false.<\/li>\n<li>Fix: New PayPal Express payments not getting assigned a subscription key.<\/li>\n<li>Fix: Subscription level is blank on manual payment emails sent to administrator.<\/li>\n<li>Fix: register.js file being loaded in [card_details] shortcode if the user cannot actually update their card details.<\/li>\n<li>Fix: JavaScript conflict with other plugins that uses hashes in admin page URLs.<\/li>\n<li>Fix: \"Can't combine currencies on a single customer\" Stripe error when Stripe currency differs from RCP currency.<\/li>\n<\/ul>\n<p><strong>Version 2.9.8, January 12, 2018<\/strong><\/p>\n<ul>\n<li>Tweak: Cancelled users who have expired are now changed to the \"expired\" status. This will update the status of all cancelled users who have reached their expiration date.<\/li>\n<li>Fix: Issue where PayPal payments were recorded twice in RCP under certain conditions.<\/li>\n<li>Fix: PayPal SoftDescriptor truncated error if the site name + subscription name is too long.<\/li>\n<li>New: Added rcp_reminder_notice_periods filter to allow developers to customize email reminder periods.<\/li>\n<li>New: Added rcp_invoice_bill_to action hook to allow developers to customize the invoice Bill To area.<\/li>\n<li>Tweak: Updated Braintree JavaScript to the latest version.<\/li>\n<li>Tweak: Added more debug logs to cron jobs that send renewal\/expiration email reminders.<\/li>\n<li>Fix: First and last name could be blank in Braintree under certain conditions.<\/li>\n<li>Enhancement: Made it more obvious that a member can update their payment card on the [subscription_details] page when their subscription is expired.<\/li>\n<li>Fix: No longer log PayPal as the gateway used on free registrations, because PayPal was not used!<\/li>\n<li>Fix: Undefined index notice when using the [restrict] shortcode if there wasn't a Free Content Message configured in the settings.<\/li>\n<\/ul>\n<p><strong>Version 2.9.7, December 12, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Registration totals are now properly formatted to 2 decimal places when appropriate.<\/li>\n<li>Fix: Issue where proration calculation amounts were incorrect due to date formatting.<\/li>\n<li>Fix: Set expiration on logged in transients when using Disable Account Sharing feature.<\/li>\n<li>Fix: Reports now work properly when switching from Last Year and back to This Year.<\/li>\n<li>Fix: CSV payment export now properly handles negative amounts.<\/li>\n<li>Fix: Issue where free members were marked as pending if they started to purchase a paid subscription and did not complete it.<\/li>\n<li>Fix: Issue with WooCommerce product visibility when products restricted to user level.<\/li>\n<li>Fix: Renew Your Subscription link no longer shows for members that have no expiration date.<\/li>\n<li>Fix: Members with overdue Stripe subscriptions will no longer be double billed if they go through the registration form and renew or subscribe to a different membership.<\/li>\n<li>Fix: Timestamp is now preserved when editing payments.<\/li>\n<li>Fix: Settings tabs now work on translated sites.<\/li>\n<li>Fix: Issue where pending member counts were incorrect under certain conditions.<\/li>\n<li>Tweak: If a member cancels a PayPal Express payment, they'll be returned to the page they came from instead of always going back to the registration page.<\/li>\n<li>Tweak: Adjusted markup on registration form pricing table.<\/li>\n<li>New: Added more data to payment export CSV files.<\/li>\n<\/ul>\n<p><strong>Version 2.9.6, October 20, 2017<\/strong><\/p>\n<ul>\n<li>Fix: New subscriptions immediately cancelled when upgrading from another level and paying with PayPal. That no longer happens.<\/li>\n<li>Fix: Roles defined on the subscription level are now reapplied to expired users when they are reactivated via some way other than the registration form.<\/li>\n<li>Fix: Manual Payment emails to the admin are now sent to the addresses you have in the Admin Notification Email setting under Restrict &gt; Settings &gt; Email.<\/li>\n<li>Fix: Stripe discount codes now properly work regardless of the case used when entering them.<\/li>\n<li>Fix: Improve error message display in Stripe gateway.<\/li>\n<li>Fix: Trailing zeroes are no longer stripped from amounts in emails.<\/li>\n<li>Fix: [subscription_details] shortcode will now show the subscription level name if the member is still pending.<\/li>\n<li>Fix: Earnings now calculate properly for very old payments that exist before payments had a status.<\/li>\n<li>Fix: Confirm dialog no longer shows twice if you want to delete a payment. Once is enough.<\/li>\n<li>Fix: Debug logging now uses the site's configured timezone when logging.<\/li>\n<li>Fix: When specifying a subscription level ID with the [register_form] shortcode, the form will no longer show if the subscription level is unlimited and the member already has the level.<\/li>\n<li>Fix: PHP notice when viewing the [subscription_details] page while logged out.<\/li>\n<li>Fix: _rcp_new_subscription usermeta flag now properly removed on free users when registration processing is complete.<\/li>\n<li>Fix: Changed the font size in the settings page tabs, and fixed the display of the active tab.<\/li>\n<li>Tweak: Swapped the order of the Stripe key settings to match the order Stripe shows them to make things a little easier.<\/li>\n<li>Tweak: Exclude admins from Prevent Account Sharing feature.<\/li>\n<\/ul>\n<p><strong>Version 2.9.5, October 16, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Issue where expired members or manually renewing members paying via Stripe could have ended up with two subscriptions in Stripe.<\/li>\n<li>Fix: Updated the Authorize.net SDK to the latest version, to help with all the Authorize.net fixes listed below.<\/li>\n<li>Fix: Authorize.net will now authorize cards before creating a subscription, which should reduce or eliminate failed payments due to Authorize.net delaying captures.<\/li>\n<li>Fix: Authorize.net now does single charges instead of one-time recurring charges when auto-renew is disabled or not selected.<\/li>\n<li>Fix: Proration message no longer shows if the member isn't eligible for proration.<\/li>\n<li>Fix: Downgrading from a paid to a free subscription will now properly cancel the paid subscription.<\/li>\n<li>Fix: Authorize.net will no longer attempt to create invalid subscriptions with a duration greater than 1 year, since they don't support that.<\/li>\n<li>Fix: Removed Alipay from Stripe Checkout since Stripe no longer supports Alipay via Stripe Checkout. Alipay will be introduced again in the future using another method.<\/li>\n<li>Fix: [register_form_stripe] shortcode behavior is now more consistent with the [register_form] shortcode. It now shows the subscription name in the Stripe Checkout popup instead of the site name. It also now supports image.<\/li>\n<li>Fix: REST API requests failing when the Prevent Account Sharing option is enabled.<\/li>\n<li>Fix: PHP notice when using RCP_Payments::get_payment() with a non-existent payment ID.<\/li>\n<li>Fix: PHP notice Undefined property: RCP_Emails::$payment_id when sending emails.<\/li>\n<li>Fix: When a member has a lifetime membership, RCP no longer shows that membership level to them on the registration page because renewing a lifetime membership makes no sense.<\/li>\n<li>Fix: rcp_is_post_taxonomy_restricted() is unavailable during AJAX requests, which caused issues with certain WooCommerce extensions.<\/li>\n<li>Fix: Invoice notes now better support multiple paragraphs and other formatting.<\/li>\n<li>Fix: RCP_Payments::get_payment_by() now works properly with strings as parameters.<\/li>\n<li>Fix: Braintree compatibility with old Braintree add-on that existed before Braintree was merged into RCP.<\/li>\n<li>New: New action hooks for developers: rcp_options_install and rcp_create_tables.<\/li>\n<li>New: Allow admins to manually verify accounts that are subject to email verification.<\/li>\n<li>New: Added rcp_get_currency_symbol function to get the just the currency symbol of the site's currency.<\/li>\n<li>New: Password reset form now shows a success message after members successfully reset their passwords.<\/li>\n<li>Tweak: Discount code input fields on the registration form are now wrapped in a span element, to make layouts in CSS easier.<\/li>\n<li>Tweak: Change capability required to view Tools menu from rcp_view_payments to rcp_manage_settings. For admin users, this means nothing since you already have both of those capabilities. This is for fine grained access control to menus, if needed.<\/li>\n<li>Tweak: Improve rcp_has_post_restrictions() checks to better support legacy data.<\/li>\n<\/ul>\n<p><strong>Version 2.9.4, September 22, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Payments over 999 were being improperly saved in the database with a comma for a thousand separator, which caused the invoice to show the incorrect amount due to currency formatting.<\/li>\n<li>Fix: Move the rcp_form_processing hook to run later in the registration process, to fix some integration issues with other plugins.<\/li>\n<li>Fix: %amount% email tag was sometimes showing the incorrect amount.<\/li>\n<li>Fix: Registration form hanging when signing up for a free plan and Braintree is the only gateway enabled.<\/li>\n<li>Fix: Login form now supports the class attribute on the [login_form] shortcode.<\/li>\n<li>Fix: PHP notice when saving a post if \"Members of subscription level\" is selected but a radio option below it was not selected.<\/li>\n<li>Fix: Updated admin-styles.min.css<\/li>\n<li>Tweak: Improve description in the tooltip for the Email Verification setting.<\/li>\n<li>New: Allow an empty space to be saved in the message attribute for the [restrict] shortcode.<\/li>\n<li>New: %discount_code% email tag now supported, to show which discount code was used, if any.<\/li>\n<li>New: Added Norwegian translation.<\/li>\n<\/ul>\n<p><strong>Version 2.9.3, September 15, 2017<\/strong><\/p>\n<ul>\n<li>Fix: The subscription level dropdown when editing Pending members now shows their pending subscription level instead of the first one in the list.<\/li>\n<li>Tweak: Subscription level ID numbers are now easier to read in the admin list.<\/li>\n<li>New: rcp_post_excerpt filter added for developers to customize the excerpt content.<\/li>\n<li>New: rcp_verification_redirect_url filter added for developers to customize the redirect URL for email verification links.<\/li>\n<\/ul>\n<p><strong>Version 2.9.2, September 7, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Improved security of Prevent Account Sharing feature.<\/li>\n<li>Fix: Avoid sending personally identifiable information (the email address) in email verification links.<\/li>\n<li>Fix: Renewal Payment Email no longer sent when a Stripe payment is declined during initial registration.<\/li>\n<li>Fix: Braintree payment profile ID not set on some members under certain conditions.<\/li>\n<li>Fix: Incorrect expiration date on PayPal non-recurring payments.<\/li>\n<li>Fix: Member status and expiration issues when a member renews early with the Manual Payment gateway.<\/li>\n<li>Fix: PHP notice when rcp_user_can_access() is used in a template on a 404 page.<\/li>\n<li>Fix: Recurring flag is now removed from members when they changed to free subscription levels.<\/li>\n<li>Fix: Remove _is_paid post meta data when Remove Data on Uninstall option is enabled.<\/li>\n<li>Tweak: Improve text on subscription cancellation notice.<\/li>\n<li>Tweak: Payment Received Emails no longer sent for free registrations.<\/li>\n<li>New: Search members by payment profile ID.<\/li>\n<li>New: Edit \/ View links on Page settings for quicker access to editing and viewing.<\/li>\n<li>New: Add link to member profile on the Edit Payment page.<\/li>\n<li>New: rcp_reminder_subscription_args filter to allow developers to change email reminder behavior.<\/li>\n<\/ul>\n<p><strong>Version 2.9.1, August 29, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Some email template tags not working.<\/li>\n<li>Fix: Payments made with Manual Payments option now remaining pending until approved.<\/li>\n<li>Fix: Removed duplicate query on payment view page in admin.<\/li>\n<li>Fix: RCP_Payments::get_earnings() now supports querying earnings of multiple user ids<\/li>\n<li>Fix: Incorrect number of table columns in payment view screen when there are no payments.<\/li>\n<li>Fix: Payment date on invoices is now translation ready and will use your date format in the WordPress settings.<\/li>\n<li>Fix: Username search results overlapped on Add New Subscription page.<\/li>\n<li>Fix: PayPal Express confirmation page is now responsive and looks better on mobile devices.<\/li>\n<li>Fix: Zip code field is now longer so that input doesn't get cut off visually.<\/li>\n<li>Fix: Join date is no longer overwritten when someone renews the same subscription level.<\/li>\n<li>Fix: CSS now loads on pages with the [subscription_details] shortcode to make it look better.<\/li>\n<li>Fix: When updating PayPal billing card you will no longer get the error \"Error updating subscription\".<\/li>\n<li>Fix: Postal code and CVV are now sent to Braintree to help with fraud detection.<\/li>\n<li>Fix: Misspelled description on settings page.<\/li>\n<li>Fix: Undefined variable $note on the rare occasion a member's expiration date fails to update.<\/li>\n<li>Fix: Authorize.net transactions linked to the wrong gateway in the admin payment view.<\/li>\n<li>Fix: HTML span nesting issue in register.php template.<\/li>\n<li>Fix: Paid users no longer given \"free\" status when the subscription level duration is set to 0. They now get \"active\" status.<\/li>\n<li>Fix: Member join date now uses the local timezone.<\/li>\n<li>Fix: Incorrect \"subscription renewed\" note during new signups.<\/li>\n<li>Fix: PayPal Express auto-renewing members not being marked as recurring.<\/li>\n<li>Fix: Added back the rcp_edit_member action hook that was mistakenly removed in 2.9.<\/li>\n<li>Tweak: Allow subscription price to be entered with only one digit after the decimal.<\/li>\n<li>Tweak: rcp_print_user_payments() function is now deprecated.<\/li>\n<li>New: Added rcp_payments_page_table_row_actions action hook for developers.<\/li>\n<li>New: Added rcp_set_status_value filter for developers to allow filtering of new status in RCP_Member::set_status().<\/li>\n<li>New: Added rcp_payments_total_columns filter to payment view table for developers.<\/li>\n<\/ul>\n<p><strong>Version 2.9, August 14, 2017<\/strong><\/p>\n<ul>\n<li>New: Added subscription renewal reminder notice emails<\/li>\n<li>New: Added support for restricting complete post types<\/li>\n<li>New: Added support for custom user roles in user role restriction options<\/li>\n<li>New: Added Debug Mode option to assist in resolving problems<\/li>\n<li>New: A template tag has been added to email settings for retrieving the URL to the most recent invoice on a member's account<\/li>\n<li>New: Password reset emails are now sent in the standard HTML email as all other RCP emails<\/li>\n<li>New: Admin screens for subscription levels, discount codes, and payment records now include status filters<\/li>\n<li>Tweak: The [register_form] shortcode now permits multiple subscription level IDs to be specified<\/li>\n<li>Tweak: The redirect performed after logging in now uses wp_safe_redirect()<\/li>\n<li>Tweak: The process-data.php file has been broken up into multiple PHP files to make it easier for developers<\/li>\n<li>Tweak: RCP_Payment_Gateway now includes better inline documentation<\/li>\n<li>Tweak: The register-single.php template file now includes a log in link<\/li>\n<li>Tweak: A new action hook has been added that fires after successful member registration<\/li>\n<li>Tweak: Payment records now get created earlier and include a pending status<\/li>\n<li>Tweak: Payment records now store the discount code that was used<\/li>\n<li>Tweak: Payment records now store the exact subscription level ID related to the payment<\/li>\n<li>Tweak: Payment records now store the slug of the payment gateway used, such as stripe<\/li>\n<li>Tweak: Invoice download links are now available from the edit member screen<\/li>\n<li>Bug: Memberships were not properly renewed in Authorize.net if they included a free trial<\/li>\n<li>Bug: PayPal Express could return a fatal error on the confirmation screen for some PayPal accounts<\/li>\n<li>Bug: Stripe customer ID not saved early enough during registration<\/li>\n<li>Bug: rcp_member_get_expiration_date filter did not include necessary $formatted and $pending variables<\/li>\n<li>Bug: WooCommerce: products in restricted category\/tag were still accessible via direct URL<\/li>\n<li>Bug: WooCommerce: active members could not view products restricted to \"Active subscribers only\"<\/li>\n<li>Bug: Expiration date incorrectly calculated for manual renewals<\/li>\n<li>Bug: Subscriptions that auto renew but started with a 100% discount expire improperly<\/li>\n<li>Bug: Registration submit button disabled improperly if reCaptcha is enabled but API keys are not entered<\/li>\n<li>Bug: Stripe Checkout modal shows price even when signing up for a free trial with the [register_form_stripe] shortcode<\/li>\n<li>Bug: Filter in rcp_currency_filter() not used properly<\/li>\n<li>Bug: Subscription ID saved to Stripe customer metadata before subscription is actually created in Stripe<\/li>\n<li>Bug: Pending users can view content protected by [restrict] shortcode<\/li>\n<li>Bug: Duplicate subscriptions created on customers in Stripe if their customer record had a previously delinquent subscription<\/li>\n<\/ul>\n<p><strong>Version 2.8.6, June 7, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Login redirect now works with the redirect_to parameter when added by WordPress.<\/li>\n<li>Fix: Incorrect filter names for registration headers in register-single.php template.<\/li>\n<li>Enhancement: Registration form now passes more form fields when calculating totals, for better add-on compatibility.<\/li>\n<\/ul>\n<p><strong>Version 2.8.5, April 17, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Misspelling of Province on credit card form.<\/li>\n<li>Fix: Memberships sometimes cancelled in when moving from recurring to non-recurring subscription.<\/li>\n<li>Update Finnish translation.<\/li>\n<li>Fix: Round pending subscription amount, which fixes calculation issue with certain gateways like PayPal.<\/li>\n<li>Add member and subscription level metadata to subscriptions on stripe.com.<\/li>\n<li>Fix: Developers - RCP_Member::get_renewed_date() now properly returns a string instead of an array.<\/li>\n<li>Fix: Extra slashes are no longer added to discount code descriptions when saving\/updating.<\/li>\n<\/ul>\n<p><strong>Version 2.8.4, April 5, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Stripe Checkout popup loads twice under certain conditions.<\/li>\n<li>Fix: Trailing zeroes stripped from the price displayed on invoices.<\/li>\n<li>Fix: Post restrictions not working as expected under certain conditions when restricted to tags, categories, or other custom taxonomies.<\/li>\n<\/ul>\n<p><strong>Version 2.8.3, March 30, 2017<\/strong><\/p>\n<ul>\n<li>New: Add confirmation dialog when deleting a discount code.<\/li>\n<li>Fix: PHP notice when exporting payments if the member's account has been deleted.<\/li>\n<li>Fix: Rounding errors with percentage discounts.<\/li>\n<li>Fix: Only show admin notices to users that have necessary capabilities.<\/li>\n<li>Fix: Free trial email being sent twice.<\/li>\n<li>Fix: Stripe receipt emails will now respect the Stripe account settings.<\/li>\n<li>Fix: Missing closing anchor element on View Receipt link.<\/li>\n<li>Fix: Incorrect trial end dates in PayPal Express.<\/li>\n<li>Fix: Trailing zeroes not required when editing payments.<\/li>\n<li>Fix: System info report not showing parent theme template overrides.<\/li>\n<li>Fix: Stripe subscriptions sometimes cancelled during upgrades if the webhook is delayed.<\/li>\n<li>Enhancement: Improve performance of can_access() method.<\/li>\n<\/ul>\n<p><strong>Version 2.8.2, March 17, 2017<\/strong><\/p>\n<ul>\n<li>New: You can now require new members to verify their email before gaining access to restricted content (Restrict &gt; Settings &gt; Emails).<\/li>\n<li>New: There's now a confirmation screen when cancelling a subscription via [subscription_details].<\/li>\n<li>New: Add a member note when the user's subscription level changes.<\/li>\n<li>New: Add filter for the login redirect URL ( rcp_login_redirect_url ).<\/li>\n<li>Fix: Upgrades improperly given both proration and full expiration date extension.<\/li>\n<li>Fix: If initial PayPal Express payment fails, user's account is not set back to \"pending\".<\/li>\n<li>Fix: Stripe customer balance not removed if payment fails.<\/li>\n<li>Fix: Posts restricted by term not included in rcp_is_restricted_content().<\/li>\n<li>Fix: Styling issues on payments table on Edit Member screen. Payments table is also now responsive.<\/li>\n<li>Fix: Cancelled member who signs up for a recurring Stripe subscription incorrectly receives the \"Expired\" email.<\/li>\n<li>Fix: Username validation fails on multisite installations when using uppercase characters.<\/li>\n<li>Fix: Stripe.js loaded twice when EDD Stripe is also activated.<\/li>\n<li>Fix: Disabling upgrades removes renewal link from [subscription_details] page.<\/li>\n<li>Fix: Auto renew checkbox remains visible when selecting a free level with an unlimited duration.<\/li>\n<li>Fix: SQL syntax error on plugin activation.<\/li>\n<li>Fix: Display an error message when attempting to edit a member that doesn't exist.<\/li>\n<li>Fix: PayPal subscr_eot IPN incorrectly expiring some memberships that have since been updated.<\/li>\n<li>Tweak: Always use RCP_Member::get_expiration_date() method where possible instead of getting user meta directly.<\/li>\n<li>Tweak: Improve member notes format during initial signup.<\/li>\n<li>Tweak: When reCAPTCHA is activated you can no longer submit the registration form until it's been filled out.<\/li>\n<li>Tweak: Removed the second display of the subscription level price on the register-single.php template.<\/li>\n<li>Tweak: Changed the heading on the members page from \"Paid Subscribers\" to \"Members\".<\/li>\n<\/ul>\n<p><strong>Version 2.8.1, March 9, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Error on sites running a WordPress version prior to 4.7.<\/li>\n<\/ul>\n<p><strong>Version 2.8, March 9, 2017<\/strong><\/p>\n<ul>\n<li>New: Added Braintree Payments gateway.<\/li>\n<li>New: Added support for one-time discounts.<\/li>\n<li>New: Added an option to remove all data from the database when uninstalling Restrict Content Pro.<\/li>\n<li>New: Payment profiles for member accounts can now be cancelled directly from the member Edit screen when setting their status to \"Cancelled\".<\/li>\n<li>New: Added filter to allow custom metadata to be attached to Stripe subscriptions.<\/li>\n<li>New: Added a setting to select whether Auto Renew is checked on by default for new subscribers.<\/li>\n<li>New: Admin emails can now be customized and configured with template tags.<\/li>\n<li>New: Added actions in metabox display template and in save meta function.<\/li>\n<li>Tweak: Help tabs have been updated and made available for translation.<\/li>\n<li>Tweak: All plugin CSS has been refactored to be more clear and consistent.<\/li>\n<li>Tweak: Use count on discount codes now get properly adjusted when account registration fails.<\/li>\n<li>Fix: If registration with a free trial fails, it is not possible for members to try again.<\/li>\n<li>Fix: Manual renewals improperly prorate payment amounts.<\/li>\n<li>Fix: Payment profile IDs do not have whitespace removed.<\/li>\n<li>Fix: Responsive tables do not work with all themes.<\/li>\n<li>Fix: Incorrect behavior with some restriction functions due to empty metadata being saved.<\/li>\n<\/ul>\n<p><strong>Version 2.7.4, March 3, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Two subscriptions with the same name may result in incorrect\u00a0charge\/duration in Stripe.<\/li>\n<li>Fix: Content restricted to 'any' level was accessible to pending members.<\/li>\n<li>Fix: Some posts incorrectly\u00a0being included in\u00a0rcp_get_post_ids_assigned_to_restricted_terms(). This would only be noticed if \"Hide Restricted Posts\" is checked on.<\/li>\n<li>Fix: Incorrect expiration date given to member if they register, don't complete payment, then register again days later.<\/li>\n<li>Fix: Stripe Checkout spinner icon still visible after closing modal without completing payment.<\/li>\n<li>Fix: Payment form not re-appearing when removing an applied discount code.<\/li>\n<li>Tweak: Pass $event variable to hooks in Stripe gateway, like\u00a0rcp_stripe_charge_succeeded and\u00a0rcp_stripe_charge_failed.<\/li>\n<li>New: Add user note when recurring charge fails.<\/li>\n<li>New: Add new RCP_Member methods for set_subscription_id() and set_subscription_key().<\/li>\n<li>New: Filters for expiring soon email message and subject. Filters are:\u00a0rcp_expiring_soon_email and\u00a0rcp_expiring_soon_subject.<\/li>\n<\/ul>\n<p><strong>Version 2.7.3, February 21, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Free trials not working properly in PayPal Express.<\/li>\n<li>Fix: Older unrestricted posts being improperly treated as restricted.<\/li>\n<li>Fix: Undefined variable in rcp_stripe_charge_failed hook.<\/li>\n<li>Fix: Payments made with Authorize.net have invalid date attached.<\/li>\n<li>Fix: Register button text not passed through rcp_registration_register_button filter.<\/li>\n<li>Tweak: Stop using deprecated functions internally.<\/li>\n<li>New: Per Stripe's recommendation, load Stripe.js on all pages if Stripe is enabled. Helps with Stripe's fraud detection.<\/li>\n<li>New: Add dynamic rcp_set_status_{$status} developer hook in RCP_Member.<\/li>\n<li>New: Email admin when a new manual payment is received.<\/li>\n<li>New: Add [is_expired] shortcode for showing content to expired members only.<\/li>\n<li>New: rcp_save_settings filter for developers to use when RCP settings are saved.<\/li>\n<li>New: Option to Always\/Never show excerpts, or decide on an individual post by post basis. The new option is under Restrict &gt; Settings &gt; Misc.<\/li>\n<li>New: Search by first\/last name on the Members list page.<\/li>\n<\/ul>\n<p><strong>Version 2.7.2, February 14, 2017<\/strong><\/p>\n<ul>\n<li>Enhancement: Add a note to a member's record when the \"expiring soon\" email is sent.<\/li>\n<li>New: Added the rcp_export_members_get_data_row and rcp_export_payments_get_data_row filters, making it easier to custom data to member and payment exports.<\/li>\n<li>New: Introduced a new function, rcp_is_valid_currency(), to determine if a given currency code matches the currency selected in the settings.<\/li>\n<li>New: Added action hooks to the invoice template, making it easier to programmatically add information to the invoice. New hooks are: rcp_invoice_items, rcp_invoice_items_before_total_price, rcp_invoice_additional_info, rcp_invoice_after_additional_info.<\/li>\n<li>Enhancement: Set user display name to username if first and last names are not filled out during registration.<\/li>\n<li>Fix: Member notes added programmatically not saved when editing a member in the admin.<\/li>\n<li>Fix: jQuery Migrate notice on registration form.<\/li>\n<li>Fix: Login failure if username is an email address but is different from the account's actual email address.<\/li>\n<li>Fix: Two cancellation emails sent when a member cancels.<\/li>\n<li>Fix: rcp_get_current_url() not working when used behind a reverse proxy.<\/li>\n<li>Fix: Only send the trial email when a member signs up for an old style trial plan, instead of the trial and active emails.<\/li>\n<li>Fix: Remove brackets from lost password email link, making it work better with some email apps.<\/li>\n<li>Fix: Don't load gateway webhook processing when not needed, such as during ajax, cron, and admin page views.<\/li>\n<li>Fix: Totals not showing on the registration form on mobile devices.<\/li>\n<li>Fix: Trial members not getting an activation email.<\/li>\n<li>Fix: Table layout issue with [subscription_details] shortcode.<\/li>\n<li>Fix: HTML emails have extra spacing when sent through Mandrill with the WPMandrill plugin.<\/li>\n<li>Fix: Quick\/bulk editing WooCommerce products no longer wipes out restriction settings.<\/li>\n<li>Fix: Incomplete email subject line on admin notifications of free trials.<\/li>\n<li>Fix: PHP notice: undefined gateway_obj on free registrations.<\/li>\n<li>Fix: Email tags not parsed on plain text emails.<\/li>\n<li>Tweak: Deprecate the unused rcp_rstrstr() function.<\/li>\n<li>Developer: Introduced can_cancel() and cancel_payment_profile() methods in RCP_Member. rcp_can_member_cancel() and rcp_cancel_member_payment_profile() are now wrappers for these new methods.<\/li>\n<\/ul>\n<p><strong>Version 2.7.1, February 8, 2017<\/strong><\/p>\n<ul>\n<li>Fix: Missing Stripe token when using Stripe Checkout<\/li>\n<\/ul>\n<p><strong>Version 2.7, February 8, 2017<\/strong><\/p>\n<ul>\n<li>New: Added Authorize.net integration<\/li>\n<li>New: Added support for free trials with payment detail collection<\/li>\n<li>New: Added support for failed payment email notifications<\/li>\n<li>New: Added support for HTML emails with new email templates<\/li>\n<li>New: Added a better integration with Easy Digital Downloads<\/li>\n<li>New: Added support for automatically removing subscription level-assigned user roles when members expire \/ cancel<\/li>\n<li>New: Content restricted via taxonomy term is now compatible with our redirect feature<\/li>\n<li>New: HTML classes now added via post_class to restricted content<\/li>\n<li>New: Members now redirected away from all restricted content when they do not have access and Hide Restricted Posts is enabled<\/li>\n<li>New: An option to hide the WordPress toolbar has been added<\/li>\n<li>New: A column for \"Payment Status\" has been added to the [subscription_details] shortcode<\/li>\n<li>New: Automatically apply a discount code by including it in the registration URL<\/li>\n<li>Tweak: [subscription_details] is now fully responsive<\/li>\n<li>Tweak: Payment method selection now uses radio buttons<\/li>\n<li>Tweak: Direct links to merchant details screens has been added to payments list in the member edit screen<\/li>\n<li>Tweak: All back-end pages now use h1 tags for page headers<\/li>\n<li>Fix: First\/last name and billing address not sent to PayPal Pro<\/li>\n<li>Fix: Incorrect language detected by System Info report<\/li>\n<li>Fix: Incorrect payment \/ discount ID sometimes returned when creating new records<\/li>\n<li>Fix: Incorrect description under 2Checkout Test Seller ID field<\/li>\n<li>Fix: Invalid integer error when using Alipay in Stripe Checkout<\/li>\n<li>Fix: Existing users cannot subscribe with Stripe Checkout<\/li>\n<li>Fix: Invalid HTML markup in profile editor<\/li>\n<li>Fix: Fatal error when attempting to create a discount code when Stripe API credentials are not set up<\/li>\n<li>Fix: Database tables inaccessible in WordPress multisite when network activated<\/li>\n<li>Fix: Registration form validation skipped when using Stripe Checkout<\/li>\n<li>Fix: Account details not emailed to customers when using Stripe Checkout shortcode<\/li>\n<li>Fix: Users with rcp_manage_discounts capability unable to add new discount codes<\/li>\n<li>Fix: Memberships are now activated immediately after successful PayPal Pro payment (rather than a few second delay)<\/li>\n<\/ul>\n<p><strong>Version 2.6.16, January, 21 2017<\/strong><\/p>\n<ul>\n<li>Fix: Issue where expired and pending members were locked out of all site content, regardless of restriction settings.<\/li>\n<\/ul>\n<p><strong>Version 2.6.15, January, 19 2017<\/strong><\/p>\n<ul>\n<li>Fix: Issue where expired members could still restricted access content under certain conditions.<\/li>\n<\/ul>\n<p><strong>Version 2.6.14, January, 6 2017<\/strong><\/p>\n<ul>\n<li>New: Added option for opting into beta updates.<\/li>\n<li>Updated Spanish es_ES language files.<\/li>\n<\/ul>\n<p><strong>Version 2.6.13, December 9, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Conflict with AffiliateWP REST API<\/li>\n<\/ul>\n<p><strong>Version 2.6.12, December 5, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Missing Stripe token error when using Stripe Checkout gateway.<\/li>\n<\/ul>\n<p><strong>Version 2.6.11, November 29, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Properly show errors on password reset form when errors occur during password resets.<\/li>\n<li>Fix: Ensure valid prices are entered the subscription level add\/edit screen.<\/li>\n<li>Fix: Fatal error on Stripe purchases when card fails.<\/li>\n<li>Fix: Fatal error when activating the plugin on old, unsupported versions of PHP.<\/li>\n<li>Fix: Prevent Account Sharing didn't work properly under certain conditions.<\/li>\n<li>Fix: Stripe Checkout prevented other payment options from being used if Stripe Checkout was selected first.<\/li>\n<li>Fix: Alipay showed on Stripe Checkout even if not enabled.<\/li>\n<li>Fix: Incorrect expiration date shown in Active Subscription emails.<\/li>\n<li>Fix: PayPal issue where the URL was formatted incorrectly on certain web hosts.<\/li>\n<li>Fix: First level not automatically selected on the registration form.<\/li>\n<li>Enhancement: Add Swedish translation files.<\/li>\n<\/ul>\n<p><strong>Version 2.6.10, October 27, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Bug introduced in 2.6.9 that caused some members to not be able to see content they have access to.<\/li>\n<\/ul>\n<p><strong>Version 2.6.9, October 26, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Alipay option shows in Stripe Checkout on some sites when it's disabled.<\/li>\n<li>Fix: Expiration date formatted incorrectly on the member edit screen for some sites.<\/li>\n<li>Fix: Wrong expiration date showed for some pending members on the Members page.<\/li>\n<li>Fix: Comments visible for users without access on some posts when the post was restricted by role only.<\/li>\n<li>Fix: Duplicate HTML ID in the profile editor template.<\/li>\n<li>Fix: Member status did not get set to pending if upgrading from a free trial to a paid membership when using the Manual Payment gateway.<\/li>\n<li>Fix: Member expiration date was incorrectly calculated when upgrading from one membership to another when using the Manual Payment gateway.<\/li>\n<li>Fix: Set From Name and From Email headers in the Expiring Soon emails.<\/li>\n<li>Fix: Invalid character in SoftDescriptor during registration when using PayPal Pro.<\/li>\n<li>Tweak: Pass the discount and subscription ID to the rcp_discounts_once_per_user filter.<\/li>\n<li>Enhancement: Added \"View User Account\" link to payment records on the Payments page.<\/li>\n<\/ul>\n<p><strong>Version 2.6.8, October 3, 2016<\/strong><\/p>\n<ul>\n<li>Fix: User registration does not complete when using Stripe Checkout with a 100% discount code.<\/li>\n<li>Fix: Unrecognized options in Stripe Checkout.<\/li>\n<li>Fix: Cancellation emails were sent twice when a member cancels a subscription.<\/li>\n<li>Fix: improve security of all member-facing forms.<\/li>\n<li>Tweak: use rcp_get_currency() helper function throughout the plugin instead of direct option calls. Improves compatibility for developers.<\/li>\n<li>Enhancement: Send RCP plugin name, version, and your site URL to Stripe when making charges. Useful for debugging issues with Stripe. Stripe refers to this as setAppInfo.<\/li>\n<\/ul>\n<p><strong>Version 2.6.7, September 20, 2016<\/strong><\/p>\n<ul>\n<li>Tweak: Better error handling for Stripe processing failures<\/li>\n<li>Tweak: Improved performance of registration form processing<\/li>\n<li>Tweak: Removed \"Cancel\" button from edit member screen to reduce confusion<\/li>\n<li>Tweak: Notice is now displayed when enabling login redirect without a login form on the redirect page<\/li>\n<li>Fix: Logos on invoices can extend beyond container<\/li>\n<li>Fix: Invalid integer error with Stripe when using discounts<\/li>\n<li>Fix: Custom date range not clickable in Reports<\/li>\n<li>Fix: Content improperly restricted to free members when using access levels<\/li>\n<li>Fix: Incorrect filter name in payment meta DB class<\/li>\n<li>Fix: Check if DONOTCACHE page is already defined before defining it<\/li>\n<li>Fix: Incorrect capability checked when generating invoice<\/li>\n<li>Fix: Member join date not set properly when manually changing a member's subscription level<\/li>\n<li>Fix: Memory leak on edit member page that could cause session expired notices<\/li>\n<li>Fix: [restrict] shortcode improperly restricts to free members<\/li>\n<li>Fix: User role not updated when downgrading \/ upgrading<\/li>\n<li>Fix: Subscription level cache not flushed when updating subscription level<\/li>\n<li>Fix: Free accounts cannot be registered when 2Checkout gateway is active<\/li>\n<\/ul>\n<p>Version 2.6.6, August 8, 2016<\/p>\n<ul>\n<li>Fix: Payments not logged with PayPal Pro and PayPal Express when auto-renew is disabled.<\/li>\n<li>Fix: Incorrect subscription level selected on the registration form when manually specifying the subscription level ID in the URL.<\/li>\n<li>Fix: A subscription level's metadata is now deleted when the subcription level is deleted in the admin.<\/li>\n<li>Enhancement: Removed the use of PHP extract function from all shortcodes.<\/li>\n<li>Enhancement: The rcp_locate_template function now supports registering custom template locations via the rcp_template_stack filter.<\/li>\n<li>Enhancement: Added the rcp_available_template_tags action hook to let developers add new email template tags to the Available Template Tags display in the Email settings tab.<\/li>\n<\/ul>\n<p>Version 2.6.5, August 1, 2016<\/p>\n<ul>\n<li>Fix: Stripe gateway not working properly on some sites. Fixes invalid request errors due to TLS.<\/li>\n<li>Fix: \"Last Week\" earnings report not working properly.<\/li>\n<li>Fix: PayPal Pro gateway not working properly on some accounts that do not use automatic renewals.<\/li>\n<li>Fix: Issue where paid members could not renew their expired subscriptions on the registration form.<\/li>\n<li>Fix: Remove empty spaces from Stripe API keys when saving to prevent copy and paste errors when entering the keys in settings.<\/li>\n<li>Fix: Show an error message on registration form if Stripe keys are not entered.<\/li>\n<li>Fix: Define CAL_GREGORIAN constant on systems that do not do it already.<\/li>\n<li>Fix: Update settings description for Hide Premium Posts.<\/li>\n<li>Enhancement: Add Recurring column to member CSV export.<\/li>\n<\/ul>\n<p>Version 2.6.4, July 26, 2016<\/p>\n<ul>\n<li>Fix: Discounted total calculation bug when discounted total is $1000 or more.<\/li>\n<li>Fix: Stripe Checkout missing token error when used with the [register_form] shortcode and the ID option.<\/li>\n<li>Fix: Stripe subscription expiration dates improperly extended under certain conditions.<\/li>\n<li>Fix: Subscription name blank in emails when the subscription was added manually.<\/li>\n<li>Fix: Timezone configurations not always respected when calculating expirations.<\/li>\n<li>Fix: Invoices not showing the email address defined in settings.<\/li>\n<li>Fix: Registration form error message when a site only has free subscriptions activated.<\/li>\n<li>Fix: Auto-fill the email address on the Stripe Checkout form when possible.<\/li>\n<li>Enhancement: Added a rcp_is_sandbox helper function for determining if a site is in sandbox mode.<\/li>\n<li>Updated: Dutch language files.<\/li>\n<\/ul>\n<p>Version 2.6.3, July 11, 2016<\/p>\n<ul>\n<li>Fix: Issue with taxonomy restrictions introduced in 2.6.2.<\/li>\n<\/ul>\n<p>Version 2.6.2, July 11, 2016<\/p>\n<ul>\n<li>Fix: Issue with content restriction interface on post edit screen that caused it to show the improper setting when \"Members of any subscription level\" was set.<\/li>\n<\/ul>\n<p>Version 2.6.1, July 8, 2016<\/p>\n<ul>\n<li>Fix: Issue that caused content to be visible when the Paid Only option was used without any other restrictions defined.<\/li>\n<li>Fix: Display issue with the new user interface for restricting content.<\/li>\n<\/ul>\n<p>Version 2.6, July 7, 2016<\/p>\n<ul>\n<li>New: Redesigned user interface for restricting content on posts and pages<\/li>\n<li>New: All admin list tables are now fully responsive<\/li>\n<li>New: \u00a0Added contextual tool tips and improved setting descriptions throughout the plugin<\/li>\n<li>New: Replaced PDF invoices with HTML invoices, making invoices faster and easier to customize, and also reduced the size of the plugin files significantly<\/li>\n<li>New: Comments on restricted content are now automatically hidden from members without necessary access privileges<\/li>\n<li>New:\u00a0A new Add-ons page has been added to the Restrict menu<\/li>\n<li>New: Added support for Alipay in Stripe Checkout<\/li>\n<li>New: Payment transaction IDs are now linked directly to the merchant processor page<\/li>\n<li>New: PayPal customers can now update the credit \/ debit card attached to their subscription<\/li>\n<li>New: Join and renewal dates are now stored in meta data for members<\/li>\n<li>New: Added metadata APIs for subscription levels and payments<\/li>\n<li>New: Added improved database upgrade API<\/li>\n<li>Tweak: Fixed widths have been removed from labels on registration form<\/li>\n<li>Tweak: Improved member counts that are significantly faster<\/li>\n<li>Tweak: Indexes have been added to all database tables to improve performance<\/li>\n<li>Tweak: Stripe API libraries have been updated to the latest version<\/li>\n<li>Tweak: Updated French translation<\/li>\n<li>Fix: Expiring \/ renewing soon email\u00a0not sent to customers that upgrade<\/li>\n<li>Fix: \"Cannot combine currencies on customer\" error in Stripe<\/li>\n<li>Fix: \"No such plan: false\" error in Stripe<\/li>\n<li>Fix: Incorrect locale parameter passed to Stripe Checkout<\/li>\n<li>Fix: Payment Received emails are sent even when disabled<\/li>\n<li>Fix: Payment amount not properly sanitized in PayPal IPN processing<\/li>\n<li>Fix: Incorrect support forum link<\/li>\n<li>Fix: Pending\u00a0expiration date shown in subscription.php template file<\/li>\n<li>Fix: Coupon codes not created in Stripe when only Stripe Checkout is enabled<\/li>\n<li>Fix: Revoke access link does not actually revoke access<\/li>\n<li>Fix: &lt;LI&gt; tag cannot be changed in register.php without breaking registration<\/li>\n<li>Fix: Editing a discount code results in a duplicate code being created in Stripe<\/li>\n<li>Fix: Activate License button missing<\/li>\n<li>Fix: Password not validated during Change Password form submission<\/li>\n<\/ul>\n<p>Version 2.5.4, May 16, 2016<\/p>\n<ul>\n<li>Fix: Missing amount verification during PayPal IPN processing<\/li>\n<li>Fix: Incorrect page set for \"Update Billing Card Page\" during plugin install<\/li>\n<li>Fix: Incorrect submit button text shows when using Stripe Checkout and\u00a0a free level is selected<\/li>\n<li>Fix: %subscription_name% email tag returns wrong subscription name when upgrading subscription<\/li>\n<li>Fix: Non-translatable strings in PayPal Express Confirmation template<\/li>\n<li>Fix: WP cron events not deleted when plugin is uninstalled<\/li>\n<li>Tweak: Improved\u00a0access checks for [restrict] shortcode, including the introduction of a new \"rcp_restrict_shortcode_has_access\" filter<\/li>\n<\/ul>\n<p>Version 2.5.3, April 29, 2016<\/p>\n<ul>\n<li>Fix: Missing text domains on strings<\/li>\n<li>Fix: One-time charges through Stripe not connected to customer in Stripe<\/li>\n<li>Fix: Currency sign on Stripe Checkout modal incorrect when not using USD<\/li>\n<li>Fix: Missing text strings in POT file<\/li>\n<li>Fix: Formatting problems with amounts over 1000<\/li>\n<li>Fix: Unrestricted WooCommerce products get restricted improperly<\/li>\n<li>Fix: Previous subscription not always cancelled in merchant processor when upgrading subscription levels<\/li>\n<li>Fix: Previous subscription not cancelled when upgrading to one-time payment option<\/li>\n<li>Fix: Refunds report introduced in 2.5 accidentally removed<\/li>\n<li>New: Added Portuguese translation<\/li>\n<\/ul>\n<p>Version 2.5.2, April 7, 2016<\/p>\n<ul>\n<li>Fix: Trailing zeros missing from final price on registration form<\/li>\n<li>Fix: Incorrect column span on registration form<\/li>\n<li>Fix: Incorrect date recorded for some Stripe payments<\/li>\n<\/ul>\n<p><strong>Version 2.5.1, April 5, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Prorating amounts over 1000 fails<\/li>\n<li>Fix: WooCommerce products incorrectly hidden when catalogue visibility is disabled<\/li>\n<li>Fix: Nav menus cannot be saved when Restrict Content Pro is active<\/li>\n<li>Tweak: Removed Description column in pricing details section of registration form<\/li>\n<\/ul>\n<p>Version 2.5, March 29, 2016<\/p>\n<ul>\n<li>New: Added support for upgrading and downgrading between subscription levels with proration<\/li>\n<li>New: Added improved discount, signup fee, and price display on registration<\/li>\n<li>New: Added support for Stripe Checkout<\/li>\n<li>New: Improved payment history display on Member details page<\/li>\n<li>New: Added a View Member link to payment history rows<\/li>\n<li>New: Added a System Info report to aid in technical support<\/li>\n<li>New: Added a Refund report to the Reports page<\/li>\n<li>New: Added improved support for detecting re-activated subscriptions in Stripe<\/li>\n<li>New: Added new shortcodes for displaying membership information of currently logged in member<\/li>\n<li>New: Currently stored credit \/ debit card details now show on card update form<\/li>\n<li>New: Content restriction options added to custom taxonomies<\/li>\n<li>Fix: Is Recurring flag not set properly on successful\u00a0but\u00a0late payments<\/li>\n<li>Fix: \u00a0Initial payments not collected in PayPal Pro gateway<\/li>\n<li>Fix: Members not emailed when membership is added manually by site admin<\/li>\n<li>Fix: WP Approve User integration improperly disallows access to content with no restrictions<\/li>\n<li>Fix: PayPal Express and Pro\u00a0show an error if the initial amount is less than 0<\/li>\n<li>Fix: Zero-decimal currencies not supported properly in Stripe<\/li>\n<li>Fix: Incorrect URL to Help page<\/li>\n<li>Fix: WooCommerce products still accessible even when restricted<\/li>\n<li>Fix: Payment dates do not match up with payment processor<\/li>\n<li>Fix: Subscription price not updated in Stripe when updated in Restrict Content Pro<\/li>\n<li>Fix:\u00a0Renewal dates not\u00a0properly synced with merchant processor when payments are processed<\/li>\n<li>Fix: PayPal Express logs the profile ID instead of the transaction ID<\/li>\n<\/ul>\n<p>Version 2.4.11, February 12, 2016<\/p>\n<ul>\n<li>Fix: PayPal Sandbox rejecting Express and Pro signups due to http version<\/li>\n<li>Fix: Recurring payments in 2Checkout not processed properly<\/li>\n<li>Tweak: Updated PayPal APIs to version 124<\/li>\n<\/ul>\n<p>Version 2.4.10, February 7, 2016<\/p>\n<ul>\n<li>Fix: Signup fees reversed in Stripe resulting in credits being given instead of fees<\/li>\n<\/ul>\n<p>Version 2.4.9, February 2, 2016<\/p>\n<ul>\n<li>Fix: Expiration date not set when a pending date was already set<\/li>\n<li>Fix: Custom report ranges that span year boundaries display improperly<\/li>\n<li>Fix: Discount codes permitted non-valid amounts to be saved<\/li>\n<li>Fix: Subscription levels could be created without a name<\/li>\n<li>Fix: HTML emails were not possible due to htmlspecialchars() function<\/li>\n<li>New: Added new hooks for when payment processing during signup fails<\/li>\n<\/ul>\n<p><strong>Version 2.4.8, January 22, 2016<\/strong><\/p>\n<ul>\n<li>Fix: Duplicate 0.00 transactions with Stripe when using a signup fee<\/li>\n<li>Fix: Incorrect expiration dates\u00a0with registrations through Stripe<\/li>\n<\/ul>\n<p>Version 2.4.7, December 29, 2015<\/p>\n<ul>\n<li>Fix: Expiration dates incorrectly set after renewing or upgrading an existing account<\/li>\n<li>Fix: \"Profile Description Invalid\" error sometimes in PayPal Express<\/li>\n<li>New: Added class names to table columns for the Members table<\/li>\n<li>Tweak: Added nocache headers to the lost password processing screens<\/li>\n<\/ul>\n<p>Version 2.4.6, December 18, 2015<\/p>\n<ul>\n<li>Fix: Apply Discount button was missing from register-single.php template file<\/li>\n<li>New: Members can now log in via email<\/li>\n<\/ul>\n<p><strong>Version 2.4.5, December 11, 2015<\/strong><\/p>\n<ul>\n<li>Fix: Logged out users shown Account Pending Verification message on all posts and pages<\/li>\n<\/ul>\n<p><strong>Version 2.4.4, December 10, 2015<\/strong><\/p>\n<ul>\n<li>Fix: Expiration date doubled when members subscribe with PayPal, cancel before completing payment, then subscribe again.<\/li>\n<li>Fix: Typo email settings<\/li>\n<\/ul>\n<p>Version 2.4.3, November 24, 2015<\/p>\n<ul>\n<li>Fix: Bug with upgrading currently active subscriptions<\/li>\n<li>Fix: Missing INS processing for 2Checkout<\/li>\n<li>Fix: Undefined variable when discount code is not used<\/li>\n<li>New: Added action hooks to the top and bottom of the Restrict this Content metabox<\/li>\n<li>New: Added filters to the member queries run during\u00a0cron jobs<\/li>\n<\/ul>\n<p>Version 2.4.2, November 7, 2015<\/p>\n<ul>\n<li>Fix: Bug with Stripe webhook processing that could prevent account cancellations from working properly when cancelled from Stripe<\/li>\n<\/ul>\n<p>Version 2.4.1, November 4, 2015<\/p>\n<ul>\n<li>Fix: Discount codes not discounting price in payment gateways<\/li>\n<\/ul>\n<p>Version 2.4, November 2, 2015<\/p>\n<ul>\n<li>New: Added support for 2Checkout<\/li>\n<li>New: Added support for WP Approve User plugin for requiring admins approve user accounts<\/li>\n<li>Fix: PayPal payment dates and expiration dates getting out of sync<\/li>\n<\/ul>\n<p><strong>Version 2.3.8, October 21, 2015<\/strong><\/p>\n<ul>\n<li>Fix: Duplicate active email sent for users that register with a 100% discount code<\/li>\n<li>Fix: Active email not sent properly for new registrations<\/li>\n<li>Fix: Trial email sent improperly when 100% discount code is used<\/li>\n<li>Fix: 100% discount code generates \"Free subscriptions cannot be automatically renewed\" error<\/li>\n<\/ul>\n<p>Version 2.3.7, October 21, 2015<\/p>\n<ul>\n<li>Fix: Missing Stripe token error<\/li>\n<\/ul>\n<p>Version 2.3.6, October 20, 2015<\/p>\n<ul>\n<li>Fix: Active \/ Welcome emails sent even for non-new accounts<\/li>\n<li>Fix: Admin notification after updating payment persists across page loads<\/li>\n<li>Fix: Manually created payments do not flush the earnings cache<\/li>\n<li>Fix: User search field results shown incorrectly when no results found<\/li>\n<li>Fix: Spelling errors across several admin pages<\/li>\n<li>Fix: New Subscription emails show incorrect expiration date in some cases<\/li>\n<li>Fix: Non-numeric amounts can be entered for payments<\/li>\n<li>Fix: Stripe customer credit properly supported now<\/li>\n<\/ul>\n<p>Version 2.3.5, October 6, 2015<\/p>\n<ul>\n<li>Fix: Expiration date is sometimes shown incorrectly in Payment Received emails<\/li>\n<li>Fix: Payment dates not always respecting server's timestamp<\/li>\n<li>Fix: Undefined index notices when activating\/deactivating discount codes when Stripe is enabled<\/li>\n<li>Fix: Spelling error, \"logout\" should be \"log out\"<\/li>\n<li>Fix: Spelling error, \"Mail Chimp\" should be \"MailChimp\"<\/li>\n<li>Fix: Grammar error, \"Setup\" should be \"Set Up\"<\/li>\n<li>Fix: Incorrect link to documentation<\/li>\n<li>Fix: Undefined index notices when settings have not been saved<\/li>\n<\/ul>\n<p>Version 2.3.4, September 24, 2015<\/p>\n<ul>\n<li>Fix: Variable typo that caused PayPal Standard IPN processing to not work properly<\/li>\n<\/ul>\n<p>Version 2.3.3, September 22, 2015<\/p>\n<ul>\n<li>Fix: renew() method incorrectly setting member status in some cases<\/li>\n<\/ul>\n<p>Version 2.3.2, September 22, 2015<\/p>\n<ul>\n<li>Fix: PayPal Express IPNs not being processed properly on all accounts<\/li>\n<\/ul>\n<p>Version 2.3.1, September 18, 2015<\/p>\n<ul>\n<li>Fix: Reset password URL not working<\/li>\n<\/ul>\n<p><strong>Version 2.3, September 18, 2015<\/strong><\/p>\n<ul>\n<li>New: Added the ability to bulk edit member accounts<\/li>\n<li>New: Added support for reCaptcha v2.0 from Google<\/li>\n<li>New: Added Payment Received email option<\/li>\n<li>New: Account, Profile, and Card Update pages are now created automatically during install<\/li>\n<li>Fix: account page text is too large in Twenty Fifteen theme<\/li>\n<li>Fix: Renew link improperly shown for free members<\/li>\n<li>Fix: Last Week earnings not shown properly when it crosses a month boundary<\/li>\n<\/ul>\n<p><strong>Version 2.2.7, August 19, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug that caused expiration dates to be set too far in the future during registration.<\/li>\n<\/ul>\n<p><strong>Version 2.2.6, August 11, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with negative signup fees and recurring subscriptions in Stripe<\/li>\n<li>Fixed a bug that caused declined card errors to not get caught when updating the billing card<\/li>\n<li>Added a confirmation message to the Update Billing Card form<\/li>\n<\/ul>\n<p>Version 2.2.5, August 6, 2015<\/p>\n<ul>\n<li>Fixed a bug with expiration dates getting set too far ahead for customers that register through Stripe<\/li>\n<\/ul>\n<p><strong>Version 2.2.4, August 3, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with expiration dates being calculated incorrectly when calculating for a subscription level that never expires<\/li>\n<li>Fixed a bug that caused the Active Subscription email to include the wrong expiration date<\/li>\n<li>Fixed a bug that caused the Screen Options tab to not save properly<\/li>\n<li>Tweak to ensure the member's display name is set during registration<\/li>\n<\/ul>\n<p><strong>Version 2.2.3, July 20, 2015<\/strong><\/p>\n<ul>\n<li>Fixed an issue with fatal errors\u00a0when updating pages that contain the RCP shortcodes on some websites.<\/li>\n<li>Updated New User notification emails to contain the user login names<\/li>\n<li>Tweak registration form JS to ensure that clicking Register multiple times doesn't cause issues<\/li>\n<li>Added member status to the member export<\/li>\n<\/ul>\n<p><strong>Version 2.2.2, July 9, 2015<\/strong><\/p>\n<ul>\n<li>Fixed an issue with calculating member's new expiration date when accounts are renewed.<\/li>\n<\/ul>\n<p>Version 2.2.1, July 8, 2015<\/p>\n<ul>\n<li>Fixed an issue with WooCommerce products not being shown to registered users<\/li>\n<\/ul>\n<p>Version 2.2, July 6, 2015<\/p>\n<ul>\n<li>Added support for restricting WooCommerce products<\/li>\n<li>Added support for 2-factor authentication through Google Authenticator<\/li>\n<li>Added members' payment profile IDs to member export file<\/li>\n<li>Added new action hooks to login form template file<\/li>\n<li>Fixed issue with members not being logged in automatically during registration<\/li>\n<li>Fixed \"unexpected output\" during activation<\/li>\n<\/ul>\n<p>Version 2.1.11, June 18, 2015<\/p>\n<ul>\n<li>Fixed a PHP notice during installation<\/li>\n<li>Fixed an issue with discount code validation on single registration forms<\/li>\n<li>Fixed an issue with discount codes not being re-validated when the level is changed<\/li>\n<li>Fixed an issue with one-time Stripe charges getting attributed to the wrong user<\/li>\n<li>Fixed an issue with the Help page not redirecting to the documentation site<\/li>\n<\/ul>\n<p>Version 2.1.10, May 27, 2015<\/p>\n<ul>\n<li>Fixed an issue with signup fees not working in Stripe<\/li>\n<li>Added new useremail template tag for emails<\/li>\n<\/ul>\n<p>Version 2.1.9, May 27, 2015<\/p>\n<ul>\n<li>Fixed an issue with credit\/debit card form not displaying if the first level is Free<\/li>\n<li>Fixed a fatal error in the PayPal Pro gateway that occurred if API credentials had not been entered<\/li>\n<li>Tweaked the card number field to have a max length of 20 characters<\/li>\n<li>Tweaked the description text\u00a0in settings<\/li>\n<\/ul>\n<p><strong>Version 2.1.8, May 21, 2015<\/strong><\/p>\n<ul>\n<li>Fixed an error message when updating discounts with Stripe active<\/li>\n<li>Fixed an issue with payment settings disappearing when plugin is reactivated<\/li>\n<li>Fixed a typo in the settings page<\/li>\n<li>Fixed an issue with email notifications not being sent when accounts are cancelled<\/li>\n<\/ul>\n<p><strong>Version 2.1.7, May 21, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with reCaptcha over SSL<\/li>\n<\/ul>\n<p><strong>Version 2.1.6, May 13, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a fatal error when updating credit \/ debit cards in Stripe<\/li>\n<li>Fixed a bug that caused the \"Active\" email to be sent to trial subscribers<\/li>\n<\/ul>\n<p><strong>Version 2.1.5, May 12, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with expiration dates on Unlimited plans<\/li>\n<li>Fixed a bug with the price not showing up on the single register template<\/li>\n<li>Fixed a\u00a0bug with the Stripe libraries not being loaded if another plugin had already loaded it<\/li>\n<\/ul>\n<p><strong>Version 2.1.4, May 11, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug that caused emails to not be sent to free or trial members.<\/li>\n<\/ul>\n<p>Version 2.1.3, May 9, 2015<\/p>\n<ul>\n<li>Fixed a bug that caused the credit \/ debit card form to not be displayed when passing the id=\"x\" parameter to the register form short code.<\/li>\n<\/ul>\n<p>Version 2.1.2, May 6, 2015<\/p>\n<ul>\n<li>Fixed a bug that caused PayPal Standard subscriptions to not get activated<\/li>\n<\/ul>\n<p><strong>Version 2.1.1, May 4, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with editing \/ creating discount codes when the Stripe gateway is inactive<\/li>\n<\/ul>\n<p><strong>Version 2.1, April 30, 2015<\/strong><\/p>\n<ul>\n<li><strong>This is a major release. Please see <a href=\"https:\/\/pippinsplugins.com\/?p=60420\">release post<\/a> for detailed information.<\/strong><\/li>\n<li>Stripe, PayPal Pro, and PayPal Express now included for free. Braintree integration is also free as an add-on.<\/li>\n<li>New payment gateway API for developers to build additional payment processor integrations.<\/li>\n<li>New Manual Payment gateway for processing manual payments.<\/li>\n<li>Dramatically improved registration form processing.<\/li>\n<li>Registration form now submits via ajax and displays error messages without a page \u00a0reload.<\/li>\n<li>Better member cancellation options from member's account pages<\/li>\n<li>Site admins can now cancel member's payment profile from Restrict &gt; Members.<\/li>\n<li>Improved and re-organized settings screen.<\/li>\n<li>New RCP_Member class for developers.<\/li>\n<li>New RCP_Payment_Gateway class for developers.<\/li>\n<li>New rcp_user_can_access() function for developers.<\/li>\n<li>Numerous other new functions for developers.<\/li>\n<\/ul>\n<p><strong>Version 2.0.17, April 20, 2015<\/strong><\/p>\n<ul>\n<li>Minor XSS security fix<\/li>\n<\/ul>\n<p><strong>Version 2.0.16, February 11, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a conflict with The Event Calendar plugin<\/li>\n<li>Updated the French translation files<\/li>\n<\/ul>\n<p><strong>Version 2.0.15, January 29, 2015<\/strong><\/p>\n<ul>\n<li>Fixed a bug with signup fees in PayPal over 1,000<\/li>\n<li>Updated the plugin updater class<\/li>\n<li>Fixed a spelling error<\/li>\n<li>Modified the shortcodes include file to always be included<\/li>\n<li>Fixed an incorrect user ID variable during the process that adds a manual subscription to a user<\/li>\n<li>Introduced\u00a0rcp_before_subscription_form_fields hook<\/li>\n<li>Fixed two method declarations in the WP_Logging class<\/li>\n<\/ul>\n<p><strong>Version 2.0.14, November 19, \u00a02014<\/strong><\/p>\n<ul>\n<li>Added an option to let non-recurring members renew their access from their account page<\/li>\n<\/ul>\n<p><strong>Version 2.0.13, October 29, 2014<\/strong><\/p>\n<ul>\n<li>Fixed a bug in the updater that caused update checks to run too often.<\/li>\n<\/ul>\n<p><strong>Version 2.0.12, October 21, 2014<\/strong><\/p>\n<ul>\n<li>Improved plugin updater class<\/li>\n<\/ul>\n<p>Version 2.0.11, October 7, 2014<\/p>\n<ul>\n<li>Updated language files<\/li>\n<\/ul>\n<p>Version 2.0.10, October 1, 2014<\/p>\n<ul>\n<li>Fixed a bug with adding subscriptions manually to user accounts<\/li>\n<\/ul>\n<p>Version 2.0.9, August 27, 2014<\/p>\n<ul>\n<li>Updated the Restrict menu icon to use dashicons<\/li>\n<li>Automatically add \/ remove user roles anytime their subscription level is changed in the admin<\/li>\n<li>Default the login redirect to the home page<\/li>\n<li>Fixed a few typos<\/li>\n<li>Added a fallback\u00a0cal_days_in_month() function for hosts that don't have it enabled<\/li>\n<\/ul>\n<p>Version 2.0.8, August 14, 2014<\/p>\n<ul>\n<li>Fixed a bug \u00a0with CSS not loading on the subscription details and profile editor short codes<\/li>\n<li>Added an Edit Member button to the View Member details screen<\/li>\n<li>Improved the Members page filtering and search<\/li>\n<li>Added support for setting the From Name and From Email address in Settings &gt; Emails<\/li>\n<li>Cancelled members now actually get marked as Cancelled instead of staying as Active and then getting marked as Expired<\/li>\n<li>Linked the admin notice on first install to the Restrict &gt; Settings page<\/li>\n<li>Fixed an inaccurate field description in settings<\/li>\n<li>Improved the license activation process and fixed a bug that prevented license keys from being activated<\/li>\n<\/ul>\n<p>Version 2.0.7, June 24, 2014<\/p>\n<ul>\n<li>Fixed a bug with the Payment Export not including all payments.<\/li>\n<\/ul>\n<p>Version 2.0.6, June 19, 2014<\/p>\n<ul>\n<li>Fixed a bug with payment method forms showing when signing up for a free\u00a0subscription level<\/li>\n<li>Fixed a bug with the discount field showing when signing up for a free subscription level<\/li>\n<li>Fixed a bug with the Auto Renew field showing when signing up for a free subscription level<\/li>\n<\/ul>\n<p>Version 2.0.5, May 20, 2014<\/p>\n<ul>\n<li>Added an option to control the number of members that are exported with the CSV export<\/li>\n<li>Fixed a bug with the auto-renew options not showing on individual registration forms<\/li>\n<li>Fixed a bug with pending members getting the Expiring Soon notice<\/li>\n<li>Added year\/month options to the Payment CSV export<\/li>\n<li>Added an option to manually toggle a member's trialing status<\/li>\n<li>Fixed a bug with amounts in the PDF Invoices<\/li>\n<\/ul>\n<p>Version 2.0.4, May 13, 2014<\/p>\n<ul>\n<li>Fixed a bug with the wp_editor() used in the Messages section of settings<\/li>\n<li>Fixed a bug with user roles not being set properly on registration<\/li>\n<\/ul>\n<p>Version 2.0.3, May 13, 2014<\/p>\n<ul>\n<li>Fixed a bug with discount codes not getting\u00a0attached to user accounts<\/li>\n<li>Fixed a bug with rcp_get_user_role() when the user isn't part of the site<\/li>\n<\/ul>\n<p>Version 2.0.2, April 21, 2014<\/p>\n<ul>\n<li>Fixed a bug with custom registration forms related to the Stripe payment gateway<\/li>\n<\/ul>\n<p><strong>Version 2.0.1, April 18, 2014<\/strong><\/p>\n<ul>\n<li>Fixed a bug that caused a fatal error with wp_get_current_user() during certain actions<\/li>\n<li>Fixed a bug with the login form redirect on the subscription_details short code<\/li>\n<\/ul>\n<p><strong>Version<\/strong> 2.0, April 11, 2014<\/p>\n<ul>\n<li>Added support for PDF Invoices of subscription payments<\/li>\n<li>Greatly improved the member's subscription details area<\/li>\n<li>Added support for custom registration pages with the [register_form id=\"x\"] short code<\/li>\n<li>Added improved caching \/ performance throughout the plugin, primarily related to subscription level and payment queries<\/li>\n<li>Added support for restricting posts based on the category they are filed in<\/li>\n<li>Added integration for the Limit Login Attempts plugin<\/li>\n<li>Added custom capabilities for all admin pages<\/li>\n<li>Added a new setting for PayPal Page Style<\/li>\n<li>Added an option to control whether all subscriptions auto renew or not<\/li>\n<li>Added new rcp_edit_member hook<\/li>\n<li>Added new RCP profile editor hooks<\/li>\n<li>Added options to disable each of the emails individually<\/li>\n<li>Tweak: improve the way the login form shows when a user is logged in<\/li>\n<li>Tweak: properly set the exact time when creating a manual payment<\/li>\n<li>Tweak: improve issue with members expiring on the wrong day when signing up on the last day of the month<\/li>\n<li>Tweak: always show the registration levels on the registration page<\/li>\n<li>Tweak: improved expiration cron jobs<\/li>\n<\/ul>\n<p>Version 1.9.6, February 5, 2014<br \/>\nAdded better support for 100% discount codes and non-PayPal payment gateways.<\/p>\n<p>Added better caching to the subscription level database class.<br \/>\nVersion 1.9.5, January 21, 2014<\/p>\n<ul>\n<li>Improved validation of the user information when saving the profile form.<\/li>\n<li>Fixed a bug that would allow a user to update their email to that of another user.<\/li>\n<li>Fixed a bug that would allow a user to completely remove their email.<\/li>\n<\/ul>\n<p>Version 1.9.4, December 23, 2013<\/p>\n<ul>\n<li>Fixed a bug with the user role not saving when first creating a subscription level<\/li>\n<li>Improved the UI of the Cancel buttons in admin headers<\/li>\n<li>Added a JS action for rcp_discount_applied<\/li>\n<li>Added .rcp_gateway_fields class<\/li>\n<\/ul>\n<p>Version 1.9.3 - December 9, 2013<\/p>\n<ul>\n<li>Improve reliability of license activation and deactivation<\/li>\n<li>Only setup user transients if single-login is enabled<\/li>\n<li>Fix bug with Last Month report view when current month is December<\/li>\n<li>Rewrite PayPal redirect to make all args filterable<\/li>\n<li>Removed erroneous ID attribute<\/li>\n<li>Better filters for email messages and receipients<\/li>\n<li>Better organization of user level checks<\/li>\n<li>Add support for setting the user role on a per-subscription basis<\/li>\n<li>Fixed bug with updating subscription levels when no changes were made<\/li>\n<li>Improved the expired users cron job<\/li>\n<\/ul>\n<p>Version 1.9.2 - October 25, 2013<\/p>\n<ul>\n<li>Fixed a bug with payment amounts over 1000<\/li>\n<\/ul>\n<p>Version 1.9.1 - October 21, 2013<\/p>\n<ul>\n<li>Fixed an undefined index error on the subscription Add New screen.<\/li>\n<li>Fixed a bug with the subscription level order getting overwritten when updating a level.<\/li>\n<\/ul>\n<p>Version 1.9 - October 4, 2013<\/p>\n<ul>\n<li>Added support for signup fees and discounts for subscription levels.<\/li>\n<li>Added the ability to search payments.<\/li>\n<li>Added payment transaction ID tracking.<\/li>\n<\/ul>\n<p>Version 1.8.1<\/p>\n<ul>\n<li>Fixed a bug with subscription level duration units not saving correctly.<\/li>\n<\/ul>\n<p>Version 1.8<\/p>\n<ul>\n<li>Added a brand new Reports page with earnings and signup graphs.<\/li>\n<\/ul>\n<p>Version 1.7<\/p>\n<ul>\n<li>Added support for manually creating payments.<\/li>\n<li>Fixed a bug with 'class' and other attributes getting stripped from Subscription Level descriptions.<\/li>\n<\/ul>\n<p>Version 1.6.3<\/p>\n<ul>\n<li>Fixed a bug with the Expiring Soon emails getting sent to recurring subscribers.<\/li>\n<\/ul>\n<p>Version 1.6.2<\/p>\n<ul>\n<li>Fixed a problem with the discount table creation.<\/li>\n<\/ul>\n<p>Version 1.6.1<\/p>\n<ul>\n<li>Fixed a problem with the [restrict] short code.<\/li>\n<\/ul>\n<p>Version 1.6<\/p>\n<ul>\n<li>Added the ability to restrict discount codes to specific subscription levels<\/li>\n<li>Added a \"Remember Me\" checkbox to the login form<\/li>\n<li>Added new options to the \"Restrict This Content\" meta box that allows content to be restricted to multiple subscription levels<\/li>\n<li>Non-recurring subscribers can now renew their membership at any time<\/li>\n<li>Added new Renewal Notice reminders that can be automatically sent before a user expires.<\/li>\n<\/ul>\n<p>Version 1.5.7<\/p>\n<ul>\n<li>Fixed a problem with not being able to set subscription durations to higher than 127 days\/months\/years.<\/li>\n<li>Added Hebrew translation files<\/li>\n<\/ul>\n<p>Version 1.5.6<\/p>\n<ul>\n<li>Added a new, better plugin updater system. <strong>You MUST enter your license key in the plugin settings to get future updates.<\/strong><\/li>\n<li>Improved the expiration \/ renewal date text on the Subscription Details short code.<\/li>\n<li>Renamed the Payments settings tab to General.<\/li>\n<\/ul>\n<p>Version 1.5.5<\/p>\n<ul>\n<li>Improved RTL compatibility.<\/li>\n<li>Fixed an issue with LI and UL tags getting stripped from subscription level descriptions.<\/li>\n<\/ul>\n<p>Version 1.5.4<\/p>\n<ul>\n<li>Fixed another issue with UTF8 encoding\/decoding.<\/li>\n<\/ul>\n<p>Version 1.5.3<\/p>\n<ul>\n<li>Fixed an issue with UTF8 encoding\/decoding.<\/li>\n<\/ul>\n<p>Version 1.5.2<\/p>\n<ul>\n<li>Updated manual update_user_meta() calls for member status to use rcp_set_status()<\/li>\n<li>Fixed an additional issue with PayPal payments not getting recorded.<\/li>\n<\/ul>\n<p>Version .1.5.1<\/p>\n<ul>\n<li>Fixed and issue with PayPal payments not getting recorded.<\/li>\n<\/ul>\n<p>Version 1.5<\/p>\n<ul>\n<li>New: Trial memberships can now upgrade to paid memberships at any time.<\/li>\n<li>New: Site admins can view all pad content.<\/li>\n<li>New: Usernames in Restrict &gt; Members are now linked to the user\\'s profile.<\/li>\n<li>New: Members can now be searched from Restrict &gt; Members.<\/li>\n<li>New: Added a new [rcp_profile_editor] short code.<\/li>\n<li>New: Registration, login, change password, and profile editor forms now included template files that can be easily, and safely modified.<\/li>\n<li>New: Added an option to delete payments.<\/li>\n<li>New: Added an option to view all payments by user.<\/li>\n<li>New: Added member first names to user export.<\/li>\n<li>New: Rewrote export system to be more flexible and extensible.<\/li>\n<li>New: Wrote new database interaction classes to make it easier for extensions to record \/ modify data.<\/li>\n<li>New: Added an option to revent account sharing.<\/li>\n<li>New: Added new action hooks.<\/li>\n<li>Fix: email field on registration wasn\\'t given a .valid or .error class.<\/li>\n<li>Fix: Admin javascript alerts are now localized for translation.<\/li>\n<li>Fix: Expiration date could not be left blank.<\/li>\n<li>Fix: User expiration dates were not localized.<\/li>\n<li>Fix: reCaptcha caused a fatal error if not configured correctly.<\/li>\n<li>Fix: stripslashes on subscription level names.<\/li>\n<li>Fix: The Upgrade link in [subscription_details] was shown even when only one free subscription level was active.<\/li>\n<li>Tweaked: Improved the registration processing function.<\/li>\n<li>Tweaked: Improved the default CSS.<\/li>\n<\/ul>\n<p>Version 1.4.4.2<\/p>\n<ul>\n<li>Added new email tags for %firstname%, %lastname%, and %displayname%.<\/li>\n<li>Fixed a bug with the %username% email tag.<\/li>\n<\/ul>\n<p>Version 1.4.4.1<\/p>\n<ul>\n<li>Fixed a missing parameter error with rcp_count_members()<\/li>\n<\/ul>\n<p>Version 1.4.4<\/p>\n<ul>\n<li>Introduced new Logs page to view gateway error logs<\/li>\n<li>Fixed an error in the PayPal gateway that caused members to not renew correctly<\/li>\n<\/ul>\n<p>Version 1.4.3<\/p>\n<ul>\n<li>Added new %amount% tag to the email templates<\/li>\n<li>Fixed a bug with teh PayPal cancellation link<\/li>\n<li>Fixed the subject line of the free email<\/li>\n<li>Fixed the %blogname% email template tag<\/li>\n<li>Improved file structure and organization<\/li>\n<li>Improved code documentation<\/li>\n<\/ul>\n<p>Version 1.4.2<\/p>\n<ul>\n<li>Fixed a security vulnerability with the function that writes to the database<\/li>\n<li>Fixed a bug with setting discount codes to percentage type<\/li>\n<li>Fixed a JS bug on the registration form for showing \/ hiding auto renew and the discount<\/li>\n<\/ul>\n<p>Version 1.4.1<\/p>\n<ul>\n<li>Forced auto-renew to false when signing up for a forever plan<\/li>\n<li>Fixed a bug with wpdb-&gt;prepare()<\/li>\n<\/ul>\n<p>Version 1.4<\/p>\n<ul>\n<li>Renamed Redirect page to Success page<\/li>\n<li>Added new rcp_is_paid_content filter<\/li>\n<li>Added a new logging system for tracking payment gateway errors<\/li>\n<li>Fixed issues with $wpdb-&gt;prepare() notices<\/li>\n<li>Made \"View Details\" always visible on the Users page<\/li>\n<li>Improved data sanitization<\/li>\n<li>Added a new notice when a user is updated<\/li>\n<li>Added new feature for \"User Notes\"<\/li>\n<li>Improved default CSS<\/li>\n<li>Added Arabic language files<\/li>\n<li>Added Portuguese language files<\/li>\n<li>Added new rcp_redirect_from_wp_login() function<\/li>\n<li>Removed user-registration-enabled check for the registration form<\/li>\n<\/ul>\n<p>Version 1.3.3<\/p>\n<ul>\n<li>Updated default language files.<\/li>\n<li>Fixed some missing text domains.<\/li>\n<li>Fixed a double slash in script URLs.<\/li>\n<li>Improved the function that checks to see if a payment has been recorded yet.<\/li>\n<li>Added a function to ensure RCP can be network activated.<\/li>\n<li>Fixed problem with HTML in subscription level descriptions.<\/li>\n<\/ul>\n<p>Version 1.3.2.3<\/p>\n<ul>\n<li>Added new rcp_pre_edit_discount action<\/li>\n<li>Improved data sanitization for discount codes<\/li>\n<li>Added new rcp_pre_add_discount hook<\/li>\n<li>Added Spanish translation files<\/li>\n<li>Added new rcp_show_subscription_level() function for determing if a level should be shown on the signup form<\/li>\n<\/ul>\n<p>Version 1.3.2.2<\/p>\n<ul>\n<li>Fixed a bug with a white screen after free signups<\/li>\n<\/ul>\n<p>Version 1.3.2.1<\/p>\n<ul>\n<li>Fixed a small bug with subscription lengths<\/li>\n<\/ul>\n<p>Version 1.3.2<\/p>\n<ul>\n<li>Moved reCaptcha to a new rcp_show_captcha() function so it can be more easily modified<\/li>\n<li>Added new \"rcp_return_url\" filter so that the URL users are returned to can be more easily modified<\/li>\n<li>Fixed several potential security flaws<\/li>\n<li>Improved data validation and sanitization throughout the plugin<\/li>\n<li>Improved internationalization of date formats<\/li>\n<li>Fixed a problem with restricting to free users and access levels at the same time<\/li>\n<li>Added do_shortcode() to teaser messages so that they render short codes<\/li>\n<li>Improved documentation and help text throughout the plugin<\/li>\n<li>Added new \"rcp_access_levels\" filter for modifying the available access levels<\/li>\n<li>Fixed some broken images in the Help page<\/li>\n<li>Updated French language files<\/li>\n<li>Fixed a problem with calculating users first expiration date that caused members to expire before their renewing payment was made<\/li>\n<li>Added new \"rcp_errors_before\" and \"rcp_errors_after\" for adding content before\/after error messages are displayed<\/li>\n<li>Improved the functions that calculate a discounted price<\/li>\n<li>Added a new function for storing discount codes in user\\'s meta<\/li>\n<li>Added new registration-functions.php and performed significant code cleanup<\/li>\n<li>Added a new filter \"rcp_default_user_level\" for the default user role given to members on signup<\/li>\n<\/ul>\n<p>Version 1.3.1.1<\/p>\n<ul>\n<li>Fixed a problem with allow furl_open<\/li>\n<\/ul>\n<p>Version 1.3.1<\/p>\n<ul>\n<li>Fixed a bug with the auto updater<\/li>\n<li>Replaced a global with a constant<\/li>\n<li>Fixed a bug with expired users cron jobs<\/li>\n<\/ul>\n<p>Version 1.3<\/p>\n<ul>\n<li>Documentated conflict with object caching<\/li>\n<li>Improved the email setting labels<\/li>\n<li>Hid the payment gateway checkboxes unless more than one gateway is available<\/li>\n<li>Added new rcp_get_currencies() function that can be filtered to allow more currencies<\/li>\n<li>Dramatically improved the rcp_curreny_filter() function with filters for other plugins to use to customize currency display<\/li>\n<li>Added new meta key for storing the PayPal recurring payment ID<\/li>\n<li>Improved security checks in IPN listener<\/li>\n<li>Fixed incorrect email address in IPN email log<\/li>\n<li>Added an option to disable IPN verification from PayPal<\/li>\n<li>Fixed the code prettifier in the help page<\/li>\n<li>Fixed a problem with the expired users cron job and users with no expiration date<\/li>\n<li>Fixed a bug with subscription level IDs in the registration form<\/li>\n<li>Fixed incorrect variable in rcp_set_status<\/li>\n<li>Added unique ID to each subscription level in the registration form<\/li>\n<li>Made default user level filterable<\/li>\n<li>Rewrote the settings page to follow the WP core UI<\/li>\n<li>Fixed a problem with the update notifier<\/li>\n<li>Improved the Paid Only option label to make it more clear<\/li>\n<li>Added a new filter to the meta box fields array to allow extra fields to be added<\/li>\n<li>Improved front end JS<\/li>\n<li>Added new filter to the rcp_excerpt_by_id() function<\/li>\n<li>Added Polish language files<\/li>\n<li>DIscount code input now gets hidden when a free subscription level is selected<\/li>\n<li>Added improved number formatting<\/li>\n<li>Improved rcp_get_members()<\/li>\n<li>Replaced custom SQL query with rcp_get_subscription_levels()<\/li>\n<li>Fixed problems with sorting users by subscription level<\/li>\n<\/ul>\n<p>Version 1.2.4<\/p>\n<ul>\n<li>Added an ID to the discount codes P tag on the registration form<\/li>\n<li>Fixed a security flaw in the signup process that created a way for users to get access to premium content for free<\/li>\n<li>Registration fields now retain their information on submission error<\/li>\n<li>Fixed a missing argument in rcp_log_user_in()<\/li>\n<li>Fixed a problem with the function that calculates the discounted price<\/li>\n<li>Made discounts active by default<\/li>\n<li>Added some additional hooks to PayPal gateway<\/li>\n<li>Added an option to cancel subscription from the [subscription_details] shortcode for new signups<\/li>\n<li>Minor improvements to the PayPal gateway<\/li>\n<\/ul>\n<p>Version 1.2.3<\/p>\n<ul>\n<li>Made some improvements to the PayPal verification to help prevent verification failures<\/li>\n<li>Updated default language files<\/li>\n<li>Fixed a problem with the JS that hides the auto renew option when a free subscription is selected<\/li>\n<li>Added new option to disable admin notifications<\/li>\n<li>Added an option to export free users<\/li>\n<li>Fixed the level query arg for auto plan selection<\/li>\n<\/ul>\n<p>Version 1.2.2<\/p>\n<ul>\n<li>Fixed a bug with the user expiration cron job that sends out expiration notices<\/li>\n<\/ul>\n<p>Version 1.2.1<\/p>\n<ul>\n<li>Fixed a couple of minor bugs with the user page columns<\/li>\n<li>Changed \"Free\" to 0 in the rcp_currency_filter() function<\/li>\n<li>Removed the IPN error log option<\/li>\n<li>Added tax=0 to the PayPal redirect<\/li>\n<li>Updated the login form to auto redirect to the current page<\/li>\n<li>Added JS to hide the auto renew option when a free subscription is selected<\/li>\n<li>Improved markup of the subscription details short code<\/li>\n<li>Added support for the Turkish Lira currency<\/li>\n<li>Moved load_plugin_textdomain() to an init hooked function<\/li>\n<li>Added action hooks and filters to the PayPal listener<\/li>\n<\/ul>\n<p>Version 1.2.0<\/p>\n<ul>\n<li>Fixed a bug that caused bad encoding of apostrophes in the email \"From\" name.<\/li>\n<li>Fixed a bug that prevented admins from manually adding subscriptions to users.<\/li>\n<li>A few minor code improvements.<\/li>\n<li>Improved file organization.<\/li>\n<li>Updated language files.<\/li>\n<\/ul>\n<p>Version 1.1.9<\/p>\n<ul>\n<li>Updated the default language files to include new strings for translation.<\/li>\n<li>Added do_action() hooks to the add\/edit subscription level functions.<\/li>\n<li>Improved the payment gateway system.<\/li>\n<li>Added ajaxed live search to the \"Add New Subscription\" form.<\/li>\n<li>Fixed a bug with the PayPal Sandbox mode<\/li>\n<\/ul>\n<p>Version 1.1.8<\/p>\n<ul>\n<li>Fixed a bug that caused non-active members to have an expiration date of 1970 in the [subscription_details] shortcode.<\/li>\n<li>Improved the registration form CSS slightly.<\/li>\n<li>Added a new advanced query arg that can be used on the Members page in the admin for displaying all members that signed up live vs. those that were added by admins.<\/li>\n<li>Added missed jQuery UI theme images for the datepicker.<\/li>\n<li>Fixed the double message problem with admin alert emails.<\/li>\n<\/ul>\n<p>Version 1.1.7.2<\/p>\n<ul>\n<li>Fixed a formatting bug with the discounts table when no codes have been created yet.<\/li>\n<li>Fixed a formatting bug with the subscriptions levels table when no levels have been created yet.<\/li>\n<li>Fixed the data type of the payment\\'s table \"amount\" column.<\/li>\n<\/ul>\n<p>Version 1.1.7.1<\/p>\n<ul>\n<li>Fixed a bug that caused the cron job added in the previous version to run constantly.<\/li>\n<\/ul>\n<p>Version 1.1.7<\/p>\n<ul>\n<li>Added a cron job that checks for expired users every day and sends an email to the user when they have expired.<\/li>\n<li>Fixed a bug were subscription access levels were reset to 0 when editing.<\/li>\n<li>Fixed a few issues with utf8 encoding.<\/li>\n<\/ul>\n<p>Version 1.1.6<\/p>\n<ul>\n<li>Added a meta box option for restricting content based upon the subscription level.<\/li>\n<li>Added a \"subscription=ID\" parameter to the [restrict] short code for limiting content to specific subscription levels.<\/li>\n<li>Updated Help page with information about access levels and restricting to subscription levels.<\/li>\n<li>Improved some admin CSS and jQuery loading.<\/li>\n<li>Improved the layout of the \"Restrict this Content\" metabox so that it can now be placed in the side column.<\/li>\n<li>Added new demonstration videos to the Help page on how to restrict content.<\/li>\n<\/ul>\n<p>Version 1.1.5<\/p>\n<ul>\n<li>Moved the \"members per page\" and \"payments per page\" to the screen options tab.<\/li>\n<li>Added FAQs to the Help page.<\/li>\n<li>Added a div.rcp-payment-history around the user\\'s payment history.<\/li>\n<li>Added missing class attribute to \"no payments recorded\" message in the [subscription_details] shortcode.<\/li>\n<\/ul>\n<p>Version 1.1.4<\/p>\n<ul>\n<li>Added support for access level restriction on free content.<\/li>\n<li>Added do_shortcode() to the [is_not_paid] short code.<\/li>\n<li>Made the first subscription level checked by default on the registration page.<\/li>\n<li>Added missing HTML element classes to the registration form.<\/li>\n<\/ul>\n<p>Version 1.1.3<\/p>\n<ul>\n<li>Released the Math Verification add-on: http:\/\/codecanyon.net\/item\/restrict-content-pro-math-verification\/1876095<\/li>\n<li>Fixed an undefined variable bug in the front end JS.<\/li>\n<li>Added option to redirect default WP login URL to custom page.<\/li>\n<li>Added and in-dashboard plugin updater so that new releases can be updated to automatically from Wordpress.<\/li>\n<li>Fixed a bug with the \"Hide Premium Posts\" option.<\/li>\n<\/ul>\n"]}";}