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:
@@ -862,6 +862,56 @@ class LicenseManager
|
||||
return (bool) get_user_meta($license->getCustomerId(), $metaKey, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get licenses that have passed their expiration date but are still marked as active
|
||||
*
|
||||
* @return array Array of License objects that need to be auto-expired
|
||||
*/
|
||||
public function getExpiredActiveLicenses(): array
|
||||
{
|
||||
global $wpdb;
|
||||
|
||||
$tableName = Installer::getLicensesTable();
|
||||
$now = new \DateTimeImmutable();
|
||||
|
||||
$sql = "SELECT * FROM {$tableName}
|
||||
WHERE expires_at IS NOT NULL
|
||||
AND expires_at < %s
|
||||
AND status = %s";
|
||||
|
||||
$rows = $wpdb->get_results(
|
||||
$wpdb->prepare($sql, $now->format('Y-m-d H:i:s'), License::STATUS_ACTIVE),
|
||||
ARRAY_A
|
||||
);
|
||||
|
||||
return array_map(fn(array $row) => License::fromArray($row), $rows ?: []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-expire a license and return true if status was changed
|
||||
*
|
||||
* @param int $licenseId License ID
|
||||
* @return bool True if license was expired, false if already expired or error
|
||||
*/
|
||||
public function autoExpireLicense(int $licenseId): bool
|
||||
{
|
||||
$license = $this->getLicenseById($licenseId);
|
||||
if (!$license) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only expire if currently active and past expiration date
|
||||
if ($license->getStatus() !== License::STATUS_ACTIVE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$license->isExpired()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->updateLicenseStatus($licenseId, License::STATUS_EXPIRED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Import a license from CSV data
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user