• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/internals/site.php
  • Класс: BitrixLandingInternalsSiteTable
  • Вызов: SiteTable::switchDomain
static function switchDomain(int $siteId1, int $siteId2): bool
{
	$result = false;

	self::$disableCallback = true;

	$domains = [];
	$res = self::getList([
		'select' => [
			'ID',
			'TYPE',
			'LANG',
			'DOMAIN_ID',
			'DOMAIN_NAME' => 'DOMAIN.DOMAIN'
		],
		'filter' => [
			'ID' => [$siteId1, $siteId2]
		]
	]);
	while ($row = $res->fetch())
	{
		$domains[] = [
			'ID' => $row['ID'],
			'TYPE' => $row['TYPE'],
			'LANG' => $row['LANG'],
			'DOMAIN_ID' => $row['DOMAIN_ID'],
			'DOMAIN_NAME' => $row['DOMAIN_NAME']
		];
	}

	if (count($domains) == 2)
	{
		$res1 = self::update($domains[0]['ID'], [
			'DOMAIN_ID' => $domains[1]['DOMAIN_ID']
		]);
		$res2 = self::update($domains[1]['ID'], [
			'DOMAIN_ID' => $domains[0]['DOMAIN_ID']
		]);
		$result = $res1->isSuccess() && $res2->isSuccess();
	}

	self::$disableCallback = false;

	// switch domain for bitrix24
	if ($result && Manager::isB24())
	{
		$siteController = self::getSiteController();
		try
		{
			for ($i = 0; $i <= 1; $i++)
			{
				$siteController::deleteDomain($domains[$i]['DOMAIN_NAME']);
				$siteController::addDomain(
					$domains[$i]['DOMAIN_NAME'],
					Manager::getPublicationPath($domains[$i == 0 ? 1 : 0]['ID']),
					'Y',
					($domains[$i]['TYPE'] == 'STORE') ? 'shop' : $domains[$i]['TYPE'],
					self::prepareLangForController($domains[$i]['LANG'] ?? Manager::getZone())
				);
			}
		}
		catch (SystemException $ex) {}
	}

	return $result;
}