From: Nicolas Connault Date: Tue, 27 Oct 2009 12:37:15 +0000 (+0000) Subject: MDL-15050 Grades entered/updated through grader report now get correctly displayed... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=1a96363a9d119759b0541dd942833edfac642faf;p=moodle.git MDL-15050 Grades entered/updated through grader report now get correctly displayed in course user activity reports (commenting on last commit). Merged from MOODLE_19_STABLE --- diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index d0907959ba..2094b425fb 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -1877,18 +1877,15 @@ class assignment_base { * 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->info = get_string('grade').': '.$this->display_grade($submission->grade); - $result->time = $submission->timemodified; - return $result; - } - return NULL; + $result = new object(); + $result->info = get_string('grade').': '.$grade->str_long_grade; + $result->time = $grade->dategraded; + return $result; } /** @@ -1896,8 +1893,15 @@ class assignment_base { * * @param $user object */ - function user_complete($user) { + function user_complete($user, $grade=null) { global $OUTPUT; + if ($grade) { + echo $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } + if ($submission = $this->get_submission($user->id)) { $fs = get_file_storage(); @@ -1919,11 +1923,7 @@ class assignment_base { echo '
'; - if (empty($submission->timemarked)) { - print_string("notgradedyet", "assignment"); - } else { - $this->view_feedback($submission); - } + $this->view_feedback($submission); echo $OUTPUT->box_end(); @@ -2203,10 +2203,16 @@ function assignment_add_instance($assignment) { 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; + } } /** @@ -2217,10 +2223,17 @@ function assignment_user_outline($course, $user, $mod, $assignment) { 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); } /** @@ -3487,4 +3500,4 @@ function assignment_extend_settings_navigation($navnode, $module) { $navnode->remove_child($assignmentnodekey); } } -} \ No newline at end of file +} diff --git a/mod/data/lib.php b/mod/data/lib.php index 2df18f32c6..3dbda9a469 100755 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -931,7 +931,16 @@ function data_delete_instance($id) { // takes the dataid * @return object|null */ function data_user_outline($course, $user, $mod, $data) { - global $DB; + global $DB, $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 = $DB->count_records('data_records', array('dataid'=>$data->id, 'userid'=>$user->id))) { $result = new object(); @@ -940,6 +949,14 @@ function data_user_outline($course, $user, $mod, $data) { WHERE dataid = ? AND userid = ? ORDER BY timemodified DESC', array($data->id, $user->id), 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; @@ -955,7 +972,17 @@ function data_user_outline($course, $user, $mod, $data) { * @param object $data */ function data_user_complete($course, $user, $mod, $data) { - global $DB; + global $DB, $CFG, $OUTPUT; + 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 $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } if ($records = $DB->get_records('data_records', array('dataid'=>$data->id,'userid'=>$user->id), 'timemodified DESC')) { data_print_template('singletemplate', $records, $data); @@ -3272,4 +3299,4 @@ function data_extend_settings_navigation($settings, $module) { if (has_capability('moodle/course:manageactivities', $PAGE->cm->context)) { $datanav->add(get_string('updatethis', '', get_string('modulename', 'choice')), new moodle_url($CFG->wwwroot.'/course/mod.php', array('update' => $PAGE->cm->id, 'return' => true, 'sesskey' => sesskey()))); } -} \ No newline at end of file +} diff --git a/mod/forum/lib.php b/mod/forum/lib.php index b10bf07589..decddb6186 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -1094,13 +1094,30 @@ function forum_make_mail_html($course, $cm, $forum, $discussion, $post, $userfro * @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) { - $result = new object(); - $result->info = get_string("numposts", "forum", $count->postcount); - $result->time = $count->lastpost; - return $result; + 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; + 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; } @@ -1115,7 +1132,17 @@ function forum_user_outline($course, $user, $mod, $forum) { * @param object $forum */ function forum_user_complete($course, $user, $mod, $forum) { - global $CFG,$USER; + global $CFG,$USER, $OUTPUT; + 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 $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } if ($posts = forum_get_user_posts($forum->id, $user->id)) { diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 690ec05410..3829680c53 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -228,6 +228,15 @@ function glossary_delete_instance($id) { * @return object|null */ function glossary_user_outline($course, $user, $mod, $glossary) { + 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 = false; + } else { + $grade = reset($grades->items[0]->grades); + } if ($entries = glossary_get_user_entries($glossary->id, $user->id)) { $result = new object(); @@ -235,6 +244,15 @@ function glossary_user_outline($course, $user, $mod, $glossary) { $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; @@ -270,7 +288,17 @@ function glossary_get_user_entries($glossaryid, $userid) { * @param object $glossary */ function glossary_user_complete($course, $user, $mod, $glossary) { - global $CFG; + global $CFG, $OUTPUT; + 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 $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } if ($entries = glossary_get_user_entries($glossary->id, $user->id)) { echo '
'; @@ -2926,4 +2954,4 @@ function glossary_extend_settings_navigation($settings, $module) { if (has_capability('moodle/course:manageactivities', $PAGE->cm->context)) { $glossarynav->add(get_string('updatethis', '', get_string('modulename', 'glossary')), new moodle_url($CFG->wwwroot.'/course/mod.php', array('update' => $PAGE->cm->id, 'return' => true, 'sesskey' => sesskey()))); } -} \ No newline at end of file +} diff --git a/mod/lesson/lib.php b/mod/lesson/lib.php index 145fb67a11..3d181f3e84 100644 --- a/mod/lesson/lib.php +++ b/mod/lesson/lib.php @@ -181,21 +181,16 @@ function lesson_delete_course($course, $feedback=true) { function lesson_user_outline($course, $user, $mod, $lesson) { global $DB; - $params = array ("lessonid" => $lesson->id, "userid" => $user->id); - if ($grades = $DB->get_records_select("lesson_grades", "lessonid = :lessonid AND userid = :userid", $params, - "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)).")"; - } else { - $return->info = get_string("gradeis", "lesson", $max_grade); - } + 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 { + $grade = reset($grades->items[0]->grades); + $return->info = get_string("grade") . ': ' . $grade->str_long_grade; + $return->time = $grade->dategraded; $return->info = get_string("no")." ".get_string("attempts", "lesson"); } return $return; @@ -213,7 +208,18 @@ function lesson_user_outline($course, $user, $mod, $lesson) { * @return bool */ function lesson_user_complete($course, $user, $mod, $lesson) { - global $DB, $OUTPUT; + global $DB, $OUTPUT, $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 $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } $params = array ("lessonid" => $lesson->id, "userid" => $user->id); if ($attempts = $DB->get_records_select("lesson_attempts", "lessonid = :lessonid AND userid = :userid", $params, @@ -255,26 +261,8 @@ function lesson_user_complete($course, $user, $mod, $lesson) { } echo $OUTPUT->table($table); echo $OUTPUT->box_end(); - // also print grade summary - $params = array ("lessonid" => $lesson->id, "userid" => $user->id); - if ($grades = $DB->get_records_select("lesson_grades", "lessonid = :lessonid AND userid = :userid", $params, - "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; } @@ -886,4 +874,4 @@ function lesson_extend_settings_navigation($settings, $module) { if (count($lessonnav->children)<1) { $settings->remove_child($lessonnavkey); } -} \ No newline at end of file +} diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index 199744525c..d8e59e7f7c 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -225,17 +225,21 @@ function quiz_delete_all_attempts($quiz) { * @return object|null */ function quiz_user_outline($course, $user, $mod, $quiz) { - global $DB; - $grade = quiz_get_best_grade($quiz, $user->id); - if (is_null($grade)) { - return NULL; + global $DB, $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 = $DB->get_field('quiz_attempts', 'MAX(timefinish)', array('userid' => $user->id, 'quiz' => $quiz->id)); + $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + $result->time = $grade->dategraded; return $result; - } +} /** * Is this a graded quiz? If this method returns true, you can assume that @@ -282,12 +286,18 @@ function quiz_get_best_grade($quiz, $userid) { * @return bool */ function quiz_user_complete($course, $user, $mod, $quiz) { - global $DB; + global $DB, $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 $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } if ($attempts = $DB->get_records('quiz_attempts', array('userid' => $user->id, 'quiz' => $quiz->id), 'attempt')) { - if (quiz_has_grades($quiz) && $grade = quiz_get_best_grade($quiz, $user->id)) { - echo get_string('grade') . ': ' . $grade . '/' . quiz_format_grade($quiz, $quiz->grade) . '
'; - } foreach ($attempts as $attempt) { echo get_string('attempt', 'quiz').' '.$attempt->attempt.': '; if ($attempt->timefinish == 0) { @@ -1474,4 +1484,4 @@ function quiz_extend_settings_navigation($settings, $module) { if (count($quiznav->children)<1) { $settings->remove_child($quiznavkey); } -} \ No newline at end of file +} diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index d082069482..b7a906589c 100755 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -286,9 +286,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; } /** @@ -305,6 +312,7 @@ function scorm_user_outline($course, $user, $mod, $scorm) { */ function scorm_user_complete($course, $user, $mod, $scorm) { global $CFG, $DB, $OUTPUT; + require_once("$CFG->libdir/gradelib.php"); $liststyle = 'structlist'; $now = time(); @@ -313,6 +321,15 @@ function scorm_user_complete($course, $user, $mod, $scorm) { $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 $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } + if ($orgs = $DB->get_records('scorm_scoes', array('scorm'=>$scorm->id, 'organization'=>'', 'launch'=>''),'id','id,identifier,title')) { if (count($orgs) <= 1) { unset($orgs);