From a3c315dda2a0adbc877a35a93f3bd686f5c7884c Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Tue, 31 Mar 2015 12:25:10 +0200 Subject: [PATCH] MDL-49503 forum: New external function mod_forum_view_forum_discussion --- mod/forum/externallib.php | 64 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/mod/forum/externallib.php b/mod/forum/externallib.php index b275d027c7c..6f2823a346f 100644 --- a/mod/forum/externallib.php +++ b/mod/forum/externallib.php @@ -872,4 +872,68 @@ class mod_forum_external extends external_api { ); } + /** + * Returns description of method parameters + * + * @return external_function_parameters + * @since Moodle 2.9 + */ + public static function view_forum_discussion_parameters() { + return new external_function_parameters( + array( + 'discussionid' => new external_value(PARAM_INT, 'discussion id') + ) + ); + } + + /** + * Simulate the forum/discuss.php web interface page: trigger events + * + * @param int $discussionid the discussion id + * @return array of warnings and status result + * @since Moodle 2.9 + * @throws moodle_exception + */ + public static function view_forum_discussion($discussionid) { + global $DB, $CFG; + require_once($CFG->dirroot . "/mod/forum/lib.php"); + + $params = self::validate_parameters(self::view_forum_discussion_parameters(), + array( + 'discussionid' => $discussionid + )); + $warnings = array(); + + $discussion = $DB->get_record('forum_discussions', array('id' => $params['discussionid']), '*', MUST_EXIST); + $forum = $DB->get_record('forum', array('id' => $discussion->forum), '*', MUST_EXIST); + list($course, $cm) = get_course_and_cm_from_instance($forum, 'forum'); + + // 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); + + // Call the forum/lib API. + forum_discussion_view($modcontext, $forum, $discussion); + + $result = array(); + $result['status'] = true; + $result['warnings'] = $warnings; + return $result; + } + + /** + * Returns description of method result value + * + * @return external_description + * @since Moodle 2.9 + */ + public static function view_forum_discussion_returns() { + return new external_single_structure( + array( + 'status' => new external_value(PARAM_BOOL, 'status: true if success'), + 'warnings' => new external_warnings() + ) + ); + } + }