- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/transfer/import/site.php
- Класс: BitrixLandingTransferImportSite
- Вызов: Site::importSite
static function importSite(array $data, ConfigurationStructure $structure): AddResult
{
$code = isset($data['CODE']) ? $data['CODE'] : null;
// clear old keys
$notAllowedKeys = [
'ID', 'DOMAIN_ID', 'DATE_CREATE', 'DATE_MODIFY',
'CREATED_BY_ID', 'MODIFIED_BY_ID', 'CODE'
];
foreach ($notAllowedKeys as $key)
{
if (isset($data[$key]))
{
unset($data[$key]);
}
}
// if site path are exist, create random one
if ($code)
{
$check = SiteCore::getList([
'select' => [
'ID'
],
'filter' => [
'=CODE' => $code
]
]);
if ($check->fetch())
{
$code = null;
}
}
if (!$code)
{
$code = strtolower(randString(10));
}
$data['CODE'] = $code;
$data['ACTIVE'] = 'Y';
// files
$files = [];
foreach (Hook::HOOKS_CODES_FILES as $hookCode)
{
if (
isset($data['ADDITIONAL_FIELDS'][$hookCode]) &&
$data['ADDITIONAL_FIELDS'][$hookCode] > 0
)
{
$unpackFile = $structure->getUnpackFile($data['ADDITIONAL_FIELDS'][$hookCode]);
if ($unpackFile)
{
$files[] = $data['ADDITIONAL_FIELDS'][$hookCode] = AppConfiguration::saveFile(
$unpackFile
);
}
else
{
unset($data['ADDITIONAL_FIELDS'][$hookCode]);
}
}
}
$res = SiteCore::add($data);
// save files to site
if ($files && $res->isSuccess())
{
foreach ($files as $fileId)
{
File::addToSite($res->getId(), $fileId);
}
}
return $res;
}