diff --git a/olat3/webapp/WEB-INF/src/org/olat/course/nodes/InfoCourseNode.java b/olat3/webapp/WEB-INF/src/org/olat/course/nodes/InfoCourseNode.java index 931c062ac680558436256f896dbae91119617fd9..5bc00898a4736043a39b8867b628df9704d49e73 100644 --- a/olat3/webapp/WEB-INF/src/org/olat/course/nodes/InfoCourseNode.java +++ b/olat3/webapp/WEB-INF/src/org/olat/course/nodes/InfoCourseNode.java @@ -22,11 +22,16 @@ package org.olat.course.nodes; import java.util.List; +import org.olat.commons.info.manager.InfoMessageFrontendManager; +import org.olat.commons.info.model.InfoMessage; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.tabbable.TabbableController; import org.olat.core.util.Util; +import org.olat.core.util.notifications.NotificationsManager; +import org.olat.core.util.notifications.SubscriptionContext; +import org.olat.course.CourseModule; import org.olat.course.ICourse; import org.olat.course.condition.Condition; import org.olat.course.condition.interpreter.ConditionInterpreter; @@ -195,4 +200,22 @@ public class InfoCourseNode extends AbstractAccessableCourseNode { boolean admin = (getPreConditionAdmin().getConditionExpression() == null ? true : ci.evaluateCondition(getPreConditionAdmin())); nodeEval.putAccessStatus(ADMIN_CONDITION_ID, admin); } + + @Override + /** + * is called when deleting this node, clean up info-messages and subscriptions! + */ + public void cleanupOnDelete(ICourse course) { + // delete infoMessages and subscriptions (OLAT-6171) + List<InfoMessage> messages = InfoMessageFrontendManager.getInstance().loadInfoMessageByResource(course,null, null, null, null, 0, 0); + InfoMessageFrontendManager infoMessageManager = InfoMessageFrontendManager.getInstance(); + for (InfoMessage im : messages) { + infoMessageManager.deleteInfoMessage(im); + } + + final SubscriptionContext subscriptionContext = CourseModule.createTechnicalSubscriptionContext(course.getCourseEnvironment(), this); + NotificationsManager notifManagar = NotificationsManager.getInstance(); + notifManagar.delete(subscriptionContext); + super.cleanupOnDelete(course); + } }