- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/internals/domain.php
- Класс: BitrixLandingInternalsDomainTable
- Вызов: DomainTable::prepareChange
static function prepareChange(EntityEvent $event): EntityEventResult
{
$result = new EntityEventResult();
$fields = $event->getParameter('fields');
$primary = $event->getParameter('primary');
$update = array();
if ($fields['DOMAIN'] ?? null)
{
if (
Manager::isB24() &&
!Manager::isExtendedSMN() &&
mb_strtolower($fields['DOMAIN']) !== Manager::getHttpHost() &&
!DomainCore::getBitrix24Subdomain($fields['DOMAIN'])
)
{
BitrixLandingAgent::addUniqueAgent('removeBadDomain', [], 86400);
}
}
// prepare CODE - base part of URL
if (array_key_exists('DOMAIN', $fields))
{
$url = parse_url($fields['DOMAIN']);
if (isset($url['host']))
{
$fields['DOMAIN'] = $url['host'];
}
else
{
$fields['DOMAIN'] = trim($fields['DOMAIN']);
}
$prevDomain = null;
$res = self::getList(array(
'select' => array(
'*'
),
'filter' => array(
'LOGIC' => 'OR',
'ID' => $primary['ID'] ?? 0,
'=DOMAIN' => $fields['DOMAIN']
)
));
while ($rowDomain = $res->fetch())
{
if ($rowDomain['ID'] == ($primary['ID'] ?? 0))
{
$prevDomain = $rowDomain['DOMAIN'];
continue;
}
$result->setErrors(array(
new EntityEntityError(
Loc::getMessage('LANDING_TABLE_ERROR_DOMAIN_IS_NOT_UNIQUE'),
'DOMAIN_IS_NOT_UNIQUE'
)
));
return $result;
}
$update['DOMAIN'] = $fields['DOMAIN'];
if ($prevDomain !== $fields['DOMAIN'])
{
$update['PREV_DOMAIN'] = $prevDomain;
}
}
// force set protocol
$fields['PROTOCOL'] = Manager::isHttps()
? self::PROTOCOL_HTTPS
: self::PROTOCOL_HTTP;
$update['PROTOCOL'] = $fields['PROTOCOL'];
// modify fields
if (!empty($update))
{
$result->modifyFields($update);
}
return $result;
}