Enhance Subscriptions, Affiliates, and Software Distribution modules

This commit is contained in:
Dwindi Ramadhana
2026-06-03 21:24:03 +07:00
parent f8c733832e
commit 21ece27b9b
9 changed files with 803 additions and 96 deletions

View File

@@ -608,7 +608,7 @@ class LicenseManager
/**
* Validate license (check if valid without activating)
*/
public static function validate($license_key)
public static function validate($license_key, $domain = null)
{
$license = self::get_license_by_key($license_key);
@@ -626,8 +626,31 @@ class LicenseManager
$subscription_status = self::get_order_subscription_status($license['order_id']);
$is_subscription_valid = $subscription_status === null || in_array($subscription_status, ['active', 'pending-cancel']);
// Check domain activation if domain is provided
$is_domain_active = true;
if ($domain) {
global $wpdb;
$table = $wpdb->prefix . self::$activations_table;
$activation = $wpdb->get_var($wpdb->prepare(
"SELECT id FROM $table WHERE license_id = %d AND domain = %s AND status = 'active' LIMIT 1",
$license['id'],
$domain
));
if (!$activation) {
$is_domain_active = false;
}
}
if ($domain && !$is_domain_active) {
return [
'valid' => false,
'error' => 'domain_not_activated',
'message' => __('License is not activated for this domain', 'woonoow'),
];
}
return [
'valid' => $license['status'] === 'active' && !$is_expired && $is_subscription_valid,
'valid' => $license['status'] === 'active' && !$is_expired && $is_subscription_valid && $is_domain_active,
'license_key' => $license['license_key'],
'status' => $license['status'],
'activation_limit' => (int) $license['activation_limit'],
@@ -639,6 +662,7 @@ class LicenseManager
'is_expired' => $is_expired,
'subscription_status' => $subscription_status,
'subscription_active' => $is_subscription_valid,
'domain_active' => $is_domain_active,
];
}