Skip to content

Commit

Permalink
Add support for renewal date changes.
Browse files Browse the repository at this point in the history
  • Loading branch information
remcotolsma committed May 13, 2024
1 parent 2b6f94e commit 87ae1d4
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 84 deletions.
72 changes: 17 additions & 55 deletions src/Extension.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public function setup() {
*/
\add_action( 'plugins_loaded', [ $this, 'plugins_loaded' ], 5 );

\add_action( 'admin_init', [ $this, 'admin_init' ] );
\add_action( 'rcp_after_membership_admin_update', [ $this, 'rcp_after_membership_admin_update' ] );
}

/**
Expand Down Expand Up @@ -445,11 +445,15 @@ public function subscription_status_update( Subscription $pronamic_subscription

$status = MembershipStatus::transform_from_pronamic( $pronamic_subscription->get_status() );

if ( null === $status ) {
return;
if ( null !== $status ) {
$rcp_membership->set_status( $status );
}

$rcp_membership->set_status( $status );
$id = $pronamic_subscription->get_id();

if ( null !== $id ) {
$rcp_membership->set_gateway_subscription_id( (string) $id );
}
}

/**
Expand Down Expand Up @@ -1032,63 +1036,21 @@ public function next_payment_delivery_date( DateTimeImmutable $next_payment_deli
}

/**
* Admin init.
*
* @return void
*/
public function admin_init() {
$this->maybe_update_pronamic_subscription();
}

/**
* Maybe update Pronamic subscription.
* Restrict Content Pro after membership admin update.
*
* @link https://plugins.trac.wordpress.org/browser/restrict-content/tags/3.2.10/core/includes/admin/memberships/membership-actions.php#L371
* @param RCP_Membership $rcp_membership Restrict Content Pro membership object.
* @return void
*/
private function maybe_update_pronamic_subscription() {
if ( ! \array_key_exists( 'subscription_id', $_GET ) ) {
return;
}
public function rcp_after_membership_admin_update( RCP_Membership $rcp_membership ) {
$subscriptions = \get_pronamic_subscriptions_by_source( 'rcp_membership', (string) $rcp_membership->get_id() );

if ( ! \array_key_exists( 'action', $_GET ) ) {
return;
}
foreach ( $subscriptions as $subscription ) {
$subscription_updater = new SubscriptionUpdater( $rcp_membership, $subscription );

$subscription_id = \sanitize_text_field( \wp_unslash( $_GET['subscription_id'] ) );
$action = \sanitize_text_field( \wp_unslash( $_GET['action'] ) );
$subscription_updater->update_pronamic_subscription();

if ( 'pronamic_pay_rcp_update_subscription' !== $action ) {
return;
}

if ( false === \check_admin_referer( 'pronamic_pay_rcp_update_subscription_' . $subscription_id ) ) {
return;
}

$subscription = \get_pronamic_subscription( (int) $subscription_id );

if ( null === $subscription ) {
return;
}

$source = $subscription->get_source();

if ( 'rcp_membership' !== $source ) {
return;
}

$source_id = $subscription->get_source_id();

$rcp_membership = \rcp_get_membership( (int) $source_id );

if ( false === $rcp_membership ) {
return;
$subscription->save();
}

$subscription_updater = new SubscriptionUpdater( $rcp_membership, $subscription );

$subscription_updater->update_pronamic_subscription();

$subscription->save();
}
}
8 changes: 8 additions & 0 deletions src/Gateways/Gateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,14 @@ public function init() {
if ( null !== $payment_method && $payment_method->supports( 'recurring' ) ) {
$this->supports = [
'recurring',
/**
* Renewal date changes.
*
* @link https://github.com/pronamic/wp-pronamic-pay-restrict-content-pro/issues/17
* @link https://github.com/pronamic/wp-pronamic-pay-restrict-content-pro/pull/18#issuecomment-2107023059
* @link https://plugins.trac.wordpress.org/browser/restrict-content/tags/3.2.10/core/includes/memberships/class-rcp-membership.php#L3454
*/
'renewal-date-changes',
'trial',
];
}
Expand Down
29 changes: 0 additions & 29 deletions views/edit-membership.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,40 +22,11 @@
while ( $query->have_posts() ) {
$query->the_post();

echo '<div style="display: flex; gap: 1em; align-items: center;">';

printf(
'<a href="%s">%s</a>',
esc_url( get_edit_post_link() ),
esc_html( get_the_ID() )
);

echo ' ';

$action_url = wp_nonce_url(
add_query_arg(
[
'subscription_id' => get_the_ID(),
'action' => 'pronamic_pay_rcp_update_subscription',
],
),
'pronamic_pay_rcp_update_subscription_' . get_the_ID()
);

printf(
'<a class="button" href="%s">%s</a>',
esc_url( $action_url ),
esc_html__( 'Update details to Pronamic Pay subscription', 'pronamic_ideal' )
);

echo ' ';

printf(
'<span class="rcp-help-tip dashicons dashicons-editor-help" title="%s"></span>',
esc_attr__( 'Updating ensures that date changes in the Restrict Content membership are updated in the Pronamic Pay subscription.', 'pronamic_ideal' )
);

echo '</div>';
}
}

Expand Down

0 comments on commit 87ae1d4

Please sign in to comment.