diff --git a/src/main/java/org/olat/modules/fo/manager/ForumManager.java b/src/main/java/org/olat/modules/fo/manager/ForumManager.java index 8daf2ac3a5bced5e80e7854e6f67b105452d64d0..379eca8fa7726a7b79cfa448540915ce406e552e 100644 --- a/src/main/java/org/olat/modules/fo/manager/ForumManager.java +++ b/src/main/java/org/olat/modules/fo/manager/ForumManager.java @@ -595,18 +595,22 @@ public class ForumManager { .setParameter("forumKey", forumKey) .executeUpdate(); // delete messages - //TODO forum - /* - String deleteMessages = "delete from fomessage as msg where msg.forum.key=:forumKey"; - dbInstance.getCurrentEntityManager().createQuery(deleteMessages) - .setParameter("forumKey", forumKey) - .executeUpdate(); + String messagesToDelete = "select msg from fomessage as msg where msg.forum.key=:forumKey and msg.threadtop.key is null"; + List<Message> threadsToDelete = dbInstance.getCurrentEntityManager() + .createQuery(messagesToDelete, Message.class) + .setParameter("forumKey", forumKey) + .getResultList(); + for(Message threadToDelete:threadsToDelete) { + deleteMessageTree(forumKey, threadToDelete); + dbInstance.getCurrentEntityManager().remove(threadToDelete); + } + dbInstance.commit(); + // delete forum String deleteForum = "delete from forum as fo where fo.key=:forumKey"; dbInstance.getCurrentEntityManager().createQuery(deleteForum) .setParameter("forumKey", forumKey) .executeUpdate(); - */ //delete all flags OLATResourceable ores = OresHelper.createOLATResourceableInstance(Forum.class, forum.getKey()); markingService.getMarkManager().deleteMarks(ores); diff --git a/src/test/java/org/olat/modules/fo/ForumManagerTest.java b/src/test/java/org/olat/modules/fo/ForumManagerTest.java index fc2eaed4454ce96ecd58bd83448bc7d6f7a7e72e..143a8ff7d5e7d0427e11b0eab5d161b58218dd67 100644 --- a/src/test/java/org/olat/modules/fo/ForumManagerTest.java +++ b/src/test/java/org/olat/modules/fo/ForumManagerTest.java @@ -31,7 +31,6 @@ import java.util.Date; import java.util.List; import org.junit.Assert; -import org.junit.Ignore; import org.junit.Test; import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; @@ -203,7 +202,7 @@ public class ForumManagerTest extends OlatTestCase { dbInstance.commitAndCloseSession(); } - @Ignore @Test + @Test public void testDeleteForum() { Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("fo-7"); Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("fo-8");