AutorÃa | Ultima modificación | Ver Log |
// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Forum repository class to encapsulate all of the AJAX requests that subscribe or unsubscribe* can be sent for forum.** @module mod_forum/repository* @copyright 2019 Andrew Nicols <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/define(['core/ajax'], function(Ajax) {/*** Set the subscription state for a discussion in a forum.** @param {number} forumId ID of the forum the discussion belongs to* @param {number} discussionId ID of the discussion with the subscription state* @param {boolean} targetState Set the subscribed state. True == subscribed; false == unsubscribed.* @return {object} jQuery promise*/var setDiscussionSubscriptionState = function(forumId, discussionId, targetState) {var request = {methodname: 'mod_forum_set_subscription_state',args: {forumid: forumId,discussionid: discussionId,targetstate: targetState}};return Ajax.call([request])[0];};var addDiscussionPost = function(postid, subject, message, messageformat, isprivatereply, topreferredformat) {var request = {methodname: 'mod_forum_add_discussion_post',args: {postid: postid,message: message,messageformat: messageformat,subject: subject,options: [{name: "private",value: isprivatereply,}, {name: "topreferredformat",value: topreferredformat,}]}};return Ajax.call([request])[0];};/*** Set the favourite state for a discussion in a forum.** @param {number} forumId ID of the forum the discussion belongs to* @param {number} discussionId ID of the discussion with the subscription state* @param {null|date} targetState Set the favourite state. True == favourited; false == unfavourited.* @return {object} jQuery promise*/var setFavouriteDiscussionState = function(forumId, discussionId, targetState) {var request = {methodname: 'mod_forum_toggle_favourite_state',args: {discussionid: discussionId,targetstate: targetState}};return Ajax.call([request])[0];};var setDiscussionLockState = function(forumId, discussionId, targetState) {var request = {methodname: 'mod_forum_set_lock_state',args: {forumid: forumId,discussionid: discussionId,targetstate: targetState}};return Ajax.call([request])[0];};/*** Set the pinned state for the discussion provided.** @param {number} forumid* @param {number} discussionid* @param {boolean} targetstate* @return {*|Promise}*/var setPinDiscussionState = function(forumid, discussionid, targetstate) {var request = {methodname: 'mod_forum_set_pin_state',args: {discussionid: discussionid,targetstate: targetstate}};return Ajax.call([request])[0];};/*** Get the discussions for the user and cmid provided.** @param {number} userid* @param {number} cmid* @param {string} sortby* @param {string} sortdirection* @return {*|Promise}*/var getDiscussionByUserID = function(userid, cmid, sortby = 'modified', sortdirection = 'DESC') {var request = {methodname: 'mod_forum_get_discussion_posts_by_userid',args: {userid: userid,cmid: cmid,sortby: sortby,sortdirection: sortdirection,},};return Ajax.call([request])[0];};/*** Get the posts for the discussion ID provided.** @param {number} discussionId* @param {String} sortby* @param {String} sortdirection* @return {*|Promise}*/var getDiscussionPosts = function(discussionId, sortby = 'created', sortdirection = 'ASC') {var request = {methodname: 'mod_forum_get_discussion_posts',args: {discussionid: discussionId,sortby: sortby,sortdirection: sortdirection,},};return Ajax.call([request])[0];};return {setDiscussionSubscriptionState: setDiscussionSubscriptionState,addDiscussionPost: addDiscussionPost,setDiscussionLockState: setDiscussionLockState,setFavouriteDiscussionState: setFavouriteDiscussionState,setPinDiscussionState: setPinDiscussionState,getDiscussionByUserID: getDiscussionByUserID,getDiscussionPosts: getDiscussionPosts,};});