Last active
February 6, 2023 10:56
-
-
Save paulgoodchild/e15774a5307d8f65416234b4ac61203c to your computer and use it in GitHub Desktop.
Easy Digital Downloads: Prevent license expiration notices being sent for licenses linked to refunded payments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php declare( strict_types=1 ); | |
/** | |
* Easy Digital Downloads will send license expiration notices for any licenses, even if they | |
* have been refunded. This is not ideal. | |
* | |
* This filter will prevent such notices being sent if any payments associated with this | |
* license have been refunded. | |
* | |
* This may not be applicable in cases where you EDD store supports multiple products in | |
* the same payment/purchase. There's no way to know whether a (partial-)refund applies | |
* to any particular product. | |
* | |
* However, we test the license status for it being "disabled", as any fully refunded | |
* purchase normally sets associated licenses to be disabled. | |
* | |
* The filter also honours any pre-existing filters by only continuing with processing if | |
* the flag to send the email is true. | |
*/ | |
add_filter( 'edd_sl_send_scheduled_reminder_for_license', function ( $ifSendEmail, $license_id ) { | |
if ( $ifSendEmail ) { | |
$lic = edd_software_licensing()->get_license( $license_id ); | |
if ( $lic instanceof \EDD_SL_License && $lic->status == 'disabled' ) { | |
foreach ( $lic->payment_ids as $paymentID ) { | |
$p = edd_get_payment( $paymentID ); | |
if ( $p instanceof \EDD_Payment && $p->status === 'refunded' ) { | |
$ifSendEmail = false; | |
break; | |
} | |
} | |
} | |
} | |
return $ifSendEmail; | |
}, 10, 2 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment