Files
roi-theme/wp-content/plugins/restrict-content-pro/core/templates/subscription.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

257 lines
12 KiB
PHP

<?php
/**
* Subscription Details
*
* This template displays the current user's membership details with [subscription_details]
*
* @link http://docs.restrictcontentpro.com/article/1600-subscriptiondetails
*
* For modifying this template, please see: http://docs.restrictcontentpro.com/article/1738-template-files
*
* @package Restrict Content Pro
* @subpackage Templates/Subscription
* @copyright Copyright (c) 2017, Restrict Content Pro
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
*/
use RCP\Membership_Level;
global $user_ID, $rcp_options;
$member = new RCP_Member( $user_ID );
$customer = rcp_get_customer(); // currently logged in customer
$memberships = is_object( $customer ) ? $customer->get_memberships() : false;
do_action( 'rcp_subscription_details_top' );
if ( isset( $_GET['profile'] ) && 'cancelled' == $_GET['profile'] && ! empty( $_GET['membership_id'] ) ) :
$cancelled_membership = rcp_get_membership( absint( $_GET['membership_id'] ) );
?>
<p class="rcp_success">
<span><?php printf( __( 'Your %s subscription has been successfully cancelled. Your membership will expire on %s.', 'rcp' ), $cancelled_membership->get_membership_level_name(), $cancelled_membership->get_expiration_date() ); ?></span>
</p>
<?php elseif ( isset( $_GET['cancellation_failure'] ) ) : ?>
<p class="rcp_error"><span><?php echo esc_html( urldecode( $_GET['cancellation_failure'] ) ); ?> </span></p>
<?php endif;
$has_payment_plan = false;
if ( ! empty( $memberships ) ) {
foreach ( $memberships as $membership ) {
/**
* @var RCP_Membership $membership
*/
if ( $membership->is_recurring() && $membership->is_expired() && $membership->can_update_billing_card() ) : ?>
<p class="rcp_error">
<span>
<?php
printf( __( 'Your %s membership has expired. <a href="%s">Update your payment method</a> to reactivate and renew your membership.', 'rcp' ),
$membership->get_membership_level_name(),
esc_url( add_query_arg( 'membership_id', urlencode( $membership->get_id() ), get_permalink( $rcp_options['update_card'] ) ) )
);
?>
</span>
</p>
<?php endif;
if ( $membership->has_payment_plan() ) {
$has_payment_plan = true;
}
}
}
?>
<div class="rcp-table-wrapper" id="rcp-table-wrapper">
<h3>Account Overview</h3>
<table class="rcp-table subscription" id="rcp-account-overview">
<thead class="hide-mobile">
<tr>
<th><?php _e( 'Membership', 'rcp' ); ?></th>
<th><?php _e( 'Status', 'rcp' ); ?></th>
<th><?php _e( 'Expiration/Renewal Date', 'rcp' ); ?></th>
<?php if ( $has_payment_plan ) : ?>
<th><?php _e( 'Times Billed', 'rcp' ); ?></th>
<?php endif; ?>
<th><?php _e( 'Actions', 'rcp' ); ?></th>
</tr>
</thead>
<tbody>
<?php if ( ! empty( $memberships ) ) : ?>
<?php foreach ( $memberships as $membership ) : ?>
<tr>
<td class="cell" data-title="Membership" data-th="<?php esc_attr_e( 'Membership', 'rcp' ); ?>">
<?php echo esc_html( $membership->get_membership_level_name() ); ?>
</td>
<td class="cell" data-title="Status" data-th="<?php esc_attr_e( 'Status', 'rcp' ); ?>">
<?php rcp_print_membership_status( $membership->get_id() ); ?>
</td>
<td class="cell" data-title="Expiration/Renewal Date" data-th="<?php esc_attr_e( 'Expiration/Renewal Date', 'rcp' ); ?>">
<?php
echo $membership->get_expiration_date();
if ( $membership->is_recurring() && 'active' === $membership->get_status() ) {
echo '<div class="rcp-membership-auto-renew-notice">' . __( '(renews automatically)', 'rcp' ) . '</div>';
}
if ( $membership->is_active() && $membership->can_toggle_auto_renew() ) {
echo '<div class="rcp-auto-renew-toggle">';
if ( $membership->is_recurring() ) {
$toggle_off_url = wp_nonce_url( add_query_arg( array(
'rcp-action' => 'disable_auto_renew',
'membership-id' => urlencode( $membership->get_id() )
) ), 'rcp_toggle_auto_renew_off' );
echo '<a href="' . esc_url( $toggle_off_url ) . '" class="rcp-disable-auto-renew"><button>' . __( 'Disable auto renew', 'rcp' ) . '</button></a>';
} else {
$toggle_on_url = wp_nonce_url( add_query_arg( array(
'rcp-action' => 'enable_auto_renew',
'membership-id' => urlencode( $membership->get_id() )
) ), 'rcp_toggle_auto_renew_on' );
echo '<a href="' . esc_url( $toggle_on_url ) . '" class="rcp-enable-auto-renew" data-expiration="' . esc_attr( $membership->get_expiration_date( true ) ) . '">' . __( 'Enable auto renew', 'rcp' ) . '</a>';
}
echo '</div>';
}
?>
</td>
<?php
if ( $has_payment_plan ) {
?>
<td class="cell" data-title="Times Billed" data-th="<?php esc_attr_e( 'Times Billed', 'rcp' ); ?>">
<?php
$membership_level = rcp_get_membership_level( $membership->get_object_id() );
if ( $membership_level instanceof Membership_Level ) {
if ( 0 == $membership->get_maximum_renewals() && ! $membership_level->is_lifetime() && ! $membership_level->is_free() ) {
printf( __( '%d / Until Cancelled', 'rcp' ), $membership->get_times_billed() );
} else {
$renewals = $membership_level->is_free() ? 1 : $membership->get_maximum_renewals() + 1;
printf( __( '%d / %d', 'rcp' ), $membership->get_times_billed(), $renewals );
}
}
?>
</td>
<?php
}
?>
<td class="cell" data-title="Actions" data-th="<?php esc_attr_e( 'Actions', 'rcp' ); ?>">
<?php
$links = array();
if ( $membership->can_update_billing_card() ) {
$links[] = '<a href="' . esc_url( add_query_arg( 'membership_id', urlencode( $membership->get_id() ), get_permalink( $rcp_options['update_card'] ) ) ) . '" title="' . esc_attr__( 'Update payment method', 'rcp' ) . '" class="rcp_sub_details_update_card"><button>' . __( 'Update payment method', 'rcp' ) . '</button></a>';
}
if ( $membership->can_renew() ) {
$links[] = apply_filters( 'rcp_subscription_details_action_renew', '<a href="' . esc_url( rcp_get_membership_renewal_url( $membership->get_id() ) ) . '" title="' . esc_attr__( 'Renew your membership', 'rcp' ) . '" class="rcp_sub_details_renew"><button>' . __( 'Renew your membership', 'rcp' ) . '</button></a>', $user_ID );
}
if ( $membership->upgrade_possible() ) {
$links[] = apply_filters( 'rcp_subscription_details_action_upgrade', '<a href="' . esc_url( rcp_get_membership_upgrade_url( $membership->get_id() ) ) . '" title="' . esc_attr__( 'Upgrade or change your membership', 'rcp' ) . '" class="rcp_sub_details_change_membership"><button>' . __( 'Upgrade or change your membership', 'rcp' ) . '</button></a>', $user_ID );
}
if ( $membership->is_active() && $membership->can_cancel() && ! $membership->has_payment_plan() ) {
$links[] = apply_filters( 'rcp_subscription_details_action_cancel', '<a href="' . esc_url( rcp_get_membership_cancel_url( $membership->get_id() ) ) . '" title="' . esc_attr__( 'Cancel your membership', 'rcp' ) . '" class="rcp_sub_details_cancel" id="rcp_cancel_membership_' . esc_attr( $membership->get_id() ) . '"><button>' . __( 'Cancel your membership', 'rcp' ) . '</button></a>', $user_ID );
}
/**
* Filters the action links HTML.
*
* @param string $actions Formatted HTML links.
* @param array $links Array of links before they're imploded into an HTML string.
* @param int $user_ID ID of the current user.
* @param RCP_Membership $membership Current membership record being displayed.
*/
echo apply_filters( 'rcp_subscription_details_actions', implode( '<br/>', $links ), $links, $user_ID, $membership );
/**
* Add custom HTML to the "Actions" column.
*
* @param array $links Existing links.
* @param RCP_Membership $membership Current membership record being displayed.
*/
do_action( 'rcp_subscription_details_action_links', $links, $membership );
if ( $membership->is_active() && $membership->can_cancel() && ! $membership->has_payment_plan() ) {
?>
<script>
// Adds a confirm dialog to the cancel link
var cancel_link = document.querySelector( "#rcp_cancel_membership_<?php echo $membership->get_id(); ?>" );
if ( cancel_link ) {
cancel_link.addEventListener( "click", function ( event ) {
event.preventDefault();
var message = '<?php printf( __( "Are you sure you want to cancel your %s subscription? If you cancel, your membership will expire on %s.", "rcp" ), $membership->get_membership_level_name(), $membership->get_expiration_date() ); ?>';
var confirmed = confirm( message );
if ( true === confirmed ) {
location.assign( document.querySelector( "#rcp_cancel_membership_<?php echo $membership->get_id(); ?>" ).href );
} else {
return false;
}
} );
}
</script>
<?php
}
?>
</td>
</tr>
<?php endforeach; ?>
<?php else : ?>
<tr>
<td data-th="<?php esc_attr_e( 'Membership', 'rcp' ); ?>" colspan="4"><?php _e( 'You do not have any memberships.', 'rcp' ); ?></td>
</tr>
<?php endif; ?>
</tbody>
</table> <!-- rcp-table -->
<h3>Payment History</h3>
<table class="rcp-table subscription" id="rcp-payment-history">
<thead class="hide-mobile">
<tr>
<th><?php _e( 'Invoice #', 'rcp' ); ?></th>
<th><?php _e( 'Membership', 'rcp' ); ?></th>
<th><?php _e( 'Amount', 'rcp' ); ?></th>
<th><?php _e( 'Payment Status', 'rcp' ); ?></th>
<th><?php _e( 'Date', 'rcp' ); ?></th>
<th><?php _e( 'Actions', 'rcp' ); ?></th>
</tr>
</thead>
<tbody>
<?php
$payments = is_object( $customer ) ? $customer->get_payments() : false;
if ( $payments ) : ?>
<?php foreach ( $payments as $payment ) : ?>
<tr>
<td data-title="Invoice #" data-th="<?php esc_attr_e( 'Invoice #', 'rcp' ); ?>"><?php echo $payment->id; ?></td>
<td data-title="Membership" data-th="<?php esc_attr_e( 'Membership', 'rcp' ); ?>"><?php echo esc_html( $payment->subscription ); ?></td>
<td data-title="Amount" data-th="<?php esc_attr_e( 'Amount', 'rcp' ); ?>"><?php echo rcp_currency_filter( $payment->amount ); ?></td>
<td data-title="Payment Status" data-th="<?php esc_attr_e( 'Payment Status', 'rcp' ); ?>"><?php echo rcp_get_payment_status_label( $payment ); ?></td>
<td data-title="Date" data-th="<?php esc_attr_e( 'Date', 'rcp' ); ?>"><?php echo date_i18n( get_option( 'date_format' ), strtotime( $payment->date, current_time( 'timestamp' ) ) ); ?></td>
<td data-title="Actions" data-th="<?php esc_attr_e( 'Actions', 'rcp' ); ?>">
<?php if ( in_array( $payment->status, array( 'pending', 'abandoned', 'failed' ) ) && empty( $payment->transaction_id ) ) : ?>
<a href="<?php echo esc_url( rcp_get_payment_recovery_url( $payment->id ) ); ?>">
<button><?php echo 'failed' === $payment->status ? __( 'Retry Payment', 'rcp' ) : __( 'Complete Payment', 'rcp' ); ?></button>
</a> <br/>
<?php endif; ?>
<a href="<?php echo esc_url( rcp_get_invoice_url( $payment->id ) ); ?>"><button><?php _e( 'View Receipt', 'rcp' ); ?></button></a>
</td>
</tr>
<?php endforeach; ?>
<?php else : ?>
<tr>
<td data-title="Membership" data-th="<?php _e( 'Membership', 'rcp' ); ?>" colspan="6"><?php _e( 'You have not made any payments.', 'rcp' ); ?></td>
</tr>
<?php endif; ?>
</tbody>
</table><!-- rcp-table -->
</div><!-- rcp-table-wrapper -->
<?php do_action( 'rcp_subscription_details_bottom' );