From 24a357fe1895c784a0048403e80457ebf7b4449a Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 24 Mar 2014 10:51:32 +0100
Subject: [PATCH] OO-1036: copy the quota from source to target root folder of
 the copied course

---
 src/main/java/org/olat/course/CourseFactory.java | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java
index 3d2e32dd58c..c3e749f4db4 100644
--- a/src/main/java/org/olat/course/CourseFactory.java
+++ b/src/main/java/org/olat/course/CourseFactory.java
@@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.zip.ZipOutputStream;
 
 import org.apache.poi.util.IOUtils;
+import org.olat.admin.quota.QuotaConstants;
 import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.basesecurity.Constants;
@@ -94,8 +95,11 @@ import org.olat.core.util.nodes.INode;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.core.util.tree.TreeVisitor;
 import org.olat.core.util.tree.Visitor;
+import org.olat.core.util.vfs.Quota;
+import org.olat.core.util.vfs.QuotaManager;
 import org.olat.core.util.vfs.VFSConstants;
 import org.olat.core.util.vfs.VFSContainer;
+import org.olat.core.util.vfs.VFSManager;
 import org.olat.core.util.vfs.VFSStatus;
 import org.olat.core.util.xml.XStreamHelper;
 import org.olat.course.archiver.ScoreAccountingHelper;
@@ -522,6 +526,17 @@ public class CourseFactory extends BasicManager {
 					DBFactory.getInstance(false).intermediateCommit();
 				}
 			}
+			
+			// set quotas
+			Quota sourceQuota = VFSManager.isTopLevelQuotaContainer(sourceCourse.getCourseFolderContainer());
+			Quota targetQuota = VFSManager.isTopLevelQuotaContainer(targetCourse.getCourseFolderContainer());
+			if (sourceQuota != null && targetQuota != null) {
+				QuotaManager qm = QuotaManager.getInstance();
+				if (sourceQuota.getQuotaKB() != qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_COURSE).getQuotaKB()) {
+					targetQuota = qm.createQuota(targetQuota.getPath(), sourceQuota.getQuotaKB(), sourceQuota.getUlLimitKB());
+					qm.setCustomQuotaKB(targetQuota);
+				}
+			}
 		}
 		return targetRes;			
 	}
-- 
GitLab