Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 -r0483acb3c9e3b07f42d9511bbfea3708029438e8 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 0483acb3c9e3b07f42d9511bbfea3708029438e8) @@ -549,6 +549,7 @@ + Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190808.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190808.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190808.sql (revision 0483acb3c9e3b07f42d9511bbfea3708029438e8) @@ -0,0 +1,14 @@ +-- 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-4844 Add a Question Bank event for merging questions +INSERT INTO lams_log_event_type VALUES (27, 'TYPE_QUESTIONS_MERGED', 'QUESTION_BANK'); + +----------------------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; \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/logevent/LogEvent.java =================================================================== diff -u -r78b847b4a5962e1c3d0167cfdc0f95137be57e6a -r0483acb3c9e3b07f42d9511bbfea3708029438e8 --- lams_common/src/java/org/lamsfoundation/lams/logevent/LogEvent.java (.../LogEvent.java) (revision 78b847b4a5962e1c3d0167cfdc0f95137be57e6a) +++ lams_common/src/java/org/lamsfoundation/lams/logevent/LogEvent.java (.../LogEvent.java) (revision 0483acb3c9e3b07f42d9511bbfea3708029438e8) @@ -78,6 +78,7 @@ public static final int TYPE_LOGIN = 24; // user logged in public static final int TYPE_LOGOUT = 25; // user logged out public static final int TYPE_CONFIG_CHANGE = 26; // user logged out + public static final int TYPE_QUESTIONS_MERGED = 27; // question were merged in Question Bank /** *************************************************************** */ Index: lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java =================================================================== diff -u -re00ee97b803f195e523abcd3f765513a58a03d32 -r0483acb3c9e3b07f42d9511bbfea3708029438e8 --- lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision e00ee97b803f195e523abcd3f765513a58a03d32) +++ lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 0483acb3c9e3b07f42d9511bbfea3708029438e8) @@ -18,13 +18,17 @@ import java.util.UUID; import java.util.stream.Collectors; +import javax.servlet.http.HttpSession; + import org.apache.log4j.Logger; import org.lamsfoundation.lams.gradebook.GradebookUserLesson; import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.logevent.LogEvent; +import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.qb.dao.IQbDAO; import org.lamsfoundation.lams.qb.dto.QbStatsActivityDTO; import org.lamsfoundation.lams.qb.dto.QbStatsDTO; @@ -36,10 +40,13 @@ import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; @@ -56,6 +63,8 @@ private IUserManagementService userManagementService; + private ILogEventService logEventService; + public static final Comparator COLLECTION_NAME_COMPARATOR = Comparator .comparing(QbCollection::getName); @@ -654,9 +663,19 @@ int answersChanged = qbDAO.mergeQuestions(sourceQbQuestionUid, targetQbQuestionUid); qbDAO.deleteById(QbQuestion.class, sourceQbQuestionUid); + + logEventService.logEvent(LogEvent.TYPE_QUESTIONS_MERGED, QbService.getUserId(), null, null, null, + new StringBuilder("Question UID ").append(sourceQbQuestionUid).append(" merged into question UID ") + .append(targetQbQuestionUid).toString()); return answersChanged; } + private static Integer getUserId() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getUserID() : null; + } + public void setQbDAO(IQbDAO qbDAO) { this.qbDAO = qbDAO; } @@ -672,4 +691,8 @@ public void setUserManagementService(IUserManagementService userManagementService) { this.userManagementService = userManagementService; } + + public void setLogEventService(ILogEventService logEventService) { + this.logEventService = logEventService; + } } \ No newline at end of file