From 263017bbdd2eb4785e26cba8581cc0cd188954da Mon Sep 17 00:00:00 2001 From: mattc-catalyst Date: Thu, 6 Sep 2007 01:35:37 +0000 Subject: [PATCH] MDL-10888: groupings - mod/workshop - add grouping support --- course/lib.php | 45 ++++++++++++++++++++++++++++++++++++++++- course/mod.php | 17 +++++++++++++++- mod/workshop/assess.php | 2 ++ mod/workshop/lib.php | 6 +++--- mod/workshop/mod.html | 6 +++++- mod/workshop/view.php | 22 ++++++++++++++++++-- 6 files changed, 90 insertions(+), 8 deletions(-) diff --git a/course/lib.php b/course/lib.php index 16e16965a1..24b34cc537 100644 --- a/course/lib.php +++ b/course/lib.php @@ -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 ''; + echo ''.get_string('grouping', 'group').':'; + echo ''; + + $groupings; + $groupingid = isset($cm->groupingid) ? $cm->groupingid : 0; + + choose_from_menu($groupings, 'groupingid', $groupingid, get_string('none'), '', 0, false); + echo ''; + + $checked = empty($cm->groupmembersonly) ? '':'checked="checked"'; + echo ''; + echo ''.get_string('groupmembersonly', 'group').':'; + echo ''; + echo ""; + echo ''; + + } +} + /** * Print visibility setting form element on module setup forms in mod/.../mod.html */ diff --git a/course/mod.php b/course/mod.php index a6029d9114..49daf0f31b 100644 --- a/course/mod.php +++ b/course/mod.php @@ -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 diff --git a/mod/workshop/assess.php b/mod/workshop/assess.php index edafaa4d5f..5d76f4a9ca 100644 --- a/mod/workshop/assess.php +++ b/mod/workshop/assess.php @@ -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!"); } diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index 2670ff6d79..2fd8ee6159 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -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; diff --git a/mod/workshop/mod.html b/mod/workshop/mod.html index 0d63bdcee3..6d012a410b 100644 --- a/mod/workshop/mod.html +++ b/mod/workshop/mod.html @@ -403,7 +403,11 @@ helpbutton("releasegrades", get_string("releaseteachergrades", "workshop"), "workshop"); ?> - +groupings = true; +print_standard_coursemodule_settings($form, $features); +?>
diff --git a/mod/workshop/view.php b/mod/workshop/view.php index 843fdce58f..ae29d2dc61 100644 --- a/mod/workshop/view.php +++ b/mod/workshop/view.php @@ -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 "
"; @@ -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 -- 2.39.5