- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/controller/configuration.php
- Класс: BitrixRestControllerConfiguration
- Вызов: Configuration::downloadAction
public function downloadAction()
{
if (Helper::getInstance()->enabledZipMod())
{
$postfix = $this->getRequest()->getQuery('postfix');
if (!empty($postfix))
{
$context = Helper::getInstance()->getContextUser($postfix);
$setting = new Setting($context);
$access = Manifest::checkAccess(Manifest::ACCESS_TYPE_EXPORT, $setting->get(Setting::MANIFEST_CODE));
if ($access['result'] === true)
{
$structure = new Structure($context);
$name = $structure->getArchiveName();
if(empty($name))
{
$name = Helper::DEFAULT_ARCHIVE_NAME;
}
$name .= '.' . Helper::DEFAULT_ARCHIVE_FILE_EXTENSIONS;
$archive = new Archive($name);
$files = [];
$fileList = $structure->getFileList();
$archiveEntryBuilder = new ZipEntryBuilder();
if (is_array($fileList))
{
$folderName = Helper::STRUCTURE_FILES_NAME;
foreach ($fileList as $file)
{
$id = (int)$file['ID'];
$fileArray = CFile::getFileArray($id);
if ($fileArray)
{
$entry = $archiveEntryBuilder->createFromFileArray($fileArray, $folderName . '/' . $id);
$files[$id] = array_merge(
[
'NAME' => $fileArray['NAME'],
],
$file
);
$archive->addEntry($entry);
}
}
}
if ($files)
{
$structure->saveContent(false, Helper::STRUCTURE_FILES_NAME, $files);
}
$smallFilesList = $structure->listSmallFile();
if ($smallFilesList)
{
$structure->saveContent(false, Helper::STRUCTURE_SMALL_FILES_NAME, $smallFilesList);
}
$folderFiles = $structure->getConfigurationFileList();
foreach ($folderFiles as $file)
{
$entry = $archiveEntryBuilder->createFromFileId((int)$file['ID'], $file['NAME']);
if ($entry)
{
$archive->addEntry($entry);
}
}
return $archive;
}
}
}
return null;
}