From c13d105ceb44bdd858289d85635db89ab6559fa6 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Tue, 25 Aug 2020 14:41:37 +0200
Subject: [PATCH] OO-4869: filter deleted users from QTI 2.1 results export

---
 src/main/java/org/olat/core/util/StringHelper.java           | 2 ++
 .../qti21/resultexport/QTI21ResultsExportMediaResource.java  | 4 ++++
 src/test/java/org/olat/core/util/StringHelperTest.java       | 5 +++++
 3 files changed, 11 insertions(+)

diff --git a/src/main/java/org/olat/core/util/StringHelper.java b/src/main/java/org/olat/core/util/StringHelper.java
index c738016d339..28a8cd2aea9 100644
--- a/src/main/java/org/olat/core/util/StringHelper.java
+++ b/src/main/java/org/olat/core/util/StringHelper.java
@@ -475,6 +475,8 @@ public class StringHelper {
 	 * @return transformed string
 	 */
 	public static String transformDisplayNameToFileSystemName(String s){
+		if(s == null) return "";
+		
 		//replace some separator with an underscore
 		s = s.replace('?', '_').replace('\\', '_').replace('/', '_').replace(' ', '_');
 		//remove all non-ascii characters
diff --git a/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java b/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java
index 8f5557cf53e..571098bea1a 100644
--- a/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java
+++ b/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java
@@ -279,6 +279,10 @@ public class QTI21ResultsExportMediaResource implements MediaResource {
 
 		List<AssessedMember> assessedMembers = new ArrayList<>();		
 		for(Identity identity : identities) {
+			if(identity == null || identity.getStatus() == null || identity.getStatus().equals(Identity.STATUS_DELETED)) {
+				continue;
+			}
+			
 			String lastname = StringHelper.transformDisplayNameToFileSystemName(identity.getUser().getLastName());
 			String idDir = exportFolderName + "/" + DATA + lastname + "_" + identity.getKey();
 			idDir = idDir.endsWith(SEP) ? idDir : idDir + SEP;
diff --git a/src/test/java/org/olat/core/util/StringHelperTest.java b/src/test/java/org/olat/core/util/StringHelperTest.java
index 618d6ec1e21..154c0255ae2 100644
--- a/src/test/java/org/olat/core/util/StringHelperTest.java
+++ b/src/test/java/org/olat/core/util/StringHelperTest.java
@@ -91,6 +91,11 @@ public class StringHelperTest {
 		Assert.assertEquals("Webclaess", StringHelper.transformDisplayNameToFileSystemName("Webcl\u00E4ss"));
 	}
 	
+	@Test
+	public void transformDisplayNameToFileSystemNameNull() {
+		Assert.assertEquals("", StringHelper.transformDisplayNameToFileSystemName(null));
+	}
+	
 	@Test
 	public void filterPrintControlCharacter() {
 		String value1 = StringHelper.cleanUTF8ForXml("Hello world");
-- 
GitLab