From: mattc-catalyst Date: Tue, 28 Aug 2007 02:54:37 +0000 (+0000) Subject: MDL-10888: - groupings - mod/scorm - updated to support groupings X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=d8c9d8a1502cdfab2aa40f7d96b27227b9101d94;p=moodle.git MDL-10888: - groupings - mod/scorm - updated to support groupings --- diff --git a/lib/datalib.php b/lib/datalib.php index 4b26e82e1c..73bc9aa8e2 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -1303,7 +1303,7 @@ function get_all_instances_in_course($modulename, $course, $userid=NULL, $includ return array(); } - if (!$rawmods = get_records_sql("SELECT cm.id as coursemodule, m.*,cw.section,cm.visible as visible,cm.groupmode + if (!$rawmods = get_records_sql("SELECT cm.id as coursemodule, m.*,cw.section,cm.visible as visible,cm.groupmode,cm.groupingid FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}course_sections cw, {$CFG->prefix}modules md, diff --git a/mod/scorm/index.php b/mod/scorm/index.php index 4b0d4c41c8..92c9ee8a0c 100755 --- a/mod/scorm/index.php +++ b/mod/scorm/index.php @@ -1,6 +1,7 @@ id, '', '', '', '', 'count(distinct(userid)) as c'); - if ($trackedusers->c > 0) { - $reportshow = ''.get_string('viewallreports','scorm',$trackedusers->c).''; + $trackedusers = scorm_get_count_users($scorm->id, $scorm->groupingid); + if ($trackedusers > 0) { + $reportshow = ''.get_string('viewallreports','scorm',$trackedusers).''; } else { $reportshow = get_string('noreports','scorm'); } diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index e50faa663f..95c29fa158 100755 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -960,4 +960,26 @@ function scorm_check_package($data) { return $validation; } + +function scorm_get_count_users($scormid, $groupingid=null) { + + global $CFG; + + if (!empty($CFG->enablegroupings) && !empty($groupingid)) { + $sql = "SELECT COUNT(DISTINCT st.userid) + FROM {$CFG->prefix}scorm_scoes_track st + INNER JOIN {$CFG->prefix}groups_members gm ON st.userid = gm.userid + INNER JOIN {$CFG->prefix}groupings_groups gg ON gm.groupid = gg.groupid + WHERE st.scormid = $scormid AND gg.groupingid = $groupingid + "; + } else { + $sql = "SELECT COUNT(DISTINCT st.userid) + FROM {$CFG->prefix}scorm_scoes_track st + WHERE st.scormid = $scormid + "; + } + + return(count_records_sql($sql)); +} + ?> diff --git a/mod/scorm/mod_form.php b/mod/scorm/mod_form.php index 95bc3a4a85..a3758f7d73 100644 --- a/mod/scorm/mod_form.php +++ b/mod/scorm/mod_form.php @@ -186,7 +186,11 @@ class mod_scorm_mod_form extends moodleform_mod { //------------------------------------------------------------------------------- - $this->standard_coursemodule_elements(); + $features = new stdClass; + $features->groups = false; + $features->groupings = true; + $features->groupmembersonly = true; + $this->standard_coursemodule_elements($features); //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(); diff --git a/mod/scorm/report.php b/mod/scorm/report.php index 19c8f77322..6be8b3c544 100755 --- a/mod/scorm/report.php +++ b/mod/scorm/report.php @@ -100,7 +100,24 @@ if (empty($b)) { if (empty($a)) { // No options, show the global scorm report - if ($scousers=get_records_select('scorm_scoes_track', "scormid='$scorm->id' GROUP BY userid,scormid", "", "userid,scormid")) { + + if (!empty($CFG->enablegroupings) && !empty($cm->groupingid)) { + $sql = "SELECT st.userid, st.scormid + FROM {$CFG->prefix}scorm_scoes_track st + INNER JOIN {$CFG->prefix}groups_members gm ON st.userid = gm.userid + INNER JOIN {$CFG->prefix}groupings_groups gg ON gm.groupid = gg.groupid + WHERE st.scormid = {$scorm->id} AND gg.groupingid = {$cm->groupingid} + GROUP BY st.userid,st.scormid + "; + } else { + $sql = "SELECT st.userid, st.scormid + FROM {$CFG->prefix}scorm_scoes_track st + WHERE st.scormid = {$scorm->id} + GROUP BY st.userid,st.scormid + "; + } + + if ($scousers=get_records_sql($sql)) { $table = new stdClass(); $table->head = array(' ', get_string('name')); $table->align = array('center', 'left'); diff --git a/mod/scorm/view.php b/mod/scorm/view.php index f753e3056b..db9ec88afb 100755 --- a/mod/scorm/view.php +++ b/mod/scorm/view.php @@ -75,9 +75,10 @@ } if (has_capability('moodle/course:manageactivities', $context)) { - $trackedusers = get_record('scorm_scoes_track', 'scormid', $scorm->id, '', '', '', '', 'count(distinct(userid)) as c'); - if ($trackedusers->c > 0) { - echo "
frametarget href=\"report.php?id=$cm->id\"> ".get_string('viewallreports','scorm',$trackedusers->c).'
'; + + $trackedusers = scorm_get_count_users($scorm->id, $cm->groupingid); + if ($trackedusers > 0) { + echo "
frametarget href=\"report.php?id=$cm->id\"> ".get_string('viewallreports','scorm',$trackedusers).'
'; } else { echo ''; }