Add first-class hosting subdomain create/attach in Domains panel.
Deploy Ladill Hosting / deploy (push) Successful in 1m9s
Deploy Ladill Hosting / deploy (push) Successful in 1m9s
Customers can create label-based subdomains under primary/addon sites with a separate max_domains×5 quota, nginx/docroot/SSL provisioning, and managed DNS A records when Ladill controls the parent zone. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -311,6 +311,61 @@ class HostingAccount extends Model
|
||||
return max($included, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Domain slot limit from resource limits / product. -1 means unlimited.
|
||||
*/
|
||||
public function maxDomainsLimit(): int
|
||||
{
|
||||
$limit = data_get($this->resource_limits, 'max_domains');
|
||||
if ($limit === null) {
|
||||
$limit = $this->product?->max_domains;
|
||||
}
|
||||
|
||||
if ($limit === null) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return (int) $limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subdomain slot limit: max_domains × 5. Unlimited domains → unlimited subdomains.
|
||||
*/
|
||||
public function maxSubdomainsLimit(): int
|
||||
{
|
||||
$maxDomains = $this->maxDomainsLimit();
|
||||
|
||||
return $maxDomains === -1 ? -1 : max(0, $maxDomains) * 5;
|
||||
}
|
||||
|
||||
public function domainSitesCount(): int
|
||||
{
|
||||
return $this->sites()
|
||||
->whereIn('type', ['primary', 'addon'])
|
||||
->count();
|
||||
}
|
||||
|
||||
public function subdomainSitesCount(): int
|
||||
{
|
||||
return $this->sites()
|
||||
->where('type', 'subdomain')
|
||||
->count();
|
||||
}
|
||||
|
||||
public function canAddDomain(): bool
|
||||
{
|
||||
$limit = $this->maxDomainsLimit();
|
||||
|
||||
return $limit === -1 || $this->domainSitesCount() < $limit;
|
||||
}
|
||||
|
||||
public function canAddSubdomain(): bool
|
||||
{
|
||||
$limit = $this->maxSubdomainsLimit();
|
||||
|
||||
return $limit === -1 || $this->subdomainSitesCount() < $limit;
|
||||
}
|
||||
|
||||
public function paidMailboxCount(): int
|
||||
{
|
||||
if (! static::tracksLocalMailboxes()) {
|
||||
|
||||
Reference in New Issue
Block a user