Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r489e453a8a4e814ac7edbb0b9ca33997ed7e3bae -r1c496f87123d1d2277609837e427b77c18874a79 --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 489e453a8a4e814ac7edbb0b9ca33997ed7e3bae) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 1c496f87123d1d2277609837e427b77c18874a79) @@ -682,3 +682,4 @@ sysadmin.lti.advantage.tool.key.id = Tool key ID sysadmin.lti.advantage.tool.public.key = Public key sysadmin.lti.advantage.tool.private.key = Private key +sysadmin.add.staff.to.all.lessons = On staff login add them to all lessons in course \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java =================================================================== diff -u -rf0924238dddb80210e0e088cda5fe967f66ef979 -r1c496f87123d1d2277609837e427b77c18874a79 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java (.../ExtServerForm.java) (revision f0924238dddb80210e0e088cda5fe967f66ef979) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java (.../ExtServerForm.java) (revision 1c496f87123d1d2277609837e427b77c18874a79) @@ -30,13 +30,15 @@ private String userinfoUrl; private String extGroupsUrl; - + private String logoutUrl; - + private boolean timeToLiveLoginRequestEnabled = true; private Integer timeToLiveLoginRequest = 80; + private boolean addStaffToAllLessons = false; + public String getUserinfoUrl() { return userinfoUrl; } @@ -52,13 +54,13 @@ public void setExtGroupsUrl(String extGroupsUrl) { this.extGroupsUrl = extGroupsUrl; } - + public String getLogoutUrl() { - return logoutUrl; + return logoutUrl; } public void setLogoutUrl(String logoutUrl) { - this.logoutUrl = logoutUrl; + this.logoutUrl = logoutUrl; } public boolean isTimeToLiveLoginRequestEnabled() { @@ -77,4 +79,11 @@ this.timeToLiveLoginRequest = timeToLiveLoginRequest; } -} + public boolean isAddStaffToAllLessons() { + return addStaffToAllLessons; + } + + public void setAddStaffToAllLessons(boolean addStaffToAllLessons) { + this.addStaffToAllLessons = addStaffToAllLessons; + } +} \ No newline at end of file Index: lams_admin/web/integration/servermaintain.jsp =================================================================== diff -u -r5f9e583fc8e476f6a5f9e1826332ba3788d7c68c -r1c496f87123d1d2277609837e427b77c18874a79 --- lams_admin/web/integration/servermaintain.jsp (.../servermaintain.jsp) (revision 5f9e583fc8e476f6a5f9e1826332ba3788d7c68c) +++ lams_admin/web/integration/servermaintain.jsp (.../servermaintain.jsp) (revision 1c496f87123d1d2277609837e427b77c18874a79) @@ -97,7 +97,7 @@
@@ -109,6 +109,11 @@
+
+ +
Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java =================================================================== diff -u -r49031fe83af9c2d76636b93275a832994a13fb88 -r1c496f87123d1d2277609837e427b77c18874a79 --- lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision 49031fe83af9c2d76636b93275a832994a13fb88) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision 1c496f87123d1d2277609837e427b77c18874a79) @@ -41,6 +41,7 @@ import org.lamsfoundation.lams.integration.security.RandomPasswordGenerator; import org.lamsfoundation.lams.integration.service.IntegrationService; import org.lamsfoundation.lams.integration.util.IntegrationConstants; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.security.UniversalLoginModule; import org.lamsfoundation.lams.usermanagement.User; @@ -169,22 +170,23 @@ userMap = integrationService.getImplicitExtUserUseridMap(extServer, extUsername, firstName, lastName, locale, country, email, prefix, isUpdateUserDetails); } + ExtCourseClassMap courseMap = null; if (!isWorkflowAutomation && extCourseId == null && StringUtils.isNotBlank(lessonId)) { // derive course ID from lesson ID - ExtCourseClassMap classMap = integrationService.getExtCourseClassMap(extServer.getSid(), - Long.parseLong(lessonId)); - if (classMap == null) { + courseMap = integrationService.getExtCourseClassMap(extServer.getSid(), Long.parseLong(lessonId)); + if (courseMap == null) { log.warn("Lesson " + lessonId + " is not mapped to any course for server " + extServer.getServername()); } else { - extCourseId = classMap.getCourseid(); + extCourseId = courseMap.getCourseid(); } } if (!isWorkflowAutomation && extCourseId != null) { // check if organisation, ExtCourseClassMap and user roles exist and up-to-date, and if not update them - integrationService.getExtCourseClassMap(extServer, userMap, extCourseId, courseName, method, prefix); + courseMap = integrationService.getExtCourseClassMap(extServer, userMap, extCourseId, courseName, method, + prefix); } User user = userMap.getUser(); @@ -194,15 +196,22 @@ throw new UserInfoFetchException(error); } - //adds users to the lesson with respective roles - if (!isWorkflowAutomation && StringUtils.isNotBlank(lessonId)) { - if (IntegrationConstants.METHOD_LEARNER.equals(method) - || IntegrationConstants.METHOD_LEARNER_STRICT_AUTHENTICATION.equals(method)) { - lessonService.addLearner(Long.parseLong(lessonId), user.getUserId()); - + // adds users to the lesson with respective roles + Integer userId = user.getUserId(); + if (!isWorkflowAutomation) { + if (StringUtils.isNotBlank(lessonId) && (IntegrationConstants.METHOD_LEARNER.equals(method) + || IntegrationConstants.METHOD_LEARNER_STRICT_AUTHENTICATION.equals(method))) { + lessonService.addLearner(Long.parseLong(lessonId), userId); } else if (IntegrationConstants.METHOD_MONITOR.equals(method) || IntegrationConstants.METHOD_AUTHOR.equals(method)) { - lessonService.addStaffMember(Long.parseLong(lessonId), user.getUserId()); + if (extServer.isAddStaffToAllLessons() && courseMap != null) { + // add staff to all lessons + for (Lesson lesson : courseMap.getOrganisation().getLessons()) { + lessonService.addStaffMember(lesson.getLessonId(), userId); + } + } else if (StringUtils.isNotBlank(lessonId)) { + lessonService.addStaffMember(Long.parseLong(lessonId), userId); + } } } Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20220210.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20220210.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20220210.sql (revision 1c496f87123d1d2277609837e427b77c18874a79) @@ -0,0 +1,15 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +--LDEV-5286 + +ALTER TABLE lams_ext_server_org_map ADD COLUMN add_staff_to_all_lessons TINYINT NOT NULL DEFAULT 0 AFTER time_to_live_login_request_enabled; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java =================================================================== diff -u -rca67d3227c5ace010da9afa104645a86c50a004f -r1c496f87123d1d2277609837e427b77c18874a79 --- lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java (.../ExtServer.java) (revision ca67d3227c5ace010da9afa104645a86c50a004f) +++ lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java (.../ExtServer.java) (revision 1c496f87123d1d2277609837e427b77c18874a79) @@ -79,6 +79,9 @@ @Column(name = "time_to_live_login_request") private int timeToLiveLoginRequest; + @Column(name = "add_staff_to_all_lessons") + private boolean addStaffToAllLessons; + @Column(name = "learner_presence_avail") private Boolean learnerPresenceAvailable; @@ -196,6 +199,7 @@ toolReregistrationEnabled = true; useCoursePrefix = true; userRegistrationEnabled = true; + addStaffToAllLessons = false; } public Integer getSid() { @@ -321,6 +325,14 @@ this.timeToLiveLoginRequest = timeToLiveLoginRequest; } + public boolean isAddStaffToAllLessons() { + return addStaffToAllLessons; + } + + public void setAddStaffToAllLessons(boolean addStaffToAllLessons) { + this.addStaffToAllLessons = addStaffToAllLessons; + } + public Set getExtCourseClassMaps() { return this.extCourseClassMaps; }