dirroot.'/mod/lesson/lib.php'); require_once($CFG->dirroot.'/mod/lesson/locallib.php'); if (! $lesson = get_record("lesson", "id", $iid)) { error("Course module is incorrect"); } if (! $cm = get_coursemodule_from_instance("lesson", $lesson->id, $course->id)) { error("Course Module ID was incorrect"); } if (!isteacher($course->id)) { error("Only teachers can look at this page"); } /// Check to see if groups are being used in this assignment if ($groupmode = groupmode($course, $cm)) { // Groups are being used if (empty($currentgroup)) { $currentgroup = setup_and_print_groups($course, $groupmode, "marking.php?id=$id&mid=$mid&sort=$sort&dir=$dir"); } else { setup_and_print_groups($course, $groupmode, "marking.php?id=$id&mid=$mid&sort=$sort&dir=$dir"); } } else { $currentgroup = false; } /// Get all teachers and students $teachers = get_course_teachers($course->id); /// Show any specific group of users requested. if ($currentgroup) { $users = get_group_students($currentgroup); } else { $users = get_course_students($course->id); } if (!$users) { print_heading(get_string("nostudentsyet")); exit; } $submissions = array(); /// Make some easy ways to reference submissions // get lesson pages that are essay if (!$pages = get_records_select("lesson_pages", "lessonid = $lesson->id AND qtype = ".LESSON_ESSAY)) { error("Error: could not find lesson essay pages"); } $submissionbyuser = array(); $submissionbypage = array(); $pageids = implode(",", array_keys($pages)); // all the pageids in comma seperated list $userids = implode(',', array_keys($users)); $select = 'lessonid = '.$lesson->id.' AND pageid IN ('.$pageids.') AND '.'userid IN ('.$userids.')'; if ($submissions = get_records_select("lesson_attempts", $select)) { foreach ($submissions as $submission) { $submissionbyuser[$submission->userid][$submission->pageid] = $submission; $submissionbypage[$submission->pageid][$submission->userid] = $submission; } } $unsubmitted = array(); foreach ($users as $userid => $user) { if (!isset($submissionbyuser[$userid])) { $unsubmitted[] = $user; } } /// If data is being submitted, then process it if ($data = data_submitted($CFG->wwwroot.'/blocks/marking/marking.php')) { /// Process incoming data if there is any if (isset($data->sendreminders)) { mb_send_all_reminders($data, $users, $course, $cm); $message = get_string('sentreminders', 'block_marking'); redirect('marking.php?id='.$id.'&mid='.$mid, $message, 3); } /// If we're only submitting a single feedback, set the submittal array to just that one. if (isset($data->submitsub)) { $data->sub_id = array(key($data->submitsub)); } foreach ($data->sub_id as $sub_id) { $submission = $submissions[$sub_id]; // Only update entries where feedback has actually changed. $essayinfo = unserialize($submission->useranswer); if (($data->grade[$sub_id] <> $essayinfo->score) || ($data->comment[$sub_id] <> addslashes($essayinfo->response))) { $essayinfo->score = $data->grade[$sub_id]; $essayinfo->graded = 1; $essayinfo->response = $data->comment[$sub_id]; $submission->useranswer = addslashes(serialize($essayinfo)); if (! update_record("lesson_attempts", $submission)) { notify(get_string("failedupdatefeedback", "lesson", $submission->userid)); } else { $count++; $submissions[$sub_id] = $submission; } } } add_to_log($course->id, "lesson", "update grades", "marking.php?id=$lesson->id", "$count users", $cm->id); if (isset($data->submitsub)) { $message = get_string('feedbackupdated', 'block_marking', fullname($users[$submission->userid])); } else { $message = get_string('allfeedbackupdated', 'block_marking'); } redirect('marking.php?id='.$id.'&mid='.$mid, $message, 3); } else { add_to_log($course->id, "lesson", "view essay", "marking.php?id=$lesson->id", "$lesson->id", $cm->id); } /// Print out the lesson entries $strsavefeedback = get_string('savefeedback', 'block_marking'); $teachers = get_course_teachers($course->id); $allowedtograde = ($groupmode != VISIBLEGROUPS or isteacheredit($course->id) or ismember($currentgroup)); foreach ($submissionbypage as $pageid => $submissions) { $score = get_field('lesson_answers', 'score', 'pageid', $pageid); $grades = make_grades_menu($score); print_simple_box_start('', '', '', 10, 'generalbox'); echo '
'.get_string("duedate", "assignment").':'.userdate($lesson->deadline).
'
'.get_string("maximumgrade").': '.$score.'
'.
get_string('markingcriteria', 'block_marking').': '.s($pages[$pageid]->contents);
echo '
'.get_string('turnaroundunknown', 'block_marking');
echo '