• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/site.php
  • Класс: BitrixLandingSite
  • Вызов: Site::copy
static function copy($siteId)
{
	$siteId = intval($siteId);
	$result = new BitrixMainResult;
	$error = new Error;

	$siteRow = Site::getList([
		'filter' => [
			'ID' => $siteId
		]
	])->fetch();

	if (!$siteRow)
	{
		$error->addError(
			'SITE_NOT_FOUND',
			Loc::getMessage('LANDING_COPY_ERROR_SITE_NOT_FOUND')
		);
	}
	else
	{
		$result = Site::add([
			'CODE' => $siteRow['CODE'],
			'ACTIVE' => 'N',
			'TITLE' => $siteRow['TITLE'],
			'XML_ID' => $siteRow['XML_ID'],
			'DESCRIPTION' => $siteRow['DESCRIPTION'],
			'TYPE' => $siteRow['TYPE'],
			'SMN_SITE_ID' => $siteRow['SMN_SITE_ID'],
			'LANG' => $siteRow['LANG']
		]);

		if ($result->isSuccess())
		{
			// copy hook data
			Hook::copySite(
				$siteId,
				$result->getId()
			);
			// copy files
			File::copySiteFiles(
				$siteId,
				$result->getId()
			);
		}
	}

	if (!$error->isEmpty())
	{
		$result->addError($error->getFirstError());
	}

	return $result;
}