use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class FinishCallback method execute.
@Override
public Step execute(UserRequest ureq, WindowControl wControl, StepsRunContext runContext) {
FOCourseNode node = (FOCourseNode) runContext.get(SendMailStepForm.FORUM);
ICourse course = (ICourse) runContext.get(SendMailStepForm.ICOURSE);
CourseEnvironment courseEnv = course.getCourseEnvironment();
Forum chosenforum = node.loadOrCreateForum(courseEnv);
Message msg = (Message) runContext.get(SendMailStepForm.MESSAGE_TO_MOVE);
msg = forumManager.getMessageById(msg.getKey());
Message parentMessage = (Message) runContext.get(SendMailStepForm.PARENT_MESSAGE);
if (parentMessage != null) {
parentMessage = forumManager.getMessageById(parentMessage.getKey());
}
if (msg.getParentKey() == null && msg.getThreadtop() == null) {
msg = forumManager.createOrAppendThreadInAnotherForum(msg, chosenforum, parentMessage);
} else {
msg = forumManager.moveMessageToAnotherForum(msg, chosenforum, parentMessage);
}
// commit before sending event
DBFactory.getInstance().commit();
if ((Boolean) runContext.get(SendMailStepForm.SENDMAIL)) {
sendMail(ureq, wControl, runContext);
}
return StepsMainRunController.DONE_MODIFIED;
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class ForumArchiveManager method convertToThreadTrees.
/**
* If the forumCallback is null no filtering is executed,
* else if a thread is hidden and the user doesn't have moderator rights the
* hidden thread is not included into the archive.
* @param forumId
* @param metaInfo
* @return all top message nodes together with their children in a list
*/
private List<MessageNode> convertToThreadTrees(Long forumId, ForumCallback forumCallback) {
List<MessageNode> topNodeList = new ArrayList<>();
ForumManager fm = ForumManager.getInstance();
Forum f = fm.loadForum(forumId);
List<Message> messages = fm.getMessagesByForum(f);
for (Iterator<Message> iterTop = messages.iterator(); iterTop.hasNext(); ) {
Message msg = iterTop.next();
if (msg.getParent() == null) {
iterTop.remove();
MessageNode topNode = new MessageNode(msg);
if (topNode.isHidden() && (forumCallback == null || (forumCallback != null && forumCallback.mayEditMessageAsModerator()))) {
addChildren(messages, topNode);
topNodeList.add(topNode);
} else if (!topNode.isHidden()) {
addChildren(messages, topNode);
topNodeList.add(topNode);
}
}
}
Collections.sort(topNodeList, new MessageNodeComparator());
return topNodeList;
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class ForumNodeForumCallback method saveMultiForums.
private Forum saveMultiForums(final CourseEnvironment courseEnv) {
final ForumManager fom = CoreSpringFactory.getImpl(ForumManager.class);
final OLATResourceable courseNodeResourceable = OresHelper.createOLATResourceableInstance(FOCourseNode.class, new Long(getIdent()));
return CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(courseNodeResourceable, new SyncerCallback<Forum>() {
@Override
public Forum execute() {
List<Property> forumKeyProps = courseEnv.getCoursePropertyManager().findCourseNodeProperties(FOCourseNode.this, null, null, FORUM_KEY);
Forum masterForum;
if (forumKeyProps.size() == 1) {
masterForum = loadForum(courseEnv, forumKeyProps.get(0));
} else if (forumKeyProps.size() > 1) {
Long masterForumKey = forumKeyProps.get(0).getLongValue();
List<Long> forumsToMerge = new ArrayList<>();
for (int i = 1; i < forumKeyProps.size(); i++) {
forumsToMerge.add(forumKeyProps.get(i).getLongValue());
}
fom.mergeForums(masterForumKey, forumsToMerge);
masterForum = fom.loadForum(masterForumKey);
for (int i = 1; i < forumKeyProps.size(); i++) {
courseEnv.getCoursePropertyManager().deleteProperty(forumKeyProps.get(i));
}
} else {
masterForum = null;
}
return masterForum;
}
});
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class ForumNodeForumCallback method loadForum.
private Forum loadForum(CourseEnvironment courseEnv, Property prop) {
final ForumManager fom = CoreSpringFactory.getImpl(ForumManager.class);
Long forumKey = prop.getLongValue();
Forum forum = fom.loadForum(forumKey);
if (forum == null) {
throw new OLATRuntimeException(FOCourseNode.class, "Tried to load forum with key " + forumKey.longValue() + " in course " + courseEnv.getCourseResourceableId() + " for node " + getIdent() + " as defined in course node property but forum manager could not load forum.", null);
}
return forum;
}
use of org.olat.modules.fo.Forum in project openolat by klemens.
the class DialogElementsManagerImpl method createDialogElement.
@Override
public DialogElement createDialogElement(RepositoryEntry entry, Identity author, String filename, Long size, String subIdent) {
DialogElementImpl element = new DialogElementImpl();
element.setCreationDate(new Date());
element.setLastModified(element.getCreationDate());
element.setFilename(filename);
element.setSize(size);
element.setAuthor(author);
element.setEntry(entry);
element.setSubIdent(subIdent);
Forum forum = forumManager.addAForum();
element.setForum(forum);
dbInstance.getCurrentEntityManager().persist(element);
return element;
}
Aggregations