diff --git a/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy b/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy index b41886276c8b2a71e78f3862211334bbb2d1ad0c..fbf2574b934fabc52b72424446c47223102d5e7e 100644 --- a/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy +++ b/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy @@ -115,25 +115,7 @@ class ToolController { } else { session["params"] = params - List<Object> recordings = bigbluebuttonService.getRecordings(params) - for(Map<String, Object> recording: recordings){ - /// Calculate duration - long endTime = Long.parseLong((String)recording.get("endTime")) - endTime -= (endTime % 1000) - long startTime = Long.parseLong((String)recording.get("startTime")) - startTime -= (startTime % 1000) - int duration = (endTime - startTime) / 60000 - /// Add duration - recording.put("duration", duration) - - /// Calculate reportDate - DateFormat df = new SimpleDateFormat(message(code: "tool.view.dateFormat")) - String reportDate = df.format(new Date(startTime)) - /// Add reportDate - recording.put("reportDate", reportDate) - recording.put("unixDate", startTime / 1000) - } - render(view: "index", model: ['params': params, 'recordingList': recordings, 'ismoderator': bigbluebuttonService.isModerator(params)]) + render(view: "index", model: ['params': params, 'recordingList': getSanitizedRecordings(params), 'ismoderator': bigbluebuttonService.isModerator(params)]) } } else { render(text: getCartridgeXML(), contentType: "text/xml", encoding: "UTF-8") @@ -178,9 +160,6 @@ class ToolController { result.put("resultMessageKey", "NotAllowed") result.put("resultMessage", "User not allowed to execute this action.") } else { - log.debug "params: " + params - log.debug "sessionParams: " + sessionParams - //Execute the publish command result = bigbluebuttonService.doPublishRecordings(params) } @@ -189,19 +168,7 @@ class ToolController { log.debug "Error [resultMessageKey:'" + result.get("resultMessageKey") + "', resultMessage:'" + result.get("resultMessage") + "']" render(view: "error", model: ['resultMessageKey': result.get("resultMessageKey"), 'resultMessage': result.get("resultMessage")]) } else { - List<Object> recordings = bigbluebuttonService.getRecordings(sessionParams) - for(Map<String, Object> recording: recordings){ - /// Calculate duration - long endTime = Long.parseLong((String)recording.get("endTime")) - endTime -= (endTime % 1000) - long startTime = Long.parseLong((String)recording.get("startTime")) - startTime -= (startTime % 1000) - int duration = (endTime - startTime) / 60000 - /// Add duration - recording.put("duration", duration ) - } - - render(view: "index", model: ['params': sessionParams, 'recordingList': recordings, 'ismoderator': bigbluebuttonService.isModerator(sessionParams)]) + render(view: "index", model: ['params': sessionParams, 'recordingList': getSanitizedRecordings(sessionParams), 'ismoderator': bigbluebuttonService.isModerator(sessionParams)]) } } @@ -220,9 +187,6 @@ class ToolController { result.put("resultMessageKey", "NotAllowed") result.put("resultMessage", "User not allowed to execute this action.") } else { - log.debug "params: " + params - log.debug "sessionParams: " + sessionParams - //Execute the delete command result = bigbluebuttonService.doDeleteRecordings(params) } @@ -231,19 +195,7 @@ class ToolController { log.debug "Error [resultMessageKey:'" + result.get("resultMessageKey") + "', resultMessage:'" + result.get("resultMessage") + "']" render(view: "error", model: ['resultMessageKey': result.get("resultMessageKey"), 'resultMessage': result.get("resultMessage")]) } else { - List<Object> recordings = bigbluebuttonService.getRecordings(sessionParams) - for(Map<String, Object> recording: recordings){ - /// Calculate duration - long endTime = Long.parseLong((String)recording.get("endTime")) - endTime -= (endTime % 1000) - long startTime = Long.parseLong((String)recording.get("startTime")) - startTime -= (startTime % 1000) - int duration = (endTime - startTime) / 60000 - /// Add duration - recording.put("duration", duration ) - } - - render(view: "index", model: ['params': sessionParams, 'recordingList': recordings, 'ismoderator': bigbluebuttonService.isModerator(sessionParams)]) + render(view: "index", model: ['params': sessionParams, 'recordingList': getSanitizedRecordings(sessionParams), 'ismoderator': bigbluebuttonService.isModerator(sessionParams)]) } } @@ -263,13 +215,12 @@ class ToolController { setLocalization(params) String welcome = message(code: "bigbluebutton.welcome.header", args: ["\"{0}\"", "\"{1}\""]) + "<br>" - log.debug "Localized default welcome message: [" + welcome + "]" - // Check for [custom_]welcome parameter being passed from the LTI - if ( params.containsKey(Parameter.CUSTOM_WELCOME) && params.get(Parameter.CUSTOM_WELCOME) != null ) { - welcome = params.get(Parameter.CUSTOM_WELCOME) + "<br>" - log.debug "Overriding default welcome message with: [" + welcome + "]" - } + // Check for [custom_]welcome parameter being passed from the LTI + if ( params.containsKey(Parameter.CUSTOM_WELCOME) && params.get(Parameter.CUSTOM_WELCOME) != null ) { + welcome = params.get(Parameter.CUSTOM_WELCOME) + "<br>" + log.debug "Overriding default welcome message with: [" + welcome + "]" + } if ( params.containsKey(Parameter.CUSTOM_RECORD) && Boolean.parseBoolean(params.get(Parameter.CUSTOM_RECORD)) ) { welcome += "<br><b>" + message(code: "bigbluebutton.welcome.record") + "</b><br>" @@ -282,7 +233,6 @@ class ToolController { } welcome += "<br>" + message(code: "bigbluebutton.welcome.footer") + "<br>" - log.debug "Localized default welcome message including footer: [" + welcome + "]" String destinationURL = bigbluebuttonService.getJoinURL(params, welcome, ltiService.mode) log.debug "redirecting to " + destinationURL @@ -387,6 +337,32 @@ class ToolController { return validSignature } + /** + * Assemble all recordings to be rendered by the view. + * @param the HTTP request parameters + * @return the key:val pairs needed for Basic LTI + */ + private List<Object> getSanitizedRecordings(Map<String, String> params) { + List<Object> recordings = bigbluebuttonService.getRecordings(params) + for(Map<String, Object> recording: recordings){ + /// Calculate duration + long endTime = Long.parseLong((String)recording.get("endTime")) + endTime -= (endTime % 1000) + long startTime = Long.parseLong((String)recording.get("startTime")) + startTime -= (startTime % 1000) + int duration = (endTime - startTime) / 60000 + /// Add duration + recording.put("duration", duration ) + /// Calculate reportDate + DateFormat df = new SimpleDateFormat(message(code: "tool.view.dateFormat")) + String reportDate = df.format(new Date(startTime)) + /// Add reportDate + recording.put("reportDate", reportDate) + recording.put("unixDate", startTime / 1000) + } + return recordings + } + private String getCartridgeXML(){ def lti_endpoint = ltiService.retrieveBasicLtiEndpoint() + '/' + grailsApplication.metadata['app.name'] def launch_url = 'http://' + lti_endpoint + '/tool'