@@ -849,22 +849,10 @@ public function sourceAction(
849849 ->getQuery ()
850850 ->getResult ();
851851
852- $ originalSubmission = $ originalFiles = null ;
853-
854- if ($ submission ->getOriginalSubmission ()) {
855- /** @var Submission $originalSubmission */
856- $ originalSubmission = $ this ->em ->getRepository (Submission::class)->find ($ submission ->getOriginalSubmission ()->getSubmitid ());
857-
858- /** @var SubmissionFile[] $files */
859- $ originalFiles = $ this ->em ->createQueryBuilder ()
860- ->from (SubmissionFile::class, 'file ' )
861- ->select ('file ' )
862- ->andWhere ('file.submission = :submission ' )
863- ->setParameter ('submission ' , $ originalSubmission )
864- ->orderBy ('file.ranknumber ' )
865- ->getQuery ()
866- ->getResult ();
867-
852+ $ otherSubmissions = [];
853+ $ originalSubmission = $ submission ->getOriginalSubmission ();
854+ if ($ originalSubmission ) {
855+ $ otherSubmissions [] = $ originalSubmission ;
868856 /** @var Submission $oldSubmission */
869857 $ oldSubmission = $ this ->em ->createQueryBuilder ()
870858 ->from (Submission::class, 's ' )
@@ -898,30 +886,39 @@ public function sourceAction(
898886 ->getQuery ()
899887 ->getOneOrNullResult ();
900888 }
889+ if ($ oldSubmission !== null ) {
890+ $ otherSubmissions [] = $ oldSubmission ;
891+ }
901892
902893 /** @var SubmissionFile[] $files */
903894 $ oldFiles = $ this ->em ->createQueryBuilder ()
904895 ->from (SubmissionFile::class, 'file ' )
905896 ->select ('file ' )
906- ->andWhere ('file.submission = :submission ' )
907- ->setParameter ('submission ' , $ oldSubmission )
908- ->orderBy ('file.ranknumber ' )
897+ ->andWhere ('file.submission in (:submissions) ' )
898+ ->setParameter ('submissions ' , array_map ( fn ( $ s ) => $ s -> getSubmitid (), $ otherSubmissions ) )
899+ ->orderBy ('file.submission, file. ranknumber ' )
909900 ->getQuery ()
910901 ->getResult ();
911902
912- $ oldFileStats = $ oldFiles !== null ? $ this ->determineFileChanged ($ files , $ oldFiles ) : [];
913- $ originalFileStats = $ originalFiles !== null ? $ this ->determineFileChanged ($ files , $ originalFiles ) : [];
903+ $ otherFiles = [];
904+ foreach ($ oldFiles as $ f ) {
905+ $ submitId = $ f ->getSubmission ()->getSubmitid ();
906+ $ otherFiles [$ submitId ] ??= [];
907+ $ otherFiles [$ submitId ][] = $ f ;
908+ }
909+
910+ foreach ($ otherFiles as $ s => $ v ) {
911+ $ otherFiles [$ s ] = $ this ->determineFileChanged ($ files , $ v );
912+ }
914913
915914 return $ this ->render ('jury/submission_source.html.twig ' , [
916915 'submission ' => $ submission ,
917916 'files ' => $ files ,
918917 'oldSubmission ' => $ oldSubmission ,
919- 'oldFiles ' => $ oldFiles ,
920- 'oldFileStats ' => $ oldFileStats ,
921918 'originalSubmission ' => $ originalSubmission ,
922- 'originalFiles ' => $ originalFiles ,
923- 'originalFileStats ' => $ originalFileStats ,
924919 'allowEdit ' => $ this ->allowEdit (),
920+ 'otherSubmissions ' => $ otherSubmissions ,
921+ 'otherFiles ' => $ otherFiles ,
925922 ]);
926923 }
927924
0 commit comments