@@ -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 ' )
@@ -900,30 +888,39 @@ public function sourceAction(
900888 ->getQuery ()
901889 ->getOneOrNullResult ();
902890 }
891+ if ($ oldSubmission !== null ) {
892+ $ otherSubmissions [] = $ oldSubmission ;
893+ }
903894
904895 /** @var SubmissionFile[] $files */
905896 $ oldFiles = $ this ->em ->createQueryBuilder ()
906897 ->from (SubmissionFile::class, 'file ' )
907898 ->select ('file ' )
908- ->andWhere ('file.submission = :submission ' )
909- ->setParameter ('submission ' , $ oldSubmission )
910- ->orderBy ('file.ranknumber ' )
899+ ->andWhere ('file.submission in (:submissions) ' )
900+ ->setParameter ('submissions ' , array_map ( fn ( $ s ) => $ s -> getSubmitid (), $ otherSubmissions ) )
901+ ->orderBy ('file.submission, file. ranknumber ' )
911902 ->getQuery ()
912903 ->getResult ();
913904
914- $ oldFileStats = $ oldFiles !== null ? $ this ->determineFileChanged ($ files , $ oldFiles ) : [];
915- $ originalFileStats = $ originalFiles !== null ? $ this ->determineFileChanged ($ files , $ originalFiles ) : [];
905+ $ otherFiles = [];
906+ foreach ($ oldFiles as $ f ) {
907+ $ submitId = $ f ->getSubmission ()->getSubmitid ();
908+ $ otherFiles [$ submitId ] ??= [];
909+ $ otherFiles [$ submitId ][] = $ f ;
910+ }
911+
912+ foreach ($ otherFiles as $ s => $ v ) {
913+ $ otherFiles [$ s ] = $ this ->determineFileChanged ($ files , $ v );
914+ }
916915
917916 return $ this ->render ('jury/submission_source.html.twig ' , [
918917 'submission ' => $ submission ,
919918 'files ' => $ files ,
920919 'oldSubmission ' => $ oldSubmission ,
921- 'oldFiles ' => $ oldFiles ,
922- 'oldFileStats ' => $ oldFileStats ,
923920 'originalSubmission ' => $ originalSubmission ,
924- 'originalFiles ' => $ originalFiles ,
925- 'originalFileStats ' => $ originalFileStats ,
926921 'allowEdit ' => $ this ->allowEdit (),
922+ 'otherSubmissions ' => $ otherSubmissions ,
923+ 'otherFiles ' => $ otherFiles ,
927924 ]);
928925 }
929926
0 commit comments