From 499108e2cde153f902a16c33608564f47965bd9c Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Mon, 7 Oct 2019 08:35:17 +0200
Subject: [PATCH] OO-4290: Save LTI outcome only if user is participant

---
 .../course/nodes/basiclti/LTIRunController.java  | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
index b1f335f5835..8a122195415 100644
--- a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
+++ b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
@@ -344,8 +344,9 @@ public class LTIRunController extends BasicController {
 		startButton = LinkFactory.createButton("start", startPage, this);
 		startButton.setPrimary(true);
 
-		Boolean assessable = config.getBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD);
-		if(assessable != null && assessable.booleanValue()) {
+		boolean assessable = config.getBooleanSafe(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD, false)
+				&& userCourseEnv.isParticipant();
+		if(assessable) {
 			startPage.contextPut("isassessable", assessable);
 	    
 			Integer attempts = courseAssessmentService.getAttempts(courseNode, userCourseEnv);
@@ -464,10 +465,13 @@ public class LTIRunController extends BasicController {
 		String backMapperUrl = registerCacheableMapper(ureq, sourcedId + "_talkback", talkbackMapper);
 		String backMapperUri = serverUri + backMapperUrl + "/";
 
-		Mapper outcomeMapper = new CourseNodeOutcomeMapper(getIdentity(), courseResource, courseNode.getIdent(),
-				oauth_consumer_key, oauth_secret, sourcedId);
-		String outcomeMapperUrl = registerCacheableMapper(ureq, sourcedId, outcomeMapper, LTIManager.EXPIRATION_TIME);
-		String outcomeMapperUri = serverUri + outcomeMapperUrl + "/";
+		String outcomeMapperUri = null;
+		if (userCourseEnv.isParticipant()) {
+			Mapper outcomeMapper = new CourseNodeOutcomeMapper(getIdentity(), courseResource, courseNode.getIdent(),
+					oauth_consumer_key, oauth_secret, sourcedId);
+			String outcomeMapperUrl = registerCacheableMapper(ureq, sourcedId, outcomeMapper, LTIManager.EXPIRATION_TIME);
+			outcomeMapperUri = serverUri + outcomeMapperUrl + "/";
+		}
 
 		boolean sendname = config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDNAME, false);
 		boolean sendmail = config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDEMAIL, false);
-- 
GitLab