MDL-65032 mod_forum: Update existing function to include lock params

This commit is contained in:
Peter 2019-04-24 12:50:35 +08:00
parent bdb4a87daa
commit 565cccfafa
4 changed files with 14 additions and 5 deletions

View File

@ -40,7 +40,7 @@ abstract class db_table_vault {
private $db;
/** @var entity_factory $entityfactory Entity factory */
private $entityfactory;
/** @var legacy_factor $legacyfactory Entity->legacy factory */
/** @var object $legacyfactory Entity->legacy factory */
private $legacyfactory;
/**
@ -53,7 +53,7 @@ abstract class db_table_vault {
public function __construct(
moodle_database $db,
entity_factory $entityfactory,
object $legacyfactory
$legacyfactory
) {
$this->db = $db;
$this->entityfactory = $entityfactory;

View File

@ -588,6 +588,7 @@ class mod_forum_external extends external_api {
}
// 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) {
@ -636,7 +637,8 @@ class mod_forum_external extends external_api {
$discussion->messageinlinefiles = $messageinlinefiles;
}
$discussion->timelocked = forum_discussion_is_locked($forum, $discussion);
$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)) {
@ -728,6 +730,7 @@ class mod_forum_external extends external_api {
'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'
)
),

View File

@ -985,6 +985,7 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
'pinned' => FORUM_DISCUSSION_UNPINNED,
'locked' => false,
'canreply' => false,
'canlock' => false,
);
// Call the external function passing forum id.
@ -1025,6 +1026,11 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
} 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']);
}
/**

View File

@ -193,8 +193,8 @@ class mod_forum_generator extends testing_module_generator {
$record['pinned'] = FORUM_DISCUSSION_UNPINNED;
}
if (!isset($record['locked'])) {
$record['locked'] = 0;
if (!isset($record['timelocked'])) {
$record['timelocked'] = 0;
}
if (isset($record['mailed'])) {