MDL-65033 mod_forum: Update existing function to include starring params
This commit is contained in:
@@ -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'
|
||||
)
|
||||
),
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user