* 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;
}
/**
*
* @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();
echo '<br />';
- if (empty($submission->timemarked)) {
- print_string("notgradedyet", "assignment");
- } else {
- $this->view_feedback($submission);
- }
+ $this->view_feedback($submission);
echo $OUTPUT->box_end();
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;
+ }
}
/**
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);
}
/**
$navnode->remove_child($assignmentnodekey);
}
}
-}
\ No newline at end of file
+}
* @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();
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;
* @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);
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
+}
* @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;
}
* @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)) {
* @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();
$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;
* @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 '<table width="95%" border="0"><tr><td>';
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
+}
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;
* @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,
}
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 "<p>".get_string("gradeis", "lesson", $max_grade)." (".
- get_string("attempts", "lesson").": ".count($grades).")</p>";
- } else {
- echo "<p>".get_string("gradeis", "lesson", $max_grade)."</p>";
- }
- }
- } else {
- echo get_string("no")." ".get_string("attempts", "lesson");
}
-
return true;
}
if (count($lessonnav->children)<1) {
$settings->remove_child($lessonnavkey);
}
-}
\ No newline at end of file
+}
* @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
* @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) . '<br />';
- }
foreach ($attempts as $attempt) {
echo get_string('attempt', 'quiz').' '.$attempt->attempt.': ';
if ($attempt->timefinish == 0) {
if (count($quiznav->children)<1) {
$settings->remove_child($quiznavkey);
}
-}
\ No newline at end of file
+}
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;
}
/**
*/
function scorm_user_complete($course, $user, $mod, $scorm) {
global $CFG, $DB, $OUTPUT;
+ require_once("$CFG->libdir/gradelib.php");
$liststyle = 'structlist';
$now = time();
$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);