• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/controller.php
  • Класс: BitrixDiskUfController
  • Вызов: Controller::processActionDownloadArchiveByEntity
protected function processActionDownloadArchiveByEntity($signature, $entity, $entityId, $fieldName)
{
	if(!ParameterSigner::validateEntityArchiveSignature($signature, $entity, $entityId, $fieldName))
	{
		$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');

	$userFieldManager = Driver::getInstance()->getUserFieldManager();
	foreach ($userFieldManager->getAttachedObjectByEntity($entity, $entityId, $fieldName) as $attachedObject)
	{
		if (!$attachedObject->canRead($this->getUser()->getId()))
		{
			continue;
		}

		$zipArchive->addEntry(
			ZipNginxArchiveEntry::createFromAttachedObject($attachedObject)
		);
	}

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

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