• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/downloadcontroller.php
  • Класс: BitrixDiskDownloadController
  • Вызов: DownloadController::processActionDownloadArchive
protected function processActionDownloadArchive($signature, array $objectIds)
{
	if(!ParameterSigner::validateArchiveSignature($signature, $objectIds))
	{
		$this->sendJsonInvalidSignResponse('Invalid signature');
	}

	if(!ZipNginxConfiguration::isEnabled())
	{
		$this->errorCollection[] = new Error('Work with mod_zip is disabled in module settings.');
		$this->sendJsonErrorResponse();
	}

	$zipArchive = new ZipNginxArchive('archive' . date('y-m-d') . '.zip');

	foreach($objectIds as $id)
	{
		//now we can't allow to download whole folder.
		$file = File::loadById($id);
		if(!$file)
		{
			continue;
		}

		$storage = $file->getStorage();
		if(!$storage)
		{
			continue;
		}

		$securityContext = $storage->getCurrentUserSecurityContext();
		if(!$file->canRead($securityContext))
		{
			continue;
		}

		$zipArchive->addEntry(
			ZipNginxArchiveEntry::createFromFileModel($file)
		);
	}

	if($zipArchive->isEmpty())
	{
		$this->errorCollection[] = new Error('Archive is empty');
		$this->sendJsonErrorResponse();
	}

	$zipArchive->send();
	$this->end();
}