/*************************************************
ACTIONS handled are:
- addcomment
- adminconfirmdelete
- admindelete
- adminlist
- agreeassessment
- assesssubmission
- displaygradingform
- editcomment
- editelements (teachers only)
- gradeassessment (teachers only)
- insertcomment
- insertelements (for teachers)
- listungradedstudentsubmissions (for teachers)
- listungradedteachersubmissions (for teachers)
- listteachersubmissions
- updateassessment
- updatecomment
- updategrading
- userconfirmdelete
- userdelete
- viewassessment
+ addcomment
+ adminconfirmdelete
+ admindelete
+ adminlist
+ agreeassessment
+ assesssubmission
+ displaygradingform
+ editcomment
+ editelements (teachers only)
+ gradeallassessments (teachers only)
+ gradeassessment (teachers only)
+ insertcomment
+ insertelements (for teachers)
+ listungradedstudentsubmissions (for teachers)
+ listungradedteachersubmissions (for teachers)
+ listteachersubmissions
+ updateassessment
+ updatecomment
+ updategrading
+ userconfirmdelete
+ userdelete
+ viewassessment
************************************************/
require("lib.php");
require("locallib.php");
- optional_variable($id); // Course Module ID
- optional_variable($a); // workshop ID
+ require_variable($id); // Course Module ID
// get some useful stuff...
- if ($id) {
- if (! $cm = get_record("course_modules", "id", $id)) {
- error("Course Module ID was incorrect");
- }
-
- if (! $course = get_record("course", "id", $cm->course)) {
- error("Course is misconfigured");
- }
-
- if (! $workshop = get_record("workshop", "id", $cm->instance)) {
- error("Course module is incorrect");
- }
-
- } else {
- if (! $workshop = get_record("workshop", "id", $a)) {
- error("Course module is 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 (! $cm = get_record("course_modules", "id", $id)) {
+ error("Course Module ID was incorrect");
+ }
+ if (! $course = get_record("course", "id", $cm->course)) {
+ error("Course is misconfigured");
+ }
+ if (! $workshop = get_record("workshop", "id", $cm->instance)) {
+ error("Course module is incorrect");
}
require_login($course->id);
$strassessments = get_string("assessments", "workshop");
// ... print the header and...
- print_header("$course->shortname: $workshop->name", "$course->fullname",
- "$navigation <A HREF=index.php?id=$course->id>$strworkshops</A> ->
- <A HREF=\"view.php?a=$workshop->id\">$workshop->name</A> -> $strassessments",
+ print_header_simple("$workshop->name", "",
+ "<A HREF=index.php?id=$course->id>$strworkshops</A> ->
+ <A HREF=\"view.php?id=$cm->id\">$workshop->name</A> -> $strassessments",
"", "", true);
- //...get the action
- require_variable($action);
-
-
- /*************** add comment to assessment (by author, assessor or teacher) ***************************/
- if ($action == 'addcomment') {
-
- print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop");
- // get assessment record
- if (!$assessmentid = $_REQUEST['aid']) { // comes from link or hidden form variable
- error("Assessment id not given");
- }
- $assessment = get_record("workshop_assessments", "id", $assessmentid);
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Submission not found");
- }
- ?>
- <FORM NAME="commentform" ACTION="assessments.php" METHOD="post">
- <INPUT TYPE="HIDDEN" NAME="action" VALUE="insertcomment">
- <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>">
- <INPUT TYPE="HIDDEN" NAME="aid" VALUE="<?PHP echo $_REQUEST['aid'] ?>">
- <CENTER>
- <TABLE CELLPADDING=5 BORDER=1>
- <?PHP
-
- // now get the comment
- echo "<TR valign=top>\n";
-
- echo " <TD align=right><P><B>". get_string("comment", "workshop").":</B></P></TD>\n";
-
- echo " <TD>\n";
-
- echo " <textarea name=\"comments\" rows=5 cols=75 wrap=\"virtual\">\n";
- echo "</textarea>\n";
-
- echo " </TD></TR></TABLE>\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("savemycomment", "workshop")."\">\n";
- echo "</CENTER></FORM>\n";
- echo "<P><CENTER><B>".get_string("assessment", "workshop"). "</B></CENTER>\n";
- workshop_print_assessment($workshop, $assessment);
- }
-
-
-
- /******************* admin confirm delete ************************************/
- elseif ($action == 'adminconfirmdelete' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['aid'])) {
- error("Admin confirm delete: assessment id missing");
- }
-
- notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")),
- "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id");
- }
-
-
- /******************* admin delete ************************************/
- elseif ($action == 'admindelete' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['aid'])) {
- error("Admin delete: submission id missing");
- }
-
- print_string("deleting", "workshop");
- // first delete all the associated records...
- delete_records("workshop_comments", "assessmentid", $_GET['aid']);
- delete_records("workshop_grades", "assessmentid", $_GET['aid']);
- // ...now delete the assessment...
- delete_records("workshop_assessments", "id", $_GET['aid']);
-
- print_continue("submissions.php?id=$cm->id&action=adminlist");
- }
-
-
- /*********************** admin list of asssessments (of a submission) (by teachers)**************/
- elseif ($action == 'adminlist') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- if (empty($_GET['sid'])) {
- error ("Workshop asssessments: adminlist called with no sid");
- }
- $submission = get_record("workshop_submissions", "id", $_GET['sid']);
- workshop_print_assessments_for_admin($workshop, $submission);
- print_continue("submissions.php?action=adminlist&a=$workshop->id");
- }
-
-
- /*********************** admin list of asssessments by a student (used by teachers only )******************/
- elseif ($action == 'adminlistbystudent') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- if (empty($_GET['userid'])) {
- error ("Workshop asssessments: adminlistbystudent called with no userid");
- }
- $user = get_record("user", "id", $_GET['userid']);
- workshop_print_assessments_by_user_for_admin($workshop, $user);
- print_continue("submissions.php?action=adminlist&a=$workshop->id");
- }
-
-
- /*************** agree (to) assessment (by student) ***************************/
- elseif ($action == 'agreeassessment') {
- $timenow = time();
- // assessment id comes from link or hidden form variable
- if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) {
- error("Assessment : agree assessment failed");
- }
- //save time of agreement
- set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
- echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTER><BR>\n";
-
- add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id");
- print_continue("view.php?id=$cm->id");
- }
-
-
-
- /*************** Assess submission (by teacher or student) ***************************/
- elseif ($action == 'assesssubmission') {
-
- require_variable($sid);
-
- optional_variable($allowcomments);
- if (!isset($allowcomments)) {
- $allowcomments = false;
- }
-
- if (! $submission = get_record("workshop_submissions", "id", $sid)) {
- error("Assess submission is misconfigured - no submission record!");
- }
-
- // there can be an assessment record (for teacher submissions), if there isn't...
- if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid",
+ //...get the action
+ require_variable($action);
+
+
+ /*************** add comment to assessment (by author, assessor or teacher) ***************************/
+ if ($action == 'addcomment') {
+
+ print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop");
+ // get assessment record
+ if (!$assessmentid = $_REQUEST['aid']) { // comes from link or hidden form variable
+ error("Assessment id not given");
+ }
+ $assessment = get_record("workshop_assessments", "id", $assessmentid);
+ if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
+ error("Submission not found");
+ }
+ ?>
+ <FORM NAME="commentform" ACTION="assessments.php" METHOD="post">
+ <INPUT TYPE="HIDDEN" NAME="action" VALUE="insertcomment">
+ <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>">
+ <INPUT TYPE="HIDDEN" NAME="aid" VALUE="<?PHP echo $_REQUEST['aid'] ?>">
+ <CENTER>
+ <TABLE CELLPADDING=5 BORDER=1>
+ <?PHP
+
+ // now get the comment
+ echo "<TR valign=top>\n";\r
+ echo " <TD align=right><P><B>". get_string("comment", "workshop").":</B></P></TD>\n";\r
+ echo " <TD>\n";\r
+ echo " <textarea name=\"comments\" rows=5 cols=75 wrap=\"virtual\">\n";
+ echo "</textarea>\n";\r
+ echo " </TD></TR></TABLE>\n";
+ echo "<INPUT TYPE=submit VALUE=\"".get_string("savemycomment", "workshop")."\">\n";
+ echo "</CENTER></FORM>\n";
+ echo "<P><CENTER><B>".get_string("assessment", "workshop"). "</B></CENTER>\n";
+ workshop_print_assessment($workshop, $assessment);
+ }\r
+
+
+ /******************* admin confirm delete ************************************/
+ elseif ($action == 'adminconfirmdelete' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['aid'])) {
+ error("Admin confirm delete: assessment id missing");
+ }
+
+ notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")),
+ "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id");
+ }
+
+
+ /******************* admin delete ************************************/
+ elseif ($action == 'admindelete' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['aid'])) {
+ error("Admin delete: submission id missing");
+ }
+
+ print_string("deleting", "workshop");
+ // first delete all the associated records...
+ delete_records("workshop_comments", "assessmentid", $_GET['aid']);
+ delete_records("workshop_grades", "assessmentid", $_GET['aid']);
+ // ...now delete the assessment...
+ delete_records("workshop_assessments", "id", $_GET['aid']);
+
+ print_continue("submissions.php?id=$cm->id&action=adminlist");
+ }
+
+
+ /*********************** admin list of asssessments (of a submission) (by teachers)**************/
+ elseif ($action == 'adminlist') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ if (empty($_GET['sid'])) {
+ error ("Workshop asssessments: adminlist called with no sid");
+ }
+ $submission = get_record("workshop_submissions", "id", $_GET['sid']);
+ workshop_print_assessments_for_admin($workshop, $submission);
+ print_continue("submissions.php?action=adminlist&id=$cm->id");
+ }
+
+
+ /*********************** admin list of asssessments by a student (used by teachers only )******************/
+ elseif ($action == 'adminlistbystudent') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ if (empty($_GET['userid'])) {
+ error ("Workshop asssessments: adminlistbystudent called with no userid");
+ }
+ $user = get_record("user", "id", $_GET['userid']);
+ workshop_print_assessments_by_user_for_admin($workshop, $user);
+ print_continue("submissions.php?action=adminlist&id=$cm->id");
+ }
+
+
+ /*************** agree (to) assessment (by student) ***************************/
+ elseif ($action == 'agreeassessment') {
+ $timenow = time();
+ // assessment id comes from link or hidden form variable
+ if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) {
+ error("Assessment : agree assessment failed");
+ }
+ //save time of agreement
+ set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
+ echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTER><BR>\n";
+
+ add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id");
+ print_continue("view.php?id=$cm->id");
+ }\r
+
+
+ /*************** Assess submission (by teacher or student) ***************************/
+ elseif ($action == 'assesssubmission') {
+
+ require_variable($sid);
+
+ optional_variable($allowcomments);
+ if (!isset($allowcomments)) {
+ $allowcomments = false;
+ }
+
+ if (! $submission = get_record("workshop_submissions", "id", $sid)) {
+ error("Assess submission is misconfigured - no submission record!");
+ }
+
+ // there can be an assessment record (for teacher submissions), if there isn't...
+ if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid",
$USER->id)) {
- $yearfromnow = time() + 365 * 86400;
- // ...create one and set timecreated way in the future, this is reset when record is updated
- $assessment->workshopid = $workshop->id;
- $assessment->submissionid = $submission->id;
- $assessment->userid = $USER->id;
- $assessment->grade = -1; // set impossible grade
- $assessment->timecreated = $yearfromnow;
- $assessment->timegraded = 0;
- $assessment->timeagreed = 0;
- $assessment->resubmission = 0;
- if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
- error("Could not insert workshop assessment!");
- }
- }
-
- print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop");
-
- // show assessment and allow changes
- workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]);
- }
-
-
- /*************** display grading form (viewed by student) *********************************/
- elseif ($action == 'displaygradingform') {
-
- print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop");
-
- workshop_print_assessment($workshop); // called with no assessment
- print_continue("view.php?a=$workshop->id");
- }
-
-
-
- /*************** edit comment on assessment (by author, assessor or teacher) ***************************/
- elseif ($action == 'editcomment') {
-
- print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop");
- // get the comment record...
- if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) {
- error("Edit Comment: Comment not found");
- }
- if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
- error("Edit Comment: Assessment not found");
- }
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Edit Comment: Submission not found");
- }
- ?>
- <FORM NAME="gradingform" ACTION="assessments.php" METHOD="post">
- <INPUT TYPE="HIDDEN" NAME="action" VALUE="updatecomment">
- <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>">
- <INPUT TYPE="HIDDEN" NAME="cid" VALUE="<?PHP echo $_GET['cid'] ?>">
- <CENTER>
- <TABLE CELLPADDING=5 BORDER=1>
- <?PHP
-
- // now show the comment
- echo "<TR valign=top>\n";
- echo " <TD align=right><P><B>". get_string("comment", "workshop").":</B></P></TD>\n";
- echo " <TD>\n";
- echo " <textarea name=\"comments\" rows=5 cols=75 wrap=\"virtual\">\n";
- if (isset($comment->comments)) {
- echo $comment->comments;
- }
- echo " </textarea>\n";
- echo " </TD></TR></TABLE>\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("savemycomment", "workshop")."\">\n";
- echo "</CENTER></FORM>\n";
- workshop_print_assessment($workshop, $assessment);
- }
-
-
- /*********************** edit assessment elements (for teachers) ***********************/
- elseif ($action == 'editelements') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $count = count_records("workshop_grades", "workshopid", $workshop->id);
- if ($workshop->phase > 1 and $count) {
- notify(get_string("warningonamendingelements", "workshop"));
- }
- // set up heading, form and table
- print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop");
- ?>
- <form name="form" method="post" action="assessments.php">
- <input type="hidden" name="id" value="<?PHP echo $cm->id ?>">
- <input type="hidden" name="action" value="insertelements">
- <CENTER><TABLE cellpadding=5 border=1>
- <?PHP
-
- // get existing elements, if none set up appropriate default ones
- if ($elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC" )) {
- foreach ($elementsraw as $element) {
- $elements[] = $element; // to renumber index 0,1,2...
- }
- }
- // check for missing elements (this happens either the first time round or when the number of elements is icreased)
- for ($i=0; $i<$workshop->nelements; $i++) {
- if (!isset($elements[$i])) {
- $elements[$i]->description = '';
- $elements[$i]->scale =0;
- $elements[$i]->maxscore = 0;
- $elements[$i]->weight = 11;
- }
- }
+ $yearfromnow = time() + 365 * 86400;
+ // ...create one and set timecreated way in the future, this is reset when record is updated
+ $assessment->workshopid = $workshop->id;
+ $assessment->submissionid = $submission->id;
+ $assessment->userid = $USER->id;
+ $assessment->grade = -1; // set impossible grade
+ $assessment->timecreated = $yearfromnow;
+ $assessment->timegraded = 0;
+ $assessment->timeagreed = 0;
+ $assessment->resubmission = 0;
+ if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
+ error("Could not insert workshop assessment!");
+ }
+ }
+
+ print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop");
+
+ // show assessment and allow changes
+ workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]);
+ }
+
+
+ /*************** display grading form (viewed by student) *********************************/
+ elseif ($action == 'displaygradingform') {
+
+ print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop");
+
+ workshop_print_assessment($workshop); // called with no assessment
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /*************** edit comment on assessment (by author, assessor or teacher) ***************************/
+ elseif ($action == 'editcomment') {
+
+ print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop");
+ // get the comment record...
+ if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) {
+ error("Edit Comment: Comment not found");
+ }
+ if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
+ error("Edit Comment: Assessment not found");
+ }
+ if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
+ error("Edit Comment: Submission not found");
+ }
+ ?>
+ <FORM NAME="gradingform" ACTION="assessments.php" METHOD="post">
+ <INPUT TYPE="HIDDEN" NAME="action" VALUE="updatecomment">
+ <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>">
+ <INPUT TYPE="HIDDEN" NAME="cid" VALUE="<?PHP echo $_GET['cid'] ?>">
+ <CENTER>
+ <TABLE CELLPADDING=5 BORDER=1>
+ <?PHP
+
+ // now show the comment
+ echo "<TR valign=top>\n";
+ echo " <TD align=right><P><B>". get_string("comment", "workshop").":</B></P></TD>\n";
+ echo " <TD>\n";
+ echo " <textarea name=\"comments\" rows=5 cols=75 wrap=\"virtual\">\n";
+ if (isset($comment->comments)) {
+ echo $comment->comments;
+ }
+ echo " </textarea>\n";
+ echo " </TD></TR></TABLE>\n";
+ echo "<INPUT TYPE=submit VALUE=\"".get_string("savemycomment", "workshop")."\">\n";
+ echo "</CENTER></FORM>\n";
+ workshop_print_assessment($workshop, $assessment);
+ }
+
+
+ /*********************** edit assessment elements (for teachers) ***********************/
+ elseif ($action == 'editelements') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $count = count_records("workshop_grades", "workshopid", $workshop->id);
+ if ($workshop->phase > 1 and $count) {
+ notify(get_string("warningonamendingelements", "workshop"));
+ }
+ // set up heading, form and table
+ print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop");
+ ?>
+ <form name="form" method="post" action="assessments.php">
+ <input type="hidden" name="id" value="<?PHP echo $cm->id ?>">
+ <input type="hidden" name="action" value="insertelements">
+ <CENTER><TABLE cellpadding=5 border=1>
+ <?PHP
+
+ // get existing elements, if none set up appropriate default ones
+ if ($elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC" )) {
+ foreach ($elementsraw as $element) {
+ $elements[] = $element; // to renumber index 0,1,2...
+ }
+ }
+ // check for missing elements (this happens either the first time round or when the number of elements is icreased)
+ for ($i=0; $i<$workshop->nelements; $i++) {
+ if (!isset($elements[$i])) {
+ $elements[$i]->description = '';
+ $elements[$i]->scale =0;
+ $elements[$i]->maxscore = 0;
+ $elements[$i]->weight = 11;
+ }
+ }
- switch ($workshop->gradingstrategy) {
- case 0: // no grading
- for ($i=0; $i<$workshop->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
- echo " </TD></TR>\n";
- echo "<TR valign=top>\n";
- echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
- echo "</TR>\n";
- }
- break;
-
- case 1: // accumulative grading
- // set up scales name
- foreach ($WORKSHOP_SCALES as $KEY => $SCALE) {
- $SCALES[] = $SCALE['name'];
- }
- for ($i=0; $i<$workshop->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
- echo " </TD></TR>\n";
- echo "<TR valign=top>\n";
- echo " <TD align=right><P><B>". get_string("typeofscale", "workshop"). ":</B></P></TD>\n";
- echo "<TD valign=\"top\">\n";
- choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, "");
- if ($elements[$i]->weight == '') { // not set
- $elements[$i]->weight = 11; // unity
- }
- echo "</TR>\n";
- echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n";
- workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
- echo " </TD>\n";
- echo "</TR>\n";
- echo "<TR valign=top>\n";
- echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
- echo "</TR>\n";
- }
- break;
-
- case 2: // error banded grading
- for ($i=0; $i<$workshop->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
- echo " </TD></TR>\n";
- if ($elements[$i]->weight == '') { // not set
- $elements[$i]->weight = 11; // unity
- }
- echo "</TR>\n";
- echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n";
- workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
- echo " </TD>\n";
- echo "</TR>\n";
- echo "<TR valign=top>\n";
- echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
- echo "</TR>\n";
- }
- echo "</CENTER></TABLE><BR>\n";
- echo "<P><CENTER><B>".get_string("gradetable","workshop")."</B></CENTER>\n";
- echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">".
- get_string("numberofnegativeresponses", "workshop");
- echo "</TD><TD>". get_string("suggestedgrade", "workshop")."</TD></TR>\n";
- for ($j = $workshop->grade; $j >= 0; $j--) {
- $numbers[$j] = $j;
- }
- for ($i=0; $i<=$workshop->nelements; $i++) {
- echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">";
- if (!isset($elements[$i])) { // the "last one" will be!
- $elements[$i]->description = "";
- $elements[$i]->maxscore = 0;
- }
- choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
- echo "</TD></TR>\n";
- }
- echo "</TABLE></CENTER>\n";
- break;
-
- case 3: // criterion grading
- for ($j = 100; $j >= 0; $j--) {
- $numbers[$j] = $j;
- }
- for ($i=0; $i<$workshop->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("criterion","workshop")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
- echo " </TD></TR>\n";
- echo "<TR><TD><B>". get_string("suggestedgrade", "workshop").":</B></TD><TD>\n";
- choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
- echo "</TD></TR>\n";
- echo "<TR valign=top>\n";
- echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
- echo "</TR>\n";
- }
- break;
-
- case 4: // rubric
- for ($j = 100; $j >= 0; $j--) {
- $numbers[$j] = $j;
- }
- if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) {
- foreach ($rubricsraw as $rubric) {
- $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2...
- }
- }
- for ($i=0; $i<$workshop->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
-
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
-
- echo " </TD></TR>\n";
- echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n";
- workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
- echo " </TD>\n";
- echo "</TR>\n";
-
- for ($j=0; $j<5; $j++) {
- $jplus1 = $j+1;
- if (empty($rubrics[$i][$j])) {
- $rubrics[$i][$j] = "";
- }
- echo "<TR valign=top>\n";
-
- echo " <TD ALIGN=RIGHT><P><B>". get_string("grade","workshop")." $j:</B></TD>\n";
-
- echo "<TD><textarea name=\"rubric[$i][$j]\" rows=3 cols=75 wrap=\"virtual\">".$rubrics[$i][$j]."</textarea>\n";
-
- echo " </TD></TR>\n";
- }
- echo "<TR valign=top>\n";
-
- echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
-
- echo "</TR>\n";
- }
- break;
- }
- // close table and form
-
- ?>
- </TABLE>
- <input type="submit" value="<?php print_string("savechanges") ?>">
- <input type="submit" name=cancel value="<?php print_string("cancel") ?>">
- </CENTER>
-
- </FORM>
- <?PHP
- }
-
-
- /*************** grade (student's) assessment (by teacher) ***************************/
- elseif ($action == 'gradeassessment') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- // set up coment scale
- for ($i=COMMENTSCALE; $i>=0; $i--) {
- $num[$i] = $i;
- }
-
- print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
- // get assessment record
- if (!$assessmentid = $_GET['aid']) {
- error("Assessment id not given");
- }
- $assessment = get_record("workshop_assessments", "id", $assessmentid);
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Submission not found");
- }
- // get the teacher's assessment first
- if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) {
- echo "<P><CENTER><B>".get_string("teacherassessments", "workshop", $course->teacher)."</B></CENTER>\n";
- workshop_print_assessment($workshop, $teachersassessment);
- }
- // now the student's assessment (don't allow changes)
- $user = get_record("user", "id", $assessment->userid);
- echo "<P><CENTER><B>".get_string("assessmentby", "workshop", fullname($user))."</B></CENTER>\n";
- workshop_print_assessment($workshop, $assessment);
-
- ?>
- <FORM NAME="gradingform" ACTION="assessments.php" METHOD="post">
- <INPUT TYPE="HIDDEN" NAME="action" VALUE="updategrading">
- <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>">
- <INPUT TYPE="HIDDEN" NAME="stype" VALUE="<?PHP echo $_GET['stype'] ?>">
- <INPUT TYPE="HIDDEN" NAME="aid" VALUE="<?PHP echo $_GET['aid'] ?>">
- <CENTER>
- <TABLE CELLPADDING=5 BORDER=1>
- <?PHP
-
- // now get the teacher's comment
- echo "<TR valign=top>\n";
- echo " <TD align=right><P><B>". get_string("teacherscomment", "workshop").":</B></P></TD>\n";
-
- echo " <TD>\n";
-
- echo " <textarea name=\"teachercomment\" rows=5 cols=75 wrap=\"virtual\">\n";
- if (isset($assessment->teachercomment)) {
- echo $assessment->teachercomment;
- }
- echo "</textarea>\n";
-
- echo " </TD>\n";
-
- echo "</TR>\n";
-
- echo "<TR><TD ALIGN=RIGHT><B>".get_string("gradeforstudentsassessment", "workshop")."</TD><TD>\n";
- choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, "");
- echo "</TD></TR></TABLE>\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("savemygrading", "workshop")."\">\n";
- echo "</CENTER></FORM>\n";
- }
-
-
-
- /*************** insert (new) comment (by author, assessor or teacher) ***************************/
- elseif ($action == 'insertcomment') {
- $timenow = time();
-
- $form = (object)$_POST;
-
- if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
- error("Unable to insert comment");
- }
- // save the comment...
- $comment->workshopid = $workshop->id;
- $comment->assessmentid = $assessment->id;
- $comment->userid = $USER->id;
- $comment->timecreated = $timenow;
- $comment->comments = $form->comments;
- if (!$comment->id = insert_record("workshop_comments", $comment)) {
- error("Could not insert workshop comment!");
- }
-
- add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id");
-
- print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id");
- }
-
-
-
- /*********************** insert/update assignment elements (for teachers)***********************/
- elseif ($action == 'insertelements') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $form = (object)$HTTP_POST_VARS;
-
- // let's not fool around here, dump the junk!
- delete_records("workshop_elements", "workshopid", $workshop->id);
-
- // determine wich type of grading
- switch ($workshop->gradingstrategy) {
- case 0: // no grading
- // Insert all the elements that contain something
- foreach ($form->description as $key => $description) {
- if ($description) {
- unset($element);
- $element->description = $description;
- $element->workshopid = $workshop->id;
- $element->elementno = $key;
- if (!$element->id = insert_record("workshop_elements", $element)) {
- error("Could not insert workshop element!");
- }
- }
- }
- break;
-
- case 1: // accumulative grading
- // Insert all the elements that contain something
- foreach ($form->description as $key => $description) {
- if ($description) {
- unset($element);
- $element->description = $description;
- $element->workshopid = $workshop->id;
- $element->elementno = $key;
- if (isset($form->scale[$key])) {
- $element->scale = $form->scale[$key];
- switch ($WORKSHOP_SCALES[$form->scale[$key]]['type']) {
- case 'radio' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'] - 1;
- break;
- case 'selection' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'];
- break;
- }
- }
- if (isset($form->weight[$key])) {
- $element->weight = $form->weight[$key];
- }
- if (!$element->id = insert_record("workshop_elements", $element)) {
- error("Could not insert workshop element!");
- }
- }
- }
- break;
-
- case 2: // error banded grading...
- case 3: // ...and criterion grading
- // Insert all the elements that contain something, the number of descriptions is one less than the number of grades
- foreach ($form->maxscore as $key => $themaxscore) {
- unset($element);
- $element->workshopid = $workshop->id;
- $element->elementno = $key;
- $element->maxscore = $themaxscore;
- if (isset($form->description[$key])) {
- $element->description = $form->description[$key];
- }
- if (isset($form->weight[$key])) {
- $element->weight = $form->weight[$key];
- }
- if (!$element->id = insert_record("workshop_elements", $element)) {
- error("Could not insert workshop element!");
- }
- }
- break;
-
- case 4: // ...and criteria grading
- // Insert all the elements that contain something
- foreach ($form->description as $key => $description) {
- unset($element);
- $element->workshopid = $workshop->id;
- $element->elementno = $key;
- $element->description = $description;
- $element->weight = $form->weight[$key];
- for ($j=0;$j<5;$j++) {
- if (empty($form->rubric[$key][$j]))
- break;
- }
- $element->maxscore = $j - 1;
- if (!$element->id = insert_record("workshop_elements", $element)) {
- error("Could not insert workshop element!");
- }
- }
- // let's not fool around here, dump the junk!
- delete_records("workshop_rubrics", "workshopid", $workshop->id);
- for ($i=0;$i<$workshop->nelements;$i++) {
- for ($j=0;$j<5;$j++) {
- unset($element);
- if (empty($form->rubric[$i][$j])) { // OK to have an element with fewer than 5 items
- break;
- }
- $element->workshopid = $workshop->id;
- $element->elementno = $i;
- $element->rubricno = $j;
- $element->description = $form->rubric[$i][$j];
- if (!$element->id = insert_record("workshop_rubrics", $element)) {
- error("Could not insert workshop element!");
- }
- }
- }
- break;
- } // end of switch
-
- redirect("view.php?id=$cm->id", get_string("savedok","workshop"));
- }
-
-
- /*********************** list assessments for grading (Student submissions)(by teachers)***********************/
- elseif ($action == 'listungradedstudentsubmissions') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- workshop_list_ungraded_assessments($workshop, "student");
- print_continue("view.php?a=$workshop->id");
- }
-
-
- /*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/
- elseif ($action == 'listungradedteachersubmissions') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- workshop_list_ungraded_assessments($workshop, "teacher");
- print_continue("view.php?a=$workshop->id");
- }
-
-
- /****************** list teacher submissions ***********************/
- elseif ($action == 'listteachersubmissions') {
-
- workshop_list_teacher_submissions($workshop, $USER);
- print_continue("view.php?a=$workshop->id");
- }
+ switch ($workshop->gradingstrategy) {
+ case 0: // no grading
+ for ($i=0; $i<$workshop->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
+ echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
+ echo " </TD></TR>\n";
+ echo "<TR valign=top>\n";
+ echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
+ echo "</TR>\n";
+ }
+ break;
+
+ case 1: // accumulative grading
+ // set up scales name
+ foreach ($WORKSHOP_SCALES as $KEY => $SCALE) {
+ $SCALES[] = $SCALE['name'];
+ }
+ for ($i=0; $i<$workshop->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
+ echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
+ echo " </TD></TR>\n";
+ echo "<TR valign=top>\n";
+ echo " <TD align=right><P><B>". get_string("typeofscale", "workshop"). ":</B></P></TD>\n";
+ echo "<TD valign=\"top\">\n";
+ choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, "");
+ if ($elements[$i]->weight == '') { // not set
+ $elements[$i]->weight = 11; // unity
+ }
+ echo "</TR>\n";
+ echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n";
+ workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
+ echo " </TD>\n";
+ echo "</TR>\n";
+ echo "<TR valign=top>\n";
+ echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
+ echo "</TR>\n";
+ }
+ break;
+
+ case 2: // error banded grading
+ for ($i=0; $i<$workshop->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
+ echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
+ echo " </TD></TR>\n";
+ if ($elements[$i]->weight == '') { // not set
+ $elements[$i]->weight = 11; // unity
+ }
+ echo "</TR>\n";
+ echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n";
+ workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
+ echo " </TD>\n";
+ echo "</TR>\n";
+ echo "<TR valign=top>\n";
+ echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
+ echo "</TR>\n";
+ }
+ echo "</CENTER></TABLE><BR>\n";
+ echo "<P><CENTER><B>".get_string("gradetable","workshop")."</B></CENTER>\n";
+ echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">".
+ get_string("numberofnegativeresponses", "workshop");
+ echo "</TD><TD>". get_string("suggestedgrade", "workshop")."</TD></TR>\n";
+ for ($j = $workshop->grade; $j >= 0; $j--) {
+ $numbers[$j] = $j;
+ }
+ for ($i=0; $i<=$workshop->nelements; $i++) {
+ echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">";
+ if (!isset($elements[$i])) { // the "last one" will be!
+ $elements[$i]->description = "";
+ $elements[$i]->maxscore = 0;
+ }
+ choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
+ echo "</TD></TR>\n";
+ }
+ echo "</TABLE></CENTER>\n";
+ break;
+
+ case 3: // criterion grading
+ for ($j = 100; $j >= 0; $j--) {
+ $numbers[$j] = $j;
+ }
+ for ($i=0; $i<$workshop->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("criterion","workshop")." $iplus1:</B></TD>\n";
+ echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
+ echo " </TD></TR>\n";
+ echo "<TR><TD><B>". get_string("suggestedgrade", "workshop").":</B></TD><TD>\n";
+ choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
+ echo "</TD></TR>\n";
+ echo "<TR valign=top>\n";
+ echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
+ echo "</TR>\n";
+ }
+ break;
+
+ case 4: // rubric
+ for ($j = 100; $j >= 0; $j--) {
+ $numbers[$j] = $j;
+ }
+ if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) {
+ foreach ($rubricsraw as $rubric) {
+ $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2...
+ }
+ }
+ for ($i=0; $i<$workshop->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n";
+ echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";
+ echo " </TD></TR>\n";
+ echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n";
+ workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
+ echo " </TD>\n";
+ echo "</TR>\n";
+
+ for ($j=0; $j<5; $j++) {
+ $jplus1 = $j+1;
+ if (empty($rubrics[$i][$j])) {
+ $rubrics[$i][$j] = "";
+ }
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("grade","workshop")." $j:</B></TD>\n";
+ echo "<TD><textarea name=\"rubric[$i][$j]\" rows=3 cols=75 wrap=\"virtual\">".$rubrics[$i][$j]."</textarea>\n";
+ echo " </TD></TR>\n";
+ }
+ echo "<TR valign=top>\n";
+ echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
+ echo "</TR>\n";
+ }
+ break;
+ }
+ // close table and form\r
+ ?>
+ </TABLE>
+ <input type="submit" value="<?php print_string("savechanges") ?>">
+ <input type="submit" name=cancel value="<?php print_string("cancel") ?>">
+ </CENTER>
+ </FORM>
+ <?PHP
+ }
+
+
+ /*************** grade all assessments (by teacher) ***************************/
+ elseif ($action == 'gradeallassessments') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ print_heading(get_string("gradingallassessments", "workshop"));
+ workshop_grade_assessments($workshop);
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /*************** grade (student's) assessment (by teacher) ***************************/
+ elseif ($action == 'gradeassessment') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ // set up coment scale
+ for ($i=COMMENTSCALE; $i>=0; $i--) {
+ $num[$i] = $i;
+ }
+
+ print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
+ // get assessment record
+ if (!$assessmentid = $_GET['aid']) {
+ error("Assessment id not given");
+ }
+ $assessment = get_record("workshop_assessments", "id", $assessmentid);
+ if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
+ error("Submission not found");
+ }
+ // get the teacher's assessment first
+ if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) {
+ echo "<P><CENTER><B>".get_string("teacherassessments", "workshop", $course->teacher)."</B></CENTER>\n";
+ workshop_print_assessment($workshop, $teachersassessment);
+ }
+ // now the student's assessment (don't allow changes)
+ $user = get_record("user", "id", $assessment->userid);
+ echo "<P><CENTER><B>".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."</B></CENTER>\n";
+ workshop_print_assessment($workshop, $assessment);
+
+ ?>
+ <FORM NAME="gradingform" ACTION="assessments.php" METHOD="post">
+ <INPUT TYPE="HIDDEN" NAME="action" VALUE="updategrading">
+ <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>">
+ <INPUT TYPE="HIDDEN" NAME="stype" VALUE="<?PHP echo $_GET['stype'] ?>">
+ <INPUT TYPE="HIDDEN" NAME="aid" VALUE="<?PHP echo $_GET['aid'] ?>">
+ <CENTER>
+ <TABLE CELLPADDING=5 BORDER=1>
+ <?PHP
+
+ // now get the teacher's comment
+ echo "<TR valign=top>\n";
+ echo " <TD align=right><P><B>". get_string("teacherscomment", "workshop").":</B></P></TD>\n";
+ echo " <TD>\n";
+ echo " <textarea name=\"teachercomment\" rows=5 cols=75 wrap=\"virtual\">\n";
+ if (isset($assessment->teachercomment)) {
+ echo $assessment->teachercomment;
+ }
+ echo "</textarea>\n";
+ echo " </TD>\n";
+ echo "</TR>\n";
+ echo "<TR><TD ALIGN=RIGHT><B>".get_string("gradeforstudentsassessment", "workshop")."</TD><TD>\n";
+ choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, "");
+ echo "</TD></TR></TABLE>\n";
+ echo "<INPUT TYPE=submit VALUE=\"".get_string("savemygrading", "workshop")."\">\n";
+ echo "</CENTER></FORM>\n";
+ }
+
+
+ /*************** insert (new) comment (by author, assessor or teacher) ***************************/
+ elseif ($action == 'insertcomment') {
+ $timenow = time();
+
+ $form = (object)$_POST;
+
+ if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
+ error("Unable to insert comment");
+ }
+ // save the comment...
+ $comment->workshopid = $workshop->id;
+ $comment->assessmentid = $assessment->id;
+ $comment->userid = $USER->id;
+ $comment->timecreated = $timenow;
+ $comment->comments = $form->comments;
+ if (!$comment->id = insert_record("workshop_comments", $comment)) {
+ error("Could not insert workshop comment!");
+ }
+
+ add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id");
+
+ print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id");
+ }
+
+
+ /*********************** insert/update assignment elements (for teachers)***********************/
+ elseif ($action == 'insertelements') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $form = (object)$HTTP_POST_VARS;
+
+ // let's not fool around here, dump the junk!
+ delete_records("workshop_elements", "workshopid", $workshop->id);
+
+ // determine wich type of grading
+ switch ($workshop->gradingstrategy) {
+ case 0: // no grading
+ // Insert all the elements that contain something
+ foreach ($form->description as $key => $description) {
+ if ($description) {
+ unset($element);
+ $element->description = $description;
+ $element->workshopid = $workshop->id;
+ $element->elementno = $key;
+ if (!$element->id = insert_record("workshop_elements", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ }
+ break;
+
+ case 1: // accumulative grading
+ // Insert all the elements that contain something
+ foreach ($form->description as $key => $description) {
+ if ($description) {
+ unset($element);
+ $element->description = $description;
+ $element->workshopid = $workshop->id;
+ $element->elementno = $key;
+ if (isset($form->scale[$key])) {
+ $element->scale = $form->scale[$key];
+ switch ($WORKSHOP_SCALES[$form->scale[$key]]['type']) {
+ case 'radio' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'] - 1;
+ break;
+ case 'selection' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'];
+ break;
+ }
+ }
+ if (isset($form->weight[$key])) {
+ $element->weight = $form->weight[$key];
+ }
+ if (!$element->id = insert_record("workshop_elements", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ }
+ break;
+
+ case 2: // error banded grading...
+ case 3: // ...and criterion grading
+ // Insert all the elements that contain something, the number of descriptions is one less than the number of grades
+ foreach ($form->maxscore as $key => $themaxscore) {
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->elementno = $key;
+ $element->maxscore = $themaxscore;
+ if (isset($form->description[$key])) {
+ $element->description = $form->description[$key];
+ }
+ if (isset($form->weight[$key])) {
+ $element->weight = $form->weight[$key];
+ }
+ if (!$element->id = insert_record("workshop_elements", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ break;
+
+ case 4: // ...and criteria grading
+ // Insert all the elements that contain something
+ foreach ($form->description as $key => $description) {
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->elementno = $key;
+ $element->description = $description;
+ $element->weight = $form->weight[$key];
+ for ($j=0;$j<5;$j++) {
+ if (empty($form->rubric[$key][$j]))
+ break;
+ }
+ $element->maxscore = $j - 1;
+ if (!$element->id = insert_record("workshop_elements", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ // let's not fool around here, dump the junk!
+ delete_records("workshop_rubrics", "workshopid", $workshop->id);
+ for ($i=0;$i<$workshop->nelements;$i++) {
+ for ($j=0;$j<5;$j++) {
+ unset($element);
+ if (empty($form->rubric[$i][$j])) { // OK to have an element with fewer than 5 items
+ break;
+ }
+ $element->workshopid = $workshop->id;
+ $element->elementno = $i;
+ $element->rubricno = $j;
+ $element->description = $form->rubric[$i][$j];
+ if (!$element->id = insert_record("workshop_rubrics", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ }
+ break;
+ } // end of switch
+
+ redirect("view.php?id=$cm->id", get_string("savedok","workshop"));
+ }
+
+
+ /*********************** list assessments for grading (Student submissions)(by teachers)***********************/
+ elseif ($action == 'listungradedstudentsubmissions') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ workshop_list_ungraded_assessments($workshop, "student");
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/
+ elseif ($action == 'listungradedteachersubmissions') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ workshop_list_ungraded_assessments($workshop, "teacher");
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /****************** list teacher submissions ***********************/
+ elseif ($action == 'listteachersubmissions') {
+
+ workshop_list_teacher_submissions($workshop, $USER);
+ print_continue("view.php?id=$cm->id");
+ }
/*************** update assessment (by teacher or student) ***************************/
$timenow = time();
// don't fiddle about, delete all the old and add the new!
- delete_records("workshop_grades", "assessmentid", $assessment->id);
-
- $form = (object)$HTTP_POST_VARS;
-
- //determine what kind of grading we have
- switch ($workshop->gradingstrategy) {
- case 0: // no grading
- // Insert all the elements that contain something
- foreach ($form->feedback as $key => $thefeedback) {
- unset($element);
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $thefeedback;
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
- }
- }
- $grade = 0; // set to satisfy save to db
- break;
-
- case 1: // accumulative grading
- // Insert all the elements that contain something
- foreach ($form->grade as $key => $thegrade) {
- unset($element);
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $form->feedback[$key];
- $element->grade = $thegrade;
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
- }
- }
- // now work out the grade...
- $rawgrade=0;
- $totalweight=0;
- foreach ($form->grade as $key => $grade) {
- $maxscore = $elements[$key]->maxscore;
- $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
- if ($weight > 0) {
- $totalweight += $weight;
- }
- $rawgrade += ($grade / $maxscore) * $weight;
- // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<BR>";
- }
- $grade = $workshop->grade * ($rawgrade / $totalweight);
- break;
-
- case 2: // error banded graded
- // Insert all the elements that contain something
- $error = 0.0;
- for ($i =0; $i < $workshop->nelements; $i++) {
- unset($element);
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $i;
- $element->feedback = $form->feedback[$i];
- $element->grade = $form->grade[$i];
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
- }
- if (empty($form->grade[$i])){
- $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
- }
- }
- // now save the adjustment
- unset($element);
- $i = $workshop->nelements;
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $i;
- $element->grade = $form->grade[$i];
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
- }
- $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]);
- echo "<P><B>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</B>\n";
- break;
-
- case 3: // criteria grading
- // save in the selected criteria value in element zero,
- unset($element);
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = 0;
- $element->grade = $form->grade[0];
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
+ delete_records("workshop_grades", "assessmentid", $assessment->id);
+
+ $form = (object)$HTTP_POST_VARS;
+
+ //determine what kind of grading we have
+ switch ($workshop->gradingstrategy) {
+ case 0: // no grading
+ // Insert all the elements that contain something
+ foreach ($form->feedback as $key => $thefeedback) {
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $thefeedback;
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ $grade = 0; // set to satisfy save to db
+ break;
+
+ case 1: // accumulative grading
+ // Insert all the elements that contain something
+ foreach ($form->grade as $key => $thegrade) {
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $form->feedback[$key];
+ $element->grade = $thegrade;
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ // now work out the grade...
+ $rawgrade=0;
+ $totalweight=0;
+ foreach ($form->grade as $key => $grade) {
+ $maxscore = $elements[$key]->maxscore;
+ $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
+ if ($weight > 0) {
+ $totalweight += $weight;
+ }
+ $rawgrade += ($grade / $maxscore) * $weight;
+ // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<BR>";
+ }
+ $grade = 100.0 * ($rawgrade / $totalweight);
+ break;
+
+ case 2: // error banded graded
+ // Insert all the elements that contain something
+ $error = 0.0;
+ for ($i =0; $i < $workshop->nelements; $i++) {
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $i;
+ $element->feedback = $form->feedback[$i];
+ $element->grade = $form->grade[$i];
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ if (empty($form->grade[$i])){
+ $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
+ }
+ }
+ // now save the adjustment
+ unset($element);
+ $i = $workshop->nelements;
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $i;
+ $element->grade = $form->grade[$i];
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
+ // do sanity check
+ if ($grade < 0) {
+ $grade = 0;
+ } elseif ($grade > 100) {
+ $grade = 100;
}
- // now save the adjustment in element one
- unset($element);
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = 1;
- $element->grade = $form->grade[1];
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
- }
- $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]) * $workshop->grade / 100;
- break;
-
- case 4: // rubric grading (identical to accumulative grading)
- // Insert all the elements that contain something
- foreach ($form->grade as $key => $thegrade) {
- unset($element);
- $element->workshopid = $workshop->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $form->feedback[$key];
- $element->grade = $thegrade;
- if (!$element->id = insert_record("workshop_grades", $element)) {
- error("Could not insert workshop element!");
- }
- }
- // now work out the grade...
- $rawgrade=0;
- $totalweight=0;
- foreach ($form->grade as $key => $grade) {
- $maxscore = $elements[$key]->maxscore;
- $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
- if ($weight > 0) {
- $totalweight += $weight;
- }
- $rawgrade += ($grade / $maxscore) * $weight;
- }
- $grade = $workshop->grade * ($rawgrade / $totalweight);
- break;
-
- } // end of switch
-
- // update the time of the assessment record (may be re-edited)...
- set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id);
-
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error ("Updateassessment: submission record not found");
- }
-
- // if the workshop does need peer agreement AND it's self assessment then set timeagreed
- if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) {
- set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
- }
-
- set_field("workshop_assessments", "grade", $grade, "id", $assessment->id);
- // ...and clear any grading of this assessment...
- set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id);
- set_field("workshop_assessments", "gradinggrade", 0, "id", $assessment->id);
- // ...and the resubmission flag
+ echo "<P><B>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</B>\n";
+ break;
+
+ case 3: // criteria grading
+ // save in the selected criteria value in element zero,
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = 0;
+ $element->grade = $form->grade[0];
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ // now save the adjustment in element one
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = 1;
+ $element->grade = $form->grade[1];
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
+ break;
+
+ case 4: // rubric grading (identical to accumulative grading)
+ // Insert all the elements that contain something
+ foreach ($form->grade as $key => $thegrade) {
+ unset($element);
+ $element->workshopid = $workshop->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $form->feedback[$key];
+ $element->grade = $thegrade;
+ if (!$element->id = insert_record("workshop_grades", $element)) {
+ error("Could not insert workshop element!");
+ }
+ }
+ // now work out the grade...
+ $rawgrade=0;
+ $totalweight=0;
+ foreach ($form->grade as $key => $grade) {
+ $maxscore = $elements[$key]->maxscore;
+ $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
+ if ($weight > 0) {
+ $totalweight += $weight;
+ }
+ $rawgrade += ($grade / $maxscore) * $weight;
+ }
+ $grade = 100.0 * ($rawgrade / $totalweight);
+ break;
+
+ } // end of switch
+
+ // update the time of the assessment record (may be re-edited)...
+ set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id);
+
+ if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
+ error ("Updateassessment: submission record not found");
+ }
+
+ // if the workshop does need peer agreement AND it's self assessment then set timeagreed
+ if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) {
+ set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
+ }
+
+ set_field("workshop_assessments", "grade", $grade, "id", $assessment->id);
+ // ...and clear any grading of this assessment...
+ set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id);
+ set_field("workshop_assessments", "gradinggrade", 0, "id", $assessment->id);
+ // ...and the resubmission flag
set_field("workshop_assessments", "resubmission", 0, "id", $assessment->id);
// any comment?
- if (!empty($form->generalcomment)) {
- set_field("workshop_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
- }
-
+ if (!empty($form->generalcomment)) {
+ set_field("workshop_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
+ }
+
add_to_log($course->id, "workshop", "assess",
"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
// show grade if grading strategy is not zero
if ($workshop->gradingstrategy) {
- redirect($returnto, get_string("thegradeis", "workshop").": ".number_format($grade, 2).
+ redirect($returnto, get_string("thegradeis", "workshop").": ".
+ number_format($grade * $workshop->grade / 100, 2).
" (".get_string("maximumgrade")." ".number_format($workshop->grade).")");
}
else {
/****************** user delete ************************************/
elseif ($action == 'userdelete' ) {
- if (empty($_GET['aid'])) {
- error("User delete: assessment id missing");
- }
-
- print_string("deleting", "workshop");
- // first delete all the associated records...
- delete_records("workshop_comments", "assessmentid", $_GET['aid']);
- delete_records("workshop_grades", "assessmentid", $_GET['aid']);
- // ...now delete the assessment...
- delete_records("workshop_assessments", "id", $_GET['aid']);
-
- print_continue("view.php?id=$cm->id");
- }
-
-
- /****************** view all assessments ***********************/
- elseif ($action == 'viewallassessments') {
-
- if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
- error("View All Assessments: submission record not found");
- }
-
- if ($assessments = workshop_get_assessments($submission)) {
- foreach ($assessments as $assessment) {
- workshop_print_assessment($workshop, $assessment);
- }
- }
- // only called from list all submissions
- print_continue("submissions.php?action=listallsubmissions&id=$cm->id");
- }
-
-
- /****************** view assessment *****************************/
- elseif ($action == 'viewassessment') {
-
- optional_variable($allowcomments);
- if (!isset($allowcomments)) {
- $allowcomments = false;
- }
-
- // get the assessment record
- if (!$assessment = get_record("workshop_assessments", "id", $_GET['aid'])) {
- error("Assessment record not found");
- }
-
- // show assessment but don't allow changes
- workshop_print_assessment($workshop, $assessment, false, $allowcomments);
-
- print_continue("view.php?a=$workshop->id");
- }
-
-
- /*************** no man's land **************************************/
- else {
- error("Fatal Error: Unknown Action: ".$action."\n");
- }
+ if (empty($_GET['aid'])) {
+ error("User delete: assessment id missing");
+ }
+
+ print_string("deleting", "workshop");
+ // first delete all the associated records...
+ delete_records("workshop_comments", "assessmentid", $_GET['aid']);
+ delete_records("workshop_grades", "assessmentid", $_GET['aid']);
+ // ...now delete the assessment...
+ delete_records("workshop_assessments", "id", $_GET['aid']);
+
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /****************** view all assessments ***********************/
+ elseif ($action == 'viewallassessments') {
+
+ if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
+ error("View All Assessments: submission record not found");
+ }
+
+ if ($assessments = workshop_get_assessments($submission)) {
+ foreach ($assessments as $assessment) {
+ workshop_print_assessment($workshop, $assessment);
+ }
+ }
+ // only called from list all submissions
+ print_continue("submissions.php?action=listallsubmissions&id=$cm->id");
+ }
+
+
+ /****************** view assessment *****************************/
+ elseif ($action == 'viewassessment') {
+
+ optional_variable($allowcomments);
+ if (!isset($allowcomments)) {
+ $allowcomments = false;
+ }
+
+ // get the assessment record
+ if (!$assessment = get_record("workshop_assessments", "id", $_GET['aid'])) {
+ error("Assessment record not found");
+ }
+
+ // show assessment but don't allow changes
+ workshop_print_assessment($workshop, $assessment, false, $allowcomments);
+
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /*************** no man's land **************************************/
+ else {
+ error("Fatal Error: Unknown Action: ".$action."\n");
+ }
print_footer($course);
fwrite ($bf,full_tag("MAXBYTES",4,false,$workshop->maxbytes));
fwrite ($bf,full_tag("DEADLINE",4,false,$workshop->deadline));
fwrite ($bf,full_tag("GRADE",4,false,$workshop->grade));
+ fwrite ($bf,full_tag("GRADINGGRADE",4,false,$workshop->gradinggrade));
fwrite ($bf,full_tag("NTASSESSMENTS",4,false,$workshop->ntassessments));
+ fwrite ($bf,full_tag("ASSESSMENTCOMPS",4,false,$workshop->assessmentcomps));
fwrite ($bf,full_tag("NSASSESSMENTS",4,false,$workshop->nsassessments));
fwrite ($bf,full_tag("OVERALLOCATION",4,false,$workshop->overallocation));
fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$workshop->timemodified));
- fwrite ($bf,full_tag("MERGEGRADES",4,false,$workshop->mergegrades));
fwrite ($bf,full_tag("TEACHERWEIGHT",4,false,$workshop->teacherweight));
- fwrite ($bf,full_tag("PEERWEIGHT",4,false,$workshop->peerweight));
- fwrite ($bf,full_tag("INCLUDETEACHERSGRADE",4,false,$workshop->includeteachersgrade));
- fwrite ($bf,full_tag("BIASWEIGHT",4,false,$workshop->biasweight));
- fwrite ($bf,full_tag("RELIABILITYWEIGHT",4,false,$workshop->reliabilityweight));
- fwrite ($bf,full_tag("GRADINGWEIGHT",4,false,$workshop->gradingweight));
fwrite ($bf,full_tag("SHOWLEAGUETABLE",4,false,$workshop->showleaguetable));
- fwrite ($bf,full_tag("TEACHERLOADING",4,false,$workshop->teacherloading));
- fwrite ($bf,full_tag("ASSESSMENTSTODROP",4,false,$workshop->assessmentstodrop));
//Now we backup workshop elements
$status = backup_workshop_elements($bf,$preferences,$workshop->id);
//if we've selected to backup users info, then execute backup_workshop_submisions
workshop_refresh_events();
}
+ if ($oldversion < 2004081100) {
+ table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade");
+ table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `gradingweight`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `mergegrades`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `peerweight`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `includeteachersgrade`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `biasweight`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `reliabilityweight`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `teacherloading`");
+ execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `assessmentstodrop`");
+ }
+
return true;
}
`includeself` tinyint(2) unsigned NOT NULL default '0',
`maxbytes` int(10) unsigned NOT NULL default '100000',
`deadline` int(10) unsigned NOT NULL default '0',
- `grade` int(10) NOT NULL default '0',
+ `grade` tinyint(3) NOT NULL default '0',
+ `gradinggrade` tinyint(3) NOT NULL default '0',
`ntassessments` tinyint(3) unsigned NOT NULL default '0',
+ `assessmentcomps` tinyint(3) unsigned NOT NULL default '2',
`nsassessments` tinyint(3) unsigned NOT NULL default '0',
`overallocation` tinyint(3) unsigned NOT NULL default '0',
`timemodified` int(10) unsigned NOT NULL default '0',
- `mergegrades` tinyint(3) unsigned NOT NULL default '0',
- `teacherweight` tinyint(3) unsigned NOT NULL default '5',
- `peerweight` tinyint(3) unsigned NOT NULL default '5',
- `includeteachersgrade` tinyint(3) unsigned NOT NULL default '0',
- `biasweight` tinyint(3) unsigned NOT NULL default '5',
- `reliabilityweight` tinyint(3) unsigned NOT NULL default '5',
- `gradingweight` tinyint(3) unsigned NOT NULL default '5',
- `teacherloading` tinyint(3) unsigned NOT NULL default '5',
- `assessmentstodrop` tinyint(3) unsigned NOT NULL default '0',
+ `teacherweight` tinyint(3) unsigned NOT NULL default '1',
`showleaguetable` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) COMMENT='Defines workshop';
<?PHP // $Id$
require("../../config.php");
- require("lib.php");
- require("locallib.php");
+ require("lib.php");
+ require("locallib.php");
require_variable($id); // course
$strweek = get_string("week");
$strtopic = get_string("topic");
$strname = get_string("name");
- $strphase = get_string("phase", "workshop");
+ if (isstudent($course->id)) {
+ $strinfo = get_string("grade");
+ } else {
+ $strinfo = get_string("phase", "workshop");
+ }
$strdeadline = get_string("deadline", "workshop");
$strsubmitted = get_string("submitted", "assignment");
$timenow = time();
if ($course->format == "weeks") {
- $table->head = array ($strweek, $strname, $strphase, $strsubmitted, $strdeadline);
+ $table->head = array ($strweek, $strname, $strinfo, $strsubmitted, $strdeadline);
$table->align = array ("CENTER", "LEFT", "LEFT", "LEFT", "LEFT");
} elseif ($course->format == "topics") {
- $table->head = array ($strtopic, $strname, $strphase, $strsubmitted, $strdeadline);
+ $table->head = array ($strtopic, $strname, $strinfo, $strsubmitted, $strdeadline);
$table->align = array ("CENTER", "LEFT", "left", "LEFT", "LEFT");
} else {
- $table->head = array ($strname, $strphase, $strsubmitted, $strdeadline);
+ $table->head = array ($strname, $strinfo, $strsubmitted, $strdeadline);
$table->align = array ("LEFT", "LEFT", "LEFT", "LEFT");
}
foreach ($workshops as $workshop) {
switch ($workshop->phase) {
case 0:
- case 1: $phase = get_string("phase1short", "workshop");
- break;
- case 2: $phase = get_string("phase2short", "workshop");
+ case 1: $info = get_string("phase1short", "workshop");
break;
- case 3: $phase = get_string("phase3short", "workshop");
+ case 2: $info = get_string("phase2short", "workshop");
break;
- case 4: $phase = get_string("phase4short", "workshop");
+ case 3: $info = get_string("phase3short", "workshop");
break;
- case 5: $phase = get_string("phase5short", "workshop");
+ case 4: $info = get_string("phase4short", "workshop");
break;
- case 6: $phase = get_string("phase6short", "workshop");
+ case 5: $info = get_string("phase5short", "workshop");
break;
}
if ($submissions = workshop_get_user_submissions($workshop, $USER)) {
$due = userdate($workshop->deadline);
if (!$workshop->visible) {
//Show dimmed if the mod is hidden
- $link = "<A class=\"dimmed\" HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A><br />".
- "($submission->title)";
- } else {
+ $link = "<A class=\"dimmed\" HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A><br />";
+ } else {
//Show normal if the mod is visible
- $link = "<A HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A><br />".
- "($submission->title)";
+ $link = "<A HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A><br />";
+ }
+ if (isstudent($course->id)) {
+ $link .= " ($submission->title)"; // show students the title of their submission(s)
+ $gradinggrade = workshop_gradinggrade($workshop, $USER);
+ $grade = workshop_submission_grade($workshop, $submission);
+ $info = get_string("gradeforassessments", "workshop").": $gradinggrade/$workshop->gradinggrade; ".
+ get_string("gradeforsubmission", "workshop").": $grade/$workshop->grade";
}
if ($course->format == "weeks" or $course->format == "topics") {
- $table->data[] = array ($workshop->section, $link, $phase, $submitted, $due);
+ $table->data[] = array ($workshop->section, $link, $info, $submitted, $due);
}
else {
- $table->data[] = array ($link, $phase, $submitted, $due);
+ $table->data[] = array ($link, $info, $submitted, $due);
+ }
+ if (isteacher($course->id)) {
+ // teacher only needs to see one "submission"
+ break;
}
}
}
$link = "<A HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A>";
}
if ($course->format == "weeks" or $course->format == "topics") {
- $table->data[] = array ($workshop->section, $link, $phase, $submitted, $due);
+ $table->data[] = array ($workshop->section, $link, $info, $submitted, $due);
}
else {
- $table->data[] = array ($link, $phase, $submitted, $due);
+ $table->data[] = array ($link, $info, $submitted, $due);
}
}
}
$WORKSHOP_FWEIGHTS = array( 0 => 0, 1 => 0.1, 2 => 0.25, 3 => 0.5, 4 => 0.75, 5 => 1.0, 6 => 1.5,
7 => 2.0, 8 => 3.0, 9 => 5.0, 10 => 7.5, 11=> 10.0, 12=>50.0);
-if (!defined("COMMENTSCALE")) {
- define("COMMENTSCALE", 20);
- }
+
+$WORKSHOP_ASSESSMENT_COMPS = array (
+ 0 => array('name' => get_string("verylax", "workshop"), 'value' => 1),
+ 1 => array('name' => get_string("lax", "workshop"), 'value' => 0.6),
+ 2 => array('name' => get_string("fair", "workshop"), 'value' => 0.4),
+ 3 => array('name' => get_string("strict", "workshop"), 'value' => 0.33),
+ 4 => array('name' => get_string("verystrict", "workshop"), 'value' => 0.2) );
+
/*** Standard Moodle functions ******************
global $CFG, $USER;
+ // if there any ungraded assessments run the grading routine
+ if ($workshops = get_records("workshop")) {
+ foreach ($workshops as $workshop) {
+ if (workshop_count_ungraded_assessments($workshop)) {
+ workshop_grade_assessments($workshop);
+ }
+ }
+ }
+
// Find all workshop notifications that have yet to be mailed out, and mails them
$cutofftime = time() - $CFG->maxeditingtime;
///////////////////////////////////////////////////////////////////////////////
function workshop_grades($workshopid) {
/// Must return an array of grades, indexed by user, and a max grade.
-/// only retruns grades in phase 6
+/// only retruns grades in phase 2 or greater
global $CFG;
if ($workshop = get_record("workshop", "id", $workshopid)) {
- if ($workshop->phase == 6) {
- if ($bestsubmissions = get_records_sql("SELECT userid, max(finalgrade) finalgrade FROM
- {$CFG->prefix}workshop_submissions WHERE workshopid = $workshopid GROUP
- BY userid")) {
- foreach ($bestsubmissions as $bestgrade) {
- $return->grades[$bestgrade->userid] = $bestgrade->finalgrade;
+ if ($workshop->phase > 1) {
+ if ($students = get_course_students($workshop->course)) {
+ foreach ($students as $student) {
+ $gradinggrade = workshop_gradinggrade($workshop, $student);
+ if ($submissions = workshop_get_user_submissions($workshop, $student)) {
+ $bestgrade = 0;
+ foreach ($submissions as $submission) {
+ $grade = workshop_submission_grade($workshop, $submission);
+ if ($grade > $bestgrade) {
+ $bestgrade = $grade;
+ }
+ }
+ }
+ $return->grades[$student->id] = $gradinggrade + $bestgrade;
}
}
}
- $return->maxgrade = $workshop->grade;
+ $return->maxgrade = $workshop->grade + $workshop->gradinggrade;
}
return $return;
}
+//////////////////////////////////////////////////////////////////////////////////////
function workshop_is_recent_activity($course, $isteacher, $timestart) {//jlw1 added for adding mark to courses with activity in My Moodle
global $CFG;
//////////////////////////////////////////////////////////////////////////////////////
// Non-standard workshop functions
+///////////////////////////////////////////////////////////////////////////////////////////////
+function workshop_compare_assessments($workshop, $assessment1, $assessment2) {
+ global $WORKSHOP_ASSESSMENT_COMPS, $WORKSHOP_EWEIGHTS;
+ // first get the assignment elements for maxscores...
+ $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
+ foreach ($elementsraw as $element) {
+ $maxscore[] = $element->maxscore; // to renumber index 0,1,2...
+ $weight[] = $WORKSHOP_EWEIGHTS[$element->weight]; // get real value and renumber index 0,1,2...
+ }
+ for ($i = 0; $i < 2; $i++) {
+ if ($i) {
+ $rawgrades = get_records("workshop_grades", "assessmentid", $assessment1->id, "elementno ASC");
+ } else {
+ $rawgrades = get_records("workshop_grades", "assessmentid", $assessment2->id, "elementno ASC");
+ }
+ foreach ($rawgrades as $grade) {
+ $grades[$i][] = $grade->grade;
+ }
+ }
+ $sumdiffs = 0;
+ $sumweights = 0;
+ switch ($workshop->gradingstrategy) {
+ case 1 : // accumulative grading and...
+ case 4 : // ...rubic grading
+ for ($i=0; $i < $workshop->nelements; $i++) {
+ $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i] / $maxscore[$i];
+ $sumdiffs += $diff * $diff; // use squared distances
+ $sumweights += $weight[$i];
+ }
+ break;
+ case 2 : // error banded grading
+ // ignore maxscores here, the grades are either 0 or 1,
+ for ($i=0; $i < $workshop->nelements; $i++) {
+ $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i];
+ $sumdiffs += $diff * $diff; // use squared distances
+ $sumweights += $weight[$i];
+ }
+ break;
+ case 3 : // criterion grading
+ // here we only need to look at the difference between the "zero" grade elements
+ $diff = ($grades[0][0] - $grades[1][0]) / (count($elementsraw) - 1);
+ $sumdiffs = $diff * $diff;
+ $sumweights = 1;
+ break;
+ }
+ // convert to a sensible grade (always out of 100)
+ $COMP = (object)$WORKSHOP_ASSESSMENT_COMPS[$workshop->assessmentcomps];
+ $factor = $COMP->value;
+ $gradinggrade = (($factor - ($sumdiffs / $sumweights)) / $factor) * 100;
+ if ($gradinggrade < 0) {
+ $gradinggrade = 0;
+ }
+ return $gradinggrade;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////
+function workshop_count_ungraded_assessments($workshop) {
+ // function returns the number of ungraded assessments (ANY assessments)
+
+ return count_records("workshop_assessments", "workshopid", $workshop->id, "timegraded", 0) ;
+ }
+
+
//////////////////////////////////////////////////////////////////////////////////////
function workshop_file_area($workshop, $submission) {
return make_upload_directory( workshop_file_area_name($workshop, $submission) );
}
+//////////////////////////////////////////////////////////////////////////////////////
+function workshop_get_assessments($submission, $all = '') {
+ // Return assessments for this submission ordered oldest first, newest last
+ // new assessments made within the editing time are NOT returned unless the
+ // second argument is set to ALL
+ global $CFG;
+
+ if ($all != 'ALL') {
+ $timenow = time();
+ return get_records_select("workshop_assessments", "(submissionid = $submission->id) AND
+ (timecreated < $timenow - $CFG->maxeditingtime)", "timecreated DESC");
+ } else {
+ return get_records_select("workshop_assessments", "submissionid = $submission->id",
+ "timecreated DESC");
+ }
+}
+
+
///////////////////////////////////////////////////////////////////////////////////////////////
function workshop_get_comment_logs($course, $timestart) {
// get the "comment" entries for this user and add the first and last names (which may not be used)...
}
+//////////////////////////////////////////////////////////////////////////////////////
+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";
+ }
+
+ // make sure it works on the site course
+ $select = "u.course = '$workshop->course' AND";
+ $site = get_site();
+ if ($workshop->course == $site->id) {
+ $select = '';
+ }
+
+ return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s,
+ {$CFG->prefix}user_students u, {$CFG->prefix}user a
+ WHERE $select s.userid = u.userid
+ AND a.id = u.userid
+ AND s.workshopid = $workshop->id
+ AND s.timecreated > 0
+ ORDER BY $order");
+}
+
+
///////////////////////////////////////////////////////////////////////////////////////////////
function workshop_get_submit_logs($course, $timestart) {
// get the "submit" entries and add the first and last names...
//////////////////////////////////////////////////////////////////////////////////////
-function workshop_get_student_submissions($workshop, $order = "title") {
-// Return all ENROLLED student submissions
- global $CFG;
+function workshop_get_user_assessments($workshop, $user) {
+// Return all the user's assessments, newest first, oldest last (hot, warm and cold ones)
+ return get_records_select("workshop_assessments", "workshopid = $workshop->id AND userid = $user->id",
+ "timecreated DESC");
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////
+function workshop_get_user_submissions($workshop, $user) {
+ // return real submissions of user newest first, oldest last. Ignores the dummy submissions
+ // which get created to hold the final grades for users for make no submissions)
+ return get_records_select("workshop_submissions", "workshopid = $workshop->id AND
+ userid = $user->id AND timecreated > 0", "timecreated DESC" );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////
+function workshop_grade_assessments($workshop) {
+ global $WORKSHOP_EWEIGHTS;
- if ($order == "title") {
- $order = "s.title";
+ // timeout after 10 minutes
+ @set_time_limit(600);
+
+ $timenow = time();
+
+ // set minumim value for the variance (of the elements)
+ $minvar = 0.05;
+
+ // calculate the means for each submission using just the "good" assessments
+ if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) {
+ foreach ($submissions as $submission) {
+ $nassessments[$submission->id] = 0;
+ if ($assessments = workshop_get_assessments($submission)) {
+ foreach ($assessments as $assessment) {
+ // test if assessment is "good", a teacher assessment always "good", but may be weighted out
+ if (isteacher($workshop->course, $assessment->userid)) {
+ if (!$workshop->teacherweight) {
+ // drop teacher's assessment as weight is zero
+ continue;
+ }
+ } elseif ((!$assessment->gradinggrade and $assessment->timegraded) or
+ ($workshop->agreeassessments and !$assessment->timeagreed)) {
+ // it's a duff assessment, or it's not been agreed
+ continue;
+ }
+ if (isset($num[$submission->id])) {
+ if (isteacher($workshop->course, $assessment->userid)) {
+ $num[$submission->id] += $workshop->teacherweight; // weight teacher's assessment
+ } else {
+ $num[$submission->id]++; // number of assessments
+ }
+ $nassessments[$submission->id]++;
+ } else {
+ if (isteacher($workshop->course, $assessment->userid)) {
+ $num[$submission->id] = $workshop->teacherweight;
+ } else {
+ $num[$submission->id] = 1;
+ }
+ $nassessments[$submission->id] = 1;
+ }
+ for ($i = 0; $i < $workshop->nelements; $i++) {
+ $grade = get_field("workshop_grades", "grade",
+ "assessmentid", $assessment->id, "elementno", $i);
+ if (isset($sum[$submission->id][$i])) {
+ if (isteacher($workshop->course, $assessment->userid)) {
+ $sum[$submission->id][$i] += $workshop->teacherweight * $grade; // teacher's grade
+ } else {
+ $sum[$submission->id][$i] += $grade; // student's grade
+ }
+ } else {
+ if (isteacher($workshop->course, $assessment->userid)) {
+ $sum[$submission->id][$i] = $workshop->teacherweight * $grade; // teacher's grade
+ } else {
+ $sum[$submission->id][$i] = $grade; // students's grade
+ }
+ }
+ }
+ }
+ }
}
- if ($order == "name") {
- $order = "a.firstname, a.lastname";
+
+ if (!isset($num)) {
+ // no assessments yet
+ return;
+ }
+ reset($num);
+ // calculate the means for each submission
+ $total = 0;
+ foreach ($num as $submissionid => $n) {
+ if ($n) { // stop division by zero
+ for ($i = 0; $i < $workshop->nelements; $i++) {
+ $mean[$submissionid][$i] = $sum[$submissionid][$i] / $n;
+ // echo "Submission: $submissionid; Element: $i; Mean: {$mean[$submissionid][$i]}<br />\n";
+ }
+ $total += $n; // weighted total
+ }
}
- if ($order == "grade") {
- $order = "$workshop->teacherweight * s.teachergrade + $workshop->peerweight * s.peergrade DESC";
+ echo "<p align=\"center\">".get_string("numberofsubmissions", "workshop", count($num))."<br />\n";
+ echo get_string("numberofassessmentsweighted", "workshop", $total)."</p>\n";
+
+ // now get an estimate of the standard deviation of each element in the assessment
+ // this is just a rough measure, all assessments are included and teacher's assesments are not weighted
+ $n = 0;
+ for ($i = 0; $i < $workshop->nelements; $i++) {
+ $var[$i] = 0;
+ }
+ foreach ($submissions as $submission) {
+ if ($assessments = workshop_get_assessments($submission)) {
+ foreach ($assessments as $assessment) {
+ $n++;
+ for ($i = 0; $i < $workshop->nelements; $i++) {
+ $grade = get_field("workshop_grades", "grade",
+ "assessmentid", $assessment->id, "elementno", $i);
+ $temp = $mean[$submission->id][$i] - $grade;
+ $var[$i] += $temp * $temp;
+ }
+ }
+ }
+ }
+ for ($i = 0; $i < $workshop->nelements; $i++) {
+ $sd[$i] = sqrt($var[$i] / ($n - 1));
+ echo "<p align=\"center\">".get_string("standarddeviationofelement", "workshop", $i+1)." $sd[$i]<br />";
+ if ($sd[$i] <= $minvar) {
+ print_string("standarddeviationnote", "workshop")."<br />\n";
+ }
+ echo "</p>\n";
}
- // make sure it works on the site course
- $select = "u.course = '$workshop->course' AND";
- if ($workshop->course == SITEID) {
- $select = '';
- }
+ // first get the assignment elements for maxscores (not used) and weights (used)...
+ $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
+ foreach ($elementsraw as $element) {
+ $maxscore[] = $element->maxscore; // to renumber index 0,1,2...
+ $weight[] = $element->weight; // to renumber index 0,1,2...
+ }
- return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_students u, {$CFG->prefix}user a
- WHERE $select s.userid = u.userid
- AND a.id = u.userid
- AND s.workshopid = $workshop->id
- AND s.timecreated > 0
- ORDER BY $order");
+ // ...if there are three or more assessments calculate the variance of each assessment.
+ // Use the variance to find the "best" assessment. (When there are two assessments they
+ // are both "best", we cannot distinguish between them.)
+ foreach ($submissions as $submission) {
+ if ($nassessments[$submission->id] > 2) {
+ if ($assessments = workshop_get_assessments($submission)) {
+ foreach ($assessments as $assessment) {
+ if ($workshop->agreeassessments and !$assessment->timeagreed) {
+ // ignore assessments that have not been agreed
+ continue;
+ }
+ $var = 0;
+ for ($i = 0; $i < $workshop->nelements; $i++) {
+ $grade = get_field("workshop_grades", "grade",
+ "assessmentid", $assessment->id, "elementno", $i);
+ if ($sd[$i] > $minvar) {
+ $temp = ($mean[$submission->id][$i] - $grade) *
+ $WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i];
+ } else {
+ $temp = 0;
+ }
+ $var += $temp * $temp;
+ }
+ // find the "best" assessment of each submission
+ if (!isset($lowest[$submission->id])) {
+ $lowest[$submission->id] = $var;
+ $bestassessment[$submission->id] = $assessment->id;
+ } else {
+ if ($lowest[$submission->id] > $var) {
+ $lowest[$submission->id] = $var;
+ $bestassessment[$submission->id] = $assessment->id;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // run thru the submissions again setting the grading grades using the "best" as the reference
+ $ndrop = 0;
+ foreach ($submissions as $submission) {
+ if ($assessments = workshop_get_assessments($submission)) {
+ if ($nassessments[$submission->id] > 2) {
+ if (!$best = get_record("workshop_assessments", "id", $bestassessment[$submission->id])) {
+ error("Workshop assessment analysis: cannot find best assessment");
+ }
+ foreach ($assessments as $assessment) {
+ if ($assessment->id == $bestassessment->id) {
+ // it's the best one, set the grading grade to the maximum
+ set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id);
+ set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
+ } else {
+ // it's one of the pack, compare with the best...
+ $gradinggrade = workshop_compare_assessments($workshop, $best, $assessment);
+ // ...and save the grade for the assessment
+ set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
+ set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
+ if (!$gradinggrade) {
+ $ndrop++;
+ }
+ }
+ }
+ } else { // only one or two assessments, set it/both as "best"
+ foreach ($assessments as $assessment) {
+ set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id);
+ set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
+ }
+ }
+ }
+ }
+ }
+ echo "<p align=\"center\">".get_string("numberofassessmentsdropped", "workshop", $ndrop)."</p>\n";
+ return;
}
//////////////////////////////////////////////////////////////////////////////////////
-function workshop_get_user_submissions($workshop, $user) {
- // return real submissions of user newest first, oldest last. Ignores the dummy submissions
- // which get created to hold the final grades for users for make no submissions)
- return get_records_select("workshop_submissions", "workshopid = $workshop->id AND
- userid = $user->id AND timecreated > 0", "timecreated DESC" );
+function workshop_gradinggrade($workshop, $student) {
+ // returns the current (external) grading grade of the based on their (cold) assessments
+ // (needed as it's called by grade)
+
+ $gradinggrade = 0;
+ if ($assessments = workshop_get_user_assessments($workshop, $student)) {
+ $n = 0;
+ foreach ($assessments as $assessment) {
+ $gradinggrade += $assessment->gradinggrade;
+ $n++;
+ }
+ if ($n < ($workshop->ntassessments + $workshop->nsassessments)) { // the minimum students should do
+ $n = $workshop->ntassessments + $workshop->nsassessments;
+ }
+ $gradinggrade = $gradinggrade / $n;
+ }
+ return number_format($gradinggrade * $workshop->gradinggrade / 100, 1);
}
+//////////////////////////////////////////////////////////////////////////////////////
+function workshop_submission_grade($workshop, $submission) {
+ // returns the current (external) grade of the submission based on the "good" (cold) assessments
+ // (needed as it's called by grade)
+
+ $grade = 0;
+ if ($assessments = workshop_get_assessments($submission)) {
+ $n = 0;
+ foreach ($assessments as $assessment) {
+ if ($workshop->agreeassessments and !$assessment->timeagreed) {
+ // ignore assessments which have not been agreed
+ continue;
+ }
+ if ($assessment->gradinggrade or !$assessment->timegraded) {
+ // a good assessment (or one that has not been graded yet)
+ if (isteacher($workshop->course, $assessment->userid)) {
+ $grade += $workshop->teacherweight * $assessment->grade;
+ $n += $workshop->teacherweight;
+ } else {
+ $grade += $assessment->grade;
+ $n++;
+ }
+ }
+ }
+ if ($n) { // stop division by zero
+ $grade = $grade / $n;
+ }
+ }
+ return number_format($grade * $workshop->grade / 100, 1);
+}
+
?>
workshop_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="",
$nothingvalue="0", $return=false) {
+workshop_compare_assessments($workshop, $assessment1, $assessment2) { ---> in lib.php
workshop_count_all_submissions_for_assessment($workshop, $user) {
workshop_count_assessments($submission) {
workshop_count_comments($assessment) {
workshop_count_teacher_assessments($workshop, $user) {
workshop_count_teacher_submissions($workshop) {
workshop_count_teacher_submissions_for_assessment($workshop, $user) {
+workshop_count_ungraded_assessments($workshop) { --->in lib.php
workshop_count_ungraded_assessments_student($workshop) {
workshop_count_ungraded_assessments_teacher($workshop) {
workshop_count_user_assessments($worshop, $user, $type = "all") { $type is all, student or teacher
workshop_delete_submitted_files($workshop, $submission) {
workshop_delete_user_files($workshop, $user, $exception) {
-workshop_file_area($workshop, $submission) { <--- in lib.php
-workshop_file_area_name($workshop, $submission) { <--- in lib.php
+workshop_file_area($workshop, $submission) { ---> in lib.php
+workshop_file_area_name($workshop, $submission) { ---> in lib.php
-workshop_get_assessments($submission) {
+workshop_get_assessments($submission, $all = '') { ---> in lib.php
workshop_get_comments($assessment) {
workshop_get_participants($workshopid) {
workshop_get_student_assessments($workshop, $user) {
-workshop_get_student_submission($workshop, $user) { <--- in lib.php
+workshop_get_student_submission($workshop, $user) { ---> in lib.php
workshop_get_student_submission_assessments($workshop) {
-workshop_get_student_submissions($workshop) { <--- in lib.php
+workshop_get_student_submissions($workshop) { ---> in lib.php
workshop_get_submission_assessment($submission, $user) {
workshop_get_teacher_submission_assessments($workshop) {
workshop_get_teacher_submissions($workshop) {
workshop_get_ungraded_assessments($workshop) {
workshop_get_unmailed_assessments($cutofftime) {
workshop_get_unmailed_marked_assessments($cutofftime) {
-workshop_get_user_assessments($workshop, $user) {
-workshop_get_user_submissions($workshop, $user) { <--- in lib.php
+workshop_get_user_assessments($workshop, $user) { ---> in lib.php
+workshop_get_user_submissions($workshop, $user) { ---> in lib.php
workshop_get_users_done($workshop) {
+workshop_grade_assessments($workshop) { ---> in lib.php
+
workshop_list_all_submissions($workshop) {
workshop_list_all_ungraded_assessments($workshop) {
workshop_list_assessed_submissions($workshop, $user) {
workshop_print_upload_form($workshop) {
workshop_print_user_assessments($workshop, $user) {
+workshop_submission_grade($submission) { ---> in lib.php
+
workshop_test_user_assessments($workshop, $user) {
***************************************/
//////////////////////////////////////////////////////////////////////////////////////
function workshop_count_student_submissions_for_assessment($workshop, $user) {
global $CFG;
+
+ 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");
+ }
$timenow = time();
+ if (groupmode($course, $cm) == SEPARATEGROUPS) {
+ $groupid = get_current_group($course->id);
+ } else {
+ $groupid = 0;
+ }
+
$n = 0;
if ($submissions = workshop_get_student_submissions($workshop)) {
- $n =count($submissions);
foreach ($submissions as $submission) {
- $n -= count_records_select("workshop_assessments", "submissionid = $submission->id AND
- userid = $user->id AND timecreated < $timenow - $CFG->maxeditingtime");
+ // check group membership, if necessary
+ if ($groupid) {
+ // check user's group
+ if (!ismember($groupid, $submission->userid)) {
+ continue; // skip this user
+ }
+ }
+ // teacher assessed this submission
+ if (! count_records_select("workshop_assessments", "submissionid = $submission->id AND
+ userid = $user->id AND timecreated < $timenow - $CFG->maxeditingtime")) {
+ $n++;
}
}
- return $n;
}
+ return $n;
+}
//////////////////////////////////////////////////////////////////////////////////////
}
-//////////////////////////////////////////////////////////////////////////////////////
-function workshop_get_assessments($submission, $all = '') {
- // Return assessments for this submission ordered oldest first, newest last
- // new assessments made within the editing time are NOT return unless the
- // second argument is set to ALL
- global $CFG;
-
- if ($all != 'ALL') {
- $timenow = time();
- return get_records_select("workshop_assessments", "(submissionid = $submission->id) AND
- (timecreated < $timenow - $CFG->maxeditingtime)", "timecreated DESC");
- } else {
- return get_records_select("workshop_assessments", "submissionid = $submission->id",
- "timecreated DESC");
- }
-}
-
-
//////////////////////////////////////////////////////////////////////////////////////
function workshop_get_comments($assessment) {
// Return all comments for this assessment provided they are newer than the assessment,
}
-//////////////////////////////////////////////////////////////////////////////////////
-function workshop_get_user_assessments($workshop, $user) {
-// Return all the user's assessments, newest first, oldest last (hot, warm and cold ones)
- return get_records_select("workshop_assessments", "workshopid = $workshop->id AND userid = $user->id",
- "timecreated DESC");
-}
-
-
//////////////////////////////////////////////////////////////////////////////////////
function workshop_get_user_assessments_done($workshop, $user) {
-// Return all the user's assessments, newest first, oldest last (warm and cold ones only)
+// Return all the user's assessments, oldest first, newest last (warm and cold ones only)
// ignores maxeditingtime
$timenow = time();
return get_records_select("workshop_assessments", "workshopid = $workshop->id AND userid = $user->id
AND timecreated < $timenow",
- "timecreated DESC");
+ "timecreated ASC");
}
// list the teacher sublmissions first
global $CFG;
+ 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");
}
AND userid = $user->id")) {
$curtime = time();
if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) {
- $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">"
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">"
.get_string("view", "workshop")."</A>";
// has teacher graded user's assessment?
if ($assessment->timegraded) {
}
}
else { // there's still time left to edit...
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("edit", "workshop")."</A>";
}
}
else { // user has not graded this submission
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</A>";
}
$table->data[] = array(workshop_print_submission_title($workshop, $submission), $action,
AND userid = $user->id")) {
$curtime = time();
if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) {
- $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">".
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".
get_string("view", "workshop")."</A>";
// has teacher graded on user's assessment?
if ($assessment->timegraded) {
}
$otherassessments = workshop_get_assessments($submission);
if (count($otherassessments) > 1) {
- $comment .= "<A HREF=\"assessments.php?action=viewallassessments&a=$workshop->id&sid=$submission->id\">".
+ $comment .= "<A HREF=\"assessments.php?action=viewallassessments&id=$cm->id&sid=$submission->id\">".
get_string("viewotherassessments", "workshop")."</A>";
}
}
else { // there's still time left to edit...
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("edit", "workshop")."</A>";
}
}
else { // user has not assessed this submission
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</A>";
}
$table->data[] = array(workshop_print_submission_title($workshop, $submission), $action,
function workshop_list_all_ungraded_assessments($workshop) {
// lists all the assessments for comment by teacher
global $CFG;
+
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
$table->head = array (get_string("title", "workshop"), get_string("timeassessed", "workshop"), get_string("action", "workshop"));
$table->align = array ("LEFT", "LEFT", "LEFT");
foreach ($assessments as $assessment) {
if (!isteacher($workshop->course, $assessment->userid)) {
if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) {
- $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&aid=$assessment->id\">".
+ $action = "<A HREF=\"assessments.php?action=gradeassessment&id=$cm->id&aid=$assessment->id\">".
get_string("edit", "workshop")."</A>";
}
else {
- $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&aid=$assessment->id\">".
+ $action = "<A HREF=\"assessments.php?action=gradeassessment&id=$cm->id&aid=$assessment->id\">".
get_string("gradeassessment", "workshop")."</A>";
}
$submission = get_record("workshop_submissions", "id", $assessment->submissionid);
// list the submissions that have been assessed by this user and are COLD
global $CFG;
+ 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");
}
// 1. "hot", just created but not completed (timecreated is in the future)
// 2. "warm" just created and still capable of being edited, and
// 3. "cold" after the editing time
+
if ($assessment->timecreated < ($timenow - $CFG->maxeditingtime)) { // it's cold
- $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id&".
- "allowcomments=$workshop->agreeassessments\">".
- get_string("view", "workshop")."</A>";
- if ($workshop->agreeassessments and !$assessment->timeagreed) {
- $action .= " | <A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
- get_string("reassess", "workshop")."</A>";
+ if ($workshop->agreeassessments) {
+ if (!$assessment->timeagreed) {
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id&".
+ "allowcomments=$workshop->agreeassessments\">".
+ get_string("view", "workshop")."</A>";
+ $action .= " | <A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
+ get_string("reassess", "workshop")."</A>";
+ } else {
+ $action = "";
+ }
+ } else {
+ if ($assessment->timegraded) {
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
+ get_string("reassess", "workshop")."</A>";
+ } else {
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".
+ get_string("view", "workshop")."</A>";
}
+ }
if ($assessment->timecreated < $timenow) { // only show the date if it's in the past (future dates cause confusion
$comment = get_string("assessedon", "workshop", userdate($assessment->timecreated));
- }
+ }
else {
$comment = '';
- }
+ }
if ($submission->userid == $user->id) { // self assessment?
$comment .= "; ".get_string("ownwork", "workshop"); // just in case they don't know!
- }
- // has teacher commented on user's assessment?
+ }
+ // has assessment been graded?
if ($assessment->timegraded and ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) {
- $comment .= "; ".get_string("gradedbyteacher", "workshop", $course->teacher);
- }
+ $comment .= "; ".get_string("thegradeforthisassessmentis", "workshop",
+ number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0)).
+ " / $workshop->gradinggrade";
+ }
// if peer agrrements show whether agreement has been reached
if ($workshop->agreeassessments) {
if ($assessment->timeagreed) {
$comment .= "; ".get_string("assessmentwasagreedon", "workshop",
userdate($assessment->timeagreed));
- }
+ }
else {
$comment .= "; ".get_string("assessmentnotyetagreed", "workshop");
- }
}
+ }
$table->data[] = array(workshop_print_submission_title($workshop, $submission), $action,
$comment);
- }
}
}
+ }
if (isset($table->data)) {
print_table($table);
- }
+ }
else {
echo "<CENTER>".get_string("noassessmentsdone", "workshop")."</CENTER>\n";
- }
}
+}
//////////////////////////////////////////////////////////////////////////////////////
function workshop_list_peer_assessments($workshop, $user) {
global $CFG;
+ 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");
}
($assessment->userid != $user->id)) {
$timenow = time();
if (($timenow - $assessment->timecreated) > $CFG->maxeditingtime) {
- $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id&".
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id&".
"allowcomments=$workshop->agreeassessments\">".
get_string("view", "workshop")."</A>";
- $comment = get_string("assessedon", "workshop",
- userdate($assessment->timecreated));
- // has teacher commented on user's assessment?
- if ($assessment->timegraded and
- ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) {
- $comment .= "; ".get_string("gradedbyteacher", "workshop", $course->teacher);
+ $comment = get_string("assessedon", "workshop", userdate($assessment->timecreated));
+ $grade = number_format($assessment->grade * $workshop->grade / 100, 1);
+ $comment .= "; ".get_string("gradeforsubmission", "workshop").
+ ": $grade / $workshop->grade";
+ if ($assessment->timegraded) {
+ if (!$assessment->gradinggrade) {
+ // it's a bad assessment
+ $comment .= "; ".get_string("thisisadroppedassessment", "workshop");
}
- // if peer agrrements show whether agreement has been reached
+ }
+ if (isteacher($workshop->course, $assessment->userid) and $workshop->teacherweight) {
+ $comment .= "; ".get_string("thisisadroppedassessment", "workshop");
+ }
+ // if peer agreements show whether agreement has been reached
if ($workshop->agreeassessments) {
if ($assessment->timeagreed) {
$comment .= "; ".get_string("assessmentwasagreedon", "workshop",
// list user's submissions for the user to assess
global $CFG;
+ 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 ($submission->userid == $user->id) { // this will always be true
$comment = get_string("ownwork", "workshop"); // just in case they don't know!
}
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</A>";
$table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
// of assessments are show first
global $CFG;
- $timenow = time();
+ 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");
+
+ $timenow = time();
+
+ // set student's group if workshop is in SEPARATEGROUPS mode
+ if (groupmode($course, $cm) == SEPARATEGROUPS) {
+ $groupid = get_current_group($course->id);
+ } else {
+ $groupid = 0;
}
$table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop"));
if ($submissions = workshop_get_student_submissions($workshop)) {
// srand ((float)microtime()*1000000); // now done automatically in PHP 4.2.0->
foreach ($submissions as $submission) {
+ // check group membership, if necessary
+ if ($groupid) {
+ // check user's group
+ if (!ismember($groupid, $submission->userid)) {
+ continue; // skip this submission
+ }
+ }
// process only cold submissions
if (($submission->timecreated + $CFG->maxeditingtime) > $timenow) {
continue;
// 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");
}
-
- workshop_print_assignment_info($workshop);
-
- // if peer assessments allow teacher to change overallocation option
- if ($workshop->nsassessments) {
- print_simple_box_start("center");
- print_heading_with_help(get_string("setoverallocation", "workshop"), "overallocation", "workshop");
- echo "<form name=\"overform\" method=\"post\" action=\"submissions.php\">\n";
- echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n";
- echo "<input type=\"hidden\" name=\"action\" value=\"updateoverallocation\">\n";
- echo "<center><table width=\"90%\" border=\"1\"><tr valign=\"top\">\n";
- echo "<td align=\"right\"><p><b>".get_string("overallocation", "workshop").": </b></p></td>\n";
- echo "<td valign=\"middle\">\n";
- for ($i=2; $i>=0; $i--) {
- $numbers[$i] = $i;
- }
- choose_from_menu($numbers, "overallocation", "$workshop->overallocation", "");
- echo "</td></tr></table><br />\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("saveoverallocation", "workshop")."\">\n";
- echo "</form></center>\n";
- print_simple_box_end();
- }
-
- echo "<br />";
- print_simple_box_start("center");
- print_heading_with_help(get_string("leaguetable", "workshop"), "leaguetable", "workshop");
- echo "<form name=\"leagueform\" method=\"post\" action=\"submissions.php\">\n";
- echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$cm->id\">\n";
- echo "<input type=\"hidden\" name=\"action\" value=\"updateleaguetable\">\n";
- echo "<center><TABLE WIDTH=\"90%\" BORDER=\"1\">\n";
- echo "<tr><td align=\"right\"><p><b>".get_string("numberofentries", "workshop").": </b><p></td>\n";
- echo "<TD>";
- unset($numbers);
- $numbers[22] = 'All';
- $numbers[21] = 50;
- for ($i=20; $i>=0; $i--) {
- $numbers[$i] = $i;
+ if (groupmode($course, $cm) == SEPARATEGROUPS) {
+ $groupid = get_current_group($course->id);
+ } else {
+ $groupid = 0;
}
- $nentries = $workshop->showleaguetable;
- if ($nentries == 99) {
- $nentries = 'All';
- }
- choose_from_menu($numbers, "nentries", "$nentries", "");
- echo "</td></tr>\n";
- echo "<tr><td align=right><p>".get_string("hidenamesfromstudents", "workshop", $course->students)."</p></td><td>\n";
- $options[0] = get_string("no"); $options[1] = get_string("yes");
- choose_from_menu($options, "anonymous", $workshop->anonymous, "");
- echo "</td></tr>\n";
- echo "</table><br />\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("saveleaguetableoptions", "workshop")."\">\n";
- echo "</center></form>\n";
- print_simple_box_end();
+
+ workshop_print_assignment_info($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 (isteacheredit($course->id)) {
+ // 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&a=$workshop->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
- AND userid = $USER->id")) {
- $curtime = time();
+ 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
+ AND userid = $USER->id")) {
+ $curtime = time();
if ($assessment->timecreated > $curtime) { // it's a "hanging" assessment
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</a>";
}
elseif (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) {
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">"
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">"
.get_string("reassess", "workshop")."</a>";
}
else { // there's still time left to edit...
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("edit", "workshop")."</a>";
}
}
- else { // user has not graded this submission
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
- get_string("assess", "workshop")."</a>";
- }
- if ($assessments = workshop_get_assessments($submission)) {
- $action .= " | <a href=\"assessments.php?action=adminlist&a=$workshop->id&sid=$submission->id\">".
- get_string("listassessments", "workshop")."</a>";
+ else { // user has not graded this submission
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
+ get_string("assess", "workshop")."</a>";
}
- $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&a=$workshop->id&sid=$submission->id\">".
+ if ($assessments = workshop_get_assessments($submission)) {
+ $action .= " | <a href=\"assessments.php?action=adminlist&id=$cm->id&sid=$submission->id\">".
+ get_string("listassessments", "workshop")."</a>";
+ }
+ $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">".
get_string("delete", "workshop")."</a>";
- $table->data[] = array(workshop_print_submission_title($workshop, $submission), $course->teacher, $action);
+ $table->data[] = array(workshop_print_submission_title($workshop, $submission), $course->teacher, $action);
+ }
+ print_heading(get_string("studentsubmissions", "workshop", $course->teacher), "center");
+ print_table($table);
}
- print_heading(get_string("studentsubmissions", "workshop", $course->teacher), "center");
- print_table($table);
}
// list student assessments
// Get all the students...
- if ($users = get_course_students($course->id, "u.firstname, u.lastname")) {
+ if ($users = get_course_students($course->id, "u.lastname, u.firstname")) {
$timenow = time();
- print_heading(get_string("studentassessments", "workshop", $course->student));
unset($table);
$table->head = array(get_string("name"), get_string("title", "workshop"), get_string("action", "workshop"));
$table->align = array ("left", "left", "left");
$table->cellpadding = 2;
$table->cellspacing = 0;
foreach ($users as $user) {
+ // check group membership, if necessary
+ if ($groupid) {
+ // check user's group
+ if (!ismember($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 ='';
error("Workshop_list_submissions_for_admin: Submission record not found!");
}
$title .= $submission->title;
- // test for allocated assesments which have not been done
- if ($assessment->timecreated < $timenow) {
- $title .= " {".number_format($assessment->grade, 0);
- }
- else { // assessment record created but user has not yet assessed this submission
- $title .= " {-";
- }
if ($assessment->timegraded) {
- $title .= "/".number_format($assessment->gradinggrade * 100 / COMMENTSCALE, 0)."%";
+ 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)." (-)} ";
}
- $title .= "} ";
if ($realassessments = workshop_count_user_assessments_done($workshop, $user)) {
- $action = "<a href=\"assessments.php?action=adminlistbystudent&a=$workshop->id&userid=$user->id\">".
+ $action = "<a href=\"assessments.php?action=adminlistbystudent&id=$cm->id&userid=$user->id\">".
get_string("liststudentsassessments", "workshop")." ($realassessments)</a>";
- }
- else {
+ } else {
$action ="";
}
}
}
}
if (isset($table->data)) {
+ print_heading(get_string("studentassessments", "workshop", $course->student));
+ 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,
+ STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max
+ FROM {$CFG->prefix}groups_members g, {$CFG->prefix}workshop_assessments a
+ WHERE g.groupid = $groupid AND a.userid = g.userid AND a.timegraded > 0
+ AND a.workshopid = $workshop->id");
+ } else { // no group/all participants
+ $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean,
+ STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max
+ FROM {$CFG->prefix}workshop_assessments a
+ 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);
}
}
unset($table);
switch ($order) {
case "title" :
- $table->head = array("<a href=\"submissions.php?action=adminlist&a=$workshop->id&order=name\">".
+ $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("action", "workshop"));
break;
case "name" :
$table->head = array (get_string("submittedby", "workshop"),
- "<a href=\"submissions.php?action=adminlist&a=$workshop->id&order=title\">".
+ "<a href=\"submissions.php?action=adminlist&id=$cm->id&order=title\">".
get_string("title", "workshop")."</a>", get_string("action", "workshop"));
break;
}
if (!$user = get_record("user", "id", $submission->userid)) {
error("workshop_list_submissions_for_admin: failure to get user record");
}
- $action = "<a href=\"submissions.php?action=adminamendtitle&a=$workshop->id&sid=$submission->id\">".
+ // check group membership, if necessary
+ if ($groupid) {
+ // check user's group
+ if (!ismember($groupid, $user->id)) {
+ continue; // skip this user
+ }
+ }
+ $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
AND userid = $USER->id")) {
$curtime = time();
if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) {
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("reassess", "workshop")."</a>";
}
else { // there's still time left to edit...
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("edit", "workshop")."</a>";
}
}
else { // user has not assessed this submission
- $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</a>";
}
if ($nassessments = workshop_count_assessments($submission)) {
- $action .= " | <a href=\"assessments.php?action=adminlist&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"assessments.php?action=adminlist&id=$cm->id&sid=$submission->id\">".
get_string("listassessments", "workshop")." ($nassessments)</a>";
}
- $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&a=$workshop->id&sid=$submission->id\">".
+ $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">".
get_string("delete", "workshop")."</a>";
- $table->data[] = array(fullname($user), $submission->title.
- " ".workshop_print_submission_assessments($workshop, $submission, "teacher").
- " ".workshop_print_submission_assessments($workshop, $submission, "student"), $action);
+ $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").")", $action);
}
print_heading(get_string("studentsubmissions", "workshop", $course->student), "center");
print_table($table);
+ workshop_print_key($workshop);
}
}
function workshop_list_teacher_assessments($workshop, $user) {
global $CFG;
+ $timenow = time();
+ 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");
- }
+ }
+
$table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop"));
$table->align = array ("LEFT", "LEFT", "LEFT");
$table->size = array ("*", "*", "*");
if ($assessments = workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
if (isteacher($workshop->course, $assessment->userid)) { // assessments by teachers only
- $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">".
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".
get_string("view", "workshop")."</A>";
// has teacher commented on teacher's assessment? shouldn't happen but leave test in
if ($assessment->timegraded and ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) {
function workshop_list_teacher_submissions($workshop, $user) {
global $CFG;
+ 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");
- }
+ }
$table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop"));
$table->align = array ("LEFT", "LEFT", "LEFT");
$table->size = array ("*", "*", "*");
$n = count_records("workshop_assessments", "submissionid", $submission->id);
// ...OK to have zero, we add a small random number to randomise things...
$nassessments[$submission->id] = $n + rand(0, 99) / 100;
- }
+ }
// ...put the submissions with the lowest number of assessments first...
asort($nassessments);
reset($nassessments);
$assessment->timecreated = $yearfromnow;
if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
error("Could not insert workshop assessment!");
- }
+ }
$nassessed++;
if ($nassessed >= $workshop->ntassessments) {
break;
- }
}
}
}
}
+ }
// now list user's assessments (but only list those which come from teacher submissions)
if ($assessments = workshop_get_user_assessments($workshop, $user)) {
$timenow = time();
foreach ($assessments as $assessment) {
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
error ("workshop_list_teacher_submissions: unable to get submission");
- }
+ }
// submission from a teacher?
if (isteacher($workshop->course, $submission->userid)) {
$comment = '';
- // user assessment has three states: record created but not assessed (date created in the future);
- // just assessed but still editable; and "static" (may or may not have been graded by teacher, that
- // is shown in the comment)
- if ($assessment->timecreated> $timenow) { // user needs to assess this submission
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ // user assessment has two states: record created but not assessed (date created in the future);
+ // assessed but always available for re-assessment
+ if ($assessment->timecreated > $timenow) { // user needs to assess this submission
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</A>";
- }
- elseif (($timenow - $assessment->timecreated) < $CFG->maxeditingtime) { // there's still time left to edit...
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
- get_string("edit", "workshop")."</A>";
- }
- else {
- $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">"
- .get_string("view", "workshop")."</A>";
- }
- // see if teacher has graded assessment
- if ($assessment->timegraded and (($timenow - $assessment->timegraded) > $CFG->maxeditingtime)) {
- $comment .= get_string("thereisfeedbackfromtheteacher", "workshop", $course->teacher);
- }
- $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
+ elseif ($assessment->timegraded) {
+ // allow student to improve on their assessment once it's been graded
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
+ get_string("reassess", "workshop")."</A>";
+ } else {
+ // allow student just to see their assessment if it hasn't been graded
+ $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".
+ get_string("view", "workshop")."</A>";
+ }
+ // see if the assessment is graded
+ if ($assessment->timegraded) {
+ // show grading grade
+ $comment = get_string("thegradeforthisassessmentis", "workshop",
+ number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 1))." / ".
+ $workshop->gradinggrade;
+ } elseif ($assessment->timecreated < $timenow) {
+ $comment = get_string("awaitinggradingbyteacher", "workshop", $course->teacher);
+ }
+ $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
}
- print_table($table);
}
+ print_table($table);
+}
//////////////////////////////////////////////////////////////////////////////////////
// list the student submissions not assessed by this user
global $CFG;
+ 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 (groupmode($course, $cm) == SEPARATEGROUPS) {
+ $groupid = get_current_group($course->id);
+ } else {
+ $groupid = 0;
+ }
+
$table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"),
get_string("action", "workshop"), get_string("comment", "workshop"));
$table->align = array ("LEFT", "LEFT", "LEFT", "LEFT");
if ($submissions = workshop_get_student_submissions($workshop)) {
foreach ($submissions as $submission) {
+ // check group membership, if necessary
+ if ($groupid) {
+ // check user's group
+ if (!ismember($groupid, $submission->userid)) {
+ continue; // skip this user
+ }
+ }
$comment = "";
// see if user already graded this assessment
if ($assessment = get_record_select("workshop_assessments", "submissionid = $submission->id
if (($timenow - $assessment->timecreated < $CFG->maxeditingtime)) {
// last chance salon
$submissionowner = get_record("user", "id", $submission->userid);
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("edit", "workshop")."</A>";
$table->data[] = array(workshop_print_submission_title($workshop, $submission),
fullname($submissionowner), $action, $comment);
}
else { // no assessment
$submissionowner = get_record("user", "id", $submission->userid);
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</A>";
$table->data[] = array(workshop_print_submission_title($workshop, $submission),
fullname($submissionowner), $action, $comment);
// list the teacher submissions not assessed by this user
global $CFG;
- $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop"));
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
+ $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"),
+ get_string("comment", "workshop"));
$table->align = array ("LEFT", "LEFT", "LEFT");
$table->size = array ("*", "*", "*");
$table->cellpadding = 2;
$timenow = time();
if (($timenow - $assessment->timecreated < $CFG->maxeditingtime)) {
// last chance salon
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("edit", "workshop")."</A>";
$table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
}
else { // no assessment
- $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">".
+ $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
get_string("assess", "workshop")."</A>";
$table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
//////////////////////////////////////////////////////////////////////////////////////
function workshop_list_ungraded_assessments($workshop, $stype) {
+ // lists all the assessments of student submissions for grading by teacher
global $CFG;
- // lists all the assessments of student submissions for grading by teacher
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
$table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"),
get_string("assessor", "workshop"), get_string("timeassessed", "workshop"), get_string("action", "workshop"));
$table->align = array ("LEFT", "LEFT", "LEFT", "LEFT");
foreach ($assessments as $assessment) {
if (!isteacher($workshop->course, $assessment->userid)) { // don't let teacher grade their own assessments
if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) {
- $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&stype=$stype&aid=$assessment->id\">".
+ $action = "<A HREF=\"assessments.php?action=gradeassessment&id=$cm->id&stype=$stype&aid=$assessment->id\">".
get_string("edit", "workshop")."</A>";
}
else {
- $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&stype=$stype&aid=$assessment->id\">".
+ $action = "<A HREF=\"assessments.php?action=gradeassessment&id=$cm->id&stype=$stype&aid=$assessment->id\">".
get_string("grade", "workshop")."</A>";
}
$submission = get_record("workshop_submissions", "id", $assessment->submissionid);
function workshop_list_user_submissions($workshop, $user) {
global $CFG;
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
$timenow = time();
$table->head = array (get_string("title", "workshop"), get_string("action", "workshop"),
get_string("submitted", "assignment"), get_string("assessments", "workshop"));
foreach ($submissions as $submission) {
// allow user to delete a submission if it's warm
if ($submission->timecreated > ($timenow - $CFG->maxeditingtime)) {
- $action = "<a href=\"submissions.php?action=userconfirmdelete&a=$workshop->id&sid=$submission->id\">".
+ $action = "<a href=\"submissions.php?action=userconfirmdelete&id=$cm->id&sid=$submission->id\">".
get_string("delete", "workshop")."</a>";
}
else {
// show links depending on who doing the viewing
$firstcomment = FALSE;
if (isteacher($workshop->course, $USER->id) and ($comment->userid != $USER->id)) {
- echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=addcomment&a=$workshop->id&aid=$assessment->id\">".
+ echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=addcomment&id=$cm->id&aid=$assessment->id\">".
get_string("reply", "workshop")."</A>\n";
}
elseif (($comment->userid ==$USER->id) and (($timenow - $comment->timecreated) < $CFG->maxeditingtime)) {
- echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=editcomment&a=$workshop->id&cid=$comment->id\">".
+ echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=editcomment&id=$cm->id&cid=$comment->id\">".
get_string("edit", "workshop")."</A>\n";
if ($USER->id == $submission->userid) {
- echo " | <A HREF=\"assessments.php?action=agreeassessment&a=$workshop->id&aid=$assessment->id\">".
+ echo " | <A HREF=\"assessments.php?action=agreeassessment&id=$cm->id&aid=$assessment->id\">".
get_string("agreetothisassessment", "workshop")."</A>\n";
}
}
elseif (($comment->userid != $USER->id) and (($USER->id == $assessment->userid) or
($USER->id == $submission->userid))) {
- echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=addcomment&a=$workshop->id&aid=$assessment->id\">".
+ echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=addcomment&id=$cm->id&aid=$assessment->id\">".
get_string("reply", "workshop")."</A>\n";
if ($USER->id == $submission->userid) {
- echo " | <A HREF=\"assessments.php?action=agreeassessment&a=$workshop->id&aid=$assessment->id\">".
+ echo " | <A HREF=\"assessments.php?action=agreeassessment&id=$cm->id&aid=$assessment->id\">".
get_string("agreetothisassessment", "workshop")."</A>\n";
}
}
}
}
- // now print the grading form with the teacher's comments if any
+ // now print the grading form with the grading grade if any
// FORM is needed for Mozilla browsers, else radio bttons are not checked
?>
<form name="assessmentform" method="post" action="assessments.php">
echo "</tr>\n";
$timenow = time();
- // now show the teacher's comment if available...
- if ($assessment->timegraded and (($timenow - $assessment->timegraded) > $CFG->maxeditingtime)) {
- echo "<tr valign=top>\n";
- echo " <td align=\"right\"><p><b>". get_string("teacherscomment", "workshop").":</b></p></td>\n";
- echo " <td>\n";
- echo text_to_html($assessment->teachercomment);
+ // now show the grading grade if available...
+ if ($assessment->timegraded) {
+ echo "<tr valign=\"top\">\n";
+ echo " <td align=\"right\"><p><b>";
+ if (isteacher($course->id, $assessment->userid)) {
+ print_string("gradeforstudentsassessment", "workshop", $course->teacher);
+ } else {
+ print_string("gradeforstudentsassessment", "workshop", $course->student);
+ }
+ echo ":</b></p></td><td>\n";
+ echo number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0);
echo " </td>\n";
echo "</tr>\n";
- // only show the grading grade if it's the teacher
- if (isteacher($course->id)) {
- echo "<tr valign=\"top\">\n";
- echo " <td align=\"right\"><p><b>". get_string("teachersgrade", "workshop").":</b></p></td>\n";
- echo " <td>\n";
- echo number_format($assessment->gradinggrade * 100 / COMMENTSCALE, 0)."%";
- echo " </td>\n";
- echo "</tr>\n";
- }
echo "<tr valign=\"top\">\n";
echo "<td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"> </td>\n";
echo "</tr>\n";
//////////////////////////////////////////////////////////////////////////////////////
function workshop_print_assessments_by_user_for_admin($workshop, $user) {
- if ($assessments =workshop_get_user_assessments($workshop, $user)) {
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
+ if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
foreach ($assessments as $assessment) {
echo "<p><center><b>".get_string("assessmentby", "workshop", fullname($user))."</b></center></p>\n";
workshop_print_assessment($workshop, $assessment);
- echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&a=$workshop->id&aid=$assessment->id\">".
+ echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&id=$cm->id&aid=$assessment->id\">".
get_string("delete", "workshop")."</a></p><hr>\n";
}
}
//////////////////////////////////////////////////////////////////////////////////////
function workshop_print_assessments_for_admin($workshop, $submission) {
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
if ($assessments =workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
if (!$user = get_record("user", "id", $assessment->userid)) {
}
echo "<p><center><b>".get_string("assessmentby", "workshop", fullname($user))."</b></center></p>\n";
workshop_print_assessment($workshop, $assessment);
- echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&a=$workshop->id&aid=$assessment->id\">".
+ echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&id=$cm->id&aid=$assessment->id\">".
get_string("delete", "workshop")."</a></p><hr>\n";
}
}
print_heading($workshop->name, "center");
print_simple_box_start("center");
echo "<b>".get_string("duedate", "assignment")."</b>: $strduedate<br />";
- echo "<b>".get_string("maximumgrade")."</b>: $workshop->grade<br />";
+ $grade = $workshop->gradinggrade + $workshop->grade;
+ echo "<b>".get_string("maximumgrade")."</b>: $grade<br />";
echo "<b>".get_string("detailsofassessment", "workshop")."</b>:
<a href=\"assessments.php?id=$cm->id&action=displaygradingform\">".
get_string("specimenassessmentform", "workshop")."</a><br />";
}
+//////////////////////////////////////////////////////////////////////////////////////
+function workshop_print_key($workshop) {
+ // print an explaination of the grades
+
+ if (!$course = get_record("course", "id", $workshop->course)) {
+ error("Print key: course not found");
+ }
+ echo "<table align=\"center\">\n";
+ echo "<tr><td><small>{}</small></td><td><small>".get_string("assessmentby", "workshop", $course->student).
+ "; </small></td>\n";
+ echo "<td><small>[]</small></td><td><small>".get_string("assessmentby", "workshop", $course->teacher).
+ "; </small></td>\n";
+ echo "<td><small><></small></td><td><small>".get_string("assessmentdropped", "workshop").
+ "; </small></td>\n";
+ echo "<td><small>()</small></td><td><small>".get_string("gradegiventoassessment", "workshop").
+ ".</small></td></tr>\n";
+ echo "<tr><td colspan=\"8\" align=\"center\"><small>".get_string("gradesforsubmissionsare", "workshop", $workshop->grade)."; ".
+ get_string("gradesforassessmentsare", "workshop", $workshop->gradinggrade).".</small></td></tr>\n";
+ echo "</table><br />\n";
+ return;
+}
+
+
//////////////////////////////////////////////////////////////////////////////////////
function workshop_print_league_table($workshop) {
// print an order table of (student) submissions showing teacher's and student's assessments
if (! $course = get_record("course", "id", $workshop->course)) {
error("Print league table: Course is misconfigured");
}
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+ // set $groupid if workshop is in SEPARATEGROUPS mode
+ if (groupmode($course, $cm) == SEPARATEGROUPS) {
+ $groupid = get_current_group($course->id);
+ } else {
+ $groupid = 0;
+ }
+
$nentries = $workshop->showleaguetable;
- if ($nentries == 99) {
- $nentries = 999999; // a large number
- }
-
if ($workshop->anonymous and isstudent($course->id)) {
$table->head = array (get_string("title", "workshop"),
get_string("teacherassessments", "workshop", $course->teacher),
get_string("studentassessments", "workshop", $course->student), get_string("overallgrade", "workshop"));
$table->align = array ("left", "center", "center", "center");
$table->size = array ("*", "*", "*", "*");
- }
+ }
else { // show names
$table->head = array (get_string("title", "workshop"), get_string("name"),
get_string("teacherassessments", "workshop", $course->teacher),
get_string("studentassessments", "workshop", $course->student), get_string("overallgrade", "workshop"));
$table->align = array ("left", "left", "center", "center", "center");
$table->size = array ("*", "*", "*", "*", "*");
- }
+ }
$table->cellpadding = 2;
$table->cellspacing = 0;
- if ($submissions = workshop_get_student_submissions($workshop, "grade")) {
- $n = 1;
+ if ($submissions = workshop_get_student_submissions($workshop)) {
foreach ($submissions as $submission) {
+ if ($groupid) {
+ // check submission's group
+ if (!ismember($groupid, $submission->userid)) {
+ continue; // skip this submission
+ }
+ }
+ $grades[$submission->id] = workshop_submission_grade($workshop, $submission);
+ }
+ arsort($grades); // largest grade first
+ reset($grades);
+ $n = 1;
+ while (list($submissionid, $grade) = each($grades)) {
+ if (!$submission = get_record("workshop_submissions", "id", $submissionid)) {
+ error("Print league table: submission not found");
+ }
if (!$user = get_record("user", "id", $submission->userid)) {
error("Print league table: user not found");
- }
+ }
if ($workshop->anonymous and isstudent($course->id)) {
$table->data[] = array(workshop_print_submission_title($workshop, $submission),
- workshop_print_submission_assessments($workshop, $submission, "teacher"),
- workshop_print_submission_assessments($workshop, $submission, "student"),
- number_format(($workshop->teacherweight * $submission->teachergrade + $workshop->peerweight *
- $submission->peergrade) / ($workshop->teacherweight + $workshop->peerweight), 1)) ;
- }
+ workshop_print_submission_assessments($workshop, $submission, "teacher"),
+ workshop_print_submission_assessments($workshop, $submission, "student"), $grade);
+ }
else {
$table->data[] = array(workshop_print_submission_title($workshop, $submission), fullname($user),
- workshop_print_submission_assessments($workshop, $submission, "teacher"),
- workshop_print_submission_assessments($workshop, $submission, "student"),
- number_format(($workshop->teacherweight * $submission->teachergrade + $workshop->peerweight *
- $submission->peergrade) / ($workshop->teacherweight + $workshop->peerweight), 1)) ;
- }
+ workshop_print_submission_assessments($workshop, $submission, "teacher"),
+ workshop_print_submission_assessments($workshop, $submission, "student"), $grade);
+ }
$n++;
if ($n > $nentries) {
break;
- }
}
+ }
print_heading(get_string("leaguetable", "workshop"));
print_table($table);
- echo "<p>< > ".get_string("assessmentdropped", "workshop")."</p>\n";
- }
+ workshop_print_key($workshop);
}
+}
//////////////////////////////////////////////////////////////////////////////////////
function workshop_print_submission_assessments($workshop, $submission, $type) {
// Returns the teacher or peer grade and a hyperlinked list of grades for this submission
-
+
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
$str = '';
if ($assessments = workshop_get_assessments($submission)) {
switch ($type) {
case "teacher" :
- if ($submission->teachergrade) { // if there's a final teacher's grade...
- $str = "$submission->teachergrade ";
- }
foreach ($assessments as $assessment) {
if (isteacher($workshop->course, $assessment->userid)) {
-
- $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
- if ($assessment->donotuse) {
- $str .= "<";
- } else {
- $str .= "[";
- }
- $str .= number_format($assessment->grade, 0);
- if ($assessment->gradinggrade) { // funny, teacher is grading self!
- $str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%";
- }
- if ($assessment->donotuse) {
- $str .= "></A> ";
+ $str .= "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">";
+ if ($assessment->timegraded) {
+ if ($assessment->gradinggrade) {
+ $str .= "[".number_format($assessment->grade * $workshop->grade / 100, 0)." (".
+ number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).
+ ")]</a> ";
+ } else {
+ $str .= "<".number_format($assessment->grade, 0)." (0)></a> ";
+ }
} else {
- $str .= "]</A> ";
+ $str .= "[".number_format($assessment->grade, 0)." (-)]</a> ";
}
}
}
break;
case "student" :
- if ($submission->peergrade) { // if there's a final peer grade...
- $str = "$submission->peergrade ";
- }
foreach ($assessments as $assessment) {
if (isstudent($workshop->course, $assessment->userid)) {
- $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
- if ($assessment->donotuse) {
- $str .= "<";
- } else {
- $str .= "{";
- }
- $str .= number_format($assessment->grade, 0);
- if ($assessment->gradinggrade) {
- $str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%";
- }
- if ($assessment->donotuse) {
- $str .= "></A> ";
+ $str .= "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">";
+ if ($assessment->timegraded) {
+ if ($assessment->gradinggrade) {
+ $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0)." (".
+ number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).
+ ")}</a> ";
+ } else {
+ $str .= "<".number_format($assessment->grade * $workshop->grade / 100, 0).
+ " (0)></a> ";
+ }
} else {
- $str .= "}</A> ";
+ $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0)." (-)}</a> ";
}
}
}
function workshop_print_user_assessments($workshop, $user) {
// Returns the number of assessments and a hyperlinked list of grading grades for the assessments made by this user
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
+
if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
$n = count($assessments);
- $str = "$n (";
+ $str = "$n : ";
foreach ($assessments as $assessment) {
+ $str .= "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">";
if ($assessment->timegraded) {
- $gradingscaled = intval($assessment->gradinggrade * $workshop->grade / COMMENTSCALE);
- $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
- $str .= "$gradingscaled</A> ";
- }
- else {
- $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
- if ($assessment->donotuse) {
- $str .= "<".number_format($assessment->grade, 0)."></A> ";
+ if ($assessment->gradinggrade) {
+ $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0). " (".
+ number_format($assessment->gradinggrade * $workshop->gradinggrade / 100).")}</a> ";
} else {
- $str .= number_format($assessment->grade, 0)."</A> ";
+ $str .= "<".number_format($assessment->grade * $workshop->grade / 100, 0)." (0)></a> ";
}
+ } else {
+ $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0)." (-)}</a> ";
}
}
- $str .= ")";
}
else {
$str ="0";
return $result;
}
+//////////////////////////////////////////////////////////////////////////////////////
function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid,
$workshop="0", $user="", $groupid="") {
// Returns all workshop posts since a given time. If workshop is specified then
return;
}
+//////////////////////////////////////////////////////////////////////////////////////
function workshop_print_recent_mod_activity($activity, $course, $detail=false) {
global $CFG;
<?php
- // ...and fill the form if needed
+ require("$CFG->dirroot/mod/workshop/lib.php"); // for parameter arrays
+ // ...and fill the form if needed
if (empty($form->name)) {
$form->name = "";
}
if (empty($form->format)) {
$form->format = "";
}
+ if (!isset($form->gradinggrade)) {
+ $form->gradinggrade = 100;
+ }
if (!isset($form->grade)) {
$form->grade = 100;
}
+ if (!isset($form->gradingstrategy)) {
+ $form->gradingstrategy = 1; // default is accumulative
+ }
if (!isset($form->nelements)) {
$form->nelements = 1;
}
if (!isset($form->ntassessments)) {
$form->ntassessments = 0;
}
+ if (!isset($form->assessmentcomps)) {
+ $form->assessmentcomps = 2;
+ }
if (!isset($form->nsassessments)) {
$form->nsassessments = 0;
}
+ if (!isset($form->teacherweight)) {
+ $form->teacherweight = 1;
+ }
+ if (!isset($form->overallocation)) {
+ $form->overallocation = 0;
+ }
if (empty($form->includeself)) {
$form->includeself = "";
}
if (empty($form->hidegrades)) {
$form->hidegrades = "";
}
+ if (empty($form->showleaguetable)) {
+ $form->showleaguetable = 0;
+ }
+ if (empty($form->anonymous)) {
+ $form->anonymous = 0;
+ }
if (empty($form->maxbytes)) {
$form->maxbytes = "";
}
</tr>
<tr valign=top>
- <td align=right><P><B><?php print_string("maximumgrade") ?>:</B></P></TD>
+ <td align=right><P><B><?php print_string("gradeforassessments", "workshop") ?>:</B></P></TD>
<td>
<?php
for ($i=100; $i>=0; $i--) {
$grades[$i] = $i;
}
+ choose_from_menu($grades, "gradinggrade", "$form->gradinggrade", "");
+ helpbutton("gradinggrade", get_string("gradeforassessments", "workshop"), "workshop");
+ ?>
+ </td>
+</tr>
+
+<tr valign=top>
+ <td align=right><P><B><?php print_string("gradeforsubmission", "workshop") ?>:</B></P></TD>
+ <td>
+ <?php
choose_from_menu($grades, "grade", "$form->grade", "");
+ helpbutton("grade", get_string("gradeforsubmission", "workshop"), "workshop");
?>
</td>
</tr>
<td align=right><P><B><?php print_string("gradingstrategy", "workshop") ?>:</B></P></TD>
<td>
<?PHP
- require("$CFG->dirroot/mod/workshop/lib.php");
- if (!isset($form->gradingstrategy)) {
- $form->gradingstrategy = 1; // default
- }
- choose_from_menu($WORKSHOP_TYPE, "gradingstrategy", $form->gradingstrategy, "");
+ choose_from_menu($WORKSHOP_TYPE, "gradingstrategy", $form->gradingstrategy, "");
helpbutton("gradingstrategy", get_string("gradingstrategy", "workshop"), "workshop");
?>
</td>
<td align=right><P><B><?php print_string("numberofassessmentsofteachersexamples", "workshop") ?>:</B></P></TD>
<td>
<?PHP
+ unset($numbers);
for ($i=20; $i>=0; $i--) {
$numbers[$i] = $i;
}
</td>
</tr>
+<tr>
+ <td align=right><P><B><?php print_string("comparisonofassessments", "workshop") ?>:</B></P></TD>
+ <td>
+ <?php
+ // set up comparison names
+ foreach ($WORKSHOP_ASSESSMENT_COMPS as $KEY => $COMPARISON) {
+ $COMPARISONS[] = $COMPARISON['name'];
+ }
+ choose_from_menu($COMPARISONS, "assessmentcomps", $form->assessmentcomps, "");
+ helpbutton("comparisonofassessments", get_string("comparisonofassessments", "workshop"), "workshop");
+ ?>
+ </td>
+</tr>
+
<tr valign=top>
<td align=right><P><B><?php print_string("numberofassessmentsofstudentsubmissions", "workshop") ?>:</B></P></TD>
<td>
<?PHP
+ unset($numbers);
for ($i=20; $i>=0; $i--) {
$numbers[$i] = $i;
}
</td>
</tr>
+<tr valign=top>
+ <td align=right><P><B><?php print_string("weightforteacherassessments", "workshop") ?>:</B></P></TD>
+ <td>
+ <?PHP
+ unset($numbers);
+ for ($i=10; $i>=0; $i--) {
+ $numbers[$i] = $i;
+ }
+ choose_from_menu($numbers, "teacherweight", $form->teacherweight, "");
+ helpbutton("teacherweight", get_string("weightforteacherassessments", "workshop"), "workshop");
+ ?>
+ </td>
+</tr>
+
+<tr valign=top>
+ <td align=right><p><b><?php print_string("overallocation", "workshop") ?>:</b></p></td>
+ <td>
+ <?php
+ unset($numbers);
+ for ($i=2; $i>=0; $i--) {
+ $numbers[$i] = $i;
+ }
+ choose_from_menu($numbers, "overallocation", "$form->overallocation", "");
+ helpbutton("overallocation", get_string("overallocation", "workshop"), "workshop");
+ ?>
+ </td>
+</tr>
+
<tr>
<td align=right><P><B><?php print_string("selfassessment", "workshop") ?>:</B></P></TD>
<td>
<td align=right><P><B><?php print_string("assessmentsmustbeagreed", "workshop") ?>:</B></P></TD>
<td>
<?PHP
- $options[0] = get_string("no"); $options[1] = get_string("yes");
choose_from_menu($options, "agreeassessments", $form->agreeassessments, "");
helpbutton("agreeassessments", get_string("assessmentsmustbeagreed", "workshop"), "workshop");
?>
<td align=right><P><B><?php print_string("hidegradesbeforeagreement", "workshop") ?>:</B></P></TD>
<td>
<?PHP
- $options[0] = get_string("no"); $options[1] = get_string("yes");
choose_from_menu($options, "hidegrades", $form->hidegrades, "");
helpbutton("showinggrades", get_string("hidegradesbeforeagreement", "workshop"), "workshop");
?>
</td>
</tr>
+<tr>
+ <td align=right><p><b><?php print_string("leaguetable", "workshop"); ?>:</b></p></td>
+ <td>
+ <?php
+ unset($numbers);
+ $numbers[22] = '100';
+ $numbers[21] = 50;
+ for ($i=20; $i>=0; $i--) {
+ $numbers[$i] = $i;
+ }
+ choose_from_menu($numbers, "showleaguetable", $form->showleaguetable, "");
+ helpbutton("leaguetable", get_string("showleaguetable", "workshop"), "workshop");
+ ?>
+ </td>
+</tr>
+
+<tr>
+ <td align=right><p><b><? print_string("hidenamesfromstudents", "workshop", $course->students) ?>:</b></p></td>
+ <td>
+ <?php
+ choose_from_menu($options, "anonymous", $form->anonymous, "");
+ helpbutton("anonymous", get_string("hidenamesfromstudents", "workshop", $course->students), "workshop");
+ ?>
+ </td>
+</tr>
+
<tr valign=top>
<td align=right><P><B><?php print_string("maximumsize", "workshop") ?>:</B></P></TD>
<td>
$workshop->maxbytes = backup_todb($info['MOD']['#']['MAXBYTES']['0']['#']);
$workshop->deadline = backup_todb($info['MOD']['#']['DEADLINE']['0']['#']);
$workshop->grade = backup_todb($info['MOD']['#']['GRADE']['0']['#']);
+ $workshop->gradinggrade = backup_todb($info['MOD']['#']['GRADINGGRADE']['0']['#']);
$workshop->ntassessments = backup_todb($info['MOD']['#']['NTASSESSMENTS']['0']['#']);
+ $workshop->assessmentcomps = backup_todb($info['MOD']['#']['ASSESSMENTCOMPS']['0']['#']);
$workshop->nsassessments = backup_todb($info['MOD']['#']['NSASSESSMENTS']['0']['#']);
$workshop->overallocation = backup_todb($info['MOD']['#']['OVERALLOCATION']['0']['#']);
$workshop->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']);
- $workshop->mergegrades = backup_todb($info['MOD']['#']['MERGEGRADES']['0']['#']);
$workshop->teacherweight = backup_todb($info['MOD']['#']['TEACHERWEIGHT']['0']['#']);
- $workshop->peerweight = backup_todb($info['MOD']['#']['PEERWEIGHT']['0']['#']);
- $workshop->includeteachersgrade = backup_todb($info['MOD']['#']['INCLUDETEACHERSGRADE']['0']['#']);
- $workshop->biasweight = backup_todb($info['MOD']['#']['BIASWEIGHT']['0']['#']);
- $workshop->reliabilityweight = backup_todb($info['MOD']['#']['RELIABILITYWEIGHT']['0']['#']);
- $workshop->gradingweight = backup_todb($info['MOD']['#']['GRADINGWEIGHT']['0']['#']);
$workshop->showleaguetable = backup_todb($info['MOD']['#']['SHOWLEAGUETABLE']['0']['#']);
- $workshop->teacherloading = backup_todb($info['MOD']['#']['TEACHERLOADING']['0']['#']);
- $workshop->assessmentstodrop = backup_todb($info['MOD']['#']['ASSESSMENTSTODROP']['0']['#']);
//The structure is equal to the db, so insert the workshop
$newid = insert_record ("workshop",$workshop);
/*************************************************
ACTIONS handled are:
+ adminamendtitle
adminconfirmdelete
- admindelete
- adminlist
- analysisofassessments
- calculatefinalgrades
+ admindelete
+ adminlist
displayfinalgrades (teachers only)
- displayfinalweights
listallsubmissions
listforassessmentstudent
listforassessmentteacher
- updateoverallocation
userconfirmdelete
userdelete
require("lib.php");
require("locallib.php");
- optional_variable($id); // Course Module ID
- optional_variable($a); // workshop ID
+ require_variable($id); // Course Module ID
// get some useful stuff...
- if ($id) {
- if (! $cm = get_record("course_modules", "id", $id)) {
- error("Course Module ID was incorrect");
- }
-
- if (! $course = get_record("course", "id", $cm->course)) {
- error("Course is misconfigured");
- }
-
- if (! $workshop = get_record("workshop", "id", $cm->instance)) {
- error("Course module is incorrect");
- }
-
- } else {
- if (! $workshop = get_record("workshop", "id", $a)) {
- error("Course module is 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 (! $cm = get_record("course_modules", "id", $id)) {
+ error("Course Module ID was incorrect");
+ }
+ if (! $course = get_record("course", "id", $cm->course)) {
+ error("Course is misconfigured");
+ }
+ if (! $workshop = get_record("workshop", "id", $cm->instance)) {
+ error("Course module is incorrect");
}
require_login($course->id);
// ... print the header and...
print_header_simple("$workshop->name", "",
"<A HREF=index.php?id=$course->id>$strworkshops</A> ->
- <A HREF=\"view.php?a=$workshop->id\">$workshop->name</A> -> $strsubmissions",
+ <A HREF=\"view.php?id=$cm->id\">$workshop->name</A> -> $strsubmissions",
"", "", true);
//...get the action or set up an suitable default
}
- /*************** analysis of assessments (by teacher) ***************************/
- elseif ($action == 'analysisofassessments') {
-
- // timeout after 10 minutes
- @set_time_limit(600);
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- // this analysis does not use bias or reliability...
- set_field("workshop", "biasweight", 0, "id", $workshop->id);
- set_field("workshop", "reliabilityweight", 0, "id", $workshop->id);
- // ...and unity weights for teacher and peer assessments
- set_field("workshop", "teacherweight", 5, "id", $workshop->id);
- set_field("workshop", "peerweight", 5, "id", $workshop->id);
-
- echo "<form name=\"optionsform\" method=\"post\" action=\"submissions.php\">\n";
- echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$cm->id\">\n";
- echo "<input type=\"hidden\" name=\"action\" value=\"saveanalysisoptions\">\n";
+ /*************** display final grades (by teacher) ***************************/
+ elseif ($action == 'displayfinalgrades') {
- // get the options from the database...
- $teacherloading = get_field("workshop", "teacherloading", "id", $workshop->id);
- $gradingweight = get_field("workshop", "gradingweight", "id", $workshop->id);
- $assessmentstodrop = get_field("workshop", "assessmentstodrop", "id", $workshop->id);
-
- // ...now show the options used in a table
- print_heading_with_help(get_string("analysisofassessments", "workshop"), "analysisofassessments",
- "workshop");
- echo "<center><TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
- echo "<TR><td COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>".
- get_string("optionsusedinanalysis", "workshop")."</B></CENTER></TD></TR>\n";
- echo "<tr><td align=\"right\">".get_string("loadingforteacherassessments", "workshop",
- $course->teacher).":</td>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "teacherloading", $teacherloading, "");
- echo "</TD></TR>\n";
- echo "<tr><td align=\"right\">".get_string("weightforgradingofassessments", "workshop").":</td>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "gradingweight", $gradingweight, "");
- echo "</TD></TR>\n";
- echo "<TR><TD ALIGN=\"right\">".get_string("percentageofassessments", "workshop").":</TD>\n";
- echo "<TD>";
- for ($i = 0; $i <= 100; $i++) {
- $numbers[$i] = $i;
- }
- choose_from_menu($numbers, "assessmentstodrop", $assessmentstodrop, "");
- echo "</TD></TR>\n";
- echo "</TABLE><br />\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("repeatanalysis", "workshop")."\">\n";
- echo "</FORM>\n";
-
-
- // set up the array of users who have made assessments
- if (!$students = get_course_students($course->id, "u.lastname, u.firstname")) {
- print_heading(get_string("nostudentsyet"));
- print_footer($course);
- exit;
- }
- $teachers = get_course_teachers($course->id);
- $users = array_merge($students, $teachers);
- $nassessments = 0;
- foreach ($users as $user) {
- if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
- // the value put into the array element is not particularly important at this stage
- // it will hold the user's assessment error after the first iteration
- $n = count($assessments);
- $assessors[$user->id] = $n;
- $nassessments += $n;
- }
- }
-
- $ntodrop = intval(($assessmentstodrop * $nassessments / 100.0) + 0.5);
-
- // set minumim value for the variance (of the elements)
- $minvar = 0.05;
-
- flush();
- // we now do up to five iterations, the first with all users. The second and subsequent if
- // the number of assessors is not the full set. Two or three iterations with the reduced set
- // should be enough to stablise the list of dropped assessments.
- if ($ntodrop == 0) {
- $loopcount = 1;
+ if (groupmode($course, $cm) == SEPARATEGROUPS) {
+ $groupid = get_current_group($course->id);
} else {
- $loopcount = 7; // max loops, should finish before that loop
- }
- for ($loop = 0; $loop < $loopcount; $loop++) {
- // calculate the means for each submission using just the "good" assessments
- // on the first iteration all the assessments are included
- unset($num);
- unset($sum);
- foreach ($assessors as $userid => $error) {
- if (!$user = get_record("user", "id", $userid)) {
- error("Analysis of assessments: User record not found");
- }
- $assessments = workshop_get_user_assessments_done($workshop, $user);
- foreach ($assessments as $assessment) {
- if (isset($drop[$assessment->id])) {
- continue;
- }
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Analysis of Assessments: submission record not found");
- }
- if (isset($num[$submission->id])) {
- if (isteacher($course->id, $userid)) {
- $num[$submission->id] += $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
- } else {
- $num[$submission->id]++;
- }
- } else {
- if (isteacher($course->id, $userid)) {
- $num[$submission->id] = $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
- } else {
- $num[$submission->id] = 1;
- }
- }
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $grade = get_field("workshop_grades", "grade",
- "assessmentid", $assessment->id, "elementno", $i);
- if (isset($sum[$submission->id][$i])) {
- if (isteacher($course->id, $userid)) {
- $sum[$submission->id][$i] += $grade * $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
- } else {
- $sum[$submission->id][$i] += $grade;
- }
- } else {
- if (isteacher($course->id, $userid)) {
- $sum[$submission->id][$i] = $grade * $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
- } else {
- $sum[$submission->id][$i] = $grade;
- }
- }
- }
- }
- }
- reset($num);
- if (!$loop) {
- echo "<p>".get_string("numberofsubmissions", "workshop", count($num))."</p>\n";
- }
-
- // (re)calculate the means for each submission
- foreach ($num as $submissionid => $n) {
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $mean[$submissionid][$i] = $sum[$submissionid][$i] / $n;
- // echo "Submission: $submissionid; Element: $i; Mean: {$mean[$submissionid][$i]}<br />\n";
- }
- }
-
- // only calculate the sd's and the error from guessing once
- if (!$loop) {
- // now get an estimate of the standard deviation of each element in the assessment
- $n = 0;
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $var[$i] = 0;
- }
- foreach ($assessors as $userid => $error) {
- if (!$user = get_record("user", "id", $userid)) {
- error("Submissions: User record not found");
- }
- $assessments = workshop_get_user_assessments_done($workshop, $user);
- foreach ($assessments as $assessment) {
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Analysis of Assessments: submission record not found");
- }
- $n++;
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $grade = get_field("workshop_grades", "grade",
- "assessmentid", $assessment->id, "elementno", $i);
- $temp = $mean[$submission->id][$i] - $grade;
- $var[$i] += $temp * $temp;
- }
- }
- }
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $sd[$i] = sqrt($var[$i] / ($n - 1));
- echo get_string("standarddeviation", "workshop", $i+1)." $sd[$i]<br />";
- if ($sd[$i] <= $minvar) {
- get_string("standarddeviationnote", "workshop")."<br />\n";
- }
- echo "<br />\n";
- }
-
- // calculate the mean variance (error) if just guessing
- // first get the assignment elements for maxscores...
- $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
- foreach ($elementsraw as $element) {
- $maxscore[] = $element->maxscore; // to renumber index 0,1,2...
- $weight[] = $element->weight; // to renumber index 0,1,2...
- }
- $n = 0;
- $totvar = 0;
- foreach ($assessors as $userid => $error) {
- if (!$user = get_record("user", "id", $userid)) {
- error("Submissions: User record not found");
- }
- $assessments = workshop_get_user_assessments_done($workshop, $user);
- foreach ($assessments as $assessment) {
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Analysis of Assessments: submission record not found");
- }
- $n++;
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $grade = mt_rand(0, $maxscore[$i]);
- if ($sd[$i] > $minvar) {
- $temp = ($mean[$submission->id][$i] - $grade) *
- $WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i];
- } else {
- $temp = 0;
- }
- $totvar += $temp * $temp;
- }
- }
- }
- // take the average of these variances
- $varguess = $totvar / $n;
- }
-
- // calculate the variance (error) for each assessment (adjusted after the first loop)
- // and work out the user's average error with all their assessments and without
- // the dropped assessments (their "good" assessments)
- foreach ($assessors as $userid => $error) {
- if (!$user = get_record("user", "id", $userid)) {
- error("Submissions: User record not found");
- }
- $assessments = workshop_get_user_assessments_done($workshop, $user);
- $n = 0;
- $ngood = 0;
- $totvar = 0;
- $totvargood = 0;
- foreach ($assessments as $assessment) {
- if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
- error("Analysis of Assessments: submission record not found");
- }
- $n++;
- $var = 0;
- for ($i = 0; $i < $workshop->nelements; $i++) {
- $grade = get_field("workshop_grades", "grade",
- "assessmentid", $assessment->id, "elementno", $i);
- if ($sd[$i] > $minvar) {
- $temp = ($mean[$submission->id][$i] - $grade) *
- $WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i];
- } else {
- $temp = 0;
- }
- $var += $temp * $temp;
- }
- // the variances are adjusted by the user's overall error (once it's calculated)
- if ($loop) {
- $assessmentvar[$assessment->id] = $var * $error;
- } else {
- $assessmentvar[$assessment->id] = $var;
- }
- $totvar += $var;
- if (empty($drop[$assessment->id])) {
- $ngood++;
- $totvargood += $var;
- }
- }
- $nsubmissions[$userid] = $n;
- $newassessors[$userid] = $totvar / $n;
- if ($ngood) {
- $vargood[$userid] = $totvargood / $ngood;
- } else {
- $vargood[$userid] = 0;
- }
- // echo fullname($user)." Error: {$newassessors[$userid]}; n: $n<br />\n";
- }
-
- // echo "<hr>\n";
-
-
- // now drop the assessments with the largest (adjusted) variances
- $nchanged = 0;
- if ($ntodrop) {
- asort($assessmentvar);
- $n = 1;
- foreach ($assessmentvar as $assessmentid => $adjvar) {
- if ($n <= ($nassessments - $ntodrop)) {
- if (isset($drop[$assessmentid])) {
- unset($drop[$assessmentid]);
- $nchanged++;
- }
- } else {
- if (empty($drop[$assessmentid])) {
- $drop[$assessmentid] = 1;
- $nchanged++;
- }
- }
- $n++;
- }
- }
-
- // reset the assessors array
- $assessors = $newassessors;
- // put the assessors in order (for the next iteration, if there is one)
- asort($assessors);
- reset($assessors);
- $i = $loop + 1;
- echo get_string("iteration", "workshop", "$i / $loopcount")."<br />\n";
- echo get_string("numberofassessmentschanged", "workshop", $nchanged)."<br />\n";
- flush();
- if (!$nchanged) {
- break;
- }
- } // end of iteration loop
-
- // flag the assessments which were classed as outliers
- // but first clear any existing flags
- execute_sql("UPDATE {$CFG->prefix}workshop_assessments SET donotuse = 0
- WHERE workshopid = $workshop->id", false);
- if ($ntodrop) {
- foreach ($drop as $assessmentid => $flag) {
- if (!set_field("workshop_assessments", "donotuse", 1, "id", $assessmentid)) {
- error("Analysis of assessments: unable to set donotuse field");
- }
- $userid = get_field("workshop_assessments", "userid", "id", $assessmentid);
- if (empty($ndropped[$userid])) {
- $ndropped[$userid] = 1;
- } else {
- $ndropped[$userid]++;
- }
- }
- }
-
- // echo "<p>".get_string("expectederror", "workshop", $varguess)."</p>\n";
- print_heading(get_string("errortable", "workshop"));
- $table->head = array(" ",get_string("name"), get_string("averageerror", "workshop"),
- get_string("averageerror", "workshop")."<br />".
- get_string("excludingdroppedassessments", "workshop"),
- get_string("numberofassessments", "workshop"));
- $table->align = array ("left","left", "center", "center", "center");
- $table->size = array ("*", "*", "*", "*", "*");
- $table->cellpadding = 2;
- $table->cellspacing = 0;
- $n = 1;
- foreach ($assessors as $userid => $error) {
- if (!$user = get_record("user", "id", $userid)) {
- error("Assessment analysis: user record not found");
- }
- if ($vargood[$userid]) {
- $vargoodtext = number_format($vargood[$userid] * 100 / $varguess, 2)."%";
- } else {
- $vargoodtext = "-";
- }
- if (empty($ndropped[$userid])) {
- $numtext = "$nsubmissions[$userid]";
- } else {
- $numtext = "$nsubmissions[$userid] <$ndropped[$userid]>";
- }
- $table->data[] = array($n, fullname($user),
- number_format($error * 100 / $varguess, 2)."%", $vargoodtext,
- $numtext);
- $n++;
- }
- print_table($table);
- echo "<p>< > ".get_string("assessmentsexcluded", "workshop", $course->student)."</p>\n";
- echo "<p>".get_string("submissionsused", "workshop", count($num))."</p>\n";;
-
- // display student grades
- print_heading(get_string("gradetable", "workshop"));
- unset($table);
- $table->head = array(get_string("name"), get_string("submission", "workshop"),
- get_string("assessmentsdone", "workshop"), get_string("assessments", "workshop"),
- get_string("studentassessments", "workshop", $course->teacher),
- get_string("studentassessments", "workshop", $course->student),
- get_string("submission", "workshop"), get_string("overallgrade", "workshop"));
- $table->align = array ("left", "center", "center", "center", "center", "center", "center", "center");
- $table->size = array ("*", "*", "*", "*", "*", "*", "*", "*");
- $table->cellpadding = 2;
- $table->cellspacing = 0;
- $table->data[] = array("<b>".get_string("weight", "workshop")."</b>", " ", " ",
- "<b>".$WORKSHOP_FWEIGHTS[$workshop->gradingweight]."</b>", " ", " ","<b>1</b>", " ");
- $maxassessments = $workshop->nsassessments + $workshop->ntassessments;
- foreach ($students as $user) {
- if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
- $n = 0;
- foreach ($assessments as $assessment) {
- if (!$assessment->donotuse) {
- $n++;
- }
- }
- if ($maxassessments) {
- $assessmentgrade = ($n / $maxassessments) * $workshop->grade;
- } else {
- $assessmentgrade = 0;
- }
- } else {
- // no assessments
- $assessmentgrade = 0;
- }
- if ($submissions = workshop_get_user_submissions($workshop, $user)) {
- foreach ($submissions as $submission) {
- $submissiongrade = 0;
- $n = 0;
- if ($assessments = workshop_get_assessments($submission)) {
- $sum = 0;
- foreach ($assessments as $assessment) {
- if (!$assessment->donotuse) {
- $n++;
- $sum += $assessment->grade;
- }
- }
- if ($n) {
- $submissiongrade = $sum / $n;
- }
- }
- $finalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight] +
- $submissiongrade) / ($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0);
- if ($n) {
- $table->data[] = array(fullname($user),
- workshop_print_submission_title($workshop, $submission),
- workshop_print_user_assessments($workshop, $user),
- number_format($assessmentgrade, 2),
- workshop_print_submission_assessments($workshop, $submission, "teacher"),
- workshop_print_submission_assessments($workshop, $submission, "student"),
- number_format($submissiongrade, 2),
- number_format($finalgrade, 2));
- } else {
- $table->data[] = array(fullname($user),
- workshop_print_submission_title($workshop, $submission),
- workshop_print_user_assessments($workshop, $user),
- number_format($assessmentgrade, 2),
- workshop_print_submission_assessments($workshop, $submission, "teacher"),
- workshop_print_submission_assessments($workshop, $submission, "student"),
- "<b>".get_string("noassessments", "workshop")."</b>",
- number_format($finalgrade, 2));
- }
- // save grades in submission record
- set_field("workshop_submissions", "teachergrade", intval($submissiongrade + 0.5), "id",
- $submission->id);
- set_field("workshop_submissions", "peergrade", intval($submissiongrade + 0.5), "id",
- $submission->id);
- set_field("workshop_submissions", "finalgrade", intval($finalgrade + 0.5), "id",
- $submission->id);
- set_field("workshop_submissions", "gradinggrade", intval($assessmentgrade + 0.5), "id",
- $submission->id);
- }
- } else {
- // no submissions
- $finalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight]) /
- ($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0);
- $table->data[] = array(fullname($user),
- "-", workshop_print_user_assessments($workshop, $user),
- number_format($assessmentgrade, 2), "-", "-",
- get_string("nosubmission", "workshop"),
- number_format($finalgrade,2));
- }
- }
- print_table($table);
- echo "<p>< > ".get_string("assessmentdropped", "workshop")."</p>\n";
- echo "</CENTER>";
- print_continue("view.php?a=$workshop->id");
- }
-
-
- /*************** calculate final grades (by teacher) ***************************/
- elseif ($action == 'calculatefinalgrades') {
-
- $form = (object)$_POST;
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ $groupid = 0;
+ }
+ // Get all the students
+ if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) {
+ print_heading(get_string("nostudentsyet"));
+ print_footer($course);
+ exit;
+ }
+
+ // show the final grades as stored in the tables...
+ print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop");
+ echo "<center><table border=\"1\" width=\"90%\"><tr>
+ <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop").
+ "</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments",
+ "workshop")."</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop",
+ $course->teachers)."</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop",
+ $course->students)."</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission",
+ "workshop")."</b></td>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop").
+ "</b></td></TR>\n";
- // Get all the students in surname order
- if (!$users = get_course_students($course->id, "u.firstname, u.lastname")) {
- print_heading(get_string("nostudentsyet"));
- print_footer($course);
- exit;
- }
-
- // set up the weights from the calculate final grades form...
- if (isset($form->teacherweight)) {
- $teacherweight = $form->teacherweight;
- // ...and save them
- set_field("workshop", "teacherweight", $teacherweight, "id", "$workshop->id");
- }
-
- if (isset($form->peerweight)) {
- $peerweight = $form->peerweight;
- // ...and save them
- set_field("workshop", "peerweight", $peerweight, "id", "$workshop->id");
- }
-
- // get the include teachers grade flag
- if (isset($form->includeteachersgrade)) {
- $includeteachersgrade = $form->includeteachersgrade;
- set_field("workshop", "includeteachersgrade", $includeteachersgrade, "id", "$workshop->id");
- }
-
- if (isset($form->biasweight)) {
- $biasweight = $form->biasweight;
- // ...and save them
- set_field("workshop", "biasweight", $biasweight, "id", "$workshop->id");
- }
-
- if (isset($form->reliabilityweight)) {
- $reliabilityweight = $form->reliabilityweight;
- // ...and save them
- set_field("workshop", "reliabilityweight", $reliabilityweight, "id", "$workshop->id");
- }
-
- if (isset($form->gradingweight)) {
- $gradingweight = $form->gradingweight;
- // ...and save them
- set_field("workshop", "gradingweight", $gradingweight, "id", "$workshop->id");
- }
-
- // save number of entries in showleaguetable option
- if ($form->nentries == 'All') {
- $form->nentries = 99;
- }
- set_field("workshop", "showleaguetable", $form->nentries, "id", "$workshop->id");
-
- // save the anonymous option
- set_field("workshop", "anonymous", $form->anonymous, "id", "$workshop->id");
-
- // work out what to show in the final grades tables and what to include in the calculation of the final grade
- // teacher grades?
- if ($workshop->gradingstrategy and $teacherweight) {
- $useteachersgrades = 1;
- }
- else {
- $useteachersgrades = 0;
- }
- // peergrades?
- if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) {
- $usepeergrades = 1;
- }
- else {
- $usepeergrades = 0;
- }
- // bias grades?
- if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
- and $biasweight ) {
- $usebiasgrades = 1;
- }
- else {
- $usebiasgrades = 0;
- }
- // reliability grades?
- if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
- and $reliabilityweight ) {
- $usereliabilitygrades = 1;
- }
- else {
- $usereliabilitygrades = 0;
- }
- // grading grades?
- if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) {
- $usegradinggrades = 1;
- }
- else {
- $usegradinggrades = 0;
- }
-
- // start to calculate the grand means
- $sumallteachergrades = 0.0;
- $nallteachergrades = 0;
- $sumallpeergrades = 0.0;
- $nallpeergrades = 0;
- // get the grades of each student's submission...
- // the method used allowed a submission to be graded by more than one teacher
- if (workshop_count_student_submissions($workshop)) {
- echo "<CENTER><B>".get_string("studentsubmissions", "workshop", $course->student);
- echo "<BR><TABLE BORDER=1 WIDTH=\"90%\"><TR>\n";
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$course->student</B></TD>\n";
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("submissions","workshop")."</B></TD>\n";
- if ($useteachersgrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->teachers)."</B></TD>\n";
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("numberofassessments", "workshop")."</B></TD>\n";
- }
- if ($usepeergrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->students)."</B></TD>\n";
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("numberofassessments", "workshop")."</B></TD>\n";
- }
- if ($useteachersgrades or $usepeergrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeofsubmission", "workshop")."</B></TD></TR>\n";
- }
- // display weights
- echo "<TR><TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("weights","workshop")."</B></TD>\n";
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
- if ($useteachersgrades) {
- echo "<TD COLSPAN=\"2\" BGCOLOR=\"$THEME->cellheading2\"><CENTER><B>$WORKSHOP_FWEIGHTS[$teacherweight]</B></CENTER></TD>\n";
- }
- if ($usepeergrades) {
- echo "<TD COLSPAN=\"2\" BGCOLOR=\"$THEME->cellheading2\"><CENTER><B>$WORKSHOP_FWEIGHTS[$peerweight]</B></CENTER></TD>\n";
- }
- if ($useteachersgrades or $usepeergrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";
- }
- echo "<TR>\n";
- // go through the submissions in "user" order, makes comparing the two tables easier
- foreach ($users as $user) {
- if ($submissions = workshop_get_user_submissions($workshop, $user)) {
- foreach ($submissions as $submission) {
- $sumteachergrades = 0.0;
- $nteachergrades = 0;
- $sumpeergrades = 0.0;
- $npeergrades = 0;
- // have a look at each assessment and add to arrays
- if ($assessments = workshop_get_assessments($submission)) {
- foreach ($assessments as $assessment) {
- if (isteacher($workshop->course, $assessment->userid)) {
- // it's a teacher's
- $sumteachergrades += $assessment->grade;
- $nteachergrades++;
- if ($includeteachersgrade) { // add it to the student grades
- $sumpeergrades += $assessment->grade;
- $npeergrades++;
- }
- }
- else {
- // its' a student's
- $sumpeergrades += $assessment->grade;
- $npeergrades++;
- }
- }
- }
- if ($nteachergrades) {
- $teachergrade = intval($sumteachergrades / $nteachergrades + 0.5);
- $sumallteachergrades += $teachergrade;
- $nallteachergrades++;
- }
- else {
- $teachergrade = 0;
- }
- if ($npeergrades) {
- $peergrade = intval($sumpeergrades / $npeergrades + 0.5);
- $sumallpeergrades += $peergrade;
- $nallpeergrades++;
- }
- else {
- $peergrade = 0;
- }
- if ($teacherweight + $peerweight > 0) {
- $grade = intval((($useteachersgrades * $teachergrade * $WORKSHOP_FWEIGHTS[$teacherweight] +
- $usepeergrades * $peergrade * $WORKSHOP_FWEIGHTS[$peerweight]) /
- ($useteachersgrades * $WORKSHOP_FWEIGHTS[$teacherweight] +
- $usepeergrades * $WORKSHOP_FWEIGHTS[$peerweight])) + 0.5);
- }
- else {
- $grade = 0;
- }
- // display the grades...
- echo "<TR><TD>".fullname($user)."</TD>\n";
- echo "<TD>".workshop_print_submission_title($workshop, $submission)."</TD>\n";
- if ($useteachersgrades) {
- echo "<TD>$teachergrade</TD>\n";
- echo "<TD>[$nteachergrades]</TD>\n";
- }
- if ($usepeergrades) {
- echo "<TD>$peergrade</TD>\n";
- echo "<TD>[$npeergrades]</TD>\n";
- }
- if ($useteachersgrades or $usepeergrades) {
- echo "<TD>$grade</TD></TR>\n";
- }
- // ...and save in the database
- set_field("workshop_submissions", "teachergrade", $teachergrade, "id", $submission->id);
- set_field("workshop_submissions", "peergrade", $peergrade, "id", $submission->id);
- }
- }
- }
- echo "</TABLE></CENTER>\n";
- }
- // now display the overall teacher and peer means
- if ($nallteachergrades) {
- $grandteachergrade = $sumallteachergrades / $nallteachergrades;
- }
- else {
- $grandteachergrade = 0;
- }
- if ($nallpeergrades) {
- $grandpeergrade = $sumallpeergrades / $nallpeergrades;
- }
- else {
- $grandpeergrade = 0;
- }
- if ($useteachersgrades) {
- echo "<P><B>".get_string("overallteachergrade", "workshop", number_format($grandteachergrade, 2))." [$nallteachergrades]</B>\n";
- }
- if ($usepeergrades) {
- echo "<P><B>".get_string("overallpeergrade", "workshop", number_format($grandpeergrade, 2))." [$nallpeergrades]</B><BR>\n";
- }
- // run thru each users and see how their assessments faired, we may junk the grading stats but what the heck!
foreach ($users as $user) {
- // we need to calculate a user bias before we can calculate their reliability
- $sumbias = 0.0;
- // nbias is used later to show how many peer assessments the user has done
- $nbias[$user->id] = 0;
- if ($workshop->nsassessments) { // peer assessments?
- // run thru this user's assessments on the STUDENT submissions
- if ($assessments = workshop_get_student_assessments($workshop, $user)) {
- foreach ($assessments as $assessment) {
- $submission = get_record("workshop_submissions", "id", $assessment->submissionid);
- // calculate the sum of "validity" values, the bias in a user's grading...
- $sumbias += $submission->peergrade - $assessment->grade;
- $nbias[$user->id]++;
- }
- }
- }
- if ($nbias[$user->id] > 1) {
- // we could divide by n-1 to remove own score from calculation of mean but we don't because we re-use bias
- // values in the calculation of reliability, and it's all relative anyway
- $bias[$user->id] = $sumbias / $nbias[$user->id];
- }
- else {
- $bias[$user->id] = 0.0;
- }
- // now look at all the user's assessments of both the TEACHER's submissions and the STUDENT submissions
- // to calculate their overall grading grade
- $sumgradinggrade = 0.0;
- $ngradinggrades = 0;
- if ($workshop->ntassessments or $workshop->nsassessments) { // worth looking?
- if ($assessments = workshop_get_user_assessments($workshop, $user)) {
- foreach ($assessments as $assessment) {
- if ($assessment->timegraded > 0) {
- $sumgradinggrade += $assessment->gradinggrade;
- $ngradinggrades++;
- }
- }
- }
- }
- if ($ngradinggrades) {
- $gradinggrade[$user->id] = $sumgradinggrade / $ngradinggrades;
- }
- else {
- $gradinggrade[$user->id] = 0.0;
- }
- }
-
- // calculate the mean value of "reliability", the accuracy of a user's grading (disregarding bias)
- // use a linear function rather than a squared function for reliability
- // at the same time calculate a reliability of a "dumb user" whose grades everything at the grand mean value
- $sumdumbreliability = 0.0;
- $ndumbreliability =0;
- foreach ($users as $user) {
- $sumreliability = 0.0;
- $nreliability = 0;
- if ($workshop->nsassessments) { // worth a look?
- // look only at the user's assessment of STUDENT submissions
- if ($assessments = workshop_get_student_assessments($workshop, $user)) {
- foreach ($assessments as $assessment) {
- $submission = get_record("workshop_submissions", "id", $assessment->submissionid);
- $sumreliability += abs($submission->peergrade - $assessment->grade - $bias[$user->id]);
- $nreliability++;
- $sumdumbreliability += abs($submission->peergrade - $grandpeergrade);
- $ndumbreliability++;
- }
- }
- }
- // calculate the mean reliability values
- if ($nreliability) {
- $reliability[$user->id] = $sumreliability / $nreliability;
- }
- else {
- $reliability[$user->id] = 999999; // big number
- }
- }
- if ($ndumbreliability) {
- $dumbreliability = $sumdumbreliability / $ndumbreliability;
- }
- else {
- $dumbreliability = 999999; // big number
- }
-
- // convert bias and reliability values into scales where 1 is prefect, 0 is no grading done...
- // ...but first find the largest (absolute) value of the bias measures
- if (max($bias) > abs(min($bias))) {
- $maxbias = max($bias);
- }
- else {
- $maxbias = abs(min($bias));
- }
-
- echo "<P><CENTER>".get_string("studentgrades", "workshop", $course->student)."<BR>\n";
- echo "<CENTER><TABLE BORDER=1 WIDTH=\"90%\"><TR>
- <TD BGCOLOR=\"$THEME->cellheading2\"><B>$course->student</B></TD>\n";
- if ($useteachersgrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->teachers)."</B></TD>\n";
- }
- if ($usepeergrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->students)."</B></TD>\n";
- }
- if ($usebiasgrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeforbias", "workshop")."</B></TD>\n";
- }
- if ($usereliabilitygrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeforreliability", "workshop")."</B></TD>\n";
- }
- if ($usegradinggrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeforassessments", "workshop")."</B></TD>\n";
- }
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("overallgrade", "workshop")."</B></TD></TR>\n";
- // now display the weights
- echo "<TR><TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("weights","workshop")."</B></TD>\n";
- if ($useteachersgrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$teacherweight]</B></TD>\n";
- }
- if ($usepeergrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$peerweight]</B></TD>\n";
- }
- if ($usebiasgrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$biasweight]</B></TD>\n";
- }
- if ($usereliabilitygrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$reliabilityweight]</B></TD>\n";
- }
- if ($usegradinggrades) {
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$gradingweight]</B></TD>\n";
- }
- echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B> </B></TD></TR>\n";
- foreach ($users as $user) {
- // get user's best submission
- $bestgrade = -1;
- $teachergrade = 0;
- $peergrade = 0;
- if ($submissions = workshop_get_user_submissions($workshop, $user)) {
- foreach ($submissions as $submission) {
- $grade = ($submission->teachergrade * $WORKSHOP_FWEIGHTS[$teacherweight] +
- $submission->peergrade * $WORKSHOP_FWEIGHTS[$peerweight]) /
- ($WORKSHOP_FWEIGHTS[$teacherweight] + $WORKSHOP_FWEIGHTS[$peerweight]);
- if ($grade > $bestgrade) {
- $bestgrade = $grade;
- $teachergrade = $submission->teachergrade;
- $peergrade = $submission->peergrade;
- $bestsubmission = $submission;
- }
- }
- }
- else { // funny this user did not submit - create a dummy submission to hold any grades they might have
- unset($bestsubmission);
- $bestsubmission->workshopid = $workshop->id;
- $bestsubmission->userid = $user->id;
- $bestsubmission->title = "No Submission";
- $bestsubmission->timecreated = 0;
- if (!$bestsubmission->id = insert_record("workshop_submissions", $bestsubmission)) {
- error("Unable to create dummy submission record");
- }
- }
- // biasgrade is scaled between zero and one NEED TO ADD TEST FOR NO PEER ASSESSMENTS OF SUBMITTED WORK
- if ($maxbias) {
- $biasgrade = max(($nbias[$user->id] / $workshop->nsassessments) - (abs($bias[$user->id]) / $maxbias),
- 0.0);
- }
- else {
- $biasgrade = 0;
- }
- // reliabilitygrade is scaled between zero and one
-
- if ($dumbreliability and $workshop->nsassessments) {
- // nbias used here as it contains the number of assessments the user has done
- $reliabilitygrade = max(($nbias[$user->id] / $workshop->nsassessments) -
- ($reliability[$user->id] / $dumbreliability), 0.0);
- }
- else {
- $reliabilitygrade = 0;
- }
- $biasscaled = intval($biasgrade * $workshop->grade + 0.5);
- $reliabilityscaled = intval($reliabilitygrade * $workshop->grade + 0.5);
- $gradingscaled = intval($gradinggrade[$user->id] * $workshop->grade / COMMENTSCALE + 0.5);
- $finalgrade = intval((($teachergrade * $WORKSHOP_FWEIGHTS[$teacherweight] * $useteachersgrades) +
- ($peergrade * $WORKSHOP_FWEIGHTS[$peerweight] * $usepeergrades) +
- ($biasscaled * $WORKSHOP_FWEIGHTS[$biasweight] * $usebiasgrades) +
- ($reliabilityscaled * $WORKSHOP_FWEIGHTS[$reliabilityweight] * $usereliabilitygrades) +
- ($gradingscaled * $WORKSHOP_FWEIGHTS[$gradingweight] * $usegradinggrades) + 0.5) /
- (($WORKSHOP_FWEIGHTS[$teacherweight] * $useteachersgrades) +
- ($WORKSHOP_FWEIGHTS[$peerweight] * $usepeergrades) +
- ($WORKSHOP_FWEIGHTS[$biasweight] * $usebiasgrades) +
- ($WORKSHOP_FWEIGHTS[$reliabilityweight] * $usereliabilitygrades) +
- ($WORKSHOP_FWEIGHTS[$gradingweight] * $usegradinggrades)));
- echo "<TR><TD>".fullname($user)."</TD>";
- if ($useteachersgrades) {
- echo "<TD>$teachergrade</TD>";
- }
- if ($usepeergrades) {
- echo "<TD>$peergrade</TD>";
- }
- if ($usebiasgrades) {
- echo "<TD>$biasscaled</TD>";
- }
- if ($usereliabilitygrades) {
- echo "<TD>$reliabilityscaled</TD>";
- }
- if ($usegradinggrades) {
- echo "<TD>$gradingscaled</TD>";
- }
- echo "<TD>$finalgrade</TD></TR>\n";
-
- // save the grades
- set_field("workshop_submissions", "biasgrade", $biasscaled, "id", $bestsubmission->id);
- set_field("workshop_submissions", "reliabilitygrade", $reliabilityscaled, "id", $bestsubmission->id);
- set_field("workshop_submissions", "gradinggrade", $gradingscaled, "id", $bestsubmission->id);
- set_field("workshop_submissions", "finalgrade", $finalgrade, "id", $bestsubmission->id);
- }
- echo "</TABLE><BR CLEAR=ALL>\n";
- print_string("allgradeshaveamaximumof", "workshop", $workshop->grade);
- echo "</CENTER><BR>\n";
-
- print_continue("view.php?a=$workshop->id");
- }
-
-
- /*************** display final grades (by teacher) ***************************/
- elseif ($action == 'displayfinalgrades') {
- // Get all the students
- if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) {
- print_heading(get_string("nostudentsyet"));
- print_footer($course);
- exit;
- }
-
- // get the final weights from the database
- $teacherweight = get_field("workshop","teacherweight", "id", $workshop->id);
- $peerweight = get_field("workshop","peerweight", "id", $workshop->id);
- $includeteachersgrade = get_field("workshop","includeteachersgrade", "id", $workshop->id);
- $biasweight = get_field("workshop","biasweight", "id", $workshop->id);
- $reliabilityweight = get_field("workshop","reliabilityweight", "id", $workshop->id);
- $gradingweight = get_field("workshop","gradingweight", "id", $workshop->id);
- // work out what to show in the final grades tables and what to include in the calculation of the final grade
- // teacher grades?
- if ($workshop->gradingstrategy and $teacherweight) {
- $useteachersgrades = 1;
- }
- else {
- $useteachersgrades = 0;
- }
- // peergrades?
- if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) {
- $usepeergrades = 1;
- }
- else {
- $usepeergrades = 0;
- }
- // bias grades?
- if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
- and $biasweight ) {
- $usebiasgrades = 1;
- }
- else {
- $usebiasgrades = 0;
- }
- // reliability grades?
- if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
- and $reliabilityweight ) {
- $usereliabilitygrades = 1;
- }
- else {
- $usereliabilitygrades = 0;
- }
- // grading grades?
- if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) {
- $usegradinggrades = 1;
- }
- else {
- $usegradinggrades = 0;
- }
-
- // show the final grades as stored in the tables...
- print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop");
- echo "<center><table border=\"1\" width=\"90%\"><tr>
- <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
- echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
- if ($useteachersgrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", $course->teachers)."</b></td>";
- }
- if ($usepeergrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", $course->students)."</b></td>";
- }
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>";
- if ($usebiasgrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforbias", "workshop")."</b></td>";
- }
- if ($usereliabilitygrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforreliability", "workshop")."</b></td>";
- }
- if ($usegradinggrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments", "workshop")."</b></td>";
- }
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></TR>\n";
- // now the weights
- echo "<TR><td bgcolor=\"$THEME->cellheading2\"><b>".get_string("weights", "workshop")."</b></td>";
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b> </b></td>\n";
- if ($useteachersgrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$teacherweight]</b></td>\n";
- }
- if ($usepeergrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$peerweight]</b></td>\n";
- }
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b> </b></td>\n";
- if ($usebiasgrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$biasweight]</b></td>\n";
- }
- if ($usereliabilitygrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$reliabilityweight]</b></td>\n";
- }
- if ($usegradinggrades) {
- echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$gradingweight]</b></td>\n";
- }
- echo "<td bgcolor=\"$THEME->cellheading2\"><b> </b></td></tr>\n";
- foreach ($users as $user) {
- if ($submissions = workshop_get_user_submissions($workshop, $user)) {
- foreach ($submissions as $submission) {
- echo "<tr><td>".fullname($user)."</td>";
- echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
- if ($useteachersgrades) {
- echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "teacher")."</td>";
- }
- if ($usepeergrades) {
- echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "student")."</td>";
- }
- echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>";
- if ($usebiasgrades) {
- echo "<td align=\"center\">$submission->biasgrade</td>";
- }
- if ($usereliabilitygrades) {
- echo "<td align=\"center\">$submission->reliabilitygrade</td>";
- }
- if ($usegradinggrades) {
- echo "<td align=\"center\">$submission->gradinggrade</td>";
- }
- echo "<td align=\"center\">$submission->finalgrade</td></tr>\n";
- }
- }
- }
- echo "</table><br clear=\"all\">\n";
- if ($workshop->showleaguetable) {
- workshop_print_league_table($workshop);
- if ($workshop->anonymous) {
- echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n";
- }
- }
- echo "<p>".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade)."</p>\n";
- print_continue("view.php?a=$workshop->id");
- }
-
-
- /*************** display final weights (by teacher) ***************************/
- elseif ($action == 'displayfinalweights') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- if ($workshop->phase != 5) { // is this at the expected phase?
- print_heading(get_string("assignmentnotinthecorrectphase", "workshop"));
- print_continue("view.php?a=$workshop->id");
- }
- else {
-
- ?>
- <form name="weightsform" method="post" action="submissions.php">
- <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
- <input type="hidden" name="action" value="calculatefinalgrades">
- <CENTER>
- <?PHP
-
- // get the final weights from the database
- $teacherweight = get_field("workshop","teacherweight", "id", $workshop->id);
- $peerweight = get_field("workshop","peerweight", "id", $workshop->id);
- $includeteachersgrade = get_field("workshop","includeteachersgrade", "id", $workshop->id);
- $biasweight = get_field("workshop","biasweight", "id", $workshop->id);
- $reliabilityweight = get_field("workshop","reliabilityweight", "id", $workshop->id);
- $gradingweight = get_field("workshop","gradingweight", "id", $workshop->id);
-
- // now show the weights used in the final grades
- print_heading_with_help(get_string("calculationoffinalgrades", "workshop"), "calculatingfinalgrade", "workshop");
- echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
- echo "<TR><td COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>".
- get_string("weightsusedforfinalgrade", "workshop")."</B></CENTER></TD></TR>\n";
- echo "<tr><td align=\"right\">".get_string("weightforteacherassessments", "workshop", $course->teacher).":</td>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "teacherweight", $teacherweight, "");
- echo "</TD></TR>\n";
- echo "<TR><TD ALIGN=\"right\">".get_string("weightforpeerassessments", "workshop").":</TD>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "peerweight", $peerweight, "");
- echo "</TD></TR>\n";
- echo "<TR><TD ALIGN=\"right\">".get_string("weightforbias", "workshop").":</TD>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "biasweight", $biasweight, "");
- echo "</TD></TR>\n";
- echo "<TR><TD ALIGN=\"right\">".get_string("weightforreliability", "workshop").":</TD>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "reliabilityweight", $reliabilityweight, "");
- echo "</TD></TR>\n";
- echo "<TR><TD ALIGN=\"right\">".get_string("weightforgradingofassessments", "workshop").":</TD>\n";
- echo "<TD>";
- workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "gradingweight", $gradingweight, "");
- echo "</TD></TR>\n";
- echo "<TR><TD COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>".
- get_string("optionforpeergrade", "workshop")."</B></CENTER></TD></TR>\n";
- echo "<TR><TD ALIGN=\"right\">".get_string("includeteachersgrade", "workshop").":</TD>\n";
- echo "<TD>";
- $options[0] = get_string("no"); $options[1] = get_string("yes");
- choose_from_menu($options, "includeteachersgrade", $includeteachersgrade, "");
- helpbutton("includeteachersgrade", get_string("includeteachersgrade", "workshop"), "workshop");
- echo "</TD></TR>\n";
- echo "</TABLE>\n";
-
- print_heading_with_help(get_string("leaguetable", "workshop"), "leaguetable", "workshop");
- echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
- echo "<tr><td align=\"right\">".get_string("numberofentries", "workshop").":</td>\n";
- echo "<TD>";
- $numbers[22] = 'All';
- $numbers[21] = 50;
- for ($i=20; $i>=0; $i--) {
- $numbers[$i] = $i;
- }
- $nentries = $workshop->showleaguetable;
- if ($nentries == 99) {
- $nentries = 'All';
- }
- choose_from_menu($numbers, "nentries", "$nentries", "");
- echo "</td></tr>\n";
- echo "<tr><td align=right><p>".get_string("hidenamesfromstudents", "workshop", $course->students)."</p></td><td>\n";
- $options[0] = get_string("no"); $options[1] = get_string("yes");
- choose_from_menu($options, "anonymous", $workshop->anonymous, "");
- echo "</td></tr>\n";
- echo "</table><br />\n";
- echo "<INPUT TYPE=submit VALUE=\"".get_string("calculationoffinalgrades", "workshop")."\">\n";
- echo "</CENTER>";
- echo "</FORM>\n";
- }
- }
-
-
- /******************* list all submissions ************************************/
- elseif ($action == 'listallsubmissions' ) {
- if (!$users = get_course_students($course->id)) {
- print_heading(get_string("nostudentsyet"));
- print_footer($course);
- exit;
- }
- print_heading(get_string("listofallsubmissions", "workshop").":", "CENTER");
- workshop_list_all_submissions($workshop, $USER);
- print_continue("view.php?id=$cm->id");
-
- }
-
-
- /******************* list for assessment student (submissions) ************************************/
- elseif ($action == 'listforassessmentstudent' ) {
- if (!$users = get_course_students($course->id)) {
- print_heading(get_string("nostudentsyet"));
- print_footer($course);
- exit;
- }
- workshop_list_unassessed_student_submissions($workshop, $USER);
- print_continue("view.php?id=$cm->id");
-
- }
-
-
- /******************* list for assessment teacher (submissions) ************************************/
- elseif ($action == 'listforassessmentteacher' ) {
- if (!$users = get_course_students($course->id)) {
- print_heading(get_string("nostudentsyet"));
- print_footer($course);
- exit;
- }
- workshop_list_unassessed_teacher_submissions($workshop, $USER);
- print_continue("view.php?id=$cm->id");
-
- }
-
-
- /******************* save analysis options (for teachers only) ************************************/
- elseif ($action == 'saveanalysisoptions' ) {
-
+ // skip if student not in group
+ if ($groupid) {
+ if (!ismember($groupid, $user->id)) {
+ continue;
+ }
+ }
+ if ($submissions = workshop_get_user_submissions($workshop, $user)) {
+ $gradinggrade = workshop_gradinggrade($workshop, $user);
+ foreach ($submissions as $submission) {
+ $grade = workshop_submission_grade($workshop, $submission);
+ echo "<tr><td>$user->firstname $user->lastname</td>";
+ echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
+ echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>";
+ echo "<td align=\"center\">$gradinggrade</td>";
+ echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission,
+ "teacher")."</td>";
+ echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission,
+ "student")."</td>";
+ echo "<td align=\"center\">$grade</td>";
+ echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></tr>\n";
+ }
+ }
+ }
+ echo "</table><br clear=\"all\">\n";
+ workshop_print_key($workshop);
+ if ($workshop->showleaguetable) {
+ workshop_print_league_table($workshop);
+ if ($workshop->anonymous) {
+ echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n";
+ }
+ }
+ echo "<p>".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade)."</p>\n";
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /******************* list all submissions ************************************/
+ elseif ($action == 'listallsubmissions' ) {
+ if (!$users = get_course_students($course->id)) {
+ print_heading(get_string("nostudentsyet"));
+ print_footer($course);
+ exit;
+ }
+ print_heading(get_string("listofallsubmissions", "workshop").":", "CENTER");
+ workshop_list_all_submissions($workshop, $USER);
+ print_continue("view.php?id=$cm->id");
+
+ }
+
+
+ /******************* list for assessment student (submissions) ************************************/
+ elseif ($action == 'listforassessmentstudent' ) {
+ if (!$users = get_course_students($course->id)) {
+ print_heading(get_string("nostudentsyet"));
+ print_footer($course);
+ exit;
+ }
+ workshop_list_unassessed_student_submissions($workshop, $USER);
+ print_continue("view.php?id=$cm->id");
+
+ }
+
+
+ /******************* list for assessment teacher (submissions) ************************************/
+ elseif ($action == 'listforassessmentteacher' ) {
+
if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ error("Only teachers can look at this page");
+ }
- set_field("workshop", "teacherloading", $_POST['teacherloading'], "id", "$workshop->id");
- set_field("workshop", "gradingweight", $_POST['gradingweight'], "id", "$workshop->id");
- set_field("workshop", "assessmentstodrop", $_POST['assessmentstodrop'], "id", "$workshop->id");
- redirect("submissions.php?id=$cm->id&action=analysisofassessments",
- get_string("savedok", "workshop"));
-
- }
-
+ workshop_list_unassessed_teacher_submissions($workshop, $USER);
+ print_continue("view.php?id=$cm->id");
+
+ }
+
/*************** update (league table options teacher) ***************************/
elseif ($action == 'updateleaguetable') {
}
- /*************** update over allocation (by teacher) ***************************/
- elseif ($action == 'updateoverallocation') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $form = (object)$_POST;
-
- set_field("workshop", "overallocation", $form->overallocation, "id", $workshop->id);
- echo "<p align=\"center\"><b>".get_string("overallocation", "workshop").": $form->overallocation</b></p>\n";
- add_to_log($course->id, "workshop", "over allocation", "view.php?id=$cm->id", $form->overallocation,$cm->id);
-
- redirect("submissions.php?action=adminlist&id=$cm->id");
- }
-
-
/******************* user confirm delete ************************************/
elseif ($action == 'userconfirmdelete' ) {
if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect");
}
-
if (! $course = get_record("course", "id", $cm->course)) {
error("Course is misconfigured");
}
-
if (! $workshop = get_record("workshop", "id", $cm->instance)) {
error("Course module is incorrect");
}
else {
notify(get_string("uploadnofilefound", "assignment"));
}
- }
- print_continue("view.php?a=$workshop->id");
+ }
+ print_continue("view.php?id=$cm->id");
print_footer($course);
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
-$module->version = 2004060400;
+$module->version = 2004081100;
$module->requires = 2004052505; // Requires this Moodle version
$module->cron = 60;
require("../../config.php");
require("lib.php");
require("locallib.php");
-
- optional_variable($id); // Course Module ID
- optional_variable($a); // workshop ID
+
+ require_variable($id); // Course Module ID
// get some useful stuff...
- if ($id) {
- if (! $cm = get_record("course_modules", "id", $id)) {
- error("Course Module ID was incorrect");
- }
-
- if (! $course = get_record("course", "id", $cm->course)) {
- error("Course is misconfigured");
- }
-
- if (! $workshop = get_record("workshop", "id", $cm->instance)) {
- error("Course module is incorrect");
- }
-
- } else {
- if (! $workshop = get_record("workshop", "id", $a)) {
- error("Course module is 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 (! $cm = get_record("course_modules", "id", $id)) {
+ error("Course Module ID was incorrect");
+ }
+ if (! $course = get_record("course", "id", $cm->course)) {
+ error("Course is misconfigured");
+ }
+ if (! $workshop = get_record("workshop", "id", $cm->instance)) {
+ error("Course module is incorrect");
}
require_login($course->id);
optional_variable($action);
if (isteacher($course->id)) {
- if (empty($action)) { // no action specified, either go straight to elements page else the admin page
- // has the assignment any elements
- if (count_records("workshop_elements", "workshopid", $workshop->id) >= $workshop->nelements) {
- $action = "teachersview";
- }
- else {
- redirect("assessments.php?action=editelements&id=$cm->id");
- }
- }
- }
- elseif (!isguest()) { // it's a student then
- if (!$cm->visible) {
- notice(get_string("activityiscurrentlyhidden"));
- }
- switch ($workshop->phase) {
- case 0 :
- case 1 : $action = 'notavailable'; break;
- case 2 :
- case 3 :
- case 4 : $action = 'studentsview'; break;
- case 5 : $action = 'notavailable'; break;
- case 6 : $action = 'displayfinalgrade';
- }
- }
- else { // it's a guest, oh no!
- $action = 'notavailable';
- }
-
-
- /************** allow (peer) assessments only (move to phase 4) (for teachers)**/
- if ($action == 'allowassessments') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- // move to phase 4
- set_field("workshop", "phase", 4, "id", "$workshop->id");
- add_to_log($course->id, "workshop", "assessments only", "view.php?id=$cm->id", "$workshop->id", $cm->id);
- redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 4));
- }
-
-
- /************** allow both (submissions and assessments) (move to phase 3) (for teachers)**/
- if ($action == 'allowboth') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- // move to phase 3
- set_field("workshop", "phase", 3, "id", "$workshop->id");
- add_to_log($course->id, "workshop", "allow both", "view.php?id=$cm->id", "$workshop->id", $cm->id);
- redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 3));
- }
-
-
- /************** allow submissions only (move to phase 2) (for teachers)**/
- if ($action == 'allowsubmissions') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ if (empty($action)) { // no action specified, either go straight to elements page else the admin page
+ // has the assignment any elements
+ if (count_records("workshop_elements", "workshopid", $workshop->id) >= $workshop->nelements) {
+ $action = "teachersview";
+ }
+ else {
+ redirect("assessments.php?action=editelements&id=$cm->id");
+ }
+ }
+ }
+ elseif (!isguest()) { // it's a student then
+ if (!$cm->visible) {
+ notice(get_string("activityiscurrentlyhidden"));
+ }
+ switch ($workshop->phase) {
+ case 0 :
+ case 1 : $action = 'notavailable'; break;
+ case 2 :
+ case 3 :
+ case 4 : $action = 'studentsview'; break;
+ case 5 : $action = 'displayfinalgrade';
+ }
+ }
+ else { // it's a guest, oh no!
+ $action = 'notavailable';
+ }
+
+
+ /************** allow (peer) assessments only (move to phase 4) (for teachers)**/
+ if ($action == 'allowassessments') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ // move to phase 4
+ set_field("workshop", "phase", 4, "id", "$workshop->id");
+ add_to_log($course->id, "workshop", "assessments only", "view.php?id=$cm->id", "$workshop->id", $cm->id);
+ redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 4));
+ }
+
+
+ /************** allow both (submissions and assessments) (move to phase 3) (for teachers)**/
+ if ($action == 'allowboth') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ // move to phase 3
+ set_field("workshop", "phase", 3, "id", "$workshop->id");
+ add_to_log($course->id, "workshop", "allow both", "view.php?id=$cm->id", "$workshop->id", $cm->id);
+ redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 3));
+ }
+
+
+ /************** allow submissions only (move to phase 2) (for teachers)**/
+ if ($action == 'allowsubmissions') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
// move to phase 2, check that teacher has made enough submissions
if (workshop_count_teacher_submissions($workshop) < $workshop->ntassessments) {
redirect("view.php?id=$cm->id", get_string("notenoughexamplessubmitted", "workshop",
$course->teacher));
- }
- else {
+ }
+ else {
+ if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) {
+ notify(get_string("teachersubmissionsforassessment", "workshop", $n));
+ }
set_field("workshop", "phase", 2, "id", "$workshop->id");
- add_to_log($course->id, "workshop", "submissions", "view.php?id=$cm->id", "$workshop->id", $cm->id);
- redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 2));
- }
- }
-
-
- /****************** close workshop for student assessments/submissions (move to phase 5) (for teachers)**/
- elseif ($action == 'closeworkshop') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- // move to phase 5
- set_field("workshop", "phase", 5, "id", "$workshop->id");
- add_to_log($course->id, "workshop", "close", "view.php?id=$cm->id", "$workshop->id", $cm->id);
- redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 5));
- }
-
-
- /****************** display final grade (for students) ************************************/
- elseif ($action == 'displayfinalgrade' ) {
-
- // get the final weights from the database
- $teacherweight = get_field("workshop","teacherweight", "id", $workshop->id);
- $peerweight = get_field("workshop","peerweight", "id", $workshop->id);
- $includeteachersgrade = get_field("workshop","includeteachersgrade", "id", $workshop->id);
- $biasweight = get_field("workshop","biasweight", "id", $workshop->id);
- $reliabilityweight = get_field("workshop","reliabilityweight", "id", $workshop->id);
- $gradingweight = get_field("workshop","gradingweight", "id", $workshop->id);
- // work out what to show in the final grades tables and what to include in the calculation of the final grade
- // teacher grades?
- if ($workshop->gradingstrategy and $teacherweight) {
- $useteachersgrades = 1;
- }
- else {
- $useteachersgrades = 0;
- }
- // peergrades?
- if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) {
- $usepeergrades = 1;
- }
- else {
- $usepeergrades = 0;
- }
- // bias grades?
- if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and $biasweight ) {
- $usebiasgrades = 1;
- }
- else {
- $usebiasgrades = 0;
- }
- // reliability grades?
- if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and $reliabilityweight ) {
- $usereliabilitygrades = 1;
- }
- else {
- $usereliabilitygrades = 0;
- }
- // grading grades?
- if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) {
- $usegradinggrades = 1;
- }
- else {
- $usegradinggrades = 0;
- }
-
- // show the final grades as stored in the tables...
- print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop");
- if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // any submissions from user?
- echo "<center><table border=\"1\" width=\"90%\"><tr>";
- echo "<td><b>".get_string("submissions", "workshop")."</b></td>";
- if ($useteachersgrades) {
- echo "<td align=\"center\"><b>".get_string("teacherassessments", "workshop",
+ add_to_log($course->id, "workshop", "submissions", "view.php?id=$cm->id", "$workshop->id", $cm->id);
+ redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 2));
+ }
+ }
+
+
+ /****************** display final grade (for students) ************************************/
+ elseif ($action == 'displayfinalgrade' ) {
+
+
+ // show the final grades as stored in the tables...
+ print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop");
+ if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // any submissions from user?
+ echo "<center><table border=\"1\" width=\"90%\"><tr>";
+ echo "<td><b>".get_string("submissions", "workshop")."</b></td>";
+ echo "<td align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>";
+ echo "<td align=\"center\"><b>".get_string("gradeforassessments", "workshop")."</b></td>";
+ echo "<td align=\"center\"><b>".get_string("teacherassessments", "workshop",
$course->teacher)."</b></td>";
- }
- if ($usepeergrades) {
- echo "<td align=\"center\"><b>".get_string("studentassessments", "workshop",
+ echo "<td align=\"center\"><b>".get_string("studentassessments", "workshop",
$course->student)."</b></td>";
- }
- echo "<td align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>";
- if ($usebiasgrades) {
- echo "<td align=\"center\"><b>".get_string("gradeforbias", "workshop")."</b></td>";
- }
- if ($usereliabilitygrades) {
- echo "<td align=\"center\"><b>".get_string("gradeforreliability", "workshop")."</b></td>";
- }
- if ($usegradinggrades) {
- echo "<td align=\"center\"><b>".get_string("gradeforassessments", "workshop")."</b></td>";
- }
+ echo "<td align=\"center\"><b>".get_string("gradeforsubmission", "workshop")."</b></td>";
echo "<td align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></TR>\n";
- // now the weights
- echo "<TR><td><b>".get_string("weights", "workshop")."</b></td>";
- if ($useteachersgrades) {
- echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$teacherweight]</b></td>\n";
- }
- if ($usepeergrades) {
- echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$peerweight]</b></td>\n";
- }
- echo "<td><b> </b></td>\n";
- if ($usebiasgrades) {
- echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$biasweight]</b></td>\n";
- }
- if ($usereliabilitygrades) {
- echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$reliabilityweight]</b></td>\n";
- }
- if ($usegradinggrades) {
- echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$gradingweight]</b></td>\n";
- }
- echo "<td><b> </b></td></TR>\n";
+ $gradinggrade = workshop_gradinggrade($workshop, $USER);
foreach ($submissions as $submission) {
+ $grade = workshop_submission_grade($workshop, $submission);
echo "<TR><td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
- if ($useteachersgrades) {
- echo "<td align=\"center\">".workshop_print_submission_assessments($workshop,
+ echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $USER)."</td>";
+ echo "<td align=\"center\">$gradinggrade</td>";
+ echo "<td align=\"center\">".workshop_print_submission_assessments($workshop,
$submission, "teacher")."</td>";
- }
- if ($usepeergrades) {
- echo "<td align=\"center\">".workshop_print_submission_assessments($workshop,
+ echo "<td align=\"center\">".workshop_print_submission_assessments($workshop,
$submission, "student")."</td>";
- }
- echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $USER)."</td>";
- if ($usebiasgrades) {
- echo "<td align=\"center\">$submission->biasgrade</td>";
- }
- if ($usereliabilitygrades) {
- echo "<td align=\"center\">$submission->reliabilitygrade</td>";
- }
- if ($usegradinggrades) {
- echo "<td align=\"center\">$submission->gradinggrade</td>";
- }
- echo "<td align=\"center\">$submission->finalgrade</td></TR>\n";
+ echo "<td align=\"center\">$grade</td>";
+ echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></TR>\n";
}
}
echo "</TABLE><BR CLEAR=ALL>\n";
- echo "<p>< > ".get_string("assessmentdropped", "workshop")."</p>\n";
+ workshop_print_key($workshop);
if ($workshop->showleaguetable) {
- workshop_print_league_table($workshop);
- }
- echo "<br />".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade);
- }
-
-
- /****************** make final grades available (go to phase 6) (for teachers only)********/
- elseif ($action == 'makefinalgradesavailable') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- set_field("workshop", "phase", 6, "id", "$workshop->id");
- add_to_log($course->id, "workshop", "display grades", "view.php?id=$cm->id", "$workshop->id", $cm->id);
- redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 6));
- }
-
-
- /****************** assignment not available (for students)***********************/
- elseif ($action == 'notavailable') {
- print_heading(get_string("notavailable", "workshop"));
- }
-
-
- /****************** set up assignment (move back to phase 1) (for teachers)***********************/
- elseif ($action == 'setupassignment') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- set_field("workshop", "phase", 1, "id", "$workshop->id");
- add_to_log($course->id, "workshop", "set up", "view.php?id=$cm->id", "$workshop->id", $cm->id);
- redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 1));
- }
-
-
- /****************** student's view could be in 1 of 4 stages ***********************/
- elseif ($action == 'studentsview') {
- workshop_print_assignment_info($workshop);
- // in Stage 1? - are there any teacher's submissions? and...
- // ...has student assessed the required number of the teacher's submissions
- if ($workshop->ntassessments and (!workshop_test_user_assessments($workshop, $USER))) {
- print_heading(get_string("pleaseassesstheseexamplesfromtheteacher", "workshop",
+ workshop_print_league_table($workshop);
+ }
+ }
+
+
+ /****************** make final grades available (go to phase 5) (for teachers only)********/
+ elseif ($action == 'makefinalgradesavailable') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ set_field("workshop", "phase", 5, "id", "$workshop->id");
+ add_to_log($course->id, "workshop", "display grades", "view.php?id=$cm->id", "$workshop->id", $cm->id);
+ redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 5));
+ }
+
+
+ /****************** assignment not available (for students)***********************/
+ elseif ($action == 'notavailable') {
+ print_heading(get_string("notavailable", "workshop"));
+ }
+
+
+ /****************** set up assignment (move back to phase 1) (for teachers)***********************/
+ elseif ($action == 'setupassignment') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ set_field("workshop", "phase", 1, "id", "$workshop->id");
+ add_to_log($course->id, "workshop", "set up", "view.php?id=$cm->id", "$workshop->id", $cm->id);
+ redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 1));
+ }
+
+
+ /****************** student's view could be in 1 of 4 stages ***********************/
+ elseif ($action == 'studentsview') {
+ workshop_print_assignment_info($workshop);
+ // in Stage 1? - are there any teacher's submissions? and...
+ // ...has student assessed the required number of the teacher's submissions
+ if ($workshop->ntassessments and (!workshop_test_user_assessments($workshop, $USER))) {
+ print_heading(get_string("pleaseassesstheseexamplesfromtheteacher", "workshop",
$course->teacher));
workshop_list_teacher_submissions($workshop, $USER);
}
}
// in stage 3? - grade other student's submissions, resubmit and list all submissions
else {
- // list any assessments by teachers
- if (workshop_count_teacher_assessments($workshop, $USER)) {
- print_heading(get_string("assessmentsby", "workshop", $course->teachers));
- workshop_list_teacher_assessments($workshop, $USER);
- }
// is self assessment used in this workshop?
if ($workshop->includeself) {
// prints a table if there are any submissions which have not been self assessed yet
print_heading(get_string("yourassessments", "workshop"));
workshop_list_assessed_submissions($workshop, $USER);
}
+ // list any assessments by teachers
+ if (workshop_count_teacher_assessments($workshop, $USER)) {
+ print_heading(get_string("assessmentsby", "workshop", $course->teachers));
+ workshop_list_teacher_assessments($workshop, $USER);
+ }
// ... and show peer assessments
if (workshop_count_peer_assessments($workshop, $USER)) {
print_heading(get_string("assessmentsby", "workshop", $course->students));
echo "<hr size=\"1\" noshade>";
}
}
- }
- // allow user to list their submissions and assessments in a general way????
- // print_heading("<A HREF=\"submissions.php?action=listallsubmissions&id=$cm->id\">".
- // get_string("listofallsubmissions", "workshop"));
- }
- }
- }
-
-
- /****************** submission of assignment by teacher only***********************/
- elseif ($action == 'submitassignment') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $strdifference = format_time($workshop->deadline - time());
- if (($workshop->deadline - time()) < 0) {
- $strdifference = "<FONT COLOR=RED>$strdifference</FONT>";
- }
- $strduedate = userdate($workshop->deadline)." ($strdifference)";
-
- workshop_print_assignment_info($workshop);
+ }
+ // allow user to list their submissions and assessments in a general way????
+ // print_heading("<A HREF=\"submissions.php?action=listallsubmissions&id=$cm->id\">".
+ // get_string("listofallsubmissions", "workshop"));
+ }
+ }
+ }
+
+
+ /****************** submission of assignment by teacher only***********************/
+ elseif ($action == 'submitassignment') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $strdifference = format_time($workshop->deadline - time());
+ if (($workshop->deadline - time()) < 0) {
+ $strdifference = "<FONT COLOR=RED>$strdifference</FONT>";
+ }
+ $strduedate = userdate($workshop->deadline)." ($strdifference)";
+
+ workshop_print_assignment_info($workshop);
+
+ // list previous submissions from teacher
+ workshop_list_user_submissions($workshop, $USER);
+
+ echo "<HR SIZE=1 NOSHADE>";
+
+ // print upload form
+ print_heading(get_string("submitassignment", "assignment").":");
+ workshop_print_upload_form($workshop);
+ }
+
+
+ /****************** teacher's view - display admin page (current phase options) ************/
+ elseif ($action == 'teachersview') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ /// Check to see if groups are being used in this workshop
+ /// and if so, set $currentgroup to reflect the current group
+ $changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested?
+ $groupmode = groupmode($course, $cm); // Groups are being used?
+ $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup);
- // list previous submissions from teacher
- workshop_list_user_submissions($workshop, $USER);
-
- echo "<HR SIZE=1 NOSHADE>";
-
- // print upload form
- print_heading(get_string("submitassignment", "assignment").":");
- workshop_print_upload_form($workshop);
- }
-
-
- /****************** teacher's view - display admin page (current phase options) ************/
- elseif ($action == 'teachersview') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
+ /// Allow the teacher to change groups (for this session)
+ if ($groupmode) {
+ if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) {
+ print_group_menu($groups, $groupmode, $currentgroup, "view.php?id=$cm->id");
+ }
}
-
- print_heading_with_help(get_string("managingassignment", "workshop"), "managing", "workshop");
-
- workshop_print_assignment_info($workshop);
-
- $tabs->names = array("1. ".get_string("phase1", "workshop"),
+
+ print_heading_with_help(get_string("managingassignment", "workshop"), "managing2", "workshop");
+
+ workshop_print_assignment_info($workshop);
+
+ $tabs->names = array("1. ".get_string("phase1", "workshop"),
"2. ".get_string("phase2", "workshop", $course->student),
"3. ".get_string("phase3", "workshop", $course->student),
"4. ".get_string("phase4", "workshop", $course->student),
- "5. ".get_string("phase5", "workshop"),
- "6. ".get_string("phase6", "workshop"));
+ "5. ".get_string("phase5", "workshop"));
$tabs->urls = array("view.php?id=$cm->id&action=setupassignment",
"view.php?id=$cm->id&action=allowsubmissions",
"view.php?id=$cm->id&action=allowboth",
"view.php?id=$cm->id&action=allowassessments",
- "view.php?id=$cm->id&action=closeworkshop",
"view.php?id=$cm->id&action=makefinalgradesavailable");
if ($workshop->phase) { // phase 1 or more
$tabs->highlight = $workshop->phase - 1;
case 2: // submissions and assessments
case 3:
case 4:
- if ($workshop->ntassessments) { // if teacher example show student assessments link
- echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedteachersubmissions\">".
- get_string("ungradedassessmentsofteachersubmissions", "workshop",
- workshop_count_ungraded_assessments_teacher($workshop))."</a></b> \n";
- helpbutton("ungradedassessments_teacher",
- get_string("ungradedassessmentsofteachersubmissions", "workshop"), "workshop");
- }
- echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedstudentsubmissions\">".
- get_string("ungradedassessmentsofstudentsubmissions", "workshop",
- workshop_count_ungraded_assessments_student($workshop))."</a></b> \n";
- helpbutton("ungradedassessments_student",
- get_string("ungradedassessmentsofstudentsubmissions", "workshop"), "workshop");
+ if ($workshop->ntassessments) { // if teacher examples show student assessments link
+ if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) {
+ echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentteacher\">".
+ get_string("teachersubmissionsforassessment", "workshop", $n)."</a></b> \n";
+ helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment",
+ "workshop"), "workshop");
+ }
+ }
+ echo "<p><b><a href=\"assessments.php?id=$cm->id&action=gradeallassessments\">".
+ get_string("ungradedassessments", "workshop",
+ workshop_count_ungraded_assessments($workshop))."</a></b> \n";
+ helpbutton("ungradedassessments",
+ get_string("ungradedassessments", "workshop"), "workshop");
echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">".
get_string("studentsubmissionsforassessment", "workshop",
workshop_count_student_submissions_for_assessment($workshop, $USER))."</a></b> \n";
get_string("studentsubmissionsforassessment", "workshop"), "workshop");
break;
- case 5: // calculate final grades
- if ($workshop->ntassessments) { // if teacher example show student assessments link
- echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedteachersubmissions\">".
- get_string("ungradedassessmentsofteachersubmissions", "workshop",
- workshop_count_ungraded_assessments_teacher($workshop))."</a></b> \n";
- helpbutton("ungradedassessments_teacher",
- get_string("ungradedassessmentsofteachersubmissions", "workshop"), "workshop");
- }
- echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedstudentsubmissions\">".
- get_string("ungradedassessmentsofstudentsubmissions", "workshop",
- workshop_count_ungraded_assessments_student($workshop))."</a></b> \n";
- helpbutton("ungradedassessments_student",
- get_string("ungradedassessmentsofstudentsubmissions", "workshop"), "workshop");
+ case 5: // Show "Final" Grades
+ if ($workshop->ntassessments) { // if teacher examples show student assessments link
+ if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) {
+ echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentteacher\">".
+ get_string("teachersubmissionsforassessment", "workshop", $n)."</a></b> \n";
+ helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment",
+ "workshop"), "workshop");
+ }
+ }
+ echo "<p><b><a href=\"assessments.php?id=$cm->id&action=gradeallassessments\">".
+ get_string("ungradedassessments", "workshop",
+ workshop_count_ungraded_assessments($workshop))."</a></b> \n";
+ helpbutton("ungradedassessments", get_string("ungradedassessments", "workshop"), "workshop");
echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">".
get_string("studentsubmissionsforassessment", "workshop",
workshop_count_student_submissions_for_assessment($workshop, $USER))."</a></b> \n";
helpbutton("gradingsubmissions",
get_string("studentsubmissionsforassessment", "workshop"), "workshop");
- print_heading("<a href=\"submissions.php?id=$cm->id&action=displayfinalweights\">".
- get_string("calculationoffinalgrades", "workshop")."</a>");
- print_heading("<a href=\"submissions.php?id=$cm->id&action=analysisofassessments\">".
- get_string("analysisofassessments", "workshop")."</a>");
- break;
-
- case 6: // show final grades
print_heading("<A HREF=\"submissions.php?id=$cm->id&action=displayfinalgrades\">".
get_string("displayoffinalgrades", "workshop")."</A>");
}