- Модуль: 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();
}