From: nicolasconnault Date: Tue, 24 Jul 2007 10:08:46 +0000 (+0000) Subject: MDL-10550 Finished first draft of the outcomes report. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=e2537ca3ea5aeade85253a2602d53b01ba4356fa;p=moodle.git MDL-10550 Finished first draft of the outcomes report. --- diff --git a/grade/report/outcomes/index.php b/grade/report/outcomes/index.php index 4e51060db3..d662ecbbb5 100644 --- a/grade/report/outcomes/index.php +++ b/grade/report/outcomes/index.php @@ -29,16 +29,100 @@ print_header_simple($strgrades.':'.$stroutcomes, ':'.$strgrades, $navigation, '' $currenttab = 'outcomereport'; include('tabs.php'); -// Grab outcomes in use for this course -$outcomes = grade_outcome::fetch_all(array('courseid' => $courseid)); -foreach ($outcomes as $outcome) { - print_object($outcome->get_grade_info($courseid, true, true)); +// Grab all outcomes, distinguishing between site-level and course-level outcomes +$sql = "SELECT mdl_grade_outcomes.id, + mdl_grade_outcomes_courses.courseid, + mdl_grade_outcomes.shortname, + mdl_grade_outcomes.scaleid + FROM mdl_grade_outcomes + LEFT JOIN mdl_grade_outcomes_courses + ON (mdl_grade_outcomes.id = mdl_grade_outcomes_courses.outcomeid AND mdl_grade_outcomes_courses.courseid = $courseid) + ORDER BY mdl_grade_outcomes_courses.courseid DESC"; + +$report_info = array(); +$outcomes = get_records_sql($sql); + +// Get grade_items that use each outcome +foreach ($outcomes as $outcomeid => $outcome) { + $sql = "SELECT mdl_grade_items.id, + mdl_grade_items.itemname, + mdl_grade_items.itemmodule, + mdl_grade_items.iteminstance, + mdl_grade_items.itemtype, + mdl_grade_items.itemnumber, + mdl_grade_items.courseid, + mdl_grade_items.idnumber + FROM mdl_grade_items + WHERE mdl_grade_items.outcomeid = $outcomeid"; + $report_info[$outcomeid]['items'] = get_records_sql($sql); + $report_info[$outcomeid]['outcome'] = $outcome; + + // Get average grades for each item + if (is_array($report_info[$outcomeid]['items'])) { + foreach ($report_info[$outcomeid]['items'] as $itemid => $item) { + $sql = "SELECT id, AVG(finalgrade) AS `avg`, COUNT(finalgrade) AS `count` + FROM mdl_grade_grades + WHERE itemid = $itemid + GROUP BY itemid"; + $info = get_records_sql($sql); + $info = reset($info); + $report_info[$outcomeid]['items'][$itemid]->avg = round($info->avg, 2); + $report_info[$outcomeid]['items'][$itemid]->count = $info->count; + } + } } -// Grab activities that are grading against each outcome (with links to activities) -// Compute average grade across all activities and users for each outcome. +$html = '' . "\n"; +$html .= ''; +$html .= ''; +$html .= ''; +$html .= ''; +$html .= '' . "\n"; + +foreach ($report_info as $outcomeid => $outcomedata) { + $rowspan = count($outcomedata['items']); + $html .= '\n"; + + $sitewide = get_string('no'); + if (empty($outcomedata['outcome']->courseid)) { + $sitewide = get_string('yes'); + } + + $html .= '\n"; + + $print_tr = false; + if (is_array($outcomedata['items'])) { + foreach ($outcomedata['items'] as $itemid => $item) { + if ($print_tr) { + $html .= ''; + } + + $cm = get_coursemodule_from_instance($item->itemmodule, $item->iteminstance, $item->courseid); + $itemname = ''.$item->itemname.''; + + // Obtain nearest scale item from average + $scales_array = get_records_list('scale', 'id', $outcomedata['outcome']->scaleid); + $scale = $scales_array[$outcomedata['outcome']->scaleid]; + $scales = explode(",", $scale->scale); + + // this could be a 0 when summed and rounded, e.g, 1, no grade, no grade, no grade + if ($item->avg < 1) { + $item->avg = 1; + } + + $gradehtml = $scales[$item->avg-1]; + + $html .= "\n"; + $print_tr = true; + } + } else { + $html .= ""; + } +} +$html .= '
' . get_string('outcomename', 'grades') . '' . get_string('sitewide', 'grades') . '' . get_string('activities', 'grades') . '' . get_string('average', 'grades') . '' . get_string('numberofgrades', 'grades') . '
' . $outcomedata['outcome']->shortname . "' . $sitewide . "
$itemname$gradehtml ($item->avg)$item->count
- - 0
'; +echo $html; print_footer($course); ?> diff --git a/lang/en_utf8/grades.php b/lang/en_utf8/grades.php index 3e4f5da22f..c0afb32281 100644 --- a/lang/en_utf8/grades.php +++ b/lang/en_utf8/grades.php @@ -2,6 +2,7 @@ // grades.php - created with Moodle 1.7 beta + (2006101003) +$string['activities'] = 'Activities'; $string['addcategory'] = 'Add Category'; $string['addcategoryerror'] = 'Could not add category.'; $string['addexceptionerror'] = 'Error occurred while adding exception for userid:gradeitem'; @@ -212,9 +213,11 @@ $string['nonweightedpct'] = 'non-weighted %%'; $string['noselectedcategories'] = 'no categories were selected.'; $string['noselecteditems'] = 'no items were selected.'; $string['notteachererror'] = 'You must be a teacher to use this feature.'; +$string['numberofgrades'] = 'Number of grades'; $string['onascaleof'] = ' on a scale of $a->grademin to $a->grademax'; $string['operations'] = 'Operations'; $string['outcome'] = 'Outcome'; +$string['outcomename'] = 'Outcome name'; $string['outcomereport'] = 'Outcome report'; $string['outcomes'] = 'Outcomes'; $string['overridden'] = 'Overridden'; @@ -265,6 +268,7 @@ $string['showhiddenitems'] = 'Show Hidden Items'; $string['showlocks'] = 'Show locks'; $string['showranges'] = 'Show ranges'; $string['showuserimage'] = 'Show user profile images'; +$string['sitewide'] = 'Site-wide'; $string['sort'] = 'sort'; $string['sortasc'] = 'Sort in ascending order'; $string['sortdesc'] = 'Sort in descending order';