function workshop_get_student_submissions($workshop, $order = "title") { // Return all ENROLLED student submissions global $CFG; if ($order == "title") { $order = "s.title"; } if ($order == "name") { $order = "a.lastname, a.firstname"; } if ($order == "time") { $order = "s.timecreated ASC"; } if (!($students = workshop_get_students($workshop))) { return false; } $list = "("; foreach ($students as $student) { $list .= "{$student->id},"; } $list = rtrim($list, ',') . ")"; return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}user a\n WHERE s.userid IN {$list}\n AND s.workshopid = {$workshop->id}\n AND s.timecreated > 0\n AND s.userid = a.id\n ORDER BY {$order}"); }
$teacherassessments = workshop_print_submission_assessments($workshop, $submission, "teacher"); // If not yet assessed, show assess link if ($teacherassessments == ' ') { $teacherassessments = '<a href="assess.php?id=' . $cm->id . '&sid=' . $submission->id . '">' . get_string('assess', 'workshop') . '</a>'; } $title = workshop_print_submission_title($workshop, $submission) . " <a href=\"submissions.php?action=editsubmission&id={$cm->id}&sid={$submission->id}\">" . "<img src=\"{$CFG->pixpath}/t/edit.gif\" " . 'class="iconsmall" alt="' . get_string('edit') . '" /></a>' . " <a href=\"submissions.php?action=confirmdelete&id={$cm->id}&sid={$submission->id}\">" . "<img src=\"{$CFG->pixpath}/t/delete.gif\" " . 'class="iconsmall" alt="' . get_string('delete', 'workshop') . '" /></a>'; $table->data[] = array($title, $teacherassessments, workshop_print_submission_assessments($workshop, $submission, "student")); } } // Put in a submission link $table->data[] = array("<b><a href=\"view.php?id={$cm->id}&action=submitexample\">" . get_string("submitexampleassignment", "workshop") . "</a></b>" . helpbutton("submissionofexamples", get_string("submitexampleassignment", "workshop"), "workshop", true, false, '', true), ' ', ' '); print_table($table); workshop_print_key($workshop); } // Get all the students if (!($users = workshop_get_students($workshop))) { echo '</table>'; print_heading(get_string("nostudentsyet")); print_footer($course); exit; } if (!empty($CFG->enablegroupings) && !empty($cm->groupingid) && !empty($users)) { $groupingusers = groups_get_grouping_members($cm->groupingid, 'u.id', 'u.id'); foreach ($users as $key => $user) { if (!isset($groupingusers[$user->id])) { unset($users[$key]); } } } /// Now prepare table with student assessments and submissions $tablesort->data = array();
function workshop_list_submissions_for_admin($workshop, $order) { // list the teacher sublmissions first global $CFG, $USER; if (!($cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course))) { error("Course Module ID was incorrect"); } if (!($course = get_record("course", "id", $workshop->course))) { error("Course is misconfigured"); } if (!($cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id))) { error("Course Module ID was incorrect"); } if (groupmode($course, $cm) == SEPARATEGROUPS) { $groupid = get_current_group($course->id); } else { $groupid = 0; } workshop_print_assignment_info($workshop); if (workshop_is_teacheredit($workshop)) { // list any teacher submissions $table->head = array(get_string("title", "workshop"), get_string("submittedby", "workshop"), get_string("action", "workshop")); $table->align = array("left", "left", "left"); $table->size = array("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; if ($submissions = workshop_get_teacher_submissions($workshop)) { foreach ($submissions as $submission) { $action = "<a href=\"submissions.php?action=adminamendtitle&id={$cm->id}&sid={$submission->id}\">" . get_string("amendtitle", "workshop") . "</a>"; // has user already assessed this submission if ($assessment = get_record_select("workshop_assessments", "submissionid = {$submission->id}\n AND userid = {$USER->id}")) { $curtime = time(); if ($assessment->timecreated > $curtime) { // it's a "hanging" assessment $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("assess", "workshop") . "</a>"; } elseif ($curtime - $assessment->timecreated > $CFG->maxeditingtime) { $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("reassess", "workshop") . "</a>"; } else { // there's still time left to edit... $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("edit", "workshop") . "</a>"; } } else { // user has not graded this submission $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("assess", "workshop") . "</a>"; } if ($assessments = workshop_get_assessments($submission)) { $action .= " | <a href=\"assessments.php?action=adminlist&id={$cm->id}&sid={$submission->id}\">" . get_string("listassessments", "workshop") . "</a>"; } if (workshop_is_teacheredit($workshop)) { $action .= " | <a href=\"submissions.php?action=confirmdelete&id={$cm->id}&sid={$submission->id}\">" . get_string("delete", "workshop") . "</a>"; } $table->data[] = array("<a href=\"submissions.php?action=editsubmission&id={$cm->id}&sid={$submission->id}\">{$submission->title}</a>", $course->teacher, $action); } print_heading(get_string("studentsubmissions", "workshop", $course->teacher), "center"); print_table($table); } } // list student assessments // Get all the students... if ($users = workshop_get_students($workshop, "u.lastname, u.firstname")) { $timenow = time(); unset($table); $table->head = array(get_string("name"), get_string("title", "workshop"), get_string("action", "workshop")); $table->align = array("left", "left", "left"); $table->size = array("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; $nassessments = 0; foreach ($users as $user) { // check group membership, if necessary if ($groupid) { // check user's group if (!groups_is_member($groupid, $user->id)) { continue; // skip this user } } // list the assessments which have been done (exclude the hot ones) if ($assessments = workshop_get_user_assessments_done($workshop, $user)) { $title = ''; foreach ($assessments as $assessment) { if (!($submission = get_record("workshop_submissions", "id", $assessment->submissionid))) { error("Workshop_list_submissions_for_admin: Submission {$assessment->submissionid} not found!"); } $title .= $submission->title; if ($workshop->agreeassessments and !$assessment->timeagreed and workshop_is_student($workshop, $submission->userid)) { // agreements for student work only $title .= " <<" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")>> "; } elseif ($assessment->timegraded) { if ($assessment->gradinggrade) { // a good assessment $title .= " {" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")} "; } else { // a poor assessment $title .= " <" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")> "; } } else { // not yet graded $title .= " {" . number_format($assessment->grade * $workshop->grade / 100, 0) . " ((" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . "))} "; } if ($realassessments = workshop_count_user_assessments_done($workshop, $user)) { $action = "<a href=\"assessments.php?action=adminlistbystudent&id={$cm->id}&userid={$user->id}\">" . get_string("liststudentsassessments", "workshop") . " ({$realassessments})</a>"; } else { $action = ""; } } $nassessments++; $table->data[] = array(fullname($user), $title, $action); } } if (isset($table->data)) { print_heading(get_string("studentassessments", "workshop", $course->student) . " [{$nassessments}]"); print_table($table); workshop_print_key($workshop); // grading grade analysis unset($table); $table->head = array(get_string("count", "workshop"), get_string("mean", "workshop"), get_string("standarddeviation", "workshop"), get_string("maximum", "workshop"), get_string("minimum", "workshop")); $table->align = array("center", "center", "center", "center", "center"); $table->size = array("*", "*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; if ($groupid) { $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, \n STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max \n FROM {$CFG->prefix}groups_members g, {$CFG->prefix}workshop_assessments a \n WHERE g.groupid = {$groupid} AND a.userid = g.userid AND a.timegraded > 0 \n AND a.workshopid = {$workshop->id}"); } else { // no group/all participants $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, \n STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max \n FROM {$CFG->prefix}workshop_assessments a \n WHERE a.timegraded > 0 AND a.workshopid = {$workshop->id}"); } $table->data[] = array($stats->count, number_format($stats->mean * $workshop->gradinggrade / 100, 1), number_format($stats->stddev * $workshop->gradinggrade / 100, 1), number_format($stats->max * $workshop->gradinggrade / 100, 1), number_format($stats->min * $workshop->gradinggrade / 100, 1)); print_heading(get_string("gradinggrade", "workshop") . " " . get_string("analysis", "workshop")); print_table($table); echo "<p style=\"text-align:center\"><a href=\"assessments.php?id={$cm->id}&action=regradestudentassessments\">" . get_string("regradestudentassessments", "workshop") . "</a> "; helpbutton("regrading", get_string("regradestudentassessments", "workshop"), "workshop"); echo "</p>\n"; } } // now the sudent submissions unset($table); switch ($order) { case "title": $table->head = array("<a href=\"submissions.php?action=adminlist&id={$cm->id}&order=name\">" . get_string("submittedby", "workshop") . "</a>", get_string("title", "workshop"), get_string("submitted", "workshop"), get_string("action", "workshop")); break; case "name": $table->head = array(get_string("submittedby", "workshop"), "<a href=\"submissions.php?action=adminlist&id={$cm->id}&order=title\">" . get_string("title", "workshop") . "</a>", get_string("submitted", "workshop"), get_string("action", "workshop")); break; } $table->align = array("left", "left", "left", "left"); $table->size = array("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; $nsubmissions = 0; if ($submissions = workshop_get_student_submissions($workshop, $order)) { foreach ($submissions as $submission) { if (!($user = get_record("user", "id", $submission->userid))) { error("workshop_list_submissions_for_admin: failure to get user record"); } // check group membership, if necessary if ($groupid) { // check user's group if (!groups_is_member($groupid, $user->id)) { continue; // skip this user } } $datesubmitted = userdate($submission->timecreated); if ($submission->late) { $datesubmitted = "<span class=\"redfont\">" . $datesubmitted . "</span>"; } $action = "<a href=\"submissions.php?action=adminamendtitle&id={$cm->id}&sid={$submission->id}\">" . get_string("amendtitle", "workshop") . "</a>"; // has teacher already assessed this submission if ($assessment = get_record_select("workshop_assessments", "submissionid = {$submission->id}\n AND userid = {$USER->id}")) { $curtime = time(); if ($curtime - $assessment->timecreated > $CFG->maxeditingtime) { $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("reassess", "workshop") . "</a>"; } else { // there's still time left to edit... $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("edit", "workshop") . "</a>"; } } else { // user has not assessed this submission $action .= " | <a href=\"assess.php?id={$cm->id}&sid={$submission->id}\">" . get_string("assess", "workshop") . "</a>"; } if ($nassessments = workshop_count_assessments($submission)) { $action .= " | <a href=\"assessments.php?action=adminlist&id={$cm->id}&sid={$submission->id}\">" . get_string("listassessments", "workshop") . " ({$nassessments})</a>"; } if ($submission->late) { $action .= " | <a href=\"submissions.php?action=adminlateflag&id={$cm->id}&sid={$submission->id}\">" . get_string("clearlateflag", "workshop") . "</a>"; } $action .= " | <a href=\"submissions.php?action=confirmdelete&id={$cm->id}&sid={$submission->id}\">" . get_string("delete", "workshop") . "</a>"; $nsubmissions++; $table->data[] = array("{$user->firstname} {$user->lastname}", $submission->title . " (" . get_string("grade") . ": " . workshop_submission_grade($workshop, $submission) . " " . workshop_print_submission_assessments($workshop, $submission, "teacher") . " " . workshop_print_submission_assessments($workshop, $submission, "student") . ")", $datesubmitted, $action); } print_heading(get_string("studentsubmissions", "workshop", $course->student) . " [{$nsubmissions}]", "center"); print_table($table); workshop_print_key($workshop); } }