You've already forked wc-licensed-product
Add dashboard widget and auto-expire license cron (v0.3.5)
- Add admin dashboard widget with license statistics - Add daily wp-cron to auto-expire licenses past expiration date - Add LicenseExpiredEmail notification for expired licenses - Add getExpiredActiveLicenses() and autoExpireLicense() to LicenseManager Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -55,6 +55,7 @@ final class LicenseEmailController
|
||||
public function registerEmailClasses(array $email_classes): array
|
||||
{
|
||||
$email_classes['WCLP_License_Expiration'] = new LicenseExpirationEmail();
|
||||
$email_classes['WCLP_License_Expired'] = new LicenseExpiredEmail();
|
||||
return $email_classes;
|
||||
}
|
||||
|
||||
@@ -69,10 +70,13 @@ final class LicenseEmailController
|
||||
}
|
||||
|
||||
/**
|
||||
* Send expiration warning emails
|
||||
* Send expiration warning emails and auto-expire licenses
|
||||
*/
|
||||
public function sendExpirationWarnings(): void
|
||||
{
|
||||
// First, auto-expire licenses that have passed their expiration date
|
||||
$this->autoExpireAndNotify();
|
||||
|
||||
// Check if expiration emails are enabled in settings
|
||||
if (!SettingsController::isExpirationEmailsEnabled()) {
|
||||
return;
|
||||
@@ -107,6 +111,41 @@ final class LicenseEmailController
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-expire licenses and send expired notifications
|
||||
*/
|
||||
private function autoExpireAndNotify(): void
|
||||
{
|
||||
// Get licenses that should be auto-expired
|
||||
$expiredActiveLicenses = $this->licenseManager->getExpiredActiveLicenses();
|
||||
|
||||
if (empty($expiredActiveLicenses)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the WooCommerce email instance for expired notifications
|
||||
$mailer = WC()->mailer();
|
||||
$emails = $mailer->get_emails();
|
||||
|
||||
/** @var LicenseExpiredEmail|null $expiredEmail */
|
||||
$expiredEmail = $emails['WCLP_License_Expired'] ?? null;
|
||||
|
||||
foreach ($expiredActiveLicenses as $license) {
|
||||
// Auto-expire the license
|
||||
$wasExpired = $this->licenseManager->autoExpireLicense($license->getId());
|
||||
|
||||
if ($wasExpired && $expiredEmail && $expiredEmail->is_enabled()) {
|
||||
// Check if we haven't already sent an expired notification
|
||||
if (!$this->licenseManager->wasExpirationNotified($license->getId(), 'license_expired')) {
|
||||
// Send expired notification email
|
||||
if ($expiredEmail->trigger($license)) {
|
||||
$this->licenseManager->markExpirationNotified($license->getId(), 'license_expired');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process and send expiration warnings for a specific time frame
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user