MDL-10888: groupings - mod/workshop - add grouping support
This commit is contained in:
+44
-1
@@ -2430,11 +2430,14 @@ function course_in_meta ($course) {
|
||||
/**
|
||||
* Print standard form elements on module setup forms in mod/.../mod.html
|
||||
*/
|
||||
function print_standard_coursemodule_settings($form) {
|
||||
function print_standard_coursemodule_settings($form, $features=null) {
|
||||
if (! $course = get_record('course', 'id', $form->course)) {
|
||||
error("This course doesn't exist");
|
||||
}
|
||||
print_groupmode_setting($form, $course);
|
||||
if (!empty($features->groupings)) {
|
||||
print_grouping_settings($form, $course);
|
||||
}
|
||||
print_visible_setting($form, $course);
|
||||
}
|
||||
|
||||
@@ -2470,6 +2473,46 @@ function print_groupmode_setting($form, $course=NULL) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print groupmode form element on module setup forms in mod/.../mod.html
|
||||
*/
|
||||
function print_grouping_settings($form, $course=NULL) {
|
||||
|
||||
if (empty($course)) {
|
||||
if (! $course = get_record('course', 'id', $form->course)) {
|
||||
error("This course doesn't exist");
|
||||
}
|
||||
}
|
||||
if ($form->coursemodule) {
|
||||
if (! $cm = get_record('course_modules', 'id', $form->coursemodule)) {
|
||||
error("This course module doesn't exist");
|
||||
}
|
||||
} else {
|
||||
$cm = null;
|
||||
}
|
||||
|
||||
$groupings = get_records_menu('groupings', 'courseid', $course->id, 'name', 'id, name');
|
||||
if (!empty($groupings)) {
|
||||
echo '<tr valign="top">';
|
||||
echo '<td align="right"><b>'.get_string('grouping', 'group').':</b></td>';
|
||||
echo '<td align="left">';
|
||||
|
||||
$groupings;
|
||||
$groupingid = isset($cm->groupingid) ? $cm->groupingid : 0;
|
||||
|
||||
choose_from_menu($groupings, 'groupingid', $groupingid, get_string('none'), '', 0, false);
|
||||
echo '</td></tr>';
|
||||
|
||||
$checked = empty($cm->groupmembersonly) ? '':'checked="checked"';
|
||||
echo '<tr valign="top">';
|
||||
echo '<td align="right"><b>'.get_string('groupmembersonly', 'group').':</b></td>';
|
||||
echo '<td align="left">';
|
||||
echo "<input type=\"checkbox\" name=\"groupmembersonly\" value=\"1\" $checked />";
|
||||
echo '</td></tr>';
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print visibility setting form element on module setup forms in mod/.../mod.html
|
||||
*/
|
||||
|
||||
+16
-1
@@ -135,6 +135,14 @@
|
||||
if (isset($mod->groupmode)) {
|
||||
set_coursemodule_groupmode($mod->coursemodule, $mod->groupmode);
|
||||
}
|
||||
|
||||
if (isset($mod->groupingid)) {
|
||||
set_coursemodule_groupingid($mod->coursemodule, $mod->groupingid);
|
||||
}
|
||||
|
||||
if (isset($mod->groupmembersonly)) {
|
||||
set_coursemodule_groupmembersonly($mod->coursemodule, $mod->groupmembersonly);
|
||||
}
|
||||
|
||||
if (isset($mod->redirect)) {
|
||||
$SESSION->returnpage = $mod->redirecturl;
|
||||
@@ -176,7 +184,14 @@
|
||||
if (!isset($mod->groupmode)) { // to deal with pre-1.5 modules
|
||||
$mod->groupmode = $course->groupmode; /// Default groupmode the same as course
|
||||
}
|
||||
|
||||
|
||||
if (isset($mod->groupingid)) {
|
||||
set_coursemodule_groupingid($mod->coursemodule, $mod->groupingid);
|
||||
}
|
||||
|
||||
if (isset($mod->groupmembersonly)) {
|
||||
set_coursemodule_groupmembersonly($mod->coursemodule, $mod->groupmembersonly);
|
||||
}
|
||||
$mod->instance = $return;
|
||||
|
||||
// course_modules and course_sections each contain a reference
|
||||
|
||||
@@ -93,6 +93,8 @@
|
||||
$assessment->timegraded = 0;
|
||||
$assessment->timeagreed = 0;
|
||||
$assessment->resubmission = 0;
|
||||
$assessment->generalcomment = '';
|
||||
$assessment->teachercomment = '';
|
||||
if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
|
||||
error("Could not insert workshop assessment!");
|
||||
}
|
||||
|
||||
@@ -1121,7 +1121,8 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $co
|
||||
}
|
||||
|
||||
$posts = get_records_sql("SELECT s.*, u.firstname, u.lastname,
|
||||
u.picture, cm.instance, w.name, cm.section
|
||||
u.picture, cm.instance, w.name, cm.section, cm.groupmode,
|
||||
cm.course, cm.groupingid, cm.groupmembersonly
|
||||
FROM {$CFG->prefix}workshop_submissions s,
|
||||
{$CFG->prefix}user u,
|
||||
{$CFG->prefix}course_modules cm,
|
||||
@@ -1140,8 +1141,7 @@ function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $co
|
||||
}
|
||||
|
||||
foreach ($posts as $post) {
|
||||
|
||||
if (empty($groupid) || groups_is_member($groupid, $post->userid)) {
|
||||
if ((empty($groupid) || groups_is_member($groupid, $post->userid)) && groups_course_module_visible($post)) {
|
||||
|
||||
$tmpactivity = new Object;
|
||||
|
||||
|
||||
@@ -403,7 +403,11 @@
|
||||
helpbutton("releasegrades", get_string("releaseteachergrades", "workshop"), "workshop");
|
||||
?></td>
|
||||
</tr>
|
||||
<?php print_standard_coursemodule_settings($form); ?>
|
||||
<?php
|
||||
$features = new stdClass;
|
||||
$features->groupings = true;
|
||||
print_standard_coursemodule_settings($form, $features);
|
||||
?>
|
||||
</table>
|
||||
<br />
|
||||
<div class="boxaligncenter">
|
||||
|
||||
+20
-2
@@ -309,8 +309,9 @@
|
||||
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
|
||||
|
||||
/// find out current groups mode
|
||||
$groupmode = groupmode($course, $cm);
|
||||
$currentgroup = setup_and_print_groups($course, $groupmode, "view.php?id=$cm->id");
|
||||
$groupmode = groups_get_activity_groupmode($cm);
|
||||
$currentgroup = groups_get_activity_group($cm, true);
|
||||
groups_print_activity_menu($cm, "view.php?id=$cm->id");
|
||||
|
||||
/// Print admin links
|
||||
echo "<table width=\"100%\"><tr><td>";
|
||||
@@ -368,6 +369,15 @@
|
||||
print_footer($course);
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!empty($CFG->enablegroupings) && !empty($cm->groupingid) && !empty($users)) {
|
||||
$groupingusers = groups_get_grouping_members($cm->groupingid, 'u.id', 'u.id');
|
||||
foreach($users as $key => $user) {
|
||||
if (!isset($groupingusers[$user->id])) {
|
||||
unset($users[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Now prepare table with student assessments and submissions
|
||||
$tablesort->data = array();
|
||||
@@ -506,6 +516,14 @@
|
||||
FROM {$CFG->prefix}groups_members g, {$CFG->prefix}workshop_assessments a
|
||||
WHERE g.groupid = $currentgroup AND a.userid = g.userid AND a.timegraded > 0
|
||||
AND a.workshopid = $workshop->id");
|
||||
} elseif (!empty($cm->groupingid) && !empty($CFG->enablegroupings)) {
|
||||
$stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean,
|
||||
STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max
|
||||
FROM {$CFG->prefix}workshop_assessments a
|
||||
INNER JOIN {$CFG->prefix}groups_members g ON a.userid = g.userid
|
||||
INNER JOIN {$CFG->prefix}groupings_groups gg ON g.groupid = gg.groupid
|
||||
WHERE gg.groupingid = {$cm->groupingid} AND a.timegraded > 0
|
||||
AND a.workshopid = $workshop->id");
|
||||
} else { // no group/all participants
|
||||
$stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean,
|
||||
STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max
|
||||
|
||||
Reference in New Issue
Block a user