]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-10888: groupings - mod/workshop - add grouping support
authormattc-catalyst <mattc-catalyst>
Thu, 6 Sep 2007 01:35:37 +0000 (01:35 +0000)
committermattc-catalyst <mattc-catalyst>
Thu, 6 Sep 2007 01:35:37 +0000 (01:35 +0000)
course/lib.php
course/mod.php
mod/workshop/assess.php
mod/workshop/lib.php
mod/workshop/mod.html
mod/workshop/view.php

index 16e16965a1edc51934b776a7de60ec3e78c82fff..24b34cc537def73c686a51dda61596c726ab356e 100644 (file)
@@ -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
  */
index a6029d9114efdae705090116fa737cbd6cfd41e2..49daf0f31be5630ce83c22b1fca40629e33bbc67 100644 (file)
                 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;
                 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
index edafaa4d5fb3d079a9d55f790023efa7b80aa38e..5d76f4a9cab2d64b8989e166051cdaa91719b3e0 100644 (file)
@@ -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!");
                 }
index 2670ff6d799022a54b7387888fd081c98d56f239..2fd8ee6159a16958de4cdc70be3331a23a7419f1 100644 (file)
@@ -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;
 
index 0d63bdcee3ea32c40b6641819beafceda29ce3f9..6d012a410bdb2d720f111fa00c115ace4a4b1ef8 100644 (file)
             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">
index 843fdce58f3557570476a09f57ac61474ed96df5..ae29d2dc61c30c8203a39c92c25f71fed413a9e3 100644 (file)
         $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>";
             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();
                     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