@@ -135,6 +135,7 @@ sub listArchivedCourses {
135135 my $archiveDataFile = $archivesDir -> child(' archive-cache.json' );
136136 my $archiveData = eval { decode_json($archiveDataFile -> slurp) } || {};
137137
138+ my %seenCourseIDs ;
138139 my %updatedArchiveData ;
139140 my %return ;
140141 for (@$archives ) {
@@ -143,7 +144,16 @@ sub listArchivedCourses {
143144
144145 if ($archiveData -> {$basename } && $archiveData -> {$basename }{lastModified } >= $lastModified ) {
145146 $updatedArchiveData {$basename } = $archiveData -> {$basename };
146- $return {$basename } = $updatedArchiveData {$basename } if defined $archiveData -> {$basename }{courseID };
147+ if (defined $archiveData -> {$basename }{courseID }) {
148+ $return {$basename } = $updatedArchiveData {$basename };
149+
150+ if ($seenCourseIDs { $updatedArchiveData {$basename }{courseID } }) {
151+ $return {$basename }{duplicateCourseID } = 1;
152+ $return { $seenCourseIDs { $updatedArchiveData {$basename }{courseID } } }{duplicateCourseID } = 1;
153+ } else {
154+ $seenCourseIDs { $updatedArchiveData {$basename }{courseID } } = $basename ;
155+ }
156+ }
147157 next ;
148158 }
149159
@@ -164,6 +174,13 @@ sub listArchivedCourses {
164174 $updatedArchiveData {$basename }{courseID } = $currCourseID ;
165175 $updatedArchiveData {$basename }{size } = getHumanReadableFileSize($_ );
166176 $return {$basename } = $updatedArchiveData {$basename };
177+
178+ if ($seenCourseIDs { $updatedArchiveData {$basename }{courseID } }) {
179+ $return {$basename }{duplicateCourseID } = 1;
180+ $return { $seenCourseIDs { $updatedArchiveData {$basename }{courseID } } }{duplicateCourseID } = 1;
181+ } else {
182+ $seenCourseIDs { $updatedArchiveData {$basename }{courseID } } = $basename ;
183+ }
167184 }
168185
169186 $archiveDataFile -> spew(encode_json(\%updatedArchiveData ));
0 commit comments