mirror of
https://github.com/moodle/moodle.git
synced 2025-04-23 17:34:56 +02:00
MDL-41192 course: Added property-read cm_info::effectivegroupmode
This commit is contained in:
parent
d872881f2a
commit
6d04c4f2a2
@ -1929,18 +1929,13 @@ function course_get_cm_edit_actions(cm_info $mod, $indent = -1, $sr = null) {
|
||||
|
||||
// Groupmode.
|
||||
if ($hasmanageactivities and plugin_supports('mod', $mod->modname, FEATURE_GROUPS, 0)) {
|
||||
if ($mod->coursegroupmodeforce) {
|
||||
$modgroupmode = $mod->coursegroupmode;
|
||||
} else {
|
||||
$modgroupmode = $mod->groupmode;
|
||||
}
|
||||
if ($modgroupmode == SEPARATEGROUPS) {
|
||||
if ($mod->effectivegroupmode == SEPARATEGROUPS) {
|
||||
$nextgroupmode = VISIBLEGROUPS;
|
||||
$grouptitle = $str->groupsseparate;
|
||||
$forcedgrouptitle = $str->forcedgroupsseparate;
|
||||
$actionname = 'groupsseparate';
|
||||
$groupimage = 't/groups';
|
||||
} else if ($modgroupmode == VISIBLEGROUPS) {
|
||||
} else if ($mod->effectivegroupmode == VISIBLEGROUPS) {
|
||||
$nextgroupmode = NOGROUPS;
|
||||
$grouptitle = $str->groupsvisible;
|
||||
$forcedgrouptitle = $str->forcedgroupsvisible;
|
||||
|
@ -463,17 +463,19 @@ function groups_get_course_groupmode($course) {
|
||||
* Returns effective groupmode used in activity, course setting
|
||||
* overrides activity setting if groupmodeforce enabled.
|
||||
*
|
||||
* If $cm is an instance of cm_info it is easier to use $cm->effectivegroupmode
|
||||
*
|
||||
* @category group
|
||||
* @param cm_info|stdClass $cm the course module object. Only the ->course and ->groupmode need to be set.
|
||||
* @param stdClass $course object optional course object to improve perf
|
||||
* @return int group mode
|
||||
*/
|
||||
function groups_get_activity_groupmode($cm, $course=null) {
|
||||
if ($cm instanceof cm_info) {
|
||||
return $cm->effectivegroupmode;
|
||||
}
|
||||
if (isset($course->id) and $course->id == $cm->course) {
|
||||
//ok
|
||||
} else if (isset($cm->coursegroupmode) && isset($cm->coursegroupmodeforce)) {
|
||||
// This is an instance of cm_info (or clone) and already has the necessary course fields in it.
|
||||
return empty($cm->coursegroupmodeforce) ? $cm->groupmode : $cm->coursegroupmode;
|
||||
} else {
|
||||
// Get course object (reuse $COURSE if possible).
|
||||
$course = get_course($cm->course, false);
|
||||
|
@ -469,17 +469,20 @@ class course_modinfo extends stdClass {
|
||||
* course_modules table
|
||||
* @property-read int $visibleold Old visible setting (if the entire section is hidden, the previous value for
|
||||
* visible is stored in this field) - from course_modules table
|
||||
* @property-read int $groupmode Group mode (one of the constants NONE, SEPARATEGROUPS, or VISIBLEGROUPS) - from
|
||||
* course_modules table
|
||||
* @property-read int $groupmode Group mode (one of the constants NOGROUPS, SEPARATEGROUPS, or VISIBLEGROUPS) - from
|
||||
* course_modules table. Use {@link cm_info::$effectivegroupmode} to find the actual group mode that may be forced by course.
|
||||
* @property-read int $groupingid Grouping ID (0 = all groupings)
|
||||
* @property-read int $groupmembersonly Group members only (if set to 1, only members of a suitable group see this link on the
|
||||
* course page; 0 = everyone sees it even if they don't belong to a suitable group) - from
|
||||
* course_modules table
|
||||
* @property-read bool $coursegroupmodeforce Indicates whether the course containing the module has forced the groupmode
|
||||
* This means that cm_info::$groupmode should be ignored and cm_info::$coursegroupmode be used instead
|
||||
* @property-read int $coursegroupmode Group mode (one of the constants NONE, SEPARATEGROUPS, or VISIBLEGROUPS) - from
|
||||
* @property-read int $coursegroupmode Group mode (one of the constants NOGROUPS, SEPARATEGROUPS, or VISIBLEGROUPS) - from
|
||||
* course table - as specified for the course containing the module
|
||||
* Effective only if {@link cm_info::$coursegroupmodeforce} is set
|
||||
* @property-read int $effectivegroupmode Effective group mode for this module (one of the constants NOGROUPS, SEPARATEGROUPS,
|
||||
* or VISIBLEGROUPS). This can be different from groupmode set for the module if the groupmode is forced for the course.
|
||||
* This value will always be NOGROUPS if module type does not support group mode.
|
||||
* @property-read int $indent Indent level on course page (0 = no indent) - from course_modules table
|
||||
* @property-read int $completion Activity completion setting for this activity, COMPLETION_TRACKING_xx constant - from
|
||||
* course_modules table
|
||||
@ -875,6 +878,7 @@ class cm_info implements IteratorAggregate {
|
||||
'course' => 'get_course_id',
|
||||
'coursegroupmode' => 'get_course_groupmode',
|
||||
'coursegroupmodeforce' => 'get_course_groupmodeforce',
|
||||
'effectivegroupmode' => 'get_effective_groupmode',
|
||||
'extra' => false,
|
||||
'groupingid' => false,
|
||||
'groupmembersonly' => false,
|
||||
@ -1232,6 +1236,22 @@ class cm_info implements IteratorAggregate {
|
||||
return $this->modinfo->get_course()->groupmodeforce;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns effective groupmode of the module that may be overwritten by forced course groupmode.
|
||||
*
|
||||
* @return int one of constants NOGROUPS, SEPARATEGROUPS, VISIBLEGROUPS
|
||||
*/
|
||||
private function get_effective_groupmode() {
|
||||
$groupmode = $this->groupmode;
|
||||
if ($this->modinfo->get_course()->groupmodeforce) {
|
||||
$groupmode = $this->modinfo->get_course()->groupmode;
|
||||
if ($groupmode != NOGROUPS && !plugin_supports('mod', $this->modname, FEATURE_GROUPS, 0)) {
|
||||
$groupmode = NOGROUPS;
|
||||
}
|
||||
}
|
||||
return $groupmode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return context_module Current module context
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user