diff --git a/mod/forum/db/services.php b/mod/forum/db/services.php index 9e94d830a4d..4977e5a46f7 100644 --- a/mod/forum/db/services.php +++ b/mod/forum/db/services.php @@ -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', diff --git a/mod/forum/externallib.php b/mod/forum/externallib.php index 670c5894a93..61b19525c4d 100644 --- a/mod/forum/externallib.php +++ b/mod/forum/externallib.php @@ -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. * diff --git a/mod/forum/tests/externallib_test.php b/mod/forum/tests/externallib_test.php index a42f8a4f2cb..786f350c8cc 100644 --- a/mod/forum/tests/externallib_test.php +++ b/mod/forum/tests/externallib_test.php @@ -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']); diff --git a/mod/forum/upgrade.txt b/mod/forum/upgrade.txt index 163dc464157..fc40a9a63cc 100644 --- a/mod/forum/upgrade.txt +++ b/mod/forum/upgrade.txt @@ -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.