• Модуль: 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;
}