MDL-65033 mod_forum: Update existing function to include starring params

This commit is contained in:
Peter
2019-04-29 16:28:33 +08:00
committed by Peter
parent ac91531670
commit 279128bbc2
2 changed files with 17 additions and 0 deletions
+8
View File
@@ -592,6 +592,9 @@ class mod_forum_external extends external_api {
$canlock = has_capability('moodle/course:manageactivities', $modcontext, $USER);
$replies = forum_count_discussion_replies($forumid, $sort, -1, $page, $perpage, $canseeprivatereplies);
$usercontext = context_user::instance($USER->id);
$ufservice = core_favourites\service_factory::get_service_for_user_context($usercontext);
$canfavourite = has_capability('mod/forum:cantogglefavourite', $modcontext, $USER);
foreach ($alldiscussions as $discussion) {
// This function checks for qanda forums.
@@ -640,7 +643,10 @@ class mod_forum_external extends external_api {
$discussion->locked = forum_discussion_is_locked($forum, $discussion);
$discussion->canlock = $canlock;
$discussion->starred = $ufservice->favourite_exists('mod_forum', 'discussions',
$discussionrec->id, $modcontext);
$discussion->canreply = forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext);
$discussion->canfavourite = $canfavourite;
if (forum_is_author_hidden($discussion, $forum)) {
$discussion->userid = null;
@@ -730,8 +736,10 @@ class mod_forum_external extends external_api {
'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'),
'starred' => new external_value(PARAM_BOOL, 'Is the discussion starred'),
'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'),
'canfavourite' => new external_value(PARAM_BOOL, 'Can the user star the discussion'),
), 'post'
)
),
+9
View File
@@ -1073,6 +1073,8 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
'locked' => false,
'canreply' => false,
'canlock' => false,
'starred' => false,
'canfavourite' => true,
);
// Call the external function passing forum id.
@@ -1094,6 +1096,13 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
$this->assertEquals($expectedreturn, $discussions);
// Test the starring functionality return
$t = mod_forum_external::toggle_favourite_state($discussion1->id, 1);
$expectedreturn['discussions'][0]['starred'] = true;
$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->assertEquals($expectedreturn, $discussions);
// Call without required view discussion capability.
$this->unassignUserCapability('mod/forum:viewdiscussion', $context->id, $newrole);
try {