From 7e4aa58b1eff30aa62f1401a72e4d5daa0e771a1 Mon Sep 17 00:00:00 2001 From: Tobias Werth Date: Tue, 22 Apr 2025 20:40:56 +0200 Subject: [PATCH] Use restricted scoreboard on public pages after unfreeze. Fixes #2988. --- webapp/src/Service/ScoreboardService.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/webapp/src/Service/ScoreboardService.php b/webapp/src/Service/ScoreboardService.php index a5f0012b4f..5cedbe210c 100644 --- a/webapp/src/Service/ScoreboardService.php +++ b/webapp/src/Service/ScoreboardService.php @@ -67,8 +67,9 @@ public function getScoreboard( if (!$freezeData->started() && !$jury && !$forceUnfrozen) { return null; } + $restricted = ($jury || $freezeData->showFinal(false)); - $teams = $this->getTeamsInOrder($contest, $jury && !$visibleOnly, $filter); + $teams = $this->getTeamsInOrder($contest, $jury && !$visibleOnly, $filter, $restricted); $problems = $this->getProblems($contest); $categories = $this->getCategories($jury && !$visibleOnly); $scoreCache = $this->getScorecache($contest); @@ -95,7 +96,7 @@ public function getTeamScoreboard(Contest $contest, int $teamId, bool $showFtsIn { $freezeData = new FreezeData($contest); - $teams = $this->getTeamsInOrder($contest, true, new Filter([], [], [], [$teamId])); + $teams = $this->getTeamsInOrder($contest, true, new Filter([], [], [], [$teamId]), true); if (empty($teams)) { return null; } @@ -944,7 +945,7 @@ public function getScoreboardTwigData( * Get the teams to display on the scoreboard, returns them in order. * @return Team[] */ - protected function getTeamsInOrder(Contest $contest, bool $jury = false, ?Filter $filter = null): array + protected function getTeamsInOrder(Contest $contest, bool $jury = false, ?Filter $filter = null, bool $restricted = false): array { $queryBuilder = $this->em->createQueryBuilder() ->from(Team::class, 't', 't.teamid') @@ -1005,7 +1006,7 @@ protected function getTeamsInOrder(Contest $contest, bool $jury = false, ?Filter $ret = $queryBuilder ->addOrderBy('tc.sortorder') - ->addOrderBy('r.sortKey' . ($jury ? 'Restricted' : 'Public'), 'DESC') + ->addOrderBy('r.sortKey' . ($restricted ? 'Restricted' : 'Public'), 'DESC') ->addOrderBy('effectivename') ->getQuery()->getResult(); return $ret;