- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/domain/provider/bitrix24.php
- Класс: BitrixLandingDomainProviderBitrix24
- Вызов: Bitrix24::registrationDomain
public function registrationDomain(string $domainName, array $params = []): bool
{
$dns = BitrixLandingDomainRegister::getDNSRecords();
$domainName = mb_strtolower(trim($domainName));
$domainNameTld = Domain::getTLD($domainName);
// check tld
$tldValid = false;
foreach ($this->getTld() as $tld)
{
if ($domainNameTld == $tld)
{
$tldValid = true;
break;
}
}
if (!$tldValid)
{
return false;
}
$dnsParams = [];
$dnsParams[] = [
'type' => 'cname',
'name' => 'www',
'value' => isset($params['CNAME'])
? $params['CNAME'] : $dns['CNAME']
];
$dnsParams[] = [
'type' => 'a',
'value' => $dns['INA']
];
$res = CControllerClient::executeEvent(
'OnMailControllerRegDomain',
[
'DOMAIN' => $domainName,
'IP' => $_SERVER['REMOTE_ADDR'],
'DNS' => $dnsParams,
'ZONE' => Manager::getZone()
]
);
if (isset($res['result']) && $res['result'] === true)
{
return true;
}
// we try detect that this domain is property of current portal
else
{
$res = CControllerClient::executeEvent(
'OnMailControllerGetMemberDomains',
['REGISTERED' => true]
);
if (isset($res['result']) && is_array($res['result']))
{
$puny = new CBXPunycode;
$domainNameEncoded = $puny->encode($domainName);
if (
in_array($domainName, $res['result']) ||
in_array($domainNameEncoded, $res['result'])
)
{
return true;
}
}
}
return false;
}