Skip to content
Snippets Groups Projects
Commit 94316f2a authored by srosse's avatar srosse
Browse files

OO-3906: ensure uploaded filenames are unique

parent 7458334e
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,7 @@ package org.olat.ims.qti21.model.xml;
import static org.olat.ims.qti21.QTI21Constants.MAXSCORE_IDENTIFIER;
import static org.olat.ims.qti21.QTI21Constants.MINSCORE_IDENTIFIER;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
......@@ -30,6 +31,7 @@ import javax.xml.transform.stream.StreamResult;
import org.olat.core.gui.render.StringOutput;
import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing;
import org.olat.core.util.FileUtils;
import org.olat.ims.qti21.QTI21Constants;
import org.olat.ims.qti21.model.QTI21QuestionType;
import org.olat.ims.qti21.model.xml.ModalFeedbackBuilder.ModalFeedbackType;
......@@ -343,6 +345,23 @@ public abstract class AssessmentItemBuilder {
return interactionNames;
}
/**
*
* @param uploadedFilename The uploaded filename
* @param currentFilename The current filename
* @param directory The directory where the file will be saved
* @return A proposition of unique filename
*/
public String checkFilename(String uploadedFilename, String currentFilename, File directory) {
if(uploadedFilename == null) return null;
if(!uploadedFilename.equals(currentFilename)) {
File file = new File(directory, uploadedFilename);
uploadedFilename = FileUtils.rename(file);
}
return uploadedFilename;
}
protected final void serializeJqtiObject(QtiNode block, StringOutput sb) {
final XsltSerializationOptions xsltSerializationOptions = new XsltSerializationOptions();
xsltSerializationOptions.setIndenting(false);
......
......@@ -217,6 +217,9 @@ public class DrawingEditorController extends FormBasicController {
backgroundEl.validate(status);
if(status.isEmpty()) {
flc.setDirty(true);
String uniqueFilename = itemBuilder
.checkFilename(backgroundEl.getUploadFileName(), itemBuilder.getBackground(), itemFile.getParentFile());
backgroundEl.setUploadFileName(uniqueFilename);
backgroundImage = backgroundEl.moveUploadFileTo(itemFile.getParentFile());
backgroundEl.setInitialFile(backgroundImage);
}
......
......@@ -362,6 +362,9 @@ public class HotspotEditorController extends FormBasicController {
backgroundEl.validate(status);
if(status.isEmpty()) {
flc.setDirty(true);
String uniqueFilename = itemBuilder
.checkFilename(backgroundEl.getUploadFileName(), itemBuilder.getBackground(), itemFile.getParentFile());
backgroundEl.setUploadFileName(uniqueFilename);
backgroundImage = backgroundEl.moveUploadFileTo(itemFile.getParentFile());
Size size = imageService.getSize(new LocalFileImpl(backgroundImage), null);
optimizeResizeEl(size, true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment