MDL-86857 core_courseformat: Deprecates set_coursemodule_groupmode

Deprecates set_coursemodule_groupmode in favor of core_courseformat\cmactions::set_groupmode
This commit is contained in:
Laurent David
2025-11-03 14:50:02 +01:00
parent 49df7a225f
commit de14abaf0e
12 changed files with 42 additions and 19 deletions
@@ -0,0 +1,7 @@
issueNumber: MDL-86857
notes:
core_course:
- message: >-
Deprecates set_coursemodule_groupmode in favor of
core_courseformat\cmactions::set_groupmode
type: deprecated
+2 -1
View File
@@ -27,6 +27,7 @@
defined('MOODLE_INTERNAL') || die;
use core_course\external\course_summary_exporter;
use core_courseformat\formatactions;
use core_external\external_api;
use core_external\external_description;
use core_external\external_files;
@@ -3749,7 +3750,7 @@ class core_course_external extends external_api {
} else {
$newgroupmode = NOGROUPS;
}
if (set_coursemodule_groupmode($cm->id, $newgroupmode)) {
if (formatactions::cm($coursecontext->instanceid)->set_groupmode($cm->id, $newgroupmode)) {
\core\event\course_module_updated::create_from_cm($cm, $modcontext)->trigger();
}
break;
+10 -8
View File
@@ -614,15 +614,17 @@ function course_add_cm_to_section($courseorid, $cmid, $sectionnum, $beforemod =
* @param int $groupmode the new groupmode value.
* @return bool True if the $groupmode was updated.
*/
#[\core\attribute\deprecated(
replacement: 'core_courseformat\local\cmactions',
since: '5.2',
mdl: 'MDL-86857',
reason: 'Replaced by an equivalent in the course format cmactions.',
)]
function set_coursemodule_groupmode($id, $groupmode) {
global $DB;
$cm = $DB->get_record('course_modules', array('id' => $id), 'id,course,groupmode', MUST_EXIST);
if ($cm->groupmode != $groupmode) {
$DB->set_field('course_modules', 'groupmode', $groupmode, array('id' => $cm->id));
\course_modinfo::purge_course_module_cache($cm->course, $cm->id);
rebuild_course_cache($cm->course, false, true);
}
return ($cm->groupmode != $groupmode);
\core\deprecation::emit_deprecation(__FUNCTION__);
$coursecontext = context_module::instance($id)->get_course_context();
return formatactions::cm($coursecontext->instanceid)->set_groupmode($id, $groupmode);
}
function set_coursemodule_idnumber($id, $idnumber) {
+3 -1
View File
@@ -23,6 +23,8 @@
* @package course
*/
use core_courseformat\formatactions;
require("../config.php");
require_once("lib.php");
@@ -336,7 +338,7 @@ if ((!empty($movetosection) or !empty($moveto)) and confirm_sesskey()) {
$modcontext = context_module::instance($cm->id);
require_capability('moodle/course:manageactivities', $modcontext);
set_coursemodule_groupmode($cm->id, $groupmode);
formatactions::cm($coursecontext->instanceid)->set_groupmode($cm->id, $groupmode);
\core\event\course_module_updated::create_from_cm($cm, $modcontext)->trigger();
redirect(course_get_url($course, $cm->sectionnum, $urloptions));
@@ -17,6 +17,7 @@
namespace core_enrol;
use context_course;
use core_courseformat\formatactions;
use course_enrolment_manager;
use stdClass;
@@ -593,7 +594,7 @@ final class course_enrolment_manager_test extends \advanced_testcase {
// Switch course to separate groups and forum to no group.
$this->course->groupmode = SEPARATEGROUPS;
update_course($this->course);
set_coursemodule_groupmode($forum->cmid, NOGROUPS);
formatactions::cm($this->course->id)->set_groupmode($forum->cmid, NOGROUPS);
$courseusers = (new course_enrolment_manager($PAGE, $this->course))->search_users('', false, 0, 25, true);
$this->assertEqualsCanonicalizing([
@@ -615,7 +616,7 @@ final class course_enrolment_manager_test extends \advanced_testcase {
], array_column($forumusers['users'], 'username'));
$this->assertEquals(7, $forumusers['totalusers']);
set_coursemodule_groupmode($forum->cmid, SEPARATEGROUPS);
formatactions::cm($this->course->id)->set_groupmode($forum->cmid, SEPARATEGROUPS);
// Allow teacher to access all groups.
$roleid = $DB->get_field('role', 'id', ['shortname' => 'teacher']);
+2 -1
View File
@@ -16,6 +16,7 @@
namespace core_enrol;
use core_courseformat\formatactions;
use core_enrol_external;
use core_external\external_api;
use enrol_user_enrolment_form;
@@ -1479,7 +1480,7 @@ final class externallib_test extends \core_external\tests\externallib_testcase {
$this->assertCount(7, $result);
// Now change the group mode to no groups.
set_coursemodule_groupmode($forum->cmid, NOGROUPS);
formatactions::cm($course->id)->set_groupmode($forum->cmid, NOGROUPS);
$this->setUser($teacher1);
$result = core_enrol_external::search_users($course->id, 'user', true, 0, 30, $contextid);
$this->assertCount(7, $result);
@@ -27,6 +27,7 @@ namespace mod_bigbluebuttonbn;
use calendar_event;
use context_module;
use core_courseformat\formatactions;
use mod_bigbluebuttonbn\test\testcase_helper_trait;
use mod_bigbluebuttonbn_mod_form;
use MoodleQuickForm;
@@ -136,7 +137,7 @@ final class lib_test extends \advanced_testcase {
$datagenerator = $this->getDataGenerator();
list($bbactivitycontext, $bbactivitycm, $bbactivity) = $this->create_instance();
$course = $this->get_course();
set_coursemodule_groupmode($bbactivitycm->id, VISIBLEGROUPS);
formatactions::cm($this->course->id)->set_groupmode($bbactivitycm->id, VISIBLEGROUPS);
$groups = [];
foreach (['G1', 'G2'] as $gname) {
+2 -1
View File
@@ -24,6 +24,7 @@
*/
namespace mod_data;
use core_courseformat\formatactions;
use stdClass;
defined('MOODLE_INTERNAL') || die();
@@ -1158,7 +1159,7 @@ final class lib_test extends \advanced_testcase {
$field1 = $datagenerator->create_field($fieldrecord, $data1);
$data2 = $this->getDataGenerator()->create_module('data', array('course' => $course2->id));
$field2 = $datagenerator->create_field($fieldrecord, $data2);
set_coursemodule_groupmode($data2->cmid, SEPARATEGROUPS);
formatactions::cm($course1->id)->set_groupmode($data2->cmid, SEPARATEGROUPS);
$record11 = $datagenerator->create_entry($data1, [$field1->field->id => 'value11'],
0, ['Cats', 'Dogs']);
+3 -1
View File
@@ -26,6 +26,8 @@
namespace mod_data\search;
use core_courseformat\formatactions;
defined('MOODLE_INTERNAL') || die();
global $CFG;
@@ -643,7 +645,7 @@ final class search_test extends \advanced_testcase {
$this->assertTrue($searcharea->restrict_cm_access_by_group($modinfo->get_cm($data->cmid)));
// In visible groups mode, it won't request restriction by group.
set_coursemodule_groupmode($data->cmid, VISIBLEGROUPS);
formatactions::cm($course->id)->set_groupmode($data->cmid, VISIBLEGROUPS);
$modinfo = get_fast_modinfo($course);
$this->assertFalse($searcharea->restrict_cm_access_by_group($modinfo->get_cm($data->cmid)));
}
@@ -25,6 +25,8 @@
namespace mod_forum\search;
use core_courseformat\formatactions;
defined('MOODLE_INTERNAL') || die();
global $CFG;
@@ -288,7 +290,7 @@ final class search_test extends \advanced_testcase {
$this->assertTrue($searcharea->restrict_cm_access_by_group($modinfo->get_cm($forum->cmid)));
// In visible groups mode, it won't request restriction by group.
set_coursemodule_groupmode($forum->cmid, VISIBLEGROUPS);
formatactions::cm($course->id)->set_groupmode($forum->cmid, VISIBLEGROUPS);
$modinfo = get_fast_modinfo($course);
$this->assertFalse($searcharea->restrict_cm_access_by_group($modinfo->get_cm($forum->cmid)));
}
+3 -1
View File
@@ -24,6 +24,8 @@
*/
namespace mod_wiki\search;
use core_courseformat\formatactions;
defined('MOODLE_INTERNAL') || die();
global $CFG;
@@ -194,7 +196,7 @@ final class search_test extends \advanced_testcase {
$this->assertTrue($searcharea->restrict_cm_access_by_group($modinfo->get_cm($wiki->cmid)));
// In visible groups mode, it won't request restriction by group.
set_coursemodule_groupmode($wiki->cmid, VISIBLEGROUPS);
formatactions::cm($course->id)->set_groupmode($wiki->cmid, VISIBLEGROUPS);
$modinfo = get_fast_modinfo($course);
$this->assertFalse($searcharea->restrict_cm_access_by_group($modinfo->get_cm($wiki->cmid)));
}
+2 -1
View File
@@ -25,6 +25,7 @@
namespace core_rating;
use core_courseformat\formatactions;
use core_external\external_api;
use core_rating_external;
@@ -213,7 +214,7 @@ final class externallib_test extends \core_external\tests\externallib_testcase {
}
// Test for groupmode.
set_coursemodule_groupmode($this->forum->cmid, SEPARATEGROUPS);
formatactions::cm($this->course->id)->set_groupmode($this->forum->cmid, SEPARATEGROUPS);
$group = $this->getDataGenerator()->create_group(array('courseid' => $this->course->id));
groups_add_member($group, $this->teacher1);