MDL-65033 mod_forum: Externallib tests
[moodle.git] / mod / forum / amd / src / repository.js
CommitLineData
2646e9d6
RW
1// This file is part of Moodle - http://moodle.org/
2//
3// Moodle is free software: you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation, either version 3 of the License, or
6// (at your option) any later version.
7//
8// Moodle is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
15
16/**
c475fe41 17 * Forum repository class to encapsulate all of the AJAX requests that subscribe or unsubscribe
2646e9d6
RW
18 * can be sent for forum.
19 *
20 * @module mod_forum/repository
21 * @package mod_forum
22 * @copyright 2019 Andrew Nicols <andrew@nicols.co.uk>
23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 */
25define(['core/ajax'], function(Ajax) {
26 /**
27 * Set the subscription state for a discussion in a forum.
28 *
29 * @param {number} forumId ID of the forum the discussion belongs to
30 * @param {number} discussionId ID of the discussion with the subscription state
31 * @param {boolean} targetState Set the subscribed state. True == subscribed; false == unsubscribed.
32 * @return {object} jQuery promise
33 */
34 var setDiscussionSubscriptionState = function(forumId, discussionId, targetState) {
35 var request = {
36 methodname: 'mod_forum_set_subscription_state',
37 args: {
38 forumid: forumId,
39 discussionid: discussionId,
40 targetstate: targetState
41 }
42 };
43 return Ajax.call([request])[0];
44 };
45
9b4f09ba
P
46 var addDiscussionPost = function(postid, subject, message) {
47 var request = {
48 methodname: 'mod_forum_add_discussion_post',
49 args: {
50 postid: postid,
51 message: message,
52 subject: subject
53 }
54 };
99bda8a7
P
55 return Ajax.call([request])[0];
56 };
9b4f09ba 57
99bda8a7
P
58 /**
59 * Set the favourite state for a discussion in a forum.
60 *
61 * @param {number} forumId ID of the forum the discussion belongs to
62 * @param {number} discussionId ID of the discussion with the subscription state
63 * @param {boolean} targetState Set the favourite state. True == favourited; false == unfavourited.
64 * @return {object} jQuery promise
65 */
66 var toggleFavouriteDiscussionState = function(forumId, discussionId, targetState) {
67 var request = {
68 methodname: 'mod_forum_toggle_favourite_state',
69 args: {
70 forumid: forumId,
71 discussionid: discussionId,
72 targetstate: targetState
73 }
74 };
9b4f09ba
P
75 return Ajax.call([request])[0];
76 };
77
2893812e
P
78 var setDiscussionLockState = function(forumId, discussionId, targetState) {
79 var request = {
80 methodname: 'mod_forum_set_lock_state',
81 args: {
82 forumid: forumId,
83 discussionid: discussionId,
25a97f99 84 targetstate: targetState}
85 };
86 return Ajax.call([request])[0];
87 };
88
89 var togglePin = function(forumid, discussionid, targetstate, includetext) {
90 var request = {
91 methodname: 'mod_forum_set_pin_state',
92 args: {
93 forumid: forumid,
94 discussionid: discussionid,
95 targetstate: targetstate,
96 includetext: includetext,
2893812e
P
97 }
98 };
99 return Ajax.call([request])[0];
100 };
101
2646e9d6
RW
102 return {
103 setDiscussionSubscriptionState: setDiscussionSubscriptionState,
2893812e 104 addDiscussionPost: addDiscussionPost,
99bda8a7 105 setDiscussionLockState: setDiscussionLockState,
25a97f99 106 toggleFavouriteDiscussionState: toggleFavouriteDiscussionState,
107 togglePin: togglePin
2646e9d6
RW
108 };
109});