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