diff --git a/mod/forum/classes/local/vaults/db_table_vault.php b/mod/forum/classes/local/vaults/db_table_vault.php index f7fc3899429..b78daf8cb66 100644 --- a/mod/forum/classes/local/vaults/db_table_vault.php +++ b/mod/forum/classes/local/vaults/db_table_vault.php @@ -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; diff --git a/mod/forum/externallib.php b/mod/forum/externallib.php index 4eb6e9744d1..c7175d4b746 100644 --- a/mod/forum/externallib.php +++ b/mod/forum/externallib.php @@ -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' ) ), diff --git a/mod/forum/tests/externallib_test.php b/mod/forum/tests/externallib_test.php index 90340a24797..4713818754d 100644 --- a/mod/forum/tests/externallib_test.php +++ b/mod/forum/tests/externallib_test.php @@ -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']); } /** diff --git a/mod/forum/tests/generator/lib.php b/mod/forum/tests/generator/lib.php index 5cae1678363..d8a9a7cb2c9 100644 --- a/mod/forum/tests/generator/lib.php +++ b/mod/forum/tests/generator/lib.php @@ -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'])) {