MDL-37085 fixed mess with code overwriting cm_info properties

In case when groupmode is forced by the course we should take it from the
course and not overwrite cm_info::groupmode externally
This commit is contained in:
Marina Glancy 2012-12-13 14:27:11 +08:00
parent 7e29340f7c
commit 5c016ab30d
4 changed files with 34 additions and 45 deletions

View File

@ -65,9 +65,6 @@ class block_site_main_menu extends block_list {
$modinfo = get_fast_modinfo($course);
$section = $modinfo->get_section_info(0);
$groupbuttons = $course->groupmode;
$groupbuttonslink = (!$course->groupmodeforce);
if ($ismoving) {
$strmovehere = get_string('movehere');
$strmovefull = strip_tags(get_string('movefull', '', "'$USER->activitycopyname'"));
@ -90,14 +87,6 @@ class block_site_main_menu extends block_list {
continue;
}
if (!$ismoving) {
if ($groupbuttons) {
if (! $mod->groupmodelink = $groupbuttonslink) {
$mod->groupmode = $course->groupmode;
}
} else {
$mod->groupmode = false;
}
$editbuttons = '<div class="buttons">'.make_editing_buttons($mod, true, true).'</div>';
} else {
$editbuttons = '';

View File

@ -67,9 +67,6 @@ class block_social_activities extends block_list {
$modinfo = get_fast_modinfo($course);
$section = $modinfo->get_section_info(0);
$groupbuttons = $course->groupmode;
$groupbuttonslink = (!$course->groupmodeforce);
if ($ismoving) {
$strmovehere = get_string('movehere');
$strmovefull = strip_tags(get_string('movefull', '', "'$USER->activitycopyname'"));
@ -92,14 +89,6 @@ class block_social_activities extends block_list {
continue;
}
if (!$ismoving) {
if ($groupbuttons) {
if (! $mod->groupmodelink = $groupbuttonslink) {
$mod->groupmode = $course->groupmode;
}
} else {
$mod->groupmode = false;
}
$editbuttons = '<br />'.make_editing_buttons($mod, true, true);
} else {
$editbuttons = '';

View File

@ -1339,8 +1339,6 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
static $initialised;
static $groupbuttons;
static $groupbuttonslink;
static $isediting;
static $ismoving;
static $movingpix;
@ -1348,8 +1346,6 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
static $strunreadpostsone;
if (!isset($initialised)) {
$groupbuttons = ($course->groupmode or (!$course->groupmodeforce));
$groupbuttonslink = (!$course->groupmodeforce);
$isediting = $PAGE->user_is_editing();
$ismoving = $isediting && ismoving($course->id);
if ($ismoving) {
@ -1504,13 +1500,13 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
}
// If specified, display extra content after link.
if ($content) {
$contentpart = html_writer::tag('div', $content, array('class' =>
trim('contentafterlink ' . $textclasses)));
}
} else {
// No link, so display only content.
$contentpart = html_writer::tag('div', $accesstext . $content, array('class' => $textclasses));
if ($content) {
$contentpart = html_writer::tag('div', $content, array('class' =>
trim('contentafterlink ' . $textclasses)));
}
} else {
// No link, so display only content.
$contentpart = html_writer::tag('div', $accesstext . $content, array('class' => $textclasses));
}
// Module can put text after the link (e.g. forum unread)
@ -1530,14 +1526,6 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
}
if ($isediting) {
if ($groupbuttons and plugin_supports('mod', $mod->modname, FEATURE_GROUPS, 0)) {
if (! $mod->groupmodelink = $groupbuttonslink) {
$mod->groupmode = $course->groupmode;
}
} else {
$mod->groupmode = false;
}
echo make_editing_buttons($mod, $absolute, true, $mod->indent, $sectionreturn);
echo $mod->get_after_edit_icons();
}
@ -3074,14 +3062,19 @@ function course_get_cm_edit_actions(cm_info $mod, $indent = -1, $sr = null) {
}
// groupmode
if ($hasmanageactivities and $mod->groupmode !== false) {
if ($mod->groupmode == SEPARATEGROUPS) {
if ($hasmanageactivities and plugin_supports('mod', $mod->modname, FEATURE_GROUPS, 0)) {
if ($mod->coursegroupmodeforce) {
$modgroupmode = $mod->coursegroupmode;
} else {
$modgroupmode = $mod->groupmode;
}
if ($modgroupmode == SEPARATEGROUPS) {
$groupmode = NOGROUPS;
$grouptitle = $str->groupsseparate;
$forcedgrouptitle = $str->forcedgroupsseparate;
$actionname = 'groupsseparate';
$groupimage = 't/groups';
} else if ($mod->groupmode == VISIBLEGROUPS) {
} else if ($modgroupmode == VISIBLEGROUPS) {
$groupmode = SEPARATEGROUPS;
$grouptitle = $str->groupsvisible;
$forcedgrouptitle = $str->forcedgroupsvisible;
@ -3094,7 +3087,7 @@ function course_get_cm_edit_actions(cm_info $mod, $indent = -1, $sr = null) {
$actionname = 'groupsnone';
$groupimage = 't/groupn';
}
if ($mod->groupmodelink) {
if (!$mod->coursegroupmodeforce) {
$actions[$actionname] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'groupmode' => $groupmode)),
new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall', 'title' => '')),

View File

@ -500,6 +500,22 @@ class cm_info extends stdClass {
*/
public $groupmembersonly;
/**
* 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
* @var bool
*/
public $coursegroupmodeforce;
/**
* Group mode (one of the constants NONE, SEPARATEGROUPS, or VISIBLEGROUPS) - from
* course table - as specified for the course containing the module
* Effective only if cm_info::$coursegroupmodeforce is set
* @var int
*/
public $coursegroupmode;
/**
* Indent level on course page (0 = no indent) - from course_modules table
* @var int
@ -1063,6 +1079,8 @@ class cm_info extends stdClass {
$this->groupmode = isset($mod->groupmode) ? $mod->groupmode : 0;
$this->groupingid = isset($mod->groupingid) ? $mod->groupingid : 0;
$this->groupmembersonly = isset($mod->groupmembersonly) ? $mod->groupmembersonly : 0;
$this->coursegroupmodeforce = $course->groupmodeforce;
$this->coursegroupmode = $course->groupmode;
$this->indent = isset($mod->indent) ? $mod->indent : 0;
$this->extra = isset($mod->extra) ? $mod->extra : '';
$this->extraclasses = isset($mod->extraclasses) ? $mod->extraclasses : '';