Skip to content

Commit f3fdb6c

Browse files
committed
Change source fetching to single query
Also removes some redundant twig variables and prepares the logic for more submissions to diff against.
1 parent 93d759f commit f3fdb6c

File tree

2 files changed

+24
-27
lines changed

2 files changed

+24
-27
lines changed

webapp/src/Controller/Jury/SubmissionController.php

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

webapp/templates/jury/submission_source.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
{%- endif %}
4343

4444
{% if oldSubmission %}
45-
{%- include 'jury/partials/submission_diff.html.twig' with {oldSubmission: oldSubmission, oldFiles: oldFiles, oldFileStats: oldFileStats} %}
45+
{%- include 'jury/partials/submission_diff.html.twig' with {oldSubmission: oldSubmission, oldFileStats: otherFiles[oldSubmission.submitid]} %}
4646
{% else %}
4747
<ul class="nav nav-tabs source-tab-nav">
4848
{%- for file in files %}
@@ -84,7 +84,7 @@
8484
</a>
8585
</h2>
8686

87-
{%- include 'jury/partials/submission_diff.html.twig' with {oldSubmission: originalSubmission, oldFiles: originalFiles, oldFileStats: originalFileStats} %}
87+
{%- include 'jury/partials/submission_diff.html.twig' with {oldSubmission: originalSubmission, oldFileStats: otherFiles[originalSubmission.submitid]} %}
8888
{%- endif %}
8989

9090
{% endblock %}

0 commit comments

Comments
 (0)