Merge branch 'MDL-70483-main' of https://github.com/kevpercy/moodle
This commit is contained in:
@@ -48,17 +48,6 @@ $functions = array(
|
||||
'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE)
|
||||
),
|
||||
|
||||
'mod_forum_get_forum_discussions_paginated' => array(
|
||||
'classname' => 'mod_forum_external',
|
||||
'methodname' => 'get_forum_discussions_paginated',
|
||||
'classpath' => 'mod/forum/externallib.php',
|
||||
'description' => '** DEPRECATED ** Please do not call this function any more.
|
||||
Returns a list of forum discussions optionally sorted and paginated.',
|
||||
'type' => 'read',
|
||||
'capabilities' => 'mod/forum:viewdiscussion, mod/forum:viewqandawithoutposting',
|
||||
'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE)
|
||||
),
|
||||
|
||||
'mod_forum_get_forum_discussions' => array(
|
||||
'classname' => 'mod_forum_external',
|
||||
'methodname' => 'get_forum_discussions',
|
||||
|
||||
@@ -287,266 +287,6 @@ class mod_forum_external extends external_api {
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark the get_forum_discussions_paginated web service as deprecated.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function get_forum_discussions_paginated_is_deprecated() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes the parameters for get_forum_discussions_paginated.
|
||||
*
|
||||
* @deprecated since 3.7
|
||||
* @return external_function_parameters
|
||||
* @since Moodle 2.8
|
||||
*/
|
||||
public static function get_forum_discussions_paginated_parameters() {
|
||||
return new external_function_parameters (
|
||||
array(
|
||||
'forumid' => new external_value(PARAM_INT, 'forum instance id', VALUE_REQUIRED),
|
||||
'sortby' => new external_value(PARAM_ALPHA,
|
||||
'sort by this element: id, timemodified, timestart or timeend', VALUE_DEFAULT, 'timemodified'),
|
||||
'sortdirection' => new external_value(PARAM_ALPHA, 'sort direction: ASC or DESC', VALUE_DEFAULT, 'DESC'),
|
||||
'page' => new external_value(PARAM_INT, 'current page', VALUE_DEFAULT, -1),
|
||||
'perpage' => new external_value(PARAM_INT, 'items per page', VALUE_DEFAULT, 0),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of forum discussions optionally sorted and paginated.
|
||||
*
|
||||
* @deprecated since 3.7
|
||||
* @param int $forumid the forum instance id
|
||||
* @param string $sortby sort by this element (id, timemodified, timestart or timeend)
|
||||
* @param string $sortdirection sort direction: ASC or DESC
|
||||
* @param int $page page number
|
||||
* @param int $perpage items per page
|
||||
*
|
||||
* @return array the forum discussion details including warnings
|
||||
* @since Moodle 2.8
|
||||
*/
|
||||
public static function get_forum_discussions_paginated($forumid, $sortby = 'timemodified', $sortdirection = 'DESC',
|
||||
$page = -1, $perpage = 0) {
|
||||
global $CFG, $DB, $USER, $PAGE;
|
||||
|
||||
require_once($CFG->dirroot . "/mod/forum/lib.php");
|
||||
|
||||
$warnings = array();
|
||||
$discussions = array();
|
||||
|
||||
$params = self::validate_parameters(self::get_forum_discussions_paginated_parameters(),
|
||||
array(
|
||||
'forumid' => $forumid,
|
||||
'sortby' => $sortby,
|
||||
'sortdirection' => $sortdirection,
|
||||
'page' => $page,
|
||||
'perpage' => $perpage
|
||||
)
|
||||
);
|
||||
|
||||
// Compact/extract functions are not recommended.
|
||||
$forumid = $params['forumid'];
|
||||
$sortby = $params['sortby'];
|
||||
$sortdirection = $params['sortdirection'];
|
||||
$page = $params['page'];
|
||||
$perpage = $params['perpage'];
|
||||
|
||||
$sortallowedvalues = array('id', 'timemodified', 'timestart', 'timeend');
|
||||
if (!in_array($sortby, $sortallowedvalues)) {
|
||||
throw new invalid_parameter_exception('Invalid value for sortby parameter (value: ' . $sortby . '),' .
|
||||
'allowed values are: ' . implode(',', $sortallowedvalues));
|
||||
}
|
||||
|
||||
$sortdirection = strtoupper($sortdirection);
|
||||
$directionallowedvalues = array('ASC', 'DESC');
|
||||
if (!in_array($sortdirection, $directionallowedvalues)) {
|
||||
throw new invalid_parameter_exception('Invalid value for sortdirection parameter (value: ' . $sortdirection . '),' .
|
||||
'allowed values are: ' . implode(',', $directionallowedvalues));
|
||||
}
|
||||
|
||||
$forum = $DB->get_record('forum', array('id' => $forumid), '*', MUST_EXIST);
|
||||
$course = $DB->get_record('course', array('id' => $forum->course), '*', MUST_EXIST);
|
||||
$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id, false, MUST_EXIST);
|
||||
|
||||
// Validate the module context. It checks everything that affects the module visibility (including groupings, etc..).
|
||||
$modcontext = context_module::instance($cm->id);
|
||||
self::validate_context($modcontext);
|
||||
|
||||
// Check they have the view forum capability.
|
||||
require_capability('mod/forum:viewdiscussion', $modcontext, null, true, 'noviewdiscussionspermission', 'forum');
|
||||
|
||||
$sort = 'd.pinned DESC, d.' . $sortby . ' ' . $sortdirection;
|
||||
$alldiscussions = forum_get_discussions($cm, $sort, true, -1, -1, true, $page, $perpage, FORUM_POSTS_ALL_USER_GROUPS);
|
||||
|
||||
if ($alldiscussions) {
|
||||
$canviewfullname = has_capability('moodle/site:viewfullnames', $modcontext);
|
||||
|
||||
// Get the unreads array, this takes a forum id and returns data for all discussions.
|
||||
$unreads = array();
|
||||
if ($cantrack = forum_tp_can_track_forums($forum)) {
|
||||
if ($forumtracked = forum_tp_is_tracked($forum)) {
|
||||
$unreads = forum_get_discussions_unread($cm);
|
||||
}
|
||||
}
|
||||
// The forum function returns the replies for all the discussions in a given forum.
|
||||
$canseeprivatereplies = has_capability('mod/forum:readprivatereplies', $modcontext);
|
||||
$canlock = has_capability('moodle/course:manageactivities', $modcontext, $USER);
|
||||
$replies = forum_count_discussion_replies($forumid, $sort, -1, $page, $perpage, $canseeprivatereplies);
|
||||
|
||||
foreach ($alldiscussions as $discussion) {
|
||||
|
||||
// This function checks for qanda forums.
|
||||
// Note that the forum_get_discussions returns as id the post id, not the discussion id so we need to do this.
|
||||
$discussionrec = clone $discussion;
|
||||
$discussionrec->id = $discussion->discussion;
|
||||
if (!forum_user_can_see_discussion($forum, $discussionrec, $modcontext)) {
|
||||
$warning = array();
|
||||
// Function forum_get_discussions returns forum_posts ids not forum_discussions ones.
|
||||
$warning['item'] = 'post';
|
||||
$warning['itemid'] = $discussion->id;
|
||||
$warning['warningcode'] = '1';
|
||||
$warning['message'] = 'You can\'t see this discussion';
|
||||
$warnings[] = $warning;
|
||||
continue;
|
||||
}
|
||||
|
||||
$discussion->numunread = 0;
|
||||
if ($cantrack && $forumtracked) {
|
||||
if (isset($unreads[$discussion->discussion])) {
|
||||
$discussion->numunread = (int) $unreads[$discussion->discussion];
|
||||
}
|
||||
}
|
||||
|
||||
$discussion->numreplies = 0;
|
||||
if (!empty($replies[$discussion->discussion])) {
|
||||
$discussion->numreplies = (int) $replies[$discussion->discussion]->replies;
|
||||
}
|
||||
|
||||
$discussion->name = \core_external\util::format_string($discussion->name, $modcontext);
|
||||
$discussion->subject = \core_external\util::format_string($discussion->subject, $modcontext);
|
||||
// Rewrite embedded images URLs.
|
||||
$options = array('trusted' => $discussion->messagetrust);
|
||||
list($discussion->message, $discussion->messageformat) =
|
||||
\core_external\util::format_text($discussion->message, $discussion->messageformat,
|
||||
$modcontext, 'mod_forum', 'post', $discussion->id, $options);
|
||||
|
||||
// List attachments.
|
||||
if (!empty($discussion->attachment)) {
|
||||
$discussion->attachments = external_util::get_area_files($modcontext->id, 'mod_forum', 'attachment',
|
||||
$discussion->id);
|
||||
}
|
||||
$messageinlinefiles = external_util::get_area_files($modcontext->id, 'mod_forum', 'post', $discussion->id);
|
||||
if (!empty($messageinlinefiles)) {
|
||||
$discussion->messageinlinefiles = $messageinlinefiles;
|
||||
}
|
||||
|
||||
$discussion->locked = forum_discussion_is_locked($forum, $discussion);
|
||||
$discussion->canlock = $canlock;
|
||||
$discussion->canreply = forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext);
|
||||
|
||||
if (forum_is_author_hidden($discussion, $forum)) {
|
||||
$discussion->userid = null;
|
||||
$discussion->userfullname = null;
|
||||
$discussion->userpictureurl = null;
|
||||
|
||||
$discussion->usermodified = null;
|
||||
$discussion->usermodifiedfullname = null;
|
||||
$discussion->usermodifiedpictureurl = null;
|
||||
} else {
|
||||
$picturefields = explode(',', implode(',', \core_user\fields::get_picture_fields()));
|
||||
|
||||
// Load user objects from the results of the query.
|
||||
$user = new stdclass();
|
||||
$user->id = $discussion->userid;
|
||||
$user = username_load_fields_from_object($user, $discussion, null, $picturefields);
|
||||
// Preserve the id, it can be modified by username_load_fields_from_object.
|
||||
$user->id = $discussion->userid;
|
||||
$discussion->userfullname = fullname($user, $canviewfullname);
|
||||
|
||||
$userpicture = new user_picture($user);
|
||||
$userpicture->size = 1; // Size f1.
|
||||
$discussion->userpictureurl = $userpicture->get_url($PAGE)->out(false);
|
||||
|
||||
$usermodified = new stdclass();
|
||||
$usermodified->id = $discussion->usermodified;
|
||||
$usermodified = username_load_fields_from_object($usermodified, $discussion, 'um', $picturefields);
|
||||
// Preserve the id (it can be overwritten due to the prefixed $picturefields).
|
||||
$usermodified->id = $discussion->usermodified;
|
||||
$discussion->usermodifiedfullname = fullname($usermodified, $canviewfullname);
|
||||
|
||||
$userpicture = new user_picture($usermodified);
|
||||
$userpicture->size = 1; // Size f1.
|
||||
$discussion->usermodifiedpictureurl = $userpicture->get_url($PAGE)->out(false);
|
||||
}
|
||||
|
||||
$discussions[] = $discussion;
|
||||
}
|
||||
}
|
||||
|
||||
$result = array();
|
||||
$result['discussions'] = $discussions;
|
||||
$result['warnings'] = $warnings;
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes the get_forum_discussions_paginated return value.
|
||||
*
|
||||
* @deprecated since 3.7
|
||||
* @return external_single_structure
|
||||
* @since Moodle 2.8
|
||||
*/
|
||||
public static function get_forum_discussions_paginated_returns() {
|
||||
return new external_single_structure(
|
||||
array(
|
||||
'discussions' => new external_multiple_structure(
|
||||
new external_single_structure(
|
||||
array(
|
||||
'id' => new external_value(PARAM_INT, 'Post id'),
|
||||
'name' => new external_value(PARAM_RAW, 'Discussion name'),
|
||||
'groupid' => new external_value(PARAM_INT, 'Group id'),
|
||||
'timemodified' => new external_value(PARAM_INT, 'Time modified'),
|
||||
'usermodified' => new external_value(PARAM_INT, 'The id of the user who last modified'),
|
||||
'timestart' => new external_value(PARAM_INT, 'Time discussion can start'),
|
||||
'timeend' => new external_value(PARAM_INT, 'Time discussion ends'),
|
||||
'discussion' => new external_value(PARAM_INT, 'Discussion id'),
|
||||
'parent' => new external_value(PARAM_INT, 'Parent id'),
|
||||
'userid' => new external_value(PARAM_INT, 'User who started the discussion id'),
|
||||
'created' => new external_value(PARAM_INT, 'Creation time'),
|
||||
'modified' => new external_value(PARAM_INT, 'Time modified'),
|
||||
'mailed' => new external_value(PARAM_INT, 'Mailed?'),
|
||||
'subject' => new external_value(PARAM_RAW, 'The post subject'),
|
||||
'message' => new external_value(PARAM_RAW, 'The post message'),
|
||||
'messageformat' => new external_format_value('message'),
|
||||
'messagetrust' => new external_value(PARAM_INT, 'Can we trust?'),
|
||||
'messageinlinefiles' => new external_files('post message inline files', VALUE_OPTIONAL),
|
||||
'attachment' => new external_value(PARAM_RAW, 'Has attachments?'),
|
||||
'attachments' => new external_files('attachments', VALUE_OPTIONAL),
|
||||
'totalscore' => new external_value(PARAM_INT, 'The post message total score'),
|
||||
'mailnow' => new external_value(PARAM_INT, 'Mail now?'),
|
||||
'userfullname' => new external_value(PARAM_TEXT, 'Post author full name'),
|
||||
'usermodifiedfullname' => new external_value(PARAM_TEXT, 'Post modifier full name'),
|
||||
'userpictureurl' => new external_value(PARAM_URL, 'Post author picture.'),
|
||||
'usermodifiedpictureurl' => new external_value(PARAM_URL, 'Post modifier picture.'),
|
||||
'numreplies' => new external_value(PARAM_INT, 'The number of replies in the discussion'),
|
||||
'numunread' => new external_value(PARAM_INT, 'The number of unread discussions.'),
|
||||
'pinned' => new external_value(PARAM_BOOL, 'Is the discussion pinned'),
|
||||
'locked' => new external_value(PARAM_BOOL, 'Is the discussion locked'),
|
||||
'canreply' => new external_value(PARAM_BOOL, 'Can the user reply to the discussion'),
|
||||
'canlock' => new external_value(PARAM_BOOL, 'Can the user lock the discussion'),
|
||||
), 'post'
|
||||
)
|
||||
),
|
||||
'warnings' => new external_warnings()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes the parameters for get_forum_discussions.
|
||||
*
|
||||
|
||||
@@ -881,208 +881,6 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$this->assertEquals(3, count($posts['posts']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get forum discussions paginated
|
||||
*/
|
||||
public function test_mod_forum_get_forum_discussions_paginated() {
|
||||
global $USER, $CFG, $DB, $PAGE;
|
||||
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
// Set the CFG variable to allow track forums.
|
||||
$CFG->forum_trackreadposts = true;
|
||||
|
||||
// Create a user who can track forums.
|
||||
$record = new \stdClass();
|
||||
$record->trackforums = true;
|
||||
$user1 = self::getDataGenerator()->create_user($record);
|
||||
// Create a bunch of other users to post.
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
$user4 = self::getDataGenerator()->create_user();
|
||||
|
||||
// Set the first created user to the test user.
|
||||
self::setUser($user1);
|
||||
|
||||
// Create courses to add the modules.
|
||||
$course1 = self::getDataGenerator()->create_course();
|
||||
|
||||
// First forum with tracking off.
|
||||
$record = new \stdClass();
|
||||
$record->course = $course1->id;
|
||||
$record->trackingtype = FORUM_TRACKING_OFF;
|
||||
$forum1 = self::getDataGenerator()->create_module('forum', $record);
|
||||
|
||||
// Add discussions to the forums.
|
||||
$record = new \stdClass();
|
||||
$record->course = $course1->id;
|
||||
$record->userid = $user1->id;
|
||||
$record->forum = $forum1->id;
|
||||
$discussion1 = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_discussion($record);
|
||||
|
||||
// Add three replies to the discussion 1 from different users.
|
||||
$record = new \stdClass();
|
||||
$record->discussion = $discussion1->id;
|
||||
$record->parent = $discussion1->firstpost;
|
||||
$record->userid = $user2->id;
|
||||
$discussion1reply1 = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_post($record);
|
||||
|
||||
$record->parent = $discussion1reply1->id;
|
||||
$record->userid = $user3->id;
|
||||
$discussion1reply2 = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_post($record);
|
||||
|
||||
$record->userid = $user4->id;
|
||||
$discussion1reply3 = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_post($record);
|
||||
|
||||
// Enrol the user in the first course.
|
||||
$enrol = enrol_get_plugin('manual');
|
||||
|
||||
// We don't use the dataGenerator as we need to get the $instance2 to unenrol later.
|
||||
$enrolinstances = enrol_get_instances($course1->id, true);
|
||||
foreach ($enrolinstances as $courseenrolinstance) {
|
||||
if ($courseenrolinstance->enrol == "manual") {
|
||||
$instance1 = $courseenrolinstance;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$enrol->enrol_user($instance1, $user1->id);
|
||||
|
||||
// Delete one user.
|
||||
delete_user($user4);
|
||||
|
||||
// Assign capabilities to view discussions for forum 1.
|
||||
$cm = get_coursemodule_from_id('forum', $forum1->cmid, 0, false, MUST_EXIST);
|
||||
$context = \context_module::instance($cm->id);
|
||||
$newrole = create_role('Role 2', 'role2', 'Role 2 description');
|
||||
$this->assignUserCapability('mod/forum:viewdiscussion', $context->id, $newrole);
|
||||
|
||||
// Create what we expect to be returned when querying the forums.
|
||||
|
||||
$post1 = $DB->get_record('forum_posts', array('id' => $discussion1->firstpost), '*', MUST_EXIST);
|
||||
|
||||
// User pictures are initially empty, we should get the links once the external function is called.
|
||||
$expecteddiscussions = array(
|
||||
'id' => $discussion1->firstpost,
|
||||
'name' => $discussion1->name,
|
||||
'groupid' => (int) $discussion1->groupid,
|
||||
'timemodified' => $discussion1reply3->created,
|
||||
'usermodified' => (int) $discussion1reply3->userid,
|
||||
'timestart' => (int) $discussion1->timestart,
|
||||
'timeend' => (int) $discussion1->timeend,
|
||||
'discussion' => $discussion1->id,
|
||||
'parent' => 0,
|
||||
'userid' => (int) $discussion1->userid,
|
||||
'created' => (int) $post1->created,
|
||||
'modified' => (int) $post1->modified,
|
||||
'mailed' => (int) $post1->mailed,
|
||||
'subject' => $post1->subject,
|
||||
'message' => $post1->message,
|
||||
'messageformat' => (int) $post1->messageformat,
|
||||
'messagetrust' => (int) $post1->messagetrust,
|
||||
'attachment' => $post1->attachment,
|
||||
'totalscore' => (int) $post1->totalscore,
|
||||
'mailnow' => (int) $post1->mailnow,
|
||||
'userfullname' => fullname($user1),
|
||||
'usermodifiedfullname' => fullname($user4),
|
||||
'userpictureurl' => '',
|
||||
'usermodifiedpictureurl' => '',
|
||||
'numreplies' => 3,
|
||||
'numunread' => 0,
|
||||
'pinned' => (bool) FORUM_DISCUSSION_UNPINNED,
|
||||
'locked' => false,
|
||||
'canreply' => false,
|
||||
'canlock' => false
|
||||
);
|
||||
|
||||
// Call the external function passing forum id.
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum1->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$expectedreturn = array(
|
||||
'discussions' => array($expecteddiscussions),
|
||||
'warnings' => array()
|
||||
);
|
||||
|
||||
// Wait the theme to be loaded (the external_api call does that) to generate the user profiles.
|
||||
$userpicture = new \user_picture($user1);
|
||||
$userpicture->size = 1; // Size f1.
|
||||
$expectedreturn['discussions'][0]['userpictureurl'] = $userpicture->get_url($PAGE)->out(false);
|
||||
|
||||
$userpicture = new \user_picture($user4);
|
||||
$userpicture->size = 1; // Size f1.
|
||||
$expectedreturn['discussions'][0]['usermodifiedpictureurl'] = $userpicture->get_url($PAGE)->out(false);
|
||||
|
||||
$this->assertEquals($expectedreturn, $discussions);
|
||||
|
||||
// Call without required view discussion capability.
|
||||
$this->unassignUserCapability('mod/forum:viewdiscussion', $context->id, $newrole);
|
||||
try {
|
||||
mod_forum_external::get_forum_discussions_paginated($forum1->id);
|
||||
$this->fail('Exception expected due to missing capability.');
|
||||
} catch (\moodle_exception $e) {
|
||||
$this->assertEquals('noviewdiscussionspermission', $e->errorcode);
|
||||
}
|
||||
|
||||
// Unenrol user from second course.
|
||||
$enrol->unenrol_user($instance1, $user1->id);
|
||||
|
||||
// Call for the second course we unenrolled the user from, make sure exception thrown.
|
||||
try {
|
||||
mod_forum_external::get_forum_discussions_paginated($forum1->id);
|
||||
$this->fail('Exception expected due to being unenrolled from the course.');
|
||||
} catch (\moodle_exception $e) {
|
||||
$this->assertEquals('requireloginerror', $e->errorcode);
|
||||
}
|
||||
|
||||
$this->setAdminUser();
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum1->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$this->assertTrue($discussions['discussions'][0]['canlock']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get forum discussions paginated (qanda forums)
|
||||
*/
|
||||
public function test_mod_forum_get_forum_discussions_paginated_qanda() {
|
||||
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
// Create courses to add the modules.
|
||||
$course = self::getDataGenerator()->create_course();
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
|
||||
// First forum with tracking off.
|
||||
$record = new \stdClass();
|
||||
$record->course = $course->id;
|
||||
$record->type = 'qanda';
|
||||
$forum = self::getDataGenerator()->create_module('forum', $record);
|
||||
|
||||
// Add discussions to the forums.
|
||||
$discussionrecord = new \stdClass();
|
||||
$discussionrecord->course = $course->id;
|
||||
$discussionrecord->userid = $user2->id;
|
||||
$discussionrecord->forum = $forum->id;
|
||||
$discussion = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_discussion($discussionrecord);
|
||||
|
||||
self::setAdminUser();
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
|
||||
$this->assertCount(1, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
|
||||
self::setUser($user1);
|
||||
$this->getDataGenerator()->enrol_user($user1->id, $course->id);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
|
||||
$this->assertCount(1, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get forum discussions
|
||||
*/
|
||||
@@ -1716,8 +1514,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$createddiscussion = mod_forum_external::add_discussion($forum->id, 'the subject', 'some text here...');
|
||||
$createddiscussion = external_api::clean_returnvalue(mod_forum_external::add_discussion_returns(), $createddiscussion);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
|
||||
$this->assertCount(1, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
@@ -1731,8 +1529,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
array('options' => array('name' => 'discussionpinned',
|
||||
'value' => true)));
|
||||
$discussion3 = mod_forum_external::add_discussion($forum->id, 'the non pinnedsubject', 'some 3 text here...');
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
$this->assertCount(3, $discussions['discussions']);
|
||||
$this->assertEquals($discussion2pinned['discussionid'], $discussions['discussions'][0]['discussion']);
|
||||
|
||||
@@ -1776,8 +1574,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$dummytext, -1, $options);
|
||||
$createddiscussion = external_api::clean_returnvalue(mod_forum_external::add_discussion_returns(), $createddiscussion);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
|
||||
$this->assertCount(4, $discussions['discussions']);
|
||||
$this->assertCount(0, $createddiscussion['warnings']);
|
||||
@@ -1860,8 +1658,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$discussion = mod_forum_external::add_discussion($forum->id, 'the subject', 'some text here...', $group->id);
|
||||
$discussion = external_api::clean_returnvalue(mod_forum_external::add_discussion_returns(), $discussion);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
|
||||
$this->assertCount(1, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
@@ -1872,8 +1670,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$discussion = mod_forum_external::add_discussion($forum->id, 'the subject', 'some text here...');
|
||||
$discussion = external_api::clean_returnvalue(mod_forum_external::add_discussion_returns(), $discussion);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
|
||||
$this->assertCount(2, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
@@ -1888,8 +1686,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$discussion = mod_forum_external::add_discussion($forum->id, 'the subject', 'some text here...');
|
||||
$discussion = external_api::clean_returnvalue(mod_forum_external::add_discussion_returns(), $discussion);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
|
||||
$this->assertCount(3, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
@@ -2323,8 +2121,8 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$discussionrecord->messagetrust = trusttext_trusted($context);
|
||||
$discussion2 = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_discussion($discussionrecord);
|
||||
|
||||
$discussions = mod_forum_external::get_forum_discussions_paginated($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_paginated_returns(), $discussions);
|
||||
$discussions = mod_forum_external::get_forum_discussions($forum->id);
|
||||
$discussions = external_api::clean_returnvalue(mod_forum_external::get_forum_discussions_returns(), $discussions);
|
||||
|
||||
$this->assertCount(2, $discussions['discussions']);
|
||||
$this->assertCount(0, $discussions['warnings']);
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
This files describes API changes in /mod/forum/*,
|
||||
information provided here is intended especially for developers.
|
||||
|
||||
=== 4.4 ===
|
||||
|
||||
* The mod_forum_get_forum_discussions_paginated web service has been removed from core.
|
||||
|
||||
=== 4.3 ===
|
||||
|
||||
* The forum_print_discussion_header function has been deprecated and will not be replaced.
|
||||
|
||||
Reference in New Issue
Block a user