Search in sources :

Example 11 with Forum

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;
}
Also used : CourseEnvironment(org.olat.course.run.environment.CourseEnvironment) Message(org.olat.modules.fo.Message) FOCourseNode(org.olat.course.nodes.FOCourseNode) ICourse(org.olat.course.ICourse) Forum(org.olat.modules.fo.Forum)

Example 12 with Forum

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;
}
Also used : Message(org.olat.modules.fo.Message) ForumManager(org.olat.modules.fo.manager.ForumManager) ArrayList(java.util.ArrayList) Forum(org.olat.modules.fo.Forum)

Example 13 with Forum

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;
        }
    });
}
Also used : ForumManager(org.olat.modules.fo.manager.ForumManager) OLATResourceable(org.olat.core.id.OLATResourceable) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Forum(org.olat.modules.fo.Forum)

Example 14 with Forum

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;
}
Also used : ForumManager(org.olat.modules.fo.manager.ForumManager) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) Forum(org.olat.modules.fo.Forum)

Example 15 with 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;
}
Also used : DialogElementImpl(org.olat.course.nodes.dialog.model.DialogElementImpl) Date(java.util.Date) Forum(org.olat.modules.fo.Forum)

Aggregations

Forum (org.olat.modules.fo.Forum)70 Identity (org.olat.core.id.Identity)24 ForumManager (org.olat.modules.fo.manager.ForumManager)20 SubscriptionContext (org.olat.core.commons.services.notifications.SubscriptionContext)18 RepositoryEntry (org.olat.repository.RepositoryEntry)18 FOCourseNode (org.olat.course.nodes.FOCourseNode)16 Test (org.junit.Test)14 ICourse (org.olat.course.ICourse)14 Message (org.olat.modules.fo.Message)14 Property (org.olat.properties.Property)14 HttpResponse (org.apache.http.HttpResponse)12 CollaborationTools (org.olat.collaboration.CollaborationTools)12 PublisherData (org.olat.core.commons.services.notifications.PublisherData)12 HttpGet (org.apache.http.client.methods.HttpGet)10 BusinessGroup (org.olat.group.BusinessGroup)10 File (java.io.File)8 URL (java.net.URL)8 Path (javax.ws.rs.Path)8 OLATResourceable (org.olat.core.id.OLATResourceable)8 Roles (org.olat.core.id.Roles)8