Merge branch 'development' of github.com:SafeExamBrowser/seb-server into SEBSLI-9

This commit is contained in:
Nadim Ritter 2024-03-26 16:55:41 +01:00
commit 114313e207
3 changed files with 36 additions and 12 deletions

View file

@ -148,9 +148,12 @@ public class SEBRestrictionServiceImpl implements SEBRestrictionService {
// special Moodle plugin case for ADDITIONAL_ATTR_ALTERNATIVE_SEB_BEK
this.lmsAPIService.getLmsSetup(exam.lmsSetupId).map(lms -> {
if (lms.lmsType == LmsType.MOODLE_PLUGIN) {
additionalAttributes.put(
MoodleSEBRestriction.ATTR_ALT_BEK,
exam.getAdditionalAttribute(ADDITIONAL_ATTR_ALTERNATIVE_SEB_BEK));
final AdditionalAttributeRecord attr = this.additionalAttributesDAO.getAdditionalAttribute(
EntityType.EXAM,
exam.id,
ADDITIONAL_ATTR_ALTERNATIVE_SEB_BEK)
.getOrThrow();
additionalAttributes.put(MoodleSEBRestriction.ATTR_ALT_BEK, attr.getValue());
}
return lms;
});

View file

@ -202,18 +202,36 @@ public abstract class MoodleUtils {
final boolean useQuizId) {
final Map<String, String> additionalAttrs = new HashMap<>();
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_CREATION_TIME, String.valueOf(courseData.time_created));
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_SHORT_NAME, courseData.short_name);
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_ID_NUMBER, courseData.idnumber);
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_FULL_NAME, courseData.full_name);
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_DISPLAY_NAME, courseData.display_name);
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_SUMMARY, courseData.summary);
if (courseData.time_created != null) {
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_CREATION_TIME, String.valueOf(courseData.time_created));
}
if (courseData.short_name != null) {
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_SHORT_NAME, courseData.short_name);
}
if (courseData.idnumber != null) {
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_ID_NUMBER, courseData.idnumber);
}
if (StringUtils.isNotBlank(courseData.full_name)) {
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_FULL_NAME, courseData.full_name);
}
if (StringUtils.isNotBlank(courseData.display_name)) {
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_DISPLAY_NAME, courseData.display_name);
}
if (StringUtils.isNotBlank(courseData.summary)) {
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_SUMMARY, courseData.summary);
}
final List<QuizData> courseAndQuiz = courseData.quizzes
.stream()
.map(courseQuizData -> {
final String startURI = uriPrefix + courseQuizData.course_module;
additionalAttrs.put(QuizData.ATTR_ADDITIONAL_TIME_LIMIT, String.valueOf(courseQuizData.time_limit));
additionalAttrs.put(
QuizData.ATTR_ADDITIONAL_TIME_LIMIT,
(courseQuizData.time_limit == null)
? StringUtils.EMPTY
: String.valueOf(courseQuizData.time_limit));
return new QuizData(
MoodleUtils.getInternalQuizId(
(useQuizId) ? courseQuizData.id : courseQuizData.course_module,

View file

@ -137,8 +137,11 @@ public class MoodlePluginCourseRestriction implements SEBRestrictionAPI {
final ArrayList<String> configKeys = new ArrayList<>(sebRestrictionData.configKeys);
final String quitLink = this.examConfigurationValueService.getQuitLink(exam.id);
final String quitSecret = this.examConfigurationValueService.getQuitPassword(exam.id);
final String additionalBEK = exam.getAdditionalAttribute(
SEBRestrictionService.ADDITIONAL_ATTR_ALTERNATIVE_SEB_BEK);
String additionalBEK = sebRestrictionData.additionalProperties.get(SEBRestrictionService.ADDITIONAL_ATTR_ALTERNATIVE_SEB_BEK);
if (additionalBEK == null) {
additionalBEK = exam.getAdditionalAttribute(
SEBRestrictionService.ADDITIONAL_ATTR_ALTERNATIVE_SEB_BEK);
}
if (additionalBEK != null && !beks.contains(additionalBEK)) {
beks.add(additionalBEK);