@@ -186,7 +186,7 @@ public function view(
186186 );
187187 }
188188
189- return $ this ->processFile ($ request , $ resourceNode , 'show ' , $ filter , $ allUserInfo, $ resourceFile );
189+ return $ this ->processFile ($ request , $ resourceNode , $ resourceFile , 'show ' , $ filter , $ allUserInfo );
190190 }
191191
192192 /**
@@ -236,6 +236,7 @@ public function download(
236236 Request $ request ,
237237 TrackEDownloadsRepository $ trackEDownloadsRepository ,
238238 ResourceFileHelper $ resourceFileHelper ,
239+ ResourceNodeRepository $ resourceNodeRepository ,
239240 ): Response {
240241 $ id = $ request ->get ('id ' );
241242 $ resourceNode = $ this ->getResourceNodeRepository ()->findOneBy (['uuid ' => $ id ]);
@@ -265,7 +266,7 @@ public function download(
265266 }
266267
267268 // Redirect to download single file.
268- return $ this ->processFile ($ request , $ resourceNode , 'download ' , '' , null , $ resourceFile );
269+ return $ this ->processFile ($ request , $ resourceNode , $ resourceFile , 'download ' , '' , null );
269270 }
270271
271272 $ zipName = $ resourceNode ->getSlug ().'.zip ' ;
@@ -298,7 +299,7 @@ public function download(
298299 }
299300
300301 $ response = new StreamedResponse (
301- function () use ($ zipName , $ children , $ repo ): void {
302+ function () use ($ zipName , $ children , $ resourceFileHelper , $ resourceNodeRepository ): void {
302303 // Define suitable options for ZipStream Archive.
303304 $ options = new Archive ();
304305 $ options ->setContentType ('application/octet-stream ' );
@@ -307,11 +308,10 @@ function () use ($zipName, $children, $repo): void {
307308
308309 /** @var ResourceNode $node */
309310 foreach ($ children as $ node ) {
310- $ resourceFiles = $ node ->getResourceFiles ();
311- $ resourceFile = $ resourceFiles ->filter (fn ($ file ) => null === $ file ->getAccessUrl ())->first ();
311+ $ resourceFile = $ resourceFileHelper ->resolveResourceFileByAccessUrl ($ node );
312312
313313 if ($ resourceFile ) {
314- $ stream = $ repo ->getResourceNodeFileStream ($ node );
314+ $ stream = $ resourceNodeRepository ->getResourceNodeFileStream ($ node, $ resourceFile );
315315 $ fileName = $ resourceFile ->getOriginalName ();
316316 $ zip ->addFileFromStream ($ fileName , $ stream );
317317 }
@@ -537,20 +537,14 @@ public function deleteVariant(int $id, EntityManagerInterface $em): JsonResponse
537537 return $ this ->json (['success ' => true ]);
538538 }
539539
540- private function processFile (Request $ request , ResourceNode $ resourceNode , string $ mode = 'show ' , string $ filter = '' , ?array $ allUserInfo = null , ? ResourceFile $ resourceFile = null ): mixed
540+ private function processFile (Request $ request , ResourceNode $ resourceNode , ResourceFile $ resourceFile , string $ mode = 'show ' , string $ filter = '' , ?array $ allUserInfo = null ): mixed
541541 {
542542 $ this ->denyAccessUnlessGranted (
543543 ResourceNodeVoter::VIEW ,
544544 $ resourceNode ,
545545 $ this ->trans ('Unauthorised view access to resource ' )
546546 );
547547
548- $ resourceFile ??= $ resourceNode ->getResourceFiles ()->first ();
549-
550- if (!$ resourceFile ) {
551- throw $ this ->createNotFoundException ($ this ->trans ('File not found for resource ' ));
552- }
553-
554548 $ fileName = $ resourceFile ->getOriginalName ();
555549 $ fileSize = $ resourceFile ->getSize ();
556550 $ mimeType = $ resourceFile ->getMimeType () ?: '' ;
0 commit comments