Plugin Directory

Changeset 3469745


Ignore:
Timestamp:
02/25/2026 09:55:03 PM (4 weeks ago)
Author:
claudiosanches
Message:

Tagging version 3.2.23

Location:
restrict-content/tags/3.2.23
Files:
11 edited
1 copied

Legend:

Unmodified
Added
Removed
  • restrict-content/tags/3.2.23/composer.json

    r3469631 r3469745  
    11{
    22    "name": "restrictcontent/restrict-content",
    3     "version": "3.2.22",
     3    "version": "3.2.23",
    44    "type": "wordpress-plugin",
    55    "description": "A simple, yet powerful membership solution for WordPress.",
  • restrict-content/tags/3.2.23/core/includes/class-restrict-content.php

    r3469631 r3469745  
    2727     */
    2828    final class Restrict_Content_Pro {
    29         const VERSION = '3.5.54';
     29        const VERSION = '3.5.56';
    3030
    3131        /**
  • restrict-content/tags/3.2.23/core/includes/gateways/stripe/functions.php

    r3438168 r3469745  
    180180 * Update the billing card for a given membership.
    181181 *
    182  * @param RCP_Membership $membership
     182 * @param RCP_Membership $membership Membership object.
    183183 *
    184184 * @since 3.0
     
    299299        wp_die( $error, __( 'Error', 'rcp' ), array( 'response' => '401' ) );
    300300
    301         exit;
     301        return;
    302302
    303303    } catch (\Stripe\Error\InvalidRequest $e) {
     
    376376    }
    377377
    378     wp_redirect( add_query_arg( 'card', 'updated' ) ); exit;
    379 
     378    wp_redirect( add_query_arg( 'card', 'updated' ) );
     379    return;
    380380}
    381381add_action( 'rcp_update_membership_billing_card', 'rcp_stripe_update_membership_billing_card' );
     
    792792function rcp_stripe_handle_initial_payment_failure() {
    793793
    794     $payment_id = ! empty( $_POST['payment_id'] ) ? absint( $_POST['payment_id'] ) : 0;
     794    // Verify nonce for CSRF protection.
     795    $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
     796    if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, 'rcp_process_stripe_payment' ) ) {
     797        wp_send_json_error( __( 'Security verification failed.', 'rcp' ) );
     798    }
     799
     800    $payment_id = ! empty( $_POST['payment_id'] ) ? absint( wp_unslash( $_POST['payment_id'] ) ) : 0;
    795801
    796802    if ( empty( $payment_id ) ) {
    797803        wp_send_json_error( __( 'Missing payment ID.', 'rcp' ) );
    798         exit;
    799804    }
    800805
     
    806811    $payment = $rcp_payments_db->get_payment( $payment_id );
    807812
    808     if ( empty( $payment ) ) {
     813    if ( empty( $payment ) || ! is_object( $payment ) ) {
    809814        wp_send_json_error( __( 'Invalid payment.', 'rcp' ) );
    810         exit;
    811     }
     815    }
     816
     817    // Security check: Verify user ownership of the payment.
     818    $current_user_id = get_current_user_id();
     819    if ( empty( $current_user_id ) || absint( $payment->user_id ) !== $current_user_id ) {
     820        wp_send_json_error( __( 'You do not have permission to perform this action.', 'rcp' ) );
     821    }
     822
     823    // Only allow marking payments as failed if they are in pending status.
     824    if ( 'pending' !== strtolower( $payment->status ) ) {
     825        wp_send_json_error( __( 'This payment cannot be marked as failed.', 'rcp' ) );
     826    }
     827
     828    // Verify the membership belongs to the current user.
     829    if ( ! empty( $payment->membership_id ) ) {
     830        $membership = rcp_get_membership( absint( $payment->membership_id ) );
     831        if ( empty( $membership ) || absint( $membership->get_customer()->get_user_id() ) !== $current_user_id ) {
     832            wp_send_json_error( __( 'You do not have permission to perform this action.', 'rcp' ) );
     833        }
     834    }
     835
     836    /**
     837     * Fires before processing a payment failure.
     838     *
     839     * Can be used to implement additional security checks like rate limiting.
     840     *
     841     * @since 3.5.55
     842     *
     843     * @param object $payment Payment object.
     844     * @param int    $user_id Current user ID.
     845     */
     846    do_action( 'rcp_before_stripe_handle_payment_failure', $payment, $current_user_id );
    812847
    813848    $gateway = new RCP_Payment_Gateway_Stripe();
     
    817852    $gateway->user_id       = $payment->user_id;
    818853    $gateway->membership    = rcp_get_membership( absint( $payment->membership_id ) );
    819     $gateway->error_message = ! empty( $_POST['message'] ) ? sanitize_text_field( $_POST['message'] ) : __( 'Unknown error', 'rcp' );
     854    $gateway->error_message = ! empty( $_POST['message'] ) ? sanitize_text_field( wp_unslash( $_POST['message'] ) ) : __( 'Unknown error', 'rcp' );
    820855
    821856    do_action( 'rcp_registration_failed', $gateway );
     
    831866
    832867    wp_send_json_success();
    833     exit;
    834868
    835869}
     
    9871021
    9881022    wp_send_json_error( __( 'Error creating setup intent.', 'rcp' ) );
    989     exit;
    9901023
    9911024}
     
    10951128    }
    10961129
    1097     exit;
    1098 
     1130    return;
    10991131}
    11001132add_action( 'wp_ajax_rcp_stripe_delete_saved_payment_method', 'rcp_stripe_delete_saved_payment_method' );
  • restrict-content/tags/3.2.23/core/includes/gateways/stripe/js/register.js

    r3420370 r3469745  
    2323            action: 'rcp_stripe_handle_initial_payment_failure',
    2424            payment_id: payment_id,
    25             message: message
     25            message: message,
     26            nonce: rcp_script_options.stripe_payment_nonce
    2627        },
    2728        success: function ( response ) { }
  • restrict-content/tags/3.2.23/core/includes/gateways/stripe/js/register.min.js

    r3420370 r3469745  
    1 function rcpStripeHandlePaymentFailure(e,t){jQuery.ajax({type:"post",dataType:"json",url:rcp_script_options.ajaxurl,data:{action:"rcp_stripe_handle_initial_payment_failure",payment_id:e,message:t},success:function(e){}})}function rcpStripeCloseCheckoutModal(){if(rcp_processing)return;let e=jQuery,t=e(".rcp-modal-wrapper"),r=e(".rcp-modal");t.fadeOut(250),r.hide(),document.getElementById("rcp-card-element")&&rcpStripe.elements.card.unmount("#rcp-card-element")}function rcpStripeHandleIntent(e,t,r){return rcpStripe.Stripe[e](t,r)}jQuery((function(e){var t={hasPaymentMethod:!1,paymentMethodID:!1,init:function(){e("body").on("rcp_gateway_loaded",t.mountElements),e("#rcp_submit").on("click",t.maybeBlockSubmit),e("body").on("rcp_registration_form_processed",t.handlePayment),e("body").on("click",".rcp-stripe-register-submit-button",t.launchModal)},mountElements:function(e,r){document.getElementById("rcp-card-element")&&(rcpStripeUpdateElementStyles(rcpStripe.elements.card,".rcp_card_name"),rcpStripe.elements.card.mount("#rcp-card-element"),rcpStripe.elements.card.addEventListener("change",(function(e){e.complete&&(t.hasPaymentMethod=!0)})),t.setPaymentMethodID(),rcpStripe.elements.card.addEventListener("change",rcpStripeToggleElementErrors))},setPaymentMethodID:function(){let r=e('input[name="rcp_gateway_existing_payment_method"]');r.on("change",(function(r){rcpStripeToggleElementErrors(r);let a=e('input[name="rcp_gateway_existing_payment_method"]:checked').val();e(".rcp-gateway-saved-payment-method, .rcp-gateway-add-payment-method-wrap").removeClass("rcp-gateway-selected-payment-method"),"new"===a?(e(".rcp-gateway-new-card-fields").show(),e(".rcp-gateway-add-payment-method-wrap").addClass("rcp-gateway-selected-payment-method"),t.paymentMethodID=!1):(e(".rcp-gateway-new-card-fields").hide(),e(this).parents(".rcp-gateway-saved-payment-method").addClass("rcp-gateway-selected-payment-method"),t.paymentMethodID=a)})),r.trigger("change")},maybeBlockSubmit:function(e){if("stripe"===rcp_get_gateway().val()&&document.getElementById("rcp-card-element")&&!t.hasPaymentMethod&&!t.paymentMethodID)return e.stopPropagation(),rcpStripeHandleError(rcp_script_options.enter_card_details),!1},handlePayment:function(r,a,n){if("stripe"!==n.gateway.slug)return;if(!(n.total||n.recurring_total&&n.auto_renew))return;if(e(".rcp_gateway_fields").hasClass("rcp_discounted_100"))return;if(!n.gateway.data.stripe_client_secret)return rcpStripeHandleError(rcp_script_options.error_occurred),void rcpStripeHandlePaymentFailure(n.payment_id,rcp_script_options.error_occurred);let c=e(".card-name").val(),p="payment_intent"===n.gateway.data.stripe_intent_type?"confirmCardPayment":"confirmCardSetup",d={payment_method:{card:rcpStripe.elements.card,billing_details:{name:c}}};t.paymentMethodID&&(d={payment_method:t.paymentMethodID}),rcpStripeHandleIntent(p,n.gateway.data.stripe_client_secret,d).then((function(e){e.error?(rcpStripeHandleError(e.error.message,e.error.code),rcpStripeHandlePaymentFailure(n.payment_id,e.error.message)):rcp_submit_registration_form(a,n)}))},launchModal:function(r){r.preventDefault();let a=e(".rcp-modal-wrapper"),n=e(".rcp-modal"),c=e(this).parents(".rcp-stripe-register");if(!document.getElementById("rcp-card-element"))return;a.fadeIn(250),rcpStripe.elements.card.mount("#rcp-card-element");let p=n.find("input.rcp-modal-submit");rcpStripe.elements.card.addEventListener("change",(function(e){e.complete&&(t.hasPaymentMethod=!0)})),rcpStripe.elements.card.addEventListener("change",rcpStripeToggleElementErrors),t.setPaymentMethodID(),c.data("name")&&e(".rcp-modal-membership-name").text(c.data("name")).show(),c.data("description")&&e(".rcp-modal-membership-description").text(c.data("description")).show(),c.data("panel-label")&&p.val(c.data("panel-label")),c.data("level-id")&&n.find("#rcp-stripe-checkout-level-id").val(c.data("level-id")),n.fadeIn(250),a.find(".rcp-modal-close").on("click",(function(){rcpStripeCloseCheckoutModal()})),e(document).on("keydown",(function(e){27===e.keyCode&&rcpStripeCloseCheckoutModal()})),e(document).mouseup((function(e){n.is(e.target)||0!==n.has(e.target).length||rcpStripeCloseCheckoutModal()}))}};t.init()}));
     1function rcpStripeHandlePaymentFailure(e,t){jQuery.ajax({type:"post",dataType:"json",url:rcp_script_options.ajaxurl,data:{action:"rcp_stripe_handle_initial_payment_failure",payment_id:e,message:t,nonce:rcp_script_options.stripe_payment_nonce},success:function(e){}})}function rcpStripeCloseCheckoutModal(){if(rcp_processing)return;let e=jQuery,t=e(".rcp-modal-wrapper"),r=e(".rcp-modal");t.fadeOut(250),r.hide(),document.getElementById("rcp-card-element")&&rcpStripe.elements.card.unmount("#rcp-card-element")}function rcpStripeHandleIntent(e,t,r){return rcpStripe.Stripe[e](t,r)}jQuery((function(e){var t={hasPaymentMethod:!1,paymentMethodID:!1,init:function(){e("body").on("rcp_gateway_loaded",t.mountElements),e("#rcp_submit").on("click",t.maybeBlockSubmit),e("body").on("rcp_registration_form_processed",t.handlePayment),e("body").on("click",".rcp-stripe-register-submit-button",t.launchModal)},mountElements:function(e,r){document.getElementById("rcp-card-element")&&(rcpStripeUpdateElementStyles(rcpStripe.elements.card,".rcp_card_name"),rcpStripe.elements.card.mount("#rcp-card-element"),rcpStripe.elements.card.addEventListener("change",(function(e){e.complete&&(t.hasPaymentMethod=!0)})),t.setPaymentMethodID(),rcpStripe.elements.card.addEventListener("change",rcpStripeToggleElementErrors))},setPaymentMethodID:function(){let r=e('input[name="rcp_gateway_existing_payment_method"]');r.on("change",(function(r){rcpStripeToggleElementErrors(r);let a=e('input[name="rcp_gateway_existing_payment_method"]:checked').val();e(".rcp-gateway-saved-payment-method, .rcp-gateway-add-payment-method-wrap").removeClass("rcp-gateway-selected-payment-method"),"new"===a?(e(".rcp-gateway-new-card-fields").show(),e(".rcp-gateway-add-payment-method-wrap").addClass("rcp-gateway-selected-payment-method"),t.paymentMethodID=!1):(e(".rcp-gateway-new-card-fields").hide(),e(this).parents(".rcp-gateway-saved-payment-method").addClass("rcp-gateway-selected-payment-method"),t.paymentMethodID=a)})),r.trigger("change")},maybeBlockSubmit:function(e){if("stripe"===rcp_get_gateway().val()&&document.getElementById("rcp-card-element")&&!t.hasPaymentMethod&&!t.paymentMethodID)return e.stopPropagation(),rcpStripeHandleError(rcp_script_options.enter_card_details),!1},handlePayment:function(r,a,n){if("stripe"!==n.gateway.slug)return;if(!(n.total||n.recurring_total&&n.auto_renew))return;if(e(".rcp_gateway_fields").hasClass("rcp_discounted_100"))return;if(!n.gateway.data.stripe_client_secret)return rcpStripeHandleError(rcp_script_options.error_occurred),void rcpStripeHandlePaymentFailure(n.payment_id,rcp_script_options.error_occurred);let c=e(".card-name").val(),p="payment_intent"===n.gateway.data.stripe_intent_type?"confirmCardPayment":"confirmCardSetup",d={payment_method:{card:rcpStripe.elements.card,billing_details:{name:c}}};t.paymentMethodID&&(d={payment_method:t.paymentMethodID}),rcpStripeHandleIntent(p,n.gateway.data.stripe_client_secret,d).then((function(e){e.error?(rcpStripeHandleError(e.error.message,e.error.code),rcpStripeHandlePaymentFailure(n.payment_id,e.error.message)):rcp_submit_registration_form(a,n)}))},launchModal:function(r){r.preventDefault();let a=e(".rcp-modal-wrapper"),n=e(".rcp-modal"),c=e(this).parents(".rcp-stripe-register");if(!document.getElementById("rcp-card-element"))return;a.fadeIn(250),rcpStripe.elements.card.mount("#rcp-card-element");let p=n.find("input.rcp-modal-submit");rcpStripe.elements.card.addEventListener("change",(function(e){e.complete&&(t.hasPaymentMethod=!0)})),rcpStripe.elements.card.addEventListener("change",rcpStripeToggleElementErrors),t.setPaymentMethodID(),c.data("name")&&e(".rcp-modal-membership-name").text(c.data("name")).show(),c.data("description")&&e(".rcp-modal-membership-description").text(c.data("description")).show(),c.data("panel-label")&&p.val(c.data("panel-label")),c.data("level-id")&&n.find("#rcp-stripe-checkout-level-id").val(c.data("level-id")),n.fadeIn(250),a.find(".rcp-modal-close").on("click",(function(){rcpStripeCloseCheckoutModal()})),e(document).on("keydown",(function(e){27===e.keyCode&&rcpStripeCloseCheckoutModal()})),e(document).mouseup((function(e){n.is(e.target)||0!==n.has(e.target).length||rcpStripeCloseCheckoutModal()}))}};t.init()}));
  • restrict-content/tags/3.2.23/core/includes/scripts.php

    r3420370 r3469745  
    300300            'enter_card_details' => esc_html__( 'Please enter your card details.', 'rcp' ),
    301301            'invalid_cardholder' => esc_html__( 'The card holder name you have entered is invalid', 'rcp' ),
     302            'stripe_payment_nonce' => wp_create_nonce( 'rcp_process_stripe_payment' ),
    302303        )
    303304    );
  • restrict-content/tags/3.2.23/lang/restrict-content.pot

    r3469631 r3469745  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Restrict Content 3.2.22\n"
     5"Project-Id-Version: Restrict Content 3.2.23\n"
    66"Report-Msgid-Bugs-To: http://ithemes.com/support/\n"
    7 "POT-Creation-Date: 2026-02-25 16:47:56+00:00\n"
     7"POT-Creation-Date: 2026-02-25 21:52:49+00:00\n"
    88"PO-Revision-Date: 2026-MO-DA HO:MI+ZONE\n"
    99"MIME-Version: 1.0\n"
     
    12041204#: core/includes/admin/reminders/subscription-reminders.php:83
    12051205#: core/includes/admin/subscriptions/class-membership-levels-table.php:264
    1206 #: core/includes/gateways/stripe/functions.php:1027
     1206#: core/includes/gateways/stripe/functions.php:1060
    12071207msgid "Delete"
    12081208msgstr ""
     
    12971297#: core/includes/batch/csv-exports/class-batch-csv-export-base.php:98
    12981298#: core/includes/gateways/gateway-actions.php:161
    1299 #: core/includes/gateways/stripe/functions.php:1077
     1299#: core/includes/gateways/stripe/functions.php:820
     1300#: core/includes/gateways/stripe/functions.php:832
     1301#: core/includes/gateways/stripe/functions.php:1110
    13001302#: core/includes/memberships/membership-actions.php:45
    13011303#: core/includes/memberships/membership-actions.php:99
     
    60176019
    60186020#: core/includes/gateways/stripe/functions.php:797
     6021msgid "Security verification failed."
     6022msgstr ""
     6023
     6024#: core/includes/gateways/stripe/functions.php:803
    60196025#: core/includes/registration-functions.php:564
    60206026msgid "Missing payment ID."
    60216027msgstr ""
    60226028
    6023 #: core/includes/gateways/stripe/functions.php:809
     6029#: core/includes/gateways/stripe/functions.php:814
    60246030msgid "Invalid payment."
    60256031msgstr ""
    60266032
    6027 #: core/includes/gateways/stripe/functions.php:819
     6033#: core/includes/gateways/stripe/functions.php:825
     6034msgid "This payment cannot be marked as failed."
     6035msgstr ""
     6036
     6037#: core/includes/gateways/stripe/functions.php:854
    60286038msgid "Unknown error"
    60296039msgstr ""
    60306040
    6031 #: core/includes/gateways/stripe/functions.php:854
     6041#: core/includes/gateways/stripe/functions.php:888
    60326042msgid "You are not authorized to perform this action."
    60336043msgstr ""
    60346044
    6035 #: core/includes/gateways/stripe/functions.php:874
     6045#: core/includes/gateways/stripe/functions.php:908
    60366046msgid "Missing membership ID."
    60376047msgstr ""
    60386048
    6039 #: core/includes/gateways/stripe/functions.php:949
     6049#: core/includes/gateways/stripe/functions.php:983
    60406050msgid "Invalid Stripe customer ID."
    60416051msgstr ""
    60426052
    6043 #: core/includes/gateways/stripe/functions.php:988
     6053#: core/includes/gateways/stripe/functions.php:1022
    60446054msgid "Error creating setup intent."
    60456055msgstr ""
    60466056
    6047 #: core/includes/gateways/stripe/functions.php:1046
     6057#: core/includes/gateways/stripe/functions.php:1079
    60486058msgid "Missing payment method ID."
    60496059msgstr ""
    60506060
    6051 #: core/includes/gateways/stripe/functions.php:1054
     6061#: core/includes/gateways/stripe/functions.php:1087
    60526062msgid "Invalid or unknown Stripe customer ID."
    60536063msgstr ""
    60546064
    6055 #: core/includes/gateways/stripe/functions.php:1094
     6065#: core/includes/gateways/stripe/functions.php:1127
    60566066msgid "An unknown error occurred."
    60576067msgstr ""
    60586068
    6059 #: core/includes/gateways/stripe/functions.php:1147
     6069#: core/includes/gateways/stripe/functions.php:1179
    60606070msgid "Payment gateway connection error."
    60616071msgstr ""
    60626072
    6063 #: core/includes/gateways/stripe/functions.php:1148
     6073#: core/includes/gateways/stripe/functions.php:1180
    60646074msgid "The card has been declined."
    60656075msgstr ""
    60666076
    6067 #: core/includes/gateways/stripe/functions.php:1149
     6077#: core/includes/gateways/stripe/functions.php:1181
    60686078msgid "Invalid email address. Please enter a valid email address and try again."
    60696079msgstr ""
    60706080
    6071 #: core/includes/gateways/stripe/functions.php:1150
     6081#: core/includes/gateways/stripe/functions.php:1182
    60726082msgid "This card has expired. Please try again with a different payment method."
    60736083msgstr ""
    60746084
    6075 #: core/includes/gateways/stripe/functions.php:1151
     6085#: core/includes/gateways/stripe/functions.php:1183
    60766086msgid "The supplied billing address is incorrect. Please check the card's address or try again with a different card."
    60776087msgstr ""
    60786088
    6079 #: core/includes/gateways/stripe/functions.php:1152
     6089#: core/includes/gateways/stripe/functions.php:1184
    60806090msgid "The card's security code is incorrect. Please check the security code or try again with a different card."
    60816091msgstr ""
    60826092
    6083 #: core/includes/gateways/stripe/functions.php:1153
    6084 #: core/includes/gateways/stripe/functions.php:1154
     6093#: core/includes/gateways/stripe/functions.php:1185
     6094#: core/includes/gateways/stripe/functions.php:1186
    60856095msgid "The card number is incorrect. Please check the card number or try again with a different card."
    60866096msgstr ""
    60876097
    6088 #: core/includes/gateways/stripe/functions.php:1155
    6089 #: core/includes/gateways/stripe/functions.php:1156
     6098#: core/includes/gateways/stripe/functions.php:1187
     6099#: core/includes/gateways/stripe/functions.php:1188
    60906100msgid "The card's postal code is incorrect. Please check the postal code or try again with a different card."
    60916101msgstr ""
    60926102
    6093 #: core/includes/gateways/stripe/functions.php:1157
     6103#: core/includes/gateways/stripe/functions.php:1189
    60946104msgid "The card's security code is invalid. Please check the security code or try again with a different card."
    60956105msgstr ""
    60966106
    6097 #: core/includes/gateways/stripe/functions.php:1158
     6107#: core/includes/gateways/stripe/functions.php:1190
    60986108msgid "The card's expiration month is incorrect."
    60996109msgstr ""
    61006110
    6101 #: core/includes/gateways/stripe/functions.php:1159
     6111#: core/includes/gateways/stripe/functions.php:1191
    61026112msgid "The card's expiration year is incorrect."
    61036113msgstr ""
    61046114
    6105 #: core/includes/gateways/stripe/functions.php:1160
     6115#: core/includes/gateways/stripe/functions.php:1192
    61066116msgid "Authentication failure."
    61076117msgstr ""
    61086118
    6109 #: core/includes/gateways/stripe/functions.php:1161
     6119#: core/includes/gateways/stripe/functions.php:1193
    61106120msgid "This payment method is invalid."
    61116121msgstr ""
    61126122
    6113 #: core/includes/gateways/stripe/functions.php:1162
     6123#: core/includes/gateways/stripe/functions.php:1194
    61146124msgid "Payment attempt failed."
    61156125msgstr ""
    61166126
    6117 #: core/includes/gateways/stripe/functions.php:1163
     6127#: core/includes/gateways/stripe/functions.php:1195
    61186128msgid "Setup attempt failed."
    61196129msgstr ""
  • restrict-content/tags/3.2.23/legacy/restrictcontent.php

    r3469631 r3469745  
    2222
    2323if ( ! defined( 'RC_PLUGIN_VERSION' ) ) {
    24     define( 'RC_PLUGIN_VERSION', '3.2.22' );
     24    define( 'RC_PLUGIN_VERSION', '3.2.23' );
    2525}
    2626
  • restrict-content/tags/3.2.23/package.json

    r3469631 r3469745  
    11{
    22  "name": "restrict-content",
    3   "version": "3.2.22",
     3  "version": "3.2.23",
    44  "description": "Set up a complete membership system for your WordPress site and deliver premium content to your members. Unlimited membership packages, membership management, discount codes, registration / login forms, and more.",
    55  "homepage": "https://restrictcontentpro.com/",
  • restrict-content/tags/3.2.23/readme.txt

    r3469631 r3469745  
    77Requires PHP: 7.4
    88Tested up to: 6.9
    9 Stable tag: 3.2.22
     9Stable tag: 3.2.23
    1010
    1111Restrict Content is a powerful WordPress membership plugin that gives you full control over who can and cannot view content on your WordPress site.
     
    258258== Changelog ==
    259259
     260= 3.2.23 =
     261* Security: Strengthened security measures for processing payments with Stripe.
     262
    260263= 3.2.22 =
    261264* Fix - Formatted telemetry list values for clearer display in Site Health.
  • restrict-content/tags/3.2.23/restrictcontent.php

    r3469631 r3469745  
    44 * Plugin URI: https://restrictcontentpro.com
    55 * Description: Set up a complete membership system for your WordPress site and deliver premium content to your members. Unlimited membership packages, membership management, discount codes, registration / login forms, and more.
    6  * Version: 3.2.22
     6 * Version: 3.2.23
    77 * Author: StellarWP
    88 * Author URI: https://stellarwp.com/
     
    1919define('RCP_ROOT', plugin_dir_path(__FILE__));
    2020define('RCP_WEB_ROOT', plugin_dir_url(__FILE__));
    21 define('RCF_VERSION', '3.2.22');
     21define('RCF_VERSION', '3.2.23');
    2222
    2323// Load Strauss autoload.
Note: See TracChangeset for help on using the changeset viewer.