From 1fee2cd4e926678085ced049752999f2bbf57d02 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Tue, 4 Mar 2014 16:06:11 +0100 Subject: [PATCH] MDL-44408 Add "pagination" to WebService get_forum_discussions --- mod/forum/externallib.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mod/forum/externallib.php b/mod/forum/externallib.php index bbd9ccf10e4..81d3c80b973 100644 --- a/mod/forum/externallib.php +++ b/mod/forum/externallib.php @@ -161,6 +161,8 @@ class mod_forum_external extends external_api { array( 'forumids' => new external_multiple_structure(new external_value(PARAM_INT, 'forum ID', '', VALUE_REQUIRED, '', NULL_NOT_ALLOWED), 'Array of Forum IDs', VALUE_REQUIRED), + 'limitfrom' => new external_value(PARAM_INT, 'limit from', VALUE_OPTIONAL, 0), + 'limitnum' => new external_value(PARAM_INT, 'limit number', VALUE_OPTIONAL, 0) ) ); } @@ -170,17 +172,27 @@ class mod_forum_external extends external_api { * in a provided list of forums. * * @param array $forumids the forum ids + * @param int $limitfrom limit from SQL data + * @param int $limitnum limit number SQL data + * * @return array the forum discussion details * @since Moodle 2.5 */ - public static function get_forum_discussions($forumids) { + public static function get_forum_discussions($forumids, $limitfrom = 0, $limitnum = 0) { global $CFG, $DB, $USER; require_once($CFG->dirroot . "/mod/forum/lib.php"); // Validate the parameter. - $params = self::validate_parameters(self::get_forum_discussions_parameters(), array('forumids' => $forumids)); - $forumids = $params['forumids']; + $params = self::validate_parameters(self::get_forum_discussions_parameters(), + array( + 'forumids' => $forumids, + 'limitfrom' => $limitfrom, + 'limitnum' => $limitnum, + )); + $forumids = $params['forumids']; + $limitfrom = $params['limitfrom']; + $limitnum = $params['limitnum']; // Array to store the forum discussions to return. $arrdiscussions = array(); @@ -233,7 +245,7 @@ class mod_forum_external extends external_api { // The forum function returns the replies for all the discussions in a given forum. $replies = forum_count_discussion_replies($id); // Get the discussions for this forum. - if ($discussions = $DB->get_records('forum_discussions', array('forum' => $id))) { + if ($discussions = $DB->get_records('forum_discussions', array('forum' => $id), '', '*', $limitfrom, $limitnum)) { foreach ($discussions as $discussion) { // If the forum is of type qanda and the user has not posted in the discussion // we need to ensure that they have the required capability.