44
55use App \Controller \BaseController ;
66use App \Entity \Language ;
7+ use App \Entity \ContestProblem ;
78use App \Service \ConfigurationService ;
89use App \Service \DOMJudgeService ;
910use App \Service \EventLogService ;
@@ -33,6 +34,20 @@ public function __construct(
3334 parent ::__construct ($ em , $ eventLogService , $ dj , $ kernel );
3435 }
3536
37+ /**
38+ * @param Language[] $languages
39+ * @return Language[]
40+ */
41+ private function addLanguage (array $ languages , Language $ language , ContestProblem $ problem ): array
42+ {
43+ $ langId = $ language ->getName ();
44+ if (!isset ($ languages [$ langId ])) {
45+ $ languages [$ langId ] = ['problems ' => [], 'language ' => $ language ];
46+ }
47+ $ languages [$ langId ]['problems ' ][] = $ problem ;
48+ return $ languages ;
49+ }
50+
3651 #[Route(path: '' , name: 'team_languages ' )]
3752 public function languagesAction (): Response
3853 {
@@ -45,20 +60,15 @@ public function languagesAction(): Response
4560 $ limited = false ;
4661 foreach ($ this ->dj ->getCurrentContest ()->getProblems () as $ problem ) {
4762 foreach ($ problem ->getProblem ()->getLanguages () as $ language ) {
48- $ langId = $ language ->getName ();
49- if (!isset ($ languages [$ langId ])) {
50- $ languages [$ langId ] = ['problems ' => [], 'contestlang ' => false , 'language ' => $ language ];
51- }
52- $ languages [$ langId ]['problems ' ][] = $ problem ;
63+ $ languages = $ this ->addLanguage ($ languages , $ language , $ problem );
5364 $ limited = true ;
5465 }
55- }
56- foreach ($ this ->dj ->getAllowedLanguagesForContest ($ currentContest ) as $ language ) {
57- if (! isset ( $ languages[ $ language -> getName ()])) {
58- $ languages [ $ language -> getName ()] = [ ' problems ' => [], ' contestlang ' => true , ' language ' => $ language ];
66+ if ( count ( $ problem -> getProblem ()-> getLanguages ()) == 0 ) {
67+ foreach ($ this ->dj ->getAllowedLanguagesForContest ($ currentContest ) as $ language ) {
68+ $ languages = $ this -> addLanguage ( $ languages , $ language , $ problem );
69+ }
5970 }
60- $ languages [$ language ->getName ()]['contestlang ' ] = true ;
61- };
71+ }
6272 return $ this ->render ('team/languages.html.twig ' , ['languages ' => $ languages , 'limited ' => $ limited ]);
6373 }
6474}
0 commit comments