Index: mod/assignment/lib.php ========================================================= --- mod/assignment/lib.php (revision 1.277.2.50) +++ mod/assignment/lib.php Tue Oct 06 14:14:47 WST 2009 @@ -1778,18 +1778,14 @@ * Return an outline of the user's interaction with the assignment * * The default method prints the grade and timemodified - * @param $user object + * @param $grade object * @return object with properties ->info and ->time */ - function user_outline($user) { - if ($submission = $this->get_submission($user->id)) { - + function user_outline($grade) { - $result = new object(); + $result = new object(); - $result->info = get_string('grade').': '.$this->display_grade($submission->grade); - $result->time = $submission->timemodified; + $result->info = get_string('grade').': '.$grade->str_long_grade; + $result->time = $grade->dategraded; - return $result; + return $result; - } - return NULL; } /** @@ -1797,7 +1793,14 @@ * * @param $user object */ - function user_complete($user) { + function user_complete($user, $grade=null) { + if ($grade) { + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } + if ($submission = $this->get_submission($user->id)) { if ($basedir = $this->file_area($user->id)) { if ($files = get_directory_list($basedir)) { @@ -1817,11 +1820,7 @@ echo '
'; - if (empty($submission->timemarked)) { - print_string("notgradedyet", "assignment"); - } else { - $this->view_feedback($submission); + $this->view_feedback($submission); - } print_simple_box_end(); @@ -2063,10 +2062,16 @@ function assignment_user_outline($course, $user, $mod, $assignment) { global $CFG; + require_once("$CFG->libdir/gradelib.php"); require_once("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); $assignmentclass = "assignment_$assignment->assignmenttype"; $ass = new $assignmentclass($mod->id, $assignment, $mod, $course); - return $ass->user_outline($user); + $grades = grade_get_grades($course->id, 'mod', 'assignment', $assignment->id, $user->id); + if (!empty($grades->items[0]->grades)) { + return $ass->user_outline(reset($grades->items[0]->grades)); + } else { + return null; + } } /** @@ -2077,10 +2082,17 @@ function assignment_user_complete($course, $user, $mod, $assignment) { global $CFG; + require_once("$CFG->libdir/gradelib.php"); require_once("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); $assignmentclass = "assignment_$assignment->assignmenttype"; $ass = new $assignmentclass($mod->id, $assignment, $mod, $course); - return $ass->user_complete($user); + $grades = grade_get_grades($course->id, 'mod', 'assignment', $assignment->id, $user->id); + if (empty($grades->items[0]->grades)) { + $grade = false; + } else { + $grade = reset($grades->items[0]->grades); + } + return $ass->user_complete($user, $grade); } /** Index: mod/data/lib.php ========================================================= --- mod/data/lib.php (revision 1.137.2.56) +++ mod/data/lib.php Tue Oct 06 14:29:59 WST 2009 @@ -706,6 +706,15 @@ ************************************************************************/ function data_user_outline($course, $user, $mod, $data) { global $CFG; + require_once("$CFG->libdir/gradelib.php"); + + $grades = grade_get_grades($course->id, 'mod', 'data', $data->id, $user->id); + if (empty($grades->items[0]->grades)) { + $grade = false; + } else { + $grade = reset($grades->items[0]->grades); + } + if ($countrecords = count_records('data_records', 'dataid', $data->id, 'userid', $user->id)) { $result = new object(); $result->info = get_string('numrecords', 'data', $countrecords); @@ -713,6 +722,14 @@ WHERE dataid = '.$data->id.' AND userid = '.$user->id.' ORDER BY timemodified DESC', true); $result->time = $lastrecord->timemodified; + if ($grade) { + $result->info .= ', ' . get_string('grade') . ': ' . $grade->str_long_grade; + } + return $result; + } else if ($grade) { + $result = new object(); + $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + $result->time = $grade->dategraded; return $result; } return NULL; @@ -722,6 +739,17 @@ * Prints all the records uploaded by this user * ************************************************************************/ function data_user_complete($course, $user, $mod, $data) { + global $CFG; + require_once("$CFG->libdir/gradelib.php"); + + $grades = grade_get_grades($course->id, 'mod', 'data', $data->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } if ($records = get_records_select('data_records', 'dataid = '.$data->id.' AND userid = '.$user->id, 'timemodified DESC')) { data_print_template('singletemplate', $records, $data); Index: mod/forum/lib.php ========================================================= --- mod/forum/lib.php (revision 1.609.2.95) +++ mod/forum/lib.php Tue Oct 06 14:30:22 WST 2009 @@ -943,13 +943,30 @@ * @return object A standard object with 2 variables: info (number of posts for this user) and time (last modified) */ function forum_user_outline($course, $user, $mod, $forum) { - if ($count = forum_count_user_posts($forum->id, $user->id)) { - if ($count->postcount > 0) { + global $CFG; + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'forum', $forum->id, $user->id); + if (empty($grades->items[0]->grades)) { + $grade = false; + } else { + $grade = reset($grades->items[0]->grades); + } + + $count = forum_count_user_posts($forum->id, $user->id); + + if ($count && $count->postcount > 0) { - $result = new object(); - $result->info = get_string("numposts", "forum", $count->postcount); - $result->time = $count->lastpost; + $result = new object(); + $result->info = get_string("numposts", "forum", $count->postcount); + $result->time = $count->lastpost; - return $result; + if ($grade) { + $result->info .= ', ' . get_string('grade') . ': ' . $grade->str_long_grade; } + return $result; + } else if ($grade) { + $result = new object(); + $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + $result->time = $grade->dategraded; + return $result; } return NULL; } @@ -960,6 +977,16 @@ */ function forum_user_complete($course, $user, $mod, $forum) { global $CFG,$USER; + require_once("$CFG->libdir/gradelib.php"); + + $grades = grade_get_grades($course->id, 'mod', 'forum', $forum->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } if ($posts = forum_get_user_posts($forum->id, $user->id)) { Index: mod/glossary/lib.php ========================================================= --- mod/glossary/lib.php (revision 1.193.2.20) +++ mod/glossary/lib.php Tue Oct 06 14:28:19 WST 2009 @@ -161,11 +161,19 @@ } function glossary_user_outline($course, $user, $mod, $glossary) { + global $CFG; /// Return a small object with summary information about what a /// user has done with a given particular instance of this module /// Used for user activity reports. /// $return->time = the time they did it /// $return->info = a short text description + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'glossary', $glossary->id, $user->id); + if (empty($grades->items[0]->grades)) { + $grade = false; + } else { + $grade = reset($grades->items[0]->grades); + } if ($entries = glossary_get_user_entries($glossary->id, $user->id)) { $result = new object(); @@ -173,8 +181,18 @@ $lastentry = array_pop($entries); $result->time = $lastentry->timemodified; + + if ($grade) { + $result->info .= ', ' . get_string('grade') . ': ' . $grade->str_long_grade; + } + return $result; + } else if ($grade) { + $result = new object(); + $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + $result->time = $grade->dategraded; return $result; } + return NULL; } @@ -197,7 +215,16 @@ /// Print a detailed representation of what a user has done with /// a given particular instance of this module, for user activity reports. global $CFG; + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'glossary', $glossary->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } if ($entries = glossary_get_user_entries($glossary->id, $user->id)) { echo '
'; foreach ($entries as $entry) { Index: mod/lesson/lib.php ========================================================= --- mod/lesson/lib.php (revision 1.41.2.10) +++ mod/lesson/lib.php Tue Oct 06 14:28:08 WST 2009 @@ -147,22 +147,15 @@ /// Used for user activity reports. /// $return->time = the time they did it /// $return->info = a short text description - - if ($grades = get_records_select("lesson_grades", "lessonid = $lesson->id AND userid = $user->id", - "grade DESC")) { - foreach ($grades as $grade) { - $max_grade = number_format($grade->grade * $lesson->grade / 100.0, 1); - break; - } - $return->time = $grade->completed; - if ($lesson->retake) { - $return->info = get_string("gradeis", "lesson", $max_grade)." (". - get_string("attempt", "lesson", count($grades)).")"; + global $CFG; + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'lesson', $lesson->id, $user->id); + if (empty($grades->items[0]->grades)) { + $return->info = get_string("no")." ".get_string("attempts", "lesson"); - } else { + } else { - $return->info = get_string("gradeis", "lesson", $max_grade); - } - } else { - $return->info = get_string("no")." ".get_string("attempts", "lesson"); + $grade = reset($grades->items[0]->grades); + $return->info = get_string("grade") . ': ' . $grade->str_long_grade; + $return->time = $grade->dategraded; } return $return; } @@ -171,6 +164,17 @@ function lesson_user_complete($course, $user, $mod, $lesson) { /// Print a detailed representation of what a user has done with /// a given particular instance of this module, for user activity reports. + global $CFG; + require_once("$CFG->libdir/gradelib.php"); + + $grades = grade_get_grades($course->id, 'mod', 'lesson', $lesson->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } if ($attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $user->id", "retry, timeseen")) { @@ -210,25 +214,8 @@ } print_table($table); print_simple_box_end(); - // also print grade summary - if ($grades = get_records_select("lesson_grades", "lessonid = $lesson->id AND userid = $user->id", - "grade DESC")) { - foreach ($grades as $grade) { - $max_grade = number_format($grade->grade * $lesson->grade / 100.0, 1); - break; - } - if ($lesson->retake) { - echo "

".get_string("gradeis", "lesson", $max_grade)." (". - get_string("attempts", "lesson").": ".count($grades).")

"; - } else { - echo "

".get_string("gradeis", "lesson", $max_grade)."

"; - } - } - } else { - echo get_string("no")." ".get_string("attempts", "lesson"); } - return true; } Index: mod/quiz/lib.php ========================================================= --- mod/quiz/lib.php (revision 1.282.2.22) +++ mod/quiz/lib.php Tue Oct 06 14:24:42 WST 2009 @@ -198,25 +198,36 @@ /// Used for user activity reports. /// $return->time = the time they did it /// $return->info = a short text description - $grade = quiz_get_best_grade($quiz, $user->id); - if (is_null($grade)) { - return NULL; + global $CFG; + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'quiz', $quiz->id, $user->id); + if (empty($grades->items[0]->grades)) { + return null; + } else { + $grade = reset($grades->items[0]->grades); } $result = new stdClass; - $result->info = get_string('grade') . ': ' . $grade . '/' . $quiz->grade; - $result->time = get_field('quiz_attempts', 'MAX(timefinish)', 'userid', $user->id, 'quiz', $quiz->id); + $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + $result->time = $grade->dategraded; return $result; } function quiz_user_complete($course, $user, $mod, $quiz) { /// Print a detailed representation of what a user has done with /// a given particular instance of this module, for user activity reports. + global $CFG; + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'quiz', $quiz->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } if ($attempts = get_records_select('quiz_attempts', "userid='$user->id' AND quiz='$quiz->id'", 'attempt ASC')) { - if ($quiz->grade && $quiz->sumgrades && $grade = get_record('quiz_grades', 'userid', $user->id, 'quiz', $quiz->id)) { - echo get_string('grade').': '.round($grade->grade, $quiz->decimalpoints).'/'.$quiz->grade.'
'; - } foreach ($attempts as $attempt) { echo get_string('attempt', 'quiz').' '.$attempt->attempt.': '; if ($attempt->timefinish == 0) { Index: mod/scorm/lib.php ========================================================= --- mod/scorm/lib.php (revision 1.87.2.15) +++ mod/scorm/lib.php Tue Oct 06 14:28:33 WST 2009 @@ -219,10 +219,16 @@ function scorm_user_outline($course, $user, $mod, $scorm) { global $CFG; require_once('locallib.php'); - - $return = scorm_grade_user($scorm, $user->id, true); - - return $return; + require_once("$CFG->libdir/gradelib.php"); + $grades = grade_get_grades($course->id, 'mod', 'scorm', $scorm->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + $result = new object(); + $result->info = get_string('grade') . ': '. $grade->str_long_grade; + $result->time = $grade->dategraded; + return $result; + } + return null; } /** @@ -237,6 +243,7 @@ */ function scorm_user_complete($course, $user, $mod, $scorm) { global $CFG; + require_once("$CFG->libdir/gradelib.php"); $liststyle = 'structlist'; $scormpixdir = $CFG->modpixpath.'/scorm/pix'; @@ -246,6 +253,15 @@ $sometoreport = false; $report = ''; + $grades = grade_get_grades($course->id, 'mod', 'scorm', $scorm->id, $user->id); + if (!empty($grades->items[0]->grades)) { + $grade = reset($grades->items[0]->grades); + echo '

'.get_string('grade').': '.$grade->str_long_grade.'

'; + if ($grade->str_feedback) { + echo '

'.get_string('feedback').': '.$grade->str_feedback.'

'; + } + } + if ($orgs = get_records_select('scorm_scoes',"scorm='$scorm->id' AND organization='' AND launch=''",'id','id,identifier,title')) { if (count($orgs) <= 1) { unset($orgs);