Skip to content

Commit b2b7636

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 71d5ecb commit b2b7636

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')
@@ -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

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)