print_user_picture($chatuser->id, 0, $chatuser->picture, false, false, false);
echo "</a></td><td valign=center>";
echo "<p><font size=1>";
- echo "$chatuser->firstname $chatuser->lastname<br />";
+ echo fullname($chatuser).'<br />';
echo "<font color=\"#888888\">$stridle: ".format_time($lastping, $str)."</font>";
echo "</font></p>";
echo "<td></tr>";
$strdialogue = get_string("modulename", "dialogue");
unset($dialogueinfo);
- $dialogueinfo->userfrom = "$userfrom->firstname $userfrom->lastname";
+ $dialogueinfo->userfrom = fullname($userfrom);
$dialogueinfo->dialogue = "$dialogue->name";
$dialogueinfo->url = "$CFG->wwwroot/mod/dialogue/view.php?id=$cm->id";
//Obtain the visible property from the instance
if (instance_is_visible("dialogue",$tempmod)) {
$date = userdate($log->time, $strftimerecent);
- echo "<p><font size=1>$date - $log->firstname $log->lastname<br />";
+ echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />';
echo "\"<a href=\"$CFG->wwwroot/mod/dialogue/$log->url\">";
echo "$log->name";
echo "</a>\"</font></p>";
//Obtain the visible property from the instance
if (instance_is_visible("dialogue",$tempmod)) {
$date = userdate($log->time, $strftimerecent);
- echo "<p><font size=1>$date - $log->firstname $log->lastname<br />";
+ echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />';
echo "\"<a href=\"$CFG->wwwroot/mod/dialogue/$log->url\">";
echo "$log->name";
echo "</a>\"</font></p>";
if (instance_is_visible("dialogue",$tempmod)) {
$date = userdate($log->time, $strftimerecent);
echo "<p><font size=1>$date - ".get_string("namehascloseddialogue", "dialogue",
- "$log->firstname $log->lastname")."<br />";
+ fullname($log))."<br />";
echo "\"<a href=\"$CFG->wwwroot/mod/dialogue/$log->url\">";
echo "$log->name";
echo "</a>\"</font></p>";
} else {
$status = get_string("open", "dialogue");
}
- $table->data[] = array("$with->firstname $with->lastname", $byuser." ".
+ $table->data[] = array(fullname($with), $byuser." ".
get_string("of", "dialogue")." ".$total, userdate($conversation->timemodified), $status);
}
print_table($table);
// function requested by Williams Castillo 17 Oct 2003
global $USER;
- if ($user) {
- return count_records_select("dialogue_conversations", "(userid = $user->id OR
+ if ($user) {
+ return count_records_select("dialogue_conversations", "(userid = $user->id OR
recipientid = $user->id) AND lastid != $user->id AND closed = 0");
} else {
- return count_records_select("dialogue_conversations", "(userid = $USER->id OR
+ return count_records_select("dialogue_conversations", "(userid = $USER->id OR
recipientid = $USER->id) AND lastid != $USER->id AND closed = 0");
- }
+ }
}
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_count_closed($dialogue, $user) {
-
- return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
+
+ return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
(userid = $user->id OR recipientid = $user->id) AND closed = 1");
- }
+ }
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_count_open($dialogue, $user) {
-
- return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
+
+ return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
(userid = $user->id OR recipientid = $user->id) AND closed = 0");
}
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_count_needing_replies_other($dialogue, $user) {
-// count [conversations] needing replies [from] other [person]
- return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
+// count [conversations] needing replies [from] other [person]
+ return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
(userid = $user->id OR recipientid = $user->id) AND lastid = $user->id AND closed = 0");
}
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_count_needing_replies_self($dialogue, $user) {
// count [conversations] needing replies [from] self
-
- return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
+
+ return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
(userid = $user->id OR recipientid = $user->id) AND lastid != $user->id AND closed = 0");
}
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_get_available_students($dialogue) {
global $USER;
-
+
if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
error("Course Module ID was incorrect");
}
-
+
$groupid = get_current_group($course->id);
// add current group before list of students if it's the teacher
if (isteacher($course->id) and groupmode($course)) {
$gnames["spacer"] = "------------";
}
// get the students on this course (default sort order)...
- if ($users = get_course_students($course->id)) {
- foreach ($users as $otheruser) {
- // ...exclude self and...
- if ($USER->id != $otheruser->id) {
+ if ($users = get_course_students($course->id)) {
+ foreach ($users as $otheruser) {
+ // ...exclude self and...
+ if ($USER->id != $otheruser->id) {
// ...if teacher and groups then exclude students not in the current group
if (isteacher($course->id) and groupmode($course) and $groupid) {
if (!ismember($groupid, $otheruser->id)) {
continue;
}
}
- // ... and any already in any open conversations unless multiple conversations allowed
- if ($dialogue->multipleconversations or count_records_select("dialogue_conversations",
+ // ... and any already in any open conversations unless multiple conversations allowed
+ if ($dialogue->multipleconversations or count_records_select("dialogue_conversations",
"dialogueid = $dialogue->id AND
((userid = $USER->id AND recipientid = $otheruser->id) OR
(userid = $otheruser->id AND recipientid = $USER->id)) AND closed = 0") == 0) {
- $names[$otheruser->id] = fullname($otheruser);
- }
- }
- }
- }
+ $names[$otheruser->id] = fullname($otheruser);
+ }
+ }
+ }
+ }
if (isset($gnames)) {
$list = $gnames;
}
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_get_available_teachers($dialogue) {
global $USER;
-
+
if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
// get the teachers on this course (default sort order)...
- if ($users = get_course_teachers($course->id)) {
- // $names[0] = "-----------------------";
- foreach ($users as $otheruser) {
+ if ($users = get_course_teachers($course->id)) {
+ // $names[0] = "-----------------------";
+ foreach ($users as $otheruser) {
// ...exclude self and ...
- if ($USER->id != $otheruser->id) {
+ if ($USER->id != $otheruser->id) {
// ...any already in open conversations unless multiple conversations allowed
- if ($dialogue->multipleconversations or count_records_select("dialogue_conversations",
+ if ($dialogue->multipleconversations or count_records_select("dialogue_conversations",
"dialogueid = $dialogue->id AND ((userid = $USER->id AND
recipientid = $otheruser->id) OR (userid = $otheruser->id AND
recipientid = $USER->id)) AND closed = 0") == 0) {
- $names[$otheruser->id] = fullname($otheruser);
- }
- }
- }
- }
- if (isset($names)) {
+ $names[$otheruser->id] = fullname($otheruser);
+ }
+ }
+ }
+ }
+ if (isset($names)) {
natcasesort($names);
- return $names;
- }
- return;
+ return $names;
+ }
+ return;
}
function dialogue_list_conversations_closed($dialogue) {
// list the closed for the current user
global $USER;
-
- if (! $course = get_record("course", "id", $dialogue->course)) {
+
+ if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
error("Course Module ID was incorrect");
}
-
+
if ($conversations = dialogue_get_conversations($dialogue, $USER, "closed = 1")) {
// reorder the conversations by (other) name
foreach ($conversations as $conversation) {
- if ($USER->id != $conversation->userid) {
- if (!$with = get_record("user", "id", $conversation->userid)) {
- error("User's record not found");
- }
- }
- else {
- if (!$with = get_record("user", "id", $conversation->recipientid)) {
- error("User's record not found");
- }
- }
+ if ($USER->id != $conversation->userid) {
+ if (!$with = get_record("user", "id", $conversation->userid)) {
+ error("User's record not found");
+ }
+ }
+ else {
+ if (!$with = get_record("user", "id", $conversation->recipientid)) {
+ error("User's record not found");
+ }
+ }
$names[$conversation->id] = fullname($with);
}
natcasesort($names);
- print_simple_box_start();
- $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"),
+ print_simple_box_start();
+ $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"),
get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"),
get_string("status", "dialogue"));
- $table->width = "100%";
- $table->align = array ("left", "left", "center", "left", "left");
- $table->size = array ("*", "*", "*", "*", "*");
- $table->cellpadding = 2;
- $table->cellspacing = 0;
+ $table->width = "100%";
+ $table->align = array ("left", "left", "center", "left", "left");
+ $table->size = array ("*", "*", "*", "*", "*");
+ $table->cellpadding = 2;
+ $table->cellspacing = 0;
- foreach ($names as $cid=>$name) {
+ foreach ($names as $cid=>$name) {
if (!$conversation = get_record("dialogue_conversations", "id", $cid)) {
error("Closed conversations: could not find conversation record");
}
- $total = dialogue_count_entries($dialogue, $conversation);
- $byuser = dialogue_count_entries($dialogue, $conversation, $USER);
- if ($conversation->closed) {
- $status = get_string("closed", "dialogue");
- } else {
- $status = get_string("open", "dialogue");
- }
- $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&action=showdialogues&cid=$conversation->id\">".
- "$name</a>", $conversation->subject, $byuser." ".get_string("of", "dialogue")." ".$total,
- userdate($conversation->timemodified), $status);
- }
- print_table($table);
- print_simple_box_end();
- }
+ $total = dialogue_count_entries($dialogue, $conversation);
+ $byuser = dialogue_count_entries($dialogue, $conversation, $USER);
+ if ($conversation->closed) {
+ $status = get_string("closed", "dialogue");
+ } else {
+ $status = get_string("open", "dialogue");
+ }
+ $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&action=showdialogues&cid=$conversation->id\">".
+ "$name</a>", $conversation->subject, $byuser." ".get_string("of", "dialogue")." ".$total,
+ userdate($conversation->timemodified), $status);
+ }
+ print_table($table);
+ print_simple_box_end();
+ }
}
function dialogue_list_conversations_other($dialogue) {
// list the conversations of the current user awaiting response from the other person
global $THEME, $USER;
-
- if (!$course = get_record("course", "id", $dialogue->course)) {
+
+ if (!$course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (!$cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
error("Course Module ID was incorrect");
}
-
+
$timenow = time();
if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid = $USER->id AND closed = 0")) {
// reorder the conversations by (other) name
foreach ($conversations as $conversation) {
- if ($USER->id != $conversation->userid) {
- if (!$with = get_record("user", "id", $conversation->userid)) {
- error("User's record not found");
- }
- }
- else {
- if (!$with = get_record("user", "id", $conversation->recipientid)) {
- error("User's record not found");
- }
- }
+ if ($USER->id != $conversation->userid) {
+ if (!$with = get_record("user", "id", $conversation->userid)) {
+ error("User's record not found");
+ }
+ }
+ else {
+ if (!$with = get_record("user", "id", $conversation->recipientid)) {
+ error("User's record not found");
+ }
+ }
$names[$conversation->id] = fullname($with);
}
natcasesort($names);
- print_simple_box_start();
- $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"),
+ print_simple_box_start();
+ $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"),
get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"),
get_string("status", "dialogue"));
- $table->width = "100%";
- $table->align = array ("left", "left", "center", "left", "left");
- $table->size = array ("*", "*", "*", "*", "*");
- $table->cellpadding = 2;
- $table->cellspacing = 0;
+ $table->width = "100%";
+ $table->align = array ("left", "left", "center", "left", "left");
+ $table->size = array ("*", "*", "*", "*", "*");
+ $table->cellpadding = 2;
+ $table->cellspacing = 0;
- foreach ($names as $cid=>$name) {
+ foreach ($names as $cid=>$name) {
if (!$conversation = get_record("dialogue_conversations", "id", $cid)) {
error("Closed conversations: could not find conversation record");
}
- $total = dialogue_count_entries($dialogue, $conversation);
- $byuser = dialogue_count_entries($dialogue, $conversation, $USER);
- if ($conversation->seenon) {
- $status = get_string("seen", "dialogue", format_time($timenow - $conversation->seenon));
- } else {
- $status = get_string("notyetseen", "dialogue");
- }
- $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&action=printdialogue&cid=$conversation->id\">".
- "$name</a>", $conversation->subject, $byuser." ".get_string("of", "dialogue")." ".$total,
- userdate($conversation->timemodified), $status);
- }
- print_table($table);
- print_simple_box_end();
- }
+ $total = dialogue_count_entries($dialogue, $conversation);
+ $byuser = dialogue_count_entries($dialogue, $conversation, $USER);
+ if ($conversation->seenon) {
+ $status = get_string("seen", "dialogue", format_time($timenow - $conversation->seenon));
+ } else {
+ $status = get_string("notyetseen", "dialogue");
+ }
+ $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&action=printdialogue&cid=$conversation->id\">".
+ "$name</a>", $conversation->subject, $byuser." ".get_string("of", "dialogue")." ".$total,
+ userdate($conversation->timemodified), $status);
+ }
+ print_table($table);
+ print_simple_box_end();
+ }
}
function dialogue_list_conversations_self($dialogue) {
// list open conversations of the current user awaiting their reply
global $THEME, $USER;
-
- if (! $course = get_record("course", "id", $dialogue->course)) {
+
+ if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
// set up some general variables
$usehtmleditor = can_use_html_editor();
- $timenow = time();
- $showbutton = false;
-
- echo "<form name=\"replies\" method=\"post\" action=\"dialogues.php\">\n";
- echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\">\n";
- echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n";
- echo "<input type=\"hidden\" name=\"pane\" value=\"1\">\n";
-
- // list the conversations requiring a resonse from this user in full
- if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid != $USER->id AND closed = 0")) {
- $showbutton = true;
- print_simple_box_start("center");
- foreach ($conversations as $conversation) {
+ $timenow = time();
+ $showbutton = false;
+
+ echo "<form name=\"replies\" method=\"post\" action=\"dialogues.php\">\n";
+ echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\">\n";
+ echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n";
+ echo "<input type=\"hidden\" name=\"pane\" value=\"1\">\n";
+
+ // list the conversations requiring a resonse from this user in full
+ if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid != $USER->id AND closed = 0")) {
+ $showbutton = true;
+ print_simple_box_start("center");
+ foreach ($conversations as $conversation) {
// set seenon if required
if (!$conversation->seenon) {
if (!set_field("dialogue_conversations", "seenon", $timenow, "id", $conversation->id)) {
error("List conversations self: could not set seenon");
}
}
- echo "<center><table border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\"
+ echo "<center><table border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\"
width=\"100%\">\n";
- echo "<tr><TD BGCOLOR=\"$THEME->cellheading2\" valign=\"top\">\n";
- if ($conversation->userid == $USER->id) {
- if (!$otheruser = get_record("user", "id", $conversation->recipientid)) {
- error("User not found");
- }
- }
- else {
- if (!$otheruser = get_record("user", "id", $conversation->userid)) {
- error("User not found");
- }
- }
- // print_user_picture($user->id, $course->id, $user->picture);
- echo "<b>".get_string("dialoguewith", "dialogue", "$otheruser->firstname $otheruser->lastname").
+ echo "<tr><TD BGCOLOR=\"$THEME->cellheading2\" valign=\"top\">\n";
+ if ($conversation->userid == $USER->id) {
+ if (!$otheruser = get_record("user", "id", $conversation->recipientid)) {
+ error("User not found");
+ }
+ }
+ else {
+ if (!$otheruser = get_record("user", "id", $conversation->userid)) {
+ error("User not found");
+ }
+ }
+ // print_user_picture($user->id, $course->id, $user->picture);
+ echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser)).
"</b></td>";
- echo "<td bgcolor=\"$THEME->cellheading2\"><i>$conversation->subject </i><br />\n";
+ echo "<td bgcolor=\"$THEME->cellheading2\"><i>$conversation->subject </i><br />\n";
echo "<div align=\"right\">\n";
- if (!$conversation->subject) {
+ if (!$conversation->subject) {
// conversation does not have a subject, show add subject link
echo "<a href=\"dialogues.php?action=getsubject&id=$cm->id&cid=$conversation->id&pane=2\">".
- get_string("addsubject", "dialogue")."</a>\n";
- helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue");
+ get_string("addsubject", "dialogue")."</a>\n";
+ helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue");
echo " | ";
}
- if (dialogue_count_entries($dialogue, $conversation)) {
- echo "<a href=\"dialogues.php?action=confirmclose&id=$cm->id&cid=$conversation->id&pane=1\">".
- get_string("close", "dialogue")."</a>\n";
- helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue");
- }
- else {
- echo " ";
- }
- echo "<div></td></tr>";
-
- if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id",
+ if (dialogue_count_entries($dialogue, $conversation)) {
+ echo "<a href=\"dialogues.php?action=confirmclose&id=$cm->id&cid=$conversation->id&pane=1\">".
+ get_string("close", "dialogue")."</a>\n";
+ helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue");
+ }
+ else {
+ echo " ";
+ }
+ echo "<div></td></tr>";
+
+ if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id",
"id")) {
- foreach ($entries as $entry) {
- if ($entry->userid == $USER->id) {
- echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n";
- echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue",
+ foreach ($entries as $entry) {
+ if ($entry->userid == $USER->id) {
+ echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n";
+ echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue",
userdate($entry->timecreated)).":</font><br />".$entry->text);
- echo "</td></tr>\n";
- }
- else {
- echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n";
- echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue",
+ echo "</td></tr>\n";
+ }
+ else {
+ echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n";
+ echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue",
userdate($entry->timecreated)." ".$otheruser->firstname).
":</font><br />".$entry->text);
- echo "</td></tr>\n";
- }
- }
- }
-
- echo "<tr><td colspan=\"2\" align=\"center\" valign=\"top\">\n";
- if ($entries) {
- echo "<i>".get_string("typereply", "dialogue")."</i>\n";
- }
- else {
- echo "<i>".get_string("typefirstentry", "dialogue")."</i>\n";
- }
- echo "</td></tr>\n";
- echo "<tr><td valign=\"top\" align=\"right\">\n";
- helpbutton("writing", get_string("helpwriting"), "moodle", true, true);
- echo "<br />";
- echo "</td><td>\n";
- // use a cumbersome name on the textarea is just historical :-)
+ echo "</td></tr>\n";
+ }
+ }
+ }
+
+ echo "<tr><td colspan=\"2\" align=\"center\" valign=\"top\">\n";
+ if ($entries) {
+ echo "<i>".get_string("typereply", "dialogue")."</i>\n";
+ }
+ else {
+ echo "<i>".get_string("typefirstentry", "dialogue")."</i>\n";
+ }
+ echo "</td></tr>\n";
+ echo "<tr><td valign=\"top\" align=\"right\">\n";
+ helpbutton("writing", get_string("helpwriting"), "moodle", true, true);
+ echo "<br />";
+ echo "</td><td>\n";
+ // use a cumbersome name on the textarea is just historical :-)
print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id");
- echo "</td></tr>";
- echo "</table></center><br />\n";
- }
- print_simple_box_end();
+ echo "</td></tr>";
+ echo "</table></center><br />\n";
+ }
+ print_simple_box_end();
use_html_editor();
- if ($showbutton) {
- echo "<hr />\n";
- echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentries", "dialogue")."\">\n";
- }
- echo "</form>\n";
- }
+ if ($showbutton) {
+ echo "<hr />\n";
+ echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentries", "dialogue")."\">\n";
+ }
+ echo "</form>\n";
+ }
}
function dialogue_print_conversation($dialogue, $conversation) {
// print a conversation and allow a new entry
global $THEME, $USER;
-
- if (! $course = get_record("course", "id", $dialogue->course)) {
+
+ if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
error("Course Module ID was incorrect");
}
-
- $timenow = time();
- $showbutton = false;
-
- echo "<form name=\"replies\" method=\"post\" action=\"dialogues.php\">\n";
- echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\">\n";
- echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n";
- echo "<input type=\"hidden\" name=\"pane\" value=\"2\">\n";
+
+ $timenow = time();
+ $showbutton = false;
+
+ echo "<form name=\"replies\" method=\"post\" action=\"dialogues.php\">\n";
+ echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\">\n";
+ echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n";
+ echo "<input type=\"hidden\" name=\"pane\" value=\"2\">\n";
$showbutton = true;
print_simple_box_start("center", "", $THEME->cellcontent2);
}
}
// print_user_picture($user->id, $course->id, $user->picture);
- echo "<b>".get_string("dialoguewith", "dialogue", "$otheruser->firstname $otheruser->lastname").
+ echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser)).
"</b></td>";
echo "<td bgcolor=\"$THEME->cellheading2\"><i>$conversation->subject </i><br />\n";
echo "<div align=\"right\">\n";
use_html_editor();
echo "</td></tr>";
echo "</table></center><br />\n";
- print_simple_box_end();
- if ($showbutton) {
- echo "<hr />\n";
- echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentry", "dialogue")."\">\n";
- }
- echo "</form>\n";
+ print_simple_box_end();
+ if ($showbutton) {
+ echo "<hr />\n";
+ echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentry", "dialogue")."\">\n";
+ }
+ echo "</form>\n";
}
function dialogue_print_tabbed_heading($tabs) {
// Prints a tabbed heading where one of the tabs highlighted.
// $tabs is an object with several properties.
-// $tabs->names is an array of tab names
-// $tabs->urls is an array of links
-// $tabs->align is an array of column alignments (defaults to "center")
-// $tabs->size is an array of column sizes
-// $tabs->wrap is an array of "nowrap"s or nothing
-// $tabs->highlight is an index (zero based) of "active" heading .
-// $tabs->width is an percentage of the page (defualts to 80%)
-// $tabs->cellpadding padding on each cell (defaults to 5)
-
- global $CFG, $THEME;
-
+// $tabs->names is an array of tab names
+// $tabs->urls is an array of links
+// $tabs->align is an array of column alignments (defaults to "center")
+// $tabs->size is an array of column sizes
+// $tabs->wrap is an array of "nowrap"s or nothing
+// $tabs->highlight is an index (zero based) of "active" heading .
+// $tabs->width is an percentage of the page (defualts to 80%)
+// $tabs->cellpadding padding on each cell (defaults to 5)
+
+ global $CFG, $THEME;
+
if (isset($tabs->names)) {
foreach ($tabs->names as $key => $name) {
if (!empty($tabs->urls[$key])) {
- $url =$tabs->urls[$key];
- if ($tabs->highlight == $key) {
- $tabcontents[$key] = "<b>$name</b>";
- } else {
- $tabcontents[$key] = "<a class= \"dimmed\" href=\"$url\"><b>$name</b></a>";
- }
+ $url =$tabs->urls[$key];
+ if ($tabs->highlight == $key) {
+ $tabcontents[$key] = "<b>$name</b>";
+ } else {
+ $tabcontents[$key] = "<a class= \"dimmed\" href=\"$url\"><b>$name</b></a>";
+ }
} else {
$tabcontents[$key] = "<b>$name</b>";
}
if (!empty($tabs->names)) {
echo "<tr>";
- echo "<td class=\"generaltablecell\">".
- "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n";
+ echo "<td class=\"generaltablecell\">".
+ "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n";
foreach ($tabcontents as $key => $tab) {
if (isset($align[$key])) {
- $alignment = "align=\"$align[$key]\"";
- } else {
+ $alignment = "align=\"$align[$key]\"";
+ } else {
$alignment = "align=\"center\"";
}
if (isset($size[$key])) {
$width = "width=\"$size[$key]\"";
} else {
- $width = "";
- }
+ $width = "";
+ }
if (isset($wrap[$key])) {
- $wrapping = "no wrap";
- } else {
+ $wrapping = "no wrap";
+ } else {
$wrapping = "";
}
- if ($key == $tabs->highlight) {
- echo "<td valign=top class=\"generaltabselected\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading2\">$tab</td>\n";
- } else {
- echo "<td valign=top class=\"generaltab\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading\">$tab</td>\n";
- }
- echo "<td class=\"generaltablecell\">".
- "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n";
+ if ($key == $tabs->highlight) {
+ echo "<td valign=top class=\"generaltabselected\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading2\">$tab</td>\n";
+ } else {
+ echo "<td valign=top class=\"generaltab\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading\">$tab</td>\n";
+ }
+ echo "<td class=\"generaltablecell\">".
+ "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n";
}
echo "</tr>\n";
} else {
- echo "<tr><td>No names specified</td></tr>\n";
- }
- // bottom stripe
- $ncells = count($tabs->names)*2 +1;
- $height = 2;
- echo "<tr><td colspan=\"$ncells\" bgcolor=\"$THEME->cellheading2\">".
- "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td></tr>\n";
+ echo "<tr><td>No names specified</td></tr>\n";
+ }
+ // bottom stripe
+ $ncells = count($tabs->names)*2 +1;
+ $height = 2;
+ echo "<tr><td colspan=\"$ncells\" bgcolor=\"$THEME->cellheading2\">".
+ "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td></tr>\n";
echo "</table>\n";
- // print_simple_box_end();
+ // print_simple_box_end();
return true;
}
//////////////////////////////////////////////////////////////////////////////////////
function dialogue_show_conversation($dialogue, $conversation) {
global $THEME, $USER;
-
- if (! $course = get_record("course", "id", $dialogue->course)) {
+
+ if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
error("Course Module ID was incorrect");
}
-
- $timenow = time();
- print_simple_box_start("center");
- echo "<center><TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=4 width=\"100%\">\n";
-
- echo "<tr>";
- echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\">\n";
- if ($conversation->userid == $USER->id) {
- if (!$otheruser = get_record("user", "id", $conversation->recipientid)) {
- error("User not found");
- }
- }
- else {
- if (!$otheruser = get_record("user", "id", $conversation->userid)) {
- error("User not found");
- }
- }
- // print_user_picture($user->id, $course->id, $user->picture);
- echo "<b>".get_string("dialoguewith", "dialogue", "$otheruser->firstname $otheruser->lastname").
+
+ $timenow = time();
+ print_simple_box_start("center");
+ echo "<center><TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=4 width=\"100%\">\n";
+
+ echo "<tr>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\">\n";
+ if ($conversation->userid == $USER->id) {
+ if (!$otheruser = get_record("user", "id", $conversation->recipientid)) {
+ error("User not found");
+ }
+ }
+ else {
+ if (!$otheruser = get_record("user", "id", $conversation->userid)) {
+ error("User not found");
+ }
+ }
+ // print_user_picture($user->id, $course->id, $user->picture);
+ echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser)).
"</b></td>";
- echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>$conversation->subject </i></td></tr>";
+ echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>$conversation->subject </i></td></tr>";
- if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) {
- foreach ($entries as $entry) {
- if ($entry->userid == $USER->id) {
- echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n";
- echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue",
+ if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) {
+ foreach ($entries as $entry) {
+ if ($entry->userid == $USER->id) {
+ echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n";
+ echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue",
userdate($entry->timecreated)).
- ":</font><br />".$entry->text);
- echo "</td></tr>\n";
- }
- else {
- echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n";
- echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue",
+ ":</font><br />".$entry->text);
+ echo "</td></tr>\n";
+ }
+ else {
+ echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n";
+ echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue",
userdate($entry->timecreated)." ".$otheruser->firstname).":</font><br />".$entry->text);
- echo "</td></tr>\n";
- }
- }
- }
- echo "</TABLE></center><BR CLEAR=ALL>\n";
- print_simple_box_end();
- print_continue("view.php?id=$cm->id&pane=3");
+ echo "</td></tr>\n";
+ }
+ }
+ }
+ echo "</TABLE></center><BR CLEAR=ALL>\n";
+ print_simple_box_end();
+ print_continue("view.php?id=$cm->id&pane=3");
}
function dialogue_show_other_conversations($dialogue, $conversation) {
// prints the other CLOSED conversations for this pair of users
global $THEME;
-
- if (! $course = get_record("course", "id", $dialogue->course)) {
+
+ if (! $course = get_record("course", "id", $dialogue->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) {
error("Course Module ID was incorrect");
}
-
- if (!$user = get_record("user", "id", $conversation->userid)) {
- error("User not found");
- }
- if (!$otheruser = get_record("user", "id", $conversation->recipientid)) {
- error("User not found");
- }
-
- if ($conversations = get_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
- ((userid = $user->id AND recipientid = $otheruser->id) OR (userid = $otheruser->id AND
+
+ if (!$user = get_record("user", "id", $conversation->userid)) {
+ error("User not found");
+ }
+ if (!$otheruser = get_record("user", "id", $conversation->recipientid)) {
+ error("User not found");
+ }
+
+ if ($conversations = get_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND
+ ((userid = $user->id AND recipientid = $otheruser->id) OR (userid = $otheruser->id AND
recipientid = $user->id)) AND closed = 1", "timemodified DESC")) {
- if (count($conversations) > 1) {
- $timenow = time();
- foreach ($conversations as $otherconversation) {
- if ($conversation->id != $otherconversation->id) {
- // for this conversation work out which is the other user
+ if (count($conversations) > 1) {
+ $timenow = time();
+ foreach ($conversations as $otherconversation) {
+ if ($conversation->id != $otherconversation->id) {
+ // for this conversation work out which is the other user
if ($otherconversation->userid == $user->id) {
if (!$otheruser = get_record("user", "id", $otherconversation->recipientid)) {
error("Show other conversations: could not get user record");
}
}
print_simple_box_start("center");
- echo "<center><TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=4 width=\"100%\">\n";
-
- echo "<TR>";
- echo "<TD BGCOLOR=\"$THEME->cellheading2\" VALIGN=TOP>\n";
- // print_user_picture($otheruser->id, $course->id, $otheruser->picture);
- echo "<b>".get_string("dialoguewith", "dialogue",
- "$otheruser->firstname $otheruser->lastname")."</b></td>";
+ echo "<center><TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=4 width=\"100%\">\n";
+
+ echo "<TR>";
+ echo "<TD BGCOLOR=\"$THEME->cellheading2\" VALIGN=TOP>\n";
+ // print_user_picture($otheruser->id, $course->id, $otheruser->picture);
+ echo "<b>".get_string("dialoguewith", "dialogue",
+ fullname($otheruser))."</b></td>";
echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>$otherconversation->subject </i></td></tr>";
- if ($entries = get_records_select("dialogue_entries",
+ if ($entries = get_records_select("dialogue_entries",
"conversationid = $otherconversation->id", "id")) {
- foreach ($entries as $entry) {
- if ($entry->userid == $user->id) {
- echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n";
- echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue",
+ foreach ($entries as $entry) {
+ if ($entry->userid == $user->id) {
+ echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n";
+ echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue",
userdate($entry->timecreated)).":</font><br />".$entry->text);
- echo "</td></tr>\n";
- }
- else {
- echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n";
- echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue",
+ echo "</td></tr>\n";
+ }
+ else {
+ echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n";
+ echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue",
userdate($entry->timecreated)." ".$otheruser->firstname).
":</font><br />".$entry->text);
- echo "</td></tr>\n";
- }
- }
- }
-
- echo "</TABLE></center><BR CLEAR=ALL>\n";
- print_simple_box_end();
- }
- }
- print_continue("view.php?id=$cm->id&pane=3");
+ echo "</td></tr>\n";
+ }
+ }
+ }
+
+ echo "</TABLE></center><BR CLEAR=ALL>\n";
+ print_simple_box_end();
+ }
+ }
+ print_continue("view.php?id=$cm->id&pane=3");
}
- }
+ }
}
<?PHP // $Id: lib.php,v 1.1 22 Aug 2003
/*************************************************
- ACTIONS handled are:
+ ACTIONS handled are:
- adminamendgradinggrading
+ adminamendgradinggrading
adminconfirmdelete
- admindelete
+ admindelete
adminedit
- adminlist
- adminlistbystudent
- assessresubmission
- assesssubmission
- displaygradingform
- editelements (teachers only)
- insertelements (for teachers)
- listungradedstudentsubmissions (for teachers)
- listungradedstudentassessments (for teachers)
- listteachersubmissions
+ adminlist
+ adminlistbystudent
+ assessresubmission
+ assesssubmission
+ displaygradingform
+ editelements (teachers only)
+ insertelements (for teachers)
+ listungradedstudentsubmissions (for teachers)
+ listungradedstudentassessments (for teachers)
+ listteachersubmissions
regradestudentassessments (for teachers)
- teacherassessment (for teachers)
+ teacherassessment (for teachers)
teachertable
- updateassessment
- updateteacherassessment
- userconfirmdelete
- userdelete
- viewassessment
+ updateassessment
+ updateteacherassessment
+ userconfirmdelete
+ userdelete
+ viewassessment
************************************************/
require("../../config.php");
require("lib.php");
- require("locallib.php");
+ require("locallib.php");
- require_variable($id); // Course Module ID
+ require_variable($id); // Course Module ID
// get some esential stuff...
- if (! $cm = get_record("course_modules", "id", $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 (! $course = get_record("course", "id", $cm->course)) {
+ error("Course is misconfigured");
+ }
- if (! $exercise = get_record("exercise", "id", $cm->instance)) {
- error("Course module is incorrect");
- }
+ if (! $exercise = get_record("exercise", "id", $cm->instance)) {
+ error("Course module is incorrect");
+ }
exercise_add_custom_scales($exercise);
require_login($course->id);
-
+
$navigation = "";
if ($course->category) {
$navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->";
$strexercises = get_string("modulenameplural", "exercise");
$strexercise = get_string("modulename", "exercise");
$strassessments = get_string("assessments", "exercise");
-
- // ... print the header and...
+
+ // ... print the header and...
print_header("$course->shortname: $exercise->name", "$course->fullname",
"$navigation <A HREF=index.php?id=$course->id>$strexercises</A> ->
<A HREF=\"view.php?id=$cm->id\">$exercise->name</A> -> $strassessments",
"", "", true);
- //...get the action
- require_variable($action);
-
-
- /******************* admin amend Grading Grade ************************************/
- if ($action == 'adminamendgradinggrade' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['aid'])) {
- error("Admin Amend Grading grade: assessment id missing");
- }
-
- if (!$assessment = get_record("exercise_assessments", "id", $_GET['aid'])) {
- error("Amin Amend Grading grade: assessment not found");
+ //...get the action
+ require_variable($action);
+
+
+ /******************* admin amend Grading Grade ************************************/
+ if ($action == 'adminamendgradinggrade' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['aid'])) {
+ error("Admin Amend Grading grade: assessment id missing");
+ }
+
+ if (!$assessment = get_record("exercise_assessments", "id", $_GET['aid'])) {
+ error("Amin Amend Grading grade: assessment not found");
}
print_heading(get_string("amend", "exercise")." ".get_string("gradeforstudentsassessment",
"exercise", $course->student));
echo "<input type=\"hidden\" name=\"action\" value=\"updategradinggrade\">\n";
echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n";
echo "<table width=\"50%\" align=\"center\" border=\"1\">\n";
- echo "<tr><td align=\"right\"><b>".get_string("gradeforstudentsassessment", "exercise",
+ echo "<tr><td align=\"right\"><b>".get_string("gradeforstudentsassessment", "exercise",
$course->student)." :</td><td>\n";
- // set up coment scale
- for ($i=$exercise->gradinggrade; $i>=0; $i--) {
- $num[$i] = $i;
- }
- choose_from_menu($num, "gradinggrade",
+ // set up coment scale
+ for ($i=$exercise->gradinggrade; $i>=0; $i--) {
+ $num[$i] = $i;
+ }
+ choose_from_menu($num, "gradinggrade",
number_format($exercise->gradinggrade * $assessment->gradinggrade / 100, 0), "");
- echo "</td></tr>\n";
+ echo "</td></tr>\n";
echo "<tr><td colspan=\"2\" align=\"center\">";
echo "<INPUT TYPE=submit VALUE=\"".get_string("amend", "exercise")."\">\n";
echo "</td></tr>\n";
echo "</CENTER>";
echo "</FORM>\n";
}
-
+
- /******************* admin confirm delete ************************************/
+ /******************* 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","exercise", get_string("assessment", "exercise")),
- "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]",
+ 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","exercise", get_string("assessment", "exercise")),
+ "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", "exercise");
- // first delete all the associated records...
- delete_records("exercise_grades", "assessmentid", $_GET['aid']);
- // ...now delete the assessment...
- delete_records("exercise_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 ("exercise asssessments: adminlist called with no sid");
- }
- $submission = get_record("exercise_submissions", "id", $_GET['sid']);
- exercise_print_assessments_for_admin($exercise, $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 ("exercise asssessments: adminlistbystudent called with no userid");
- }
- $user = get_record("user", "id", $_GET['userid']);
- exercise_print_assessments_by_user_for_admin($exercise, $user);
- print_continue("submissions.php?action=adminlist&id=$cm->id");
- }
-
-
- /****************** Assess resubmission (by teacher) ***************************/
- elseif ($action == 'assessresubmission') {
-
- require_variable($sid);
-
- if (! $submission = get_record("exercise_submissions", "id", $sid)) {
- error("Assess submission is misconfigured - no submission record!");
- }
- if (!$submissionowner = get_record("user", "id", $submission->userid)) {
- error("Assess resubmission: user record not found");
- }
-
- // there can be an assessment record, if there isn't...
- if (!$assessment = exercise_get_submission_assessment($submission, $USER)) {
- if (!$submissions = exercise_get_user_submissions($exercise, $submissionowner)) {
- error("Assess resubmission: submission records not found");
- }
- $lastone= '';
+ }
+
+
+ /******************* 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", "exercise");
+ // first delete all the associated records...
+ delete_records("exercise_grades", "assessmentid", $_GET['aid']);
+ // ...now delete the assessment...
+ delete_records("exercise_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 ("exercise asssessments: adminlist called with no sid");
+ }
+ $submission = get_record("exercise_submissions", "id", $_GET['sid']);
+ exercise_print_assessments_for_admin($exercise, $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 ("exercise asssessments: adminlistbystudent called with no userid");
+ }
+ $user = get_record("user", "id", $_GET['userid']);
+ exercise_print_assessments_by_user_for_admin($exercise, $user);
+ print_continue("submissions.php?action=adminlist&id=$cm->id");
+ }
+
+
+ /****************** Assess resubmission (by teacher) ***************************/
+ elseif ($action == 'assessresubmission') {
+
+ require_variable($sid);
+
+ if (! $submission = get_record("exercise_submissions", "id", $sid)) {
+ error("Assess submission is misconfigured - no submission record!");
+ }
+ if (!$submissionowner = get_record("user", "id", $submission->userid)) {
+ error("Assess resubmission: user record not found");
+ }
+
+ // there can be an assessment record, if there isn't...
+ if (!$assessment = exercise_get_submission_assessment($submission, $USER)) {
+ if (!$submissions = exercise_get_user_submissions($exercise, $submissionowner)) {
+ error("Assess resubmission: submission records not found");
+ }
+ $lastone= '';
// just the last but one submission
- foreach ($submissions as $submission) {
- $prevsubmission = $lastone;
+ foreach ($submissions as $submission) {
+ $prevsubmission = $lastone;
$lastone = $submission;
}
- // get the teacher's assessment of the student's previous submission
- if (!$prevassessment = exercise_get_submission_assessment($prevsubmission, $USER)) {
- error("Assess resubmission: Previous assessment record not found");
- }
- // copy this assessment with comments...
- $assessment = exercise_copy_assessment($prevassessment, $submission, true);
- }
-
- print_heading(get_string("thisisaresubmission", "exercise",
- "$submissionowner->firstname $submissionowner->lastname"));
- // show assessment and allow changes
- exercise_print_assessment_form($exercise, $assessment, true, $_SERVER["HTTP_REFERER"]);
- }
-
-
- /****************** Assess submission (by teacher or student) ***************************/
- elseif ($action == 'assesssubmission') {
-
- require_variable($sid);
-
- if (! $submission = get_record("exercise_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 = exercise_get_submission_assessment($submission, $USER)) {
- $yearfromnow = time() + 365 * 86400;
- // ...create one and set timecreated way in the future, this is reset when record is updated
- $assessment->exerciseid = $exercise->id;
- $assessment->submissionid = $submission->id;
- $assessment->userid = $USER->id;
- $assessment->grade = -1; // set impossible grade
- $assessment->timecreated = $yearfromnow;
- $assessment->timegraded = 0;
- if (!$assessment->id = insert_record("exercise_assessments", $assessment)) {
- error("Could not insert exercise assessment!");
- }
- }
-
- // show assessment and allow changes
- exercise_print_assessment_form($exercise, $assessment, true, $_SERVER["HTTP_REFERER"]);
- }
-
-
- /****************** display grading form (viewed by student) *********************************/
- elseif ($action == 'displaygradingform') {
-
- print_heading_with_help(get_string("specimenassessmentform", "exercise"), "specimen", "exercise");
-
- exercise_print_assessment_form($exercise); // called with no assessment
- print_continue("view.php?id=$cm->id");
- }
-
-
- /****************** edit assessment elements (for teachers) ***********************/
- elseif ($action == 'editelements') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $count = count_records("exercise_grades", "exerciseid", $exercise->id);
- if ($exercise->phase > 1 and $count) {
- notify(get_string("warningonamendingelements", "exercise"));
- }
- // set up heading, form and table
- print_heading_with_help(get_string("editingassessmentelements", "exercise"), "elements", "exercise");
- ?>
- <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("exercise_elements", "exerciseid", $exercise->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
+ // get the teacher's assessment of the student's previous submission
+ if (!$prevassessment = exercise_get_submission_assessment($prevsubmission, $USER)) {
+ error("Assess resubmission: Previous assessment record not found");
+ }
+ // copy this assessment with comments...
+ $assessment = exercise_copy_assessment($prevassessment, $submission, true);
+ }
+
+ print_heading(get_string("thisisaresubmission", "exercise",
+ fullname($submissionowner)));
+ // show assessment and allow changes
+ exercise_print_assessment_form($exercise, $assessment, true, $_SERVER["HTTP_REFERER"]);
+ }
+
+
+ /****************** Assess submission (by teacher or student) ***************************/
+ elseif ($action == 'assesssubmission') {
+
+ require_variable($sid);
+
+ if (! $submission = get_record("exercise_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 = exercise_get_submission_assessment($submission, $USER)) {
+ $yearfromnow = time() + 365 * 86400;
+ // ...create one and set timecreated way in the future, this is reset when record is updated
+ $assessment->exerciseid = $exercise->id;
+ $assessment->submissionid = $submission->id;
+ $assessment->userid = $USER->id;
+ $assessment->grade = -1; // set impossible grade
+ $assessment->timecreated = $yearfromnow;
+ $assessment->timegraded = 0;
+ if (!$assessment->id = insert_record("exercise_assessments", $assessment)) {
+ error("Could not insert exercise assessment!");
+ }
+ }
+
+ // show assessment and allow changes
+ exercise_print_assessment_form($exercise, $assessment, true, $_SERVER["HTTP_REFERER"]);
+ }
+
+
+ /****************** display grading form (viewed by student) *********************************/
+ elseif ($action == 'displaygradingform') {
+
+ print_heading_with_help(get_string("specimenassessmentform", "exercise"), "specimen", "exercise");
+
+ exercise_print_assessment_form($exercise); // called with no assessment
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /****************** edit assessment elements (for teachers) ***********************/
+ elseif ($action == 'editelements') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $count = count_records("exercise_grades", "exerciseid", $exercise->id);
+ if ($exercise->phase > 1 and $count) {
+ notify(get_string("warningonamendingelements", "exercise"));
+ }
+ // set up heading, form and table
+ print_heading_with_help(get_string("editingassessmentelements", "exercise"), "elements", "exercise");
+ ?>
+ <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("exercise_elements", "exerciseid", $exercise->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<$exercise->nelements; $i++) {
- if (!isset($elements[$i])) {
- $elements[$i]->description = '';
- $elements[$i]->scale =0;
- $elements[$i]->maxscore = 0;
- $elements[$i]->weight = 11;
- }
- }
- switch ($exercise->gradingstrategy) {
- case 0: // no grading
- for ($i=0; $i<$exercise->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".
+ for ($i=0; $i<$exercise->nelements; $i++) {
+ if (!isset($elements[$i])) {
+ $elements[$i]->description = '';
+ $elements[$i]->scale =0;
+ $elements[$i]->maxscore = 0;
+ $elements[$i]->weight = 11;
+ }
+ }
+ switch ($exercise->gradingstrategy) {
+ case 0: // no grading
+ for ($i=0; $i<$exercise->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $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 ($EXERCISE_SCALES as $KEY => $SCALE) {
- $SCALES[] = $SCALE['name'];
- }
+ 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 ($EXERCISE_SCALES as $KEY => $SCALE) {
+ $SCALES[] = $SCALE['name'];
+ }
- for ($i=0; $i<$exercise->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".
+ for ($i=0; $i<$exercise->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $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", "exercise"). ":</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", "exercise").
+ echo " </TD></TR>\n";
+ echo "<TR valign=top>\n";
+ echo " <TD align=right><P><B>". get_string("typeofscale", "exercise"). ":</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", "exercise").
":</B></TD><TD>\n";
- exercise_choose_from_menu($EXERCISE_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<$exercise->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".
+ exercise_choose_from_menu($EXERCISE_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<$exercise->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $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", "exercise").
+ 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", "exercise").
":</B></TD><TD>\n";
- exercise_choose_from_menu($EXERCISE_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","exercise")."</B></CENTER>\n";
- echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">".
- get_string("numberofnegativeresponses", "exercise");
- echo "</TD><TD>". get_string("suggestedgrade", "exercise")."</TD></TR>\n";
- for ($j = $exercise->grade; $j >= 0; $j--) {
- $numbers[$j] = $j;
- }
- for ($i=0; $i<=$exercise->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";
- }
- break;
-
- case 3: // criterion grading
- for ($j = $exercise->grade; $j >= 0; $j--) {
- $numbers[$j] = $j;
- }
- for ($i=0; $i<$exercise->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";\r
- echo " <TD ALIGN=RIGHT><P><B>". get_string("criterion","exercise")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".
+ exercise_choose_from_menu($EXERCISE_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","exercise")."</B></CENTER>\n";
+ echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">".
+ get_string("numberofnegativeresponses", "exercise");
+ echo "</TD><TD>". get_string("suggestedgrade", "exercise")."</TD></TR>\n";
+ for ($j = $exercise->grade; $j >= 0; $j--) {
+ $numbers[$j] = $j;
+ }
+ for ($i=0; $i<=$exercise->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";
+ }
+ break;
+
+ case 3: // criterion grading
+ for ($j = $exercise->grade; $j >= 0; $j--) {
+ $numbers[$j] = $j;
+ }
+ for ($i=0; $i<$exercise->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("criterion","exercise")." $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", "exercise").":</B></TD><TD>\n";
- choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
- echo "</TD></TR>\n";
- echo "<TR valign=top>\n";\r
- 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("exercise_rubrics", "exerciseid", $exercise->id)) {
- foreach ($rubricsraw as $rubric) {
- $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2...
- }
- }
- for ($i=0; $i<$exercise->nelements; $i++) {
- $iplus1 = $i+1;
- echo "<TR valign=top>\n";
- echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n";
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".
+ echo " </TD></TR>\n";
+ echo "<TR><TD><B>". get_string("suggestedgrade", "exercise").":</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("exercise_rubrics", "exerciseid", $exercise->id)) {
+ foreach ($rubricsraw as $rubric) {
+ $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2...
+ }
+ }
+ for ($i=0; $i<$exercise->nelements; $i++) {
+ $iplus1 = $i+1;
+ echo "<TR valign=top>\n";
+ echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $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", "exercise").
+ echo " </TD></TR>\n";
+ echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "exercise").
":</B></TD><TD>\n";
- exercise_choose_from_menu($EXERCISE_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")." $j:</B></TD>\n";
- echo "<TD><textarea name=\"rubric[$i][$j]\" rows=3 cols=75 wrap=\"virtual\">".
+ exercise_choose_from_menu($EXERCISE_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")." $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><br />
- <input type="submit" value="<?php print_string("savechanges") ?>">
- <input type="submit" name=cancel value="<?php print_string("cancel") ?>">
- </center>\r
- </form>
- <?PHP
- }
-
-
- /****************** 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("exercise_elements", "exerciseid", $exercise->id);
+ 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><br />
+ <input type="submit" value="<?php print_string("savechanges") ?>">
+ <input type="submit" name=cancel value="<?php print_string("cancel") ?>">
+ </center>
+
+ </form>
+ <?PHP
+ }
+
+
+ /****************** 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("exercise_elements", "exerciseid", $exercise->id);
- // determine wich type of grading
- switch ($exercise->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->exerciseid = $exercise->id;
- $element->elementno = $key;
- if (!$element->id = insert_record("exercise_elements", $element)) {
- error("Could not insert exercise 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->exerciseid = $exercise->id;
- $element->elementno = $key;
- if (isset($form->scale[$key])) {
- $element->scale = $form->scale[$key];
- switch ($EXERCISE_SCALES[$form->scale[$key]]['type']) {
- case 'radio' : $element->maxscore = $EXERCISE_SCALES[$form->scale[$key]]['size'] - 1;
- break;
- case 'selection' : $element->maxscore = $EXERCISE_SCALES[$form->scale[$key]]['size'];
- break;
- }
- }
- if (isset($form->weight[$key])) {
- $element->weight = $form->weight[$key];
- }
- if (!$element->id = insert_record("exercise_elements", $element)) {
- error("Could not insert exercise element!");
- }
- }
- }
- break;
-
- case 2: // error banded grading...
- case 3: // ...and criterion grading
- // Insert all the elements that contain something, the number of descriptions is
+ // determine wich type of grading
+ switch ($exercise->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->exerciseid = $exercise->id;
+ $element->elementno = $key;
+ if (!$element->id = insert_record("exercise_elements", $element)) {
+ error("Could not insert exercise 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->exerciseid = $exercise->id;
+ $element->elementno = $key;
+ if (isset($form->scale[$key])) {
+ $element->scale = $form->scale[$key];
+ switch ($EXERCISE_SCALES[$form->scale[$key]]['type']) {
+ case 'radio' : $element->maxscore = $EXERCISE_SCALES[$form->scale[$key]]['size'] - 1;
+ break;
+ case 'selection' : $element->maxscore = $EXERCISE_SCALES[$form->scale[$key]]['size'];
+ break;
+ }
+ }
+ if (isset($form->weight[$key])) {
+ $element->weight = $form->weight[$key];
+ }
+ if (!$element->id = insert_record("exercise_elements", $element)) {
+ error("Could not insert exercise 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->exerciseid = $exercise->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("exercise_elements", $element)) {
- error("Could not insert exercise element!");
- }
- }
- break;
-
- case 4: // ...and criteria grading
- // Insert all the elements that contain something
- foreach ($form->description as $key => $description) {
- unset($element);
- $element->exerciseid = $exercise->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("exercise_elements", $element)) {
- error("Could not insert exercise element!");
- }
- }
- // let's not fool around here, dump the junk!
- delete_records("exercise_rubrics", "exerciseid", $exercise->id);
- for ($i=0;$i<$exercise->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->exerciseid = $exercise->id;
- $element->elementno = $i;
- $element->rubricno = $j;
- $element->description = $form->rubric[$i][$j];
- if (!$element->id = insert_record("exercise_rubrics", $element)) {
- error("Could not insert exercise element!");
- }
- }
- }
- break;
- } // end of switch
- redirect("view.php?id=$cm->id", get_string("savedok", "exercise"));
- }
-
-
- /****************** list assessments for grading (Student submissions)(by teachers)*********************/
- elseif ($action == 'listungradedstudentsubmissions') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- exercise_list_ungraded_assessments($exercise, "student");
- print_continue("view.php?id=$cm->id");
- }
-
-
- /***************** list assessments for grading student assessments ( linked to the
+ foreach ($form->maxscore as $key => $themaxscore) {
+ unset($element);
+ $element->exerciseid = $exercise->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("exercise_elements", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ break;
+
+ case 4: // ...and criteria grading
+ // Insert all the elements that contain something
+ foreach ($form->description as $key => $description) {
+ unset($element);
+ $element->exerciseid = $exercise->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("exercise_elements", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ // let's not fool around here, dump the junk!
+ delete_records("exercise_rubrics", "exerciseid", $exercise->id);
+ for ($i=0;$i<$exercise->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->exerciseid = $exercise->id;
+ $element->elementno = $i;
+ $element->rubricno = $j;
+ $element->description = $form->rubric[$i][$j];
+ if (!$element->id = insert_record("exercise_rubrics", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ }
+ break;
+ } // end of switch
+ redirect("view.php?id=$cm->id", get_string("savedok", "exercise"));
+ }
+
+
+ /****************** list assessments for grading (Student submissions)(by teachers)*********************/
+ elseif ($action == 'listungradedstudentsubmissions') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ exercise_list_ungraded_assessments($exercise, "student");
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /***************** list assessments for grading student assessments ( linked to the
******************Teacher's submissions) (by teachers)****/
- elseif ($action == 'listungradedstudentassessments') {
+ elseif ($action == 'listungradedstudentassessments') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- exercise_list_ungraded_assessments($exercise, "teacher");
- print_continue("view.php?id=$cm->id");
- }
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ exercise_list_ungraded_assessments($exercise, "teacher");
+ print_continue("view.php?id=$cm->id");
+ }
- /****************** list teacher submissions ***********************/
- elseif ($action == 'listteachersubmissions') {
+ /****************** list teacher submissions ***********************/
+ elseif ($action == 'listteachersubmissions') {
- exercise_list_teacher_submissions($exercise, $USER);
- print_continue("view.php?id=$cm->id");
- }
+ exercise_list_teacher_submissions($exercise, $USER);
+ print_continue("view.php?id=$cm->id");
+ }
- /******************* regrade student assessments ************************************/
+ /******************* regrade student assessments ************************************/
elseif ($action == 'regradestudentassessments' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
}
// get all the student assessments
- if ($assessments = exercise_get_teacher_submission_assessments($exercise)) {
+ if ($assessments = exercise_get_teacher_submission_assessments($exercise)) {
foreach ($assessments as $studentassessment) {
if ($studentassessment->timegraded > 0) {
if (!$submissions = get_records_select("exercise_submissions",
}
}
}
- redirect("submissions.php?id=$cm->id&action=adminlist");
- }
-
-
- /****************** teacher assessment : grading of assessment and submission (from student) ************/
- elseif ($action == 'teacherassessment') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- require_variable($aid);
- require_variable($sid);
- if (!$assessment = get_record("exercise_assessments", "id", $aid)) {
- error("Teacher assessment: User's assessment record not found");
- }
- if (!$submission = get_record("exercise_submissions", "id", $sid)) {
- error("Teacher assessment: User's submission record not found");
- }
- exercise_print_teacher_assessment_form($exercise, $assessment, $submission, $_SERVER["HTTP_REFERER"]);
- }
-
-
- /****************** teacher table : show assessments by exercise and teacher ************/
- elseif ($action == 'teachertable') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- exercise_print_teacher_table($course);
+ redirect("submissions.php?id=$cm->id&action=adminlist");
+ }
+
+
+ /****************** teacher assessment : grading of assessment and submission (from student) ************/
+ elseif ($action == 'teacherassessment') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ require_variable($aid);
+ require_variable($sid);
+ if (!$assessment = get_record("exercise_assessments", "id", $aid)) {
+ error("Teacher assessment: User's assessment record not found");
+ }
+ if (!$submission = get_record("exercise_submissions", "id", $sid)) {
+ error("Teacher assessment: User's submission record not found");
+ }
+ exercise_print_teacher_assessment_form($exercise, $assessment, $submission, $_SERVER["HTTP_REFERER"]);
+ }
+
+
+ /****************** teacher table : show assessments by exercise and teacher ************/
+ elseif ($action == 'teachertable') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ exercise_print_teacher_table($course);
print_continue("index.php?id=$course->id");
- }
+ }
- /****************** update assessment (by teacher or student) ***************************/
- elseif ($action == 'updateassessment') {
+ /****************** update assessment (by teacher or student) ***************************/
+ elseif ($action == 'updateassessment') {
- $timenow = time();
- $form = (object)$HTTP_POST_VARS;
+ $timenow = time();
+ $form = (object)$HTTP_POST_VARS;
- require_variable($aid);
- if (! $assessment = get_record("exercise_assessments", "id", $aid)) {
- error("exercise assessment is misconfigured");
- }
+ require_variable($aid);
+ if (! $assessment = get_record("exercise_assessments", "id", $aid)) {
+ error("exercise assessment is misconfigured");
+ }
- // first get the assignment elements for maxscores and weights...
- if (!$elementsraw = get_records("exercise_elements", "exerciseid", $exercise->id, "elementno ASC")) {
- print_string("noteonassignmentelements", "exercise");
- }
- else {
- foreach ($elementsraw as $element) {
- $elements[] = $element; // to renumber index 0,1,2...
- }
- }
+ // first get the assignment elements for maxscores and weights...
+ if (!$elementsraw = get_records("exercise_elements", "exerciseid", $exercise->id, "elementno ASC")) {
+ print_string("noteonassignmentelements", "exercise");
+ }
+ else {
+ foreach ($elementsraw as $element) {
+ $elements[] = $element; // to renumber index 0,1,2...
+ }
+ }
// don't fiddle about, delete all the old and then add the new!
- delete_records("exercise_grades", "assessmentid", $assessment->id);
-
- //determine what kind of grading we have
- switch ($exercise->gradingstrategy) {
- case 0: // no grading
- // Insert all the elements that contain something
- foreach ($form->feedback as $key => $thefeedback) {
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $thefeedback;
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise 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->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $form->feedback[$key];
- $element->grade = $thegrade;
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- }
- // now work out the grade...
- $rawgrade=0;
- $totalweight=0;
- foreach ($form->grade as $key => $grade) {
- $maxscore = $elements[$key]->maxscore;
- $weight = $EXERCISE_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 < $exercise->nelements; $i++) {
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $i;
- $element->feedback = $form->feedback[$i];
- $element->grade = $form->grade[$i];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- if (empty($form->grade[$i])){
- $error += $EXERCISE_EWEIGHTS[$elements[$i]->weight];
- }
- }
- // now save the adjustment
- unset($element);
- $i = $exercise->nelements;
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $i;
- $element->grade = $form->grade[$i];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i])
+ delete_records("exercise_grades", "assessmentid", $assessment->id);
+
+ //determine what kind of grading we have
+ switch ($exercise->gradingstrategy) {
+ case 0: // no grading
+ // Insert all the elements that contain something
+ foreach ($form->feedback as $key => $thefeedback) {
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $thefeedback;
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise 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->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $form->feedback[$key];
+ $element->grade = $thegrade;
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ // now work out the grade...
+ $rawgrade=0;
+ $totalweight=0;
+ foreach ($form->grade as $key => $grade) {
+ $maxscore = $elements[$key]->maxscore;
+ $weight = $EXERCISE_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 < $exercise->nelements; $i++) {
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $i;
+ $element->feedback = $form->feedback[$i];
+ $element->grade = $form->grade[$i];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ if (empty($form->grade[$i])){
+ $error += $EXERCISE_EWEIGHTS[$elements[$i]->weight];
+ }
+ }
+ // now save the adjustment
+ unset($element);
+ $i = $exercise->nelements;
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $i;
+ $element->grade = $form->grade[$i];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i])
* 100.0 / $exercise->grade;
- // echo "<P><B>".get_string("weightederrorcount", "exercise", intval($error + 0.5)).
- // " ".get_string("adjustment", "exercise").": ".$form->grade[$i]."</B>\n";
- // check the grade for sanity!
- if ($grade > 100.0) {
- $grade = 100.0;
- }
- if ($grade < 0.0) {
- $grade = 0.0;
- }
- break;
-
- case 3: // criteria grading
- // save in the selected criteria value in element zero,
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = 0;
- $element->grade = $form->grade[0];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- // now save the adjustment in element one
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = 1;
- $element->grade = $form->grade[1];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]) * 100 / $exercise->grade;
- // check the grade for sanity!
- if ($grade >100.0) {
- $grade = 100.0;
- }
- if ($grade < 0.0) {
- $grade = 0.0;
- }
- 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->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $form->feedback[$key];
- $element->grade = $thegrade;
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- }
- // now work out the grade...
- $rawgrade=0;
- $totalweight=0;
- foreach ($form->grade as $key => $grade) {
- $maxscore = $elements[$key]->maxscore;
- $weight = $EXERCISE_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("exercise_assessments", "timecreated", $timenow, "id", $assessment->id);
- set_field("exercise_assessments", "grade", $grade, "id", $assessment->id);
- // ...and clear any grading of this assessment (these assessments are never graded but...)
- set_field("exercise_assessments", "timegraded", 0, "id", $assessment->id);
- set_field("exercise_assessments", "gradinggrade", 0, "id", $assessment->id);
-
- // any comment?
- if (!empty($form->generalcomment)) {
- set_field("exercise_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
- }
-
- // is user allowed to resubmit?
- if (isteacher($course->id)) {
- if (!$submission = get_record("exercise_submissions", "id", $assessment->submissionid)) {
- error ("Updateassessment: submission record not found");
- }
- if ($form->resubmit == 1) {
- set_field("exercise_submissions", "resubmit", 1, "id", $submission->id);
- }
- else {
- // clear resubmit flag
- set_field("exercise_submissions", "resubmit", 0, "id", $submission->id);
- }
- }
-
- add_to_log($course->id, "exercise", "assess", "view.php?id=$cm->id", "$assessment->id");
-
- // set up return address
- if (!$returnto = $form->returnto) {
- $returnto = "view.php?id=$cm->id";
- }
-
- // show grade if grading strategy is not zero
- if ($exercise->gradingstrategy) {
- redirect($returnto, "<p align=\"center\"><b>".get_string("thegradeis", "exercise").": ".
+ // echo "<P><B>".get_string("weightederrorcount", "exercise", intval($error + 0.5)).
+ // " ".get_string("adjustment", "exercise").": ".$form->grade[$i]."</B>\n";
+ // check the grade for sanity!
+ if ($grade > 100.0) {
+ $grade = 100.0;
+ }
+ if ($grade < 0.0) {
+ $grade = 0.0;
+ }
+ break;
+
+ case 3: // criteria grading
+ // save in the selected criteria value in element zero,
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = 0;
+ $element->grade = $form->grade[0];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ // now save the adjustment in element one
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = 1;
+ $element->grade = $form->grade[1];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]) * 100 / $exercise->grade;
+ // check the grade for sanity!
+ if ($grade >100.0) {
+ $grade = 100.0;
+ }
+ if ($grade < 0.0) {
+ $grade = 0.0;
+ }
+ 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->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $form->feedback[$key];
+ $element->grade = $thegrade;
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ // now work out the grade...
+ $rawgrade=0;
+ $totalweight=0;
+ foreach ($form->grade as $key => $grade) {
+ $maxscore = $elements[$key]->maxscore;
+ $weight = $EXERCISE_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("exercise_assessments", "timecreated", $timenow, "id", $assessment->id);
+ set_field("exercise_assessments", "grade", $grade, "id", $assessment->id);
+ // ...and clear any grading of this assessment (these assessments are never graded but...)
+ set_field("exercise_assessments", "timegraded", 0, "id", $assessment->id);
+ set_field("exercise_assessments", "gradinggrade", 0, "id", $assessment->id);
+
+ // any comment?
+ if (!empty($form->generalcomment)) {
+ set_field("exercise_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
+ }
+
+ // is user allowed to resubmit?
+ if (isteacher($course->id)) {
+ if (!$submission = get_record("exercise_submissions", "id", $assessment->submissionid)) {
+ error ("Updateassessment: submission record not found");
+ }
+ if ($form->resubmit == 1) {
+ set_field("exercise_submissions", "resubmit", 1, "id", $submission->id);
+ }
+ else {
+ // clear resubmit flag
+ set_field("exercise_submissions", "resubmit", 0, "id", $submission->id);
+ }
+ }
+
+ add_to_log($course->id, "exercise", "assess", "view.php?id=$cm->id", "$assessment->id");
+
+ // set up return address
+ if (!$returnto = $form->returnto) {
+ $returnto = "view.php?id=$cm->id";
+ }
+
+ // show grade if grading strategy is not zero
+ if ($exercise->gradingstrategy) {
+ redirect($returnto, "<p align=\"center\"><b>".get_string("thegradeis", "exercise").": ".
number_format($grade * $exercise->grade / 100.0, 1)." (".get_string("maximumgrade").
- " ".number_format($exercise->grade).")</b></p>", 1);
- }
- else {
- redirect($returnto);
- }
- }
-
-
- /****************** update teacher assessment (by teacher only) ***************************/
- elseif ($action == 'updateteacherassessment') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $timenow = time();
- $form = (object)$HTTP_POST_VARS;
-
-
- // first do the (teacher's) assessment of the student's submission
- if (! $submission = get_record("exercise_submissions", "id", $form->sid)) {
- error("Update teacher assessment: student's submission record not found");
- }
- if (!$assessment = exercise_get_submission_assessment($submission, $USER)) {
- error("Update teacher assessment: teacher's assessment record not found");
- }
-
- // first get the assignment elements for maxscores and weights...
- if (!$elementsraw = get_records("exercise_elements", "exerciseid", $exercise->id, "elementno ASC")) {
- print_string("noteonassignmentelements", "exercise");
- }
- else {
- foreach ($elementsraw as $element) {
- $elements[] = $element; // to renumber index 0,1,2...
- }
- }
+ " ".number_format($exercise->grade).")</b></p>", 1);
+ }
+ else {
+ redirect($returnto);
+ }
+ }
+
+
+ /****************** update teacher assessment (by teacher only) ***************************/
+ elseif ($action == 'updateteacherassessment') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $timenow = time();
+ $form = (object)$HTTP_POST_VARS;
+
+
+ // first do the (teacher's) assessment of the student's submission
+ if (! $submission = get_record("exercise_submissions", "id", $form->sid)) {
+ error("Update teacher assessment: student's submission record not found");
+ }
+ if (!$assessment = exercise_get_submission_assessment($submission, $USER)) {
+ error("Update teacher assessment: teacher's assessment record not found");
+ }
+
+ // first get the assignment elements for maxscores and weights...
+ if (!$elementsraw = get_records("exercise_elements", "exerciseid", $exercise->id, "elementno ASC")) {
+ print_string("noteonassignmentelements", "exercise");
+ }
+ else {
+ foreach ($elementsraw as $element) {
+ $elements[] = $element; // to renumber index 0,1,2...
+ }
+ }
// don't fiddle about, delete all the old and then add the new!
- delete_records("exercise_grades", "assessmentid", $assessment->id);
-
- //determine what kind of grading we have
- switch ($exercise->gradingstrategy) {
- case 0: // no grading
- // Insert all the elements that contain something
- foreach ($form->feedback as $key => $thefeedback) {
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $thefeedback;
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise 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->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $form->feedback[$key];
- $element->grade = $thegrade;
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- }
- // now work out the grade...
- $rawgrade=0;
- $totalweight=0;
- foreach ($form->grade as $key => $grade) {
- $maxscore = $elements[$key]->maxscore;
- $weight = $EXERCISE_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 < $exercise->nelements; $i++) {
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $i;
- $element->feedback = $form->feedback[$i];
- $element->grade = $form->grade[$i];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- if (empty($form->grade[$i])){
- $error += $EXERCISE_EWEIGHTS[$elements[$i]->weight];
- }
- }
- // now save the adjustment
- unset($element);
- $i = $exercise->nelements;
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $i;
- $element->grade = $form->grade[$i];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $exercise->grade;
- echo "<P><B>".get_string("weightederrorcount", "exercise", intval($error + 0.5))."</B>\n";
- break;
-
- case 3: // criteria grading
- // save in the selected criteria value in element zero,
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = 0;
- $element->grade = $form->grade[0];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- // now save the adjustment in element one
- unset($element);
- $element->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = 1;
- $element->grade = $form->grade[1];
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]) * 100 / $exercise->grade;
- 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->exerciseid = $exercise->id;
- $element->assessmentid = $assessment->id;
- $element->elementno = $key;
- $element->feedback = $form->feedback[$key];
- $element->grade = $thegrade;
- if (!$element->id = insert_record("exercise_grades", $element)) {
- error("Could not insert exercise element!");
- }
- }
- // now work out the grade...
- $rawgrade=0;
- $totalweight=0;
- foreach ($form->grade as $key => $grade) {
- $maxscore = $elements[$key]->maxscore;
- $weight = $EXERCISE_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("exercise_assessments", "timecreated", $timenow, "id", $assessment->id);
- set_field("exercise_assessments", "grade", $grade, "id", $assessment->id);
- // ...and clear any grading of this assessment (never needed but...)
- set_field("exercise_assessments", "timegraded", 0, "id", $assessment->id);
- set_field("exercise_assessments", "gradinggrade", 0, "id", $assessment->id);
-
- // any comment?
- if (!empty($form->generalcomment)) {
- set_field("exercise_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
- }
-
- // now calculate the (grading) grade of the student's assessment...
- if (!$stassessment = get_record("exercise_assessments", "id", $form->said)) {
- error("Update teacher assessment: student's assessment record not found");
- }
+ delete_records("exercise_grades", "assessmentid", $assessment->id);
+
+ //determine what kind of grading we have
+ switch ($exercise->gradingstrategy) {
+ case 0: // no grading
+ // Insert all the elements that contain something
+ foreach ($form->feedback as $key => $thefeedback) {
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $thefeedback;
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise 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->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $form->feedback[$key];
+ $element->grade = $thegrade;
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ // now work out the grade...
+ $rawgrade=0;
+ $totalweight=0;
+ foreach ($form->grade as $key => $grade) {
+ $maxscore = $elements[$key]->maxscore;
+ $weight = $EXERCISE_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 < $exercise->nelements; $i++) {
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $i;
+ $element->feedback = $form->feedback[$i];
+ $element->grade = $form->grade[$i];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ if (empty($form->grade[$i])){
+ $error += $EXERCISE_EWEIGHTS[$elements[$i]->weight];
+ }
+ }
+ // now save the adjustment
+ unset($element);
+ $i = $exercise->nelements;
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $i;
+ $element->grade = $form->grade[$i];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $exercise->grade;
+ echo "<P><B>".get_string("weightederrorcount", "exercise", intval($error + 0.5))."</B>\n";
+ break;
+
+ case 3: // criteria grading
+ // save in the selected criteria value in element zero,
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = 0;
+ $element->grade = $form->grade[0];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ // now save the adjustment in element one
+ unset($element);
+ $element->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = 1;
+ $element->grade = $form->grade[1];
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]) * 100 / $exercise->grade;
+ 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->exerciseid = $exercise->id;
+ $element->assessmentid = $assessment->id;
+ $element->elementno = $key;
+ $element->feedback = $form->feedback[$key];
+ $element->grade = $thegrade;
+ if (!$element->id = insert_record("exercise_grades", $element)) {
+ error("Could not insert exercise element!");
+ }
+ }
+ // now work out the grade...
+ $rawgrade=0;
+ $totalweight=0;
+ foreach ($form->grade as $key => $grade) {
+ $maxscore = $elements[$key]->maxscore;
+ $weight = $EXERCISE_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("exercise_assessments", "timecreated", $timenow, "id", $assessment->id);
+ set_field("exercise_assessments", "grade", $grade, "id", $assessment->id);
+ // ...and clear any grading of this assessment (never needed but...)
+ set_field("exercise_assessments", "timegraded", 0, "id", $assessment->id);
+ set_field("exercise_assessments", "gradinggrade", 0, "id", $assessment->id);
+
+ // any comment?
+ if (!empty($form->generalcomment)) {
+ set_field("exercise_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
+ }
+
+ // now calculate the (grading) grade of the student's assessment...
+ if (!$stassessment = get_record("exercise_assessments", "id", $form->said)) {
+ error("Update teacher assessment: student's assessment record not found");
+ }
$gradinggrade = exercise_compare_assessments($exercise, $assessment, $stassessment);
- // ...and save the grade for the assessment
- set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id", $stassessment->id);
- set_field("exercise_assessments", "timegraded", $timenow, "id", $stassessment->id);
- set_field("exercise_assessments", "mailed", 0, "id", $stassessment->id);
- echo "<CENTRE><B>".get_string("savedok", "exercise")."</B></CENTRE><BR>\n";
-
- add_to_log($course->id, "exercise", "grade", "view.php?id=$cm->id", "$stassessment->id");
-
+ // ...and save the grade for the assessment
+ set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id", $stassessment->id);
+ set_field("exercise_assessments", "timegraded", $timenow, "id", $stassessment->id);
+ set_field("exercise_assessments", "mailed", 0, "id", $stassessment->id);
+ echo "<CENTRE><B>".get_string("savedok", "exercise")."</B></CENTRE><BR>\n";
+
+ add_to_log($course->id, "exercise", "grade", "view.php?id=$cm->id", "$stassessment->id");
+
// is user allowed to resubmit?
- if ($form->resubmit == 1) {
- set_field("exercise_submissions", "resubmit", 1, "id", $submission->id);
- }
- else {
- // clear resubmit flag
- set_field("exercise_submissions", "resubmit", 0, "id", $submission->id);
- }
-
- add_to_log($course->id, "exercise", "assess", "view.php?id=$cm->id", "$assessment->id");
-
- // set up return address
- if (!$returnto = $form->returnto) {
- $returnto = "view.php?id=$cm->id";
- }
-
- // show grade if grading strategy is not zero
- if ($exercise->gradingstrategy) {
+ if ($form->resubmit == 1) {
+ set_field("exercise_submissions", "resubmit", 1, "id", $submission->id);
+ }
+ else {
+ // clear resubmit flag
+ set_field("exercise_submissions", "resubmit", 0, "id", $submission->id);
+ }
+
+ add_to_log($course->id, "exercise", "assess", "view.php?id=$cm->id", "$assessment->id");
+
+ // set up return address
+ if (!$returnto = $form->returnto) {
+ $returnto = "view.php?id=$cm->id";
+ }
+
+ // show grade if grading strategy is not zero
+ if ($exercise->gradingstrategy) {
redirect($returnto, "<p align=\"center\"><b>".get_string("gradeforstudentsassessment",
"exercise", $course->student).": ".number_format($gradinggrade * $exercise->gradinggrade / 100.0, 1).
" (".get_string("maximumgrade")." ".number_format($exercise->gradinggrade, 1).")</b></p><p><b>".
get_string("thegradeis", "exercise").": ".number_format($grade * $exercise->grade / 100.0, 1).
" (".get_string("maximumgrade")." ".number_format($exercise->grade, 1).")</b></p>");
- }
- else {
- redirect($returnto);
- }
- }
+ }
+ else {
+ redirect($returnto);
+ }
+ }
- /****************** update grading grade(by teacher) ***************************/
- elseif ($action == 'updategradinggrade') {
+ /****************** update grading grade(by teacher) ***************************/
+ elseif ($action == 'updategradinggrade') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
require_variable($aid);
// normalise gradinggrade
$gradinggrade = $_POST['gradinggrade'] * 100 / $exercise->gradinggrade;
- if (!set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id",
+ if (!set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id",
$_POST['aid'])) {
- error("Update grading grade: asseesment not updated");
- }
+ error("Update grading grade: asseesment not updated");
+ }
redirect("submissions.php?id=$cm->id&action=adminlist", get_string("savedok", "exercise"), 1);
- }
-
-
- /****************** user confirm delete ************************************/
- elseif ($action == 'userconfirmdelete' ) {
-
- if (empty($_GET['aid'])) {
- error("User confirm delete: assessment id missing");
- }
-
- notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("assessment", "exercise")),
- "assessments.php?action=userdelete&id=$cm->id&aid=$_GET[aid]", "view.php?id=$cm->id");
- }
-
-
- /****************** user delete ************************************/
- elseif ($action == 'userdelete' ) {
-
- if (empty($_GET['aid'])) {
- error("User delete: assessment id missing");
- }
-
- print_string("deleting", "exercise");
- // first delete all the associated records...
- delete_records("exercise_grades", "assessmentid", $_GET['aid']);
- // ...now delete the assessment...
- delete_records("exercise_assessments", "id", $_GET['aid']);
-
- print_continue("view.php?id=$cm->id");
- }
-
-
- /****************** view assessment ***********************/
- elseif ($action == 'viewassessment') {
-
- // get the assessment record
- if (!$assessment = get_record("exercise_assessments", "id", $_GET['aid'])) {
- error("Assessment record not found");
- }
-
- // show assessment but don't allow changes
- exercise_print_assessment_form($exercise, $assessment);
-
- print_continue("view.php?id=$cm->id");
- }
-
-
- /*************** no man's land **************************************/
- else {
- error("Fatal Error: Unknown Action: ".$action."\n");
- }
-
- print_footer($course);
+ }
+
+
+ /****************** user confirm delete ************************************/
+ elseif ($action == 'userconfirmdelete' ) {
+
+ if (empty($_GET['aid'])) {
+ error("User confirm delete: assessment id missing");
+ }
+
+ notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("assessment", "exercise")),
+ "assessments.php?action=userdelete&id=$cm->id&aid=$_GET[aid]", "view.php?id=$cm->id");
+ }
+
+
+ /****************** user delete ************************************/
+ elseif ($action == 'userdelete' ) {
+
+ if (empty($_GET['aid'])) {
+ error("User delete: assessment id missing");
+ }
+
+ print_string("deleting", "exercise");
+ // first delete all the associated records...
+ delete_records("exercise_grades", "assessmentid", $_GET['aid']);
+ // ...now delete the assessment...
+ delete_records("exercise_assessments", "id", $_GET['aid']);
+
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /****************** view assessment ***********************/
+ elseif ($action == 'viewassessment') {
+
+ // get the assessment record
+ if (!$assessment = get_record("exercise_assessments", "id", $_GET['aid'])) {
+ error("Assessment record not found");
+ }
+
+ // show assessment but don't allow changes
+ exercise_print_assessment_form($exercise, $assessment);
+
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /*************** no man's land **************************************/
+ else {
+ error("Fatal Error: Unknown Action: ".$action."\n");
+ }
+
+ print_footer($course);
?>
$USER->lang = $submissionowner->lang;
$sendto = $submissionowner;
// "Your assignment \"$submission->title\" has been assessed by"
- $msg = get_string("mail1", "exercise", $submission->title)." $assessmentowner->firstname $assessmentowner->lastname.\n";
+ $msg = get_string("mail1", "exercise", $submission->title).' '.fullname($assessmentowner).".\n";
// "The comments and grade can be seen in the exercise assignment '$exercise->name'
$msg .= get_string("mail2", "exercise", $exercise->name)."\n\n";
//Obtain the visible property from the instance
if (instance_is_visible("exercise",$tempmod)) {
$date = userdate($log->time, $strftimerecent);
- echo "<p><font size=1>$date - $log->firstname $log->lastname<br />";
+ echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />';
echo "\"<a href=\"$CFG->wwwroot/mod/exercise/$log->url\">";
echo "$log->name";
echo "</a>\"</font></p>";
//Obtain the visible property from the instance
if (instance_is_visible("exercise",$tempmod)) {
$date = userdate($log->time, $strftimerecent);
- echo "<p><font size=1>$date - $log->firstname $log->lastname<br />";
+ echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />';
echo "\"<a href=\"$CFG->wwwroot/mod/exercise/$log->url\">";
echo "$log->name";
echo "</a>\"</font></p>";
//Obtain the visible property from the instance
if (instance_is_visible("exercise",$tempmod)) {
$date = userdate($log->time, $strftimerecent);
- echo "<p><font size=1>$date - $log->firstname $log->lastname<br />";
+ echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />';
echo "\"<a href=\"$CFG->wwwroot/mod/exercise/$log->url\">";
echo "$log->name";
echo "</a>\"</font></p>";
$action ="";
}
$nassessments++;
- $table->data[] = array("$user->firstname $user->lastname", $title,
+ $table->data[] = array(fullname($user), $title,
userdate($assessment->timecreated), $action);
}
}
if ($submission->late) {
$datesubmitted = "<font color=\"red\">".$datesubmitted."</font>";
}
- $table->data[] = array("$user->firstname $user->lastname", $title.
+ $table->data[] = array(fullname($user), $title.
" ".exercise_print_submission_assessments($exercise, $submission),
$datesubmitted, $action);
$nsubmissions++;
$action = "<A HREF=\"assessments.php?action=teacherassessment&id=$cm->id&aid=$studentassessment->id&sid=$submission->id\">".
get_string("edit", "exercise")."</A>";
$table->data[] = array(exercise_print_submission_title($exercise, $submission),
- $submissionowner->firstname." ".$submissionowner->lastname,
+ fullname($submissionowner),
$timegap, $action, $comment);
} else {
$action = "<A HREF=\"assessments.php?action=teacherassessment&id=$cm->id&aid=$studentassessment->id&sid=$submission->id\">".
get_string("assess", "exercise")."</A>";
$table->data[] = array(exercise_print_submission_title($exercise, $submission),
- $submissionowner->firstname." ".$submissionowner->lastname,
+ fullname($submissionowner),
$timegap, $action, $comment);
}
} else {
error("List unassessed student submissions: teacher record not found");
}
$comment = get_string("resubmissionfor", "exercise",
- "$teacher->firstname $teacher->lastname");
+ fullname($teacher));
if ($assessment->timecreated > $timenow - $CFG->maxeditingtime) {
$warm = true;
}
$timegap = "<font color=\"red\">".$timegap."</font>";
}
$table->data[] = array(exercise_print_submission_title($exercise, $submission),
- $submissionowner->firstname." ".$submissionowner->lastname,
+ fullname($submissionowner),
$timegap, $action, $comment);
}
if (!$teacherassessed) {
error("List unassessed student submissions: teacher record not found");
}
$comment = get_string("resubmissionfor", "exercise",
- "$teacher->firstname $teacher->lastname");
+ fullname($teacher));
break; // no need to look further
}
$timegap = "<font color=\"red\">".$timegap."</font>";
}
$table->data[] = array(exercise_print_submission_title($exercise, $submission),
- $submissionowner->firstname." ".$submissionowner->lastname,
+ fullname($submissionowner),
$timegap, $action, $comment);
}
}
$submissionowner = get_record("user", "id", $submission->userid);
$assessor = get_record("user", "id", $assessment->userid);
$table->data[] = array(exercise_print_submission_title($exercise, $submission),
- $submissionowner->firstname." ".$submissionowner->lastname,
- $assessor->firstname." ".$assessor->lastname, userdate($assessment->timecreated), $action);
+ fullname($submissionowner),
+ fullname($assessor), userdate($assessment->timecreated), $action);
}
}
if (isset($table->data)) {
}
if ($exercisefound) {
print_heading(get_string("theexerciseandthesubmissionby", "exercise",
- "$submissionowner->firstname $submissionowner->lastname"));
+ fullname($submissionowner)));
echo "<CENTER><TABLE BORDER=\"1\" WIDTH=\"30%\"><TR>
<TD ALIGN=CENTER BGCOLOR=\"$THEME->cellcontent\">\n";
echo exercise_print_submission_title($exercise, $teachersubmission);
$formtitle = get_string("yourassessment", "exercise");
}
else {
- $formtitle = get_string("assessmentby", "exercise", "$assessmentowner->firstname $assessmentowner->lastname");
+ $formtitle = get_string("assessmentby", "exercise", fullname($assessmentowner));
}
}
else {
if ($assessments =exercise_get_user_assessments($exercise, $user)) {
foreach ($assessments as $assessment) {
- echo "<p><center><b>".get_string("assessmentby", "exercise", $user->firstname." ".$user->lastname)."</b></center></p>\n";
+ echo "<p><center><b>".get_string("assessmentby", "exercise", fullname($user))."</b></center></p>\n";
exercise_print_assessment_form($exercise, $assessment);
echo "<p align=\"right\"><a href=\"assessments.php?action=adminamendgradinggrade&id=$cm->id&aid=$assessment->id\">".
get_string("amend", "exercise")." ".get_string("gradeforstudentsassessment","exercise",
if (!$user = get_record("user", "id", $assessment->userid)) {
error (" exercise_print_assessments_for_admin: unable to get user record");
}
- echo "<p><center><b>".get_string("assessmentby", "exercise", $user->firstname." ".$user->lastname)."</b></center></p>\n";
+ echo "<p><center><b>".get_string("assessmentby", "exercise", fullname($user))."</b></center></p>\n";
exercise_print_assessment_form($exercise, $assessment);
echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&id=$cm->id&aid=$assessment->id\">".
get_string("delete", "exercise")."</a></p><hr>\n";
echo "\n<TD ROWSPAN=3 BGCOLOR=\"$THEME->body\" WIDTH=35 VALIGN=TOP>";
print_user_picture($teacher->id, $course->id, $teacher->picture);
echo "</TD>";
- echo "<TD NOWRAP WIDTH=100% BGCOLOR=\"$THEME->cellheading\">$teacher->firstname $teacher->lastname";
+ echo "<TD NOWRAP WIDTH=100% BGCOLOR=\"$THEME->cellheading\">".fullname($teacher);
echo " <FONT SIZE=2><I>".userdate($submission->timemarked)."</I>";
echo "</TR>";
number_format($submission->grade * $exercise->grade / 100.0, 1));
} else {
$table->data[] = array(exercise_print_submission_title($exercise, $submission),
- $user->firstname." ".$user->lastname,
+ fullname($user),
number_format($submission->grade * $exercise->grade / 100.0, 1));
}
$n++;
echo exercise_print_submission_title($exercise, $submission);
echo "</TD></TR></TABLE></center><BR CLEAR=ALL>\n";
- ?>
- <form name="assessmentform" method="post" action="assessments.php">
- <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
- <input type="hidden" name="said" value="<?PHP echo $assessment->id ?>">
- <input type="hidden" name="sid" value="<?PHP echo $submission->id ?>">
- <input type="hidden" name="action" value="updateteacherassessment">
- <input type="hidden" name="resubmit" value="0">
- <input type="hidden" name="returnto" value="<?PHP echo $returnto ?>">
- <?PHP
+ ?>
+ <form name="assessmentform" method="post" action="assessments.php">
+ <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
+ <input type="hidden" name="said" value="<?PHP echo $assessment->id ?>">
+ <input type="hidden" name="sid" value="<?PHP echo $submission->id ?>">
+ <input type="hidden" name="action" value="updateteacherassessment">
+ <input type="hidden" name="resubmit" value="0">
+ <input type="hidden" name="returnto" value="<?PHP echo $returnto ?>">
+ <?PHP
// now print a normal assessment form based on the student's assessment for this submission
// and allow the teacher to grade and add additional comments
$allowchanges = true;
print_heading_with_help(get_string("pleasemakeyourownassessment", "exercise",
- "$submissionowner->firstname $submissionowner->lastname"), "grading", "exercise");
+ fullname($submissionowner)), "grading", "exercise");
// is there an existing assessment for the submission
if (!$assessment = exercise_get_submission_assessment($submission, $USER)) {
$j++;
}
$grandtotal += $total;
- $table->data[] = array_merge(array("$teacher->firstname $teacher->lastname"), array($total), $n);
+ $table->data[] = array_merge(array(fullname($teacher)), array($total), $n);
}
$table->data[] = array_merge(array(get_string("total")), array($grandtotal), $grand);
print_heading(get_string("teacherassessmenttable", "exercise", $course->teacher));
$grade = "<font color=\"red\">(".$grade.")</font>";
$overallgrade = "<font color=\"red\">(".$overallgrade.")</font>";
}
- echo "<tr><td>$user->firstname $user->lastname</td>\n";
+ echo "<tr><td>".fullname($user)."</td>\n";
echo "<td>".exercise_print_submission_title($exercise, $submission)."</td>\n";
echo "<td align=\"center\">$gradinggrade</td>";
echo "<td align=\"center\">$grade</td>";
ORDER BY u.email ASC");
}
+
+
/// OTHER FUNCTIONS ///////////////////////////////////////////////////////////
return "";
}
- $info->name = "$USER->firstname $USER->lastname";
+ $info->name = fullname($USER);
$info->forum = $forum->name;
if (!empty($post->subscribe)) {
}
echo "<td>";
print_user_picture($rating->id, $forum->course, $rating->picture);
- echo "<td nowrap><p><font size=-1>$rating->firstname $rating->lastname</p>";
- echo "<td nowrap align=center><p><font size=-1>".$scalemenu[$rating->rating]."</p>";
- echo "<td nowrap align=center><p><font size=-1>".userdate($rating->time)."</p>";
+ echo '<td nowrap><p><font size="-1">'.fullname($rating).'</p>';
+ echo '<td nowrap align="center"><p><font size="-1">'.$scalemenu[$rating->rating]."</p>";
+ echo '<td nowrap align="center"><p><font size="-1">'.userdate($rating->time)."</p>";
echo "</tr>\n";
}
echo "</table>";
}
echo "<td>";
print_user_picture($rating->id, $glossary->course, $rating->picture);
- echo "<td nowrap><p><font size=-1>$rating->firstname $rating->lastname</p>";
- echo "<td nowrap align=center><p><font size=-1>".$scalemenu[$rating->rating]."</p>";
- echo "<td nowrap align=center><p><font size=-1>".userdate($rating->time)."</p>";
+ echo '<td nowrap><p><font size="-1">'.fullname($rating).'</p>';
+ echo '<td nowrap align="center"><p><font size="-1">'.$scalemenu[$rating->rating]."</p>";
+ echo '<td nowrap align="center"><p><font size="-1">'.userdate($rating->time)."</p>";
echo "</tr>\n";
}
echo "</table>";
<?PHP // $Id: lib.php,v 1.1 22 Aug 2003
/*************************************************
- 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
+ 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
************************************************/
require("../../config.php");
- require("lib.php");
+ require("lib.php");
require("locallib.php");
- optional_variable($id); // Course Module ID
+ optional_variable($id); // Course Module ID
optional_variable($a); // workshop ID
// get some useful stuff...
- if ($id) {
+ if ($id) {
if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect");
}
}
require_login($course->id);
-
+
$navigation = "";
if ($course->category) {
$navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->";
$strworkshop = get_string("modulename", "workshop");
$strassessments = get_string("assessments", "workshop");
- // ... print the header and...
+ // ... 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",
"", "", 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";\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&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");
- }\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",
+ //...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",
$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");
- }\r
-
-
- /*************** 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?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;
+ }
+ }
- 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";\r
- echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n";\r
- 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";\r
- echo " <TD ALIGN=RIGHT><P><B>". get_string("grade","workshop")." $j:</B></TD>\n";\r
- echo "<TD><textarea name=\"rubric[$i][$j]\" rows=3 cols=75 wrap=\"virtual\">".$rubrics[$i][$j]."</textarea>\n";\r
- echo " </TD></TR>\n";
- }
- echo "<TR valign=top>\n";\r
- echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\"> </TD>\n";\r
- 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>\r
- </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", $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";\r
- echo " <TD>\n";\r
- echo " <textarea name=\"teachercomment\" rows=5 cols=75 wrap=\"virtual\">\n";
- if (isset($assessment->teachercomment)) {
- echo $assessment->teachercomment;
- }
- echo "</textarea>\n";\r
- echo " </TD>\n";\r
- echo "</TR>\n";\r
- 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";
- }\r
-
-
- /*************** 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");
- }\r
-
-
- /*********************** 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");
- }
-
-
- /*************** update assessment (by teacher or student) ***************************/
- elseif ($action == 'updateassessment') {
-
- require_variable($aid);
- if (! $assessment = get_record("workshop_assessments", "id", $aid)) {
- error("workshop assessment is misconfigured");
- }
-
- // first get the assignment elements for maxscores and weights...
- $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
+ 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");
+ }
+
+
+ /*************** update assessment (by teacher or student) ***************************/
+ elseif ($action == 'updateassessment') {
+
+ require_variable($aid);
+ if (! $assessment = get_record("workshop_assessments", "id", $aid)) {
+ error("workshop assessment is misconfigured");
+ }
+
+ // first get the assignment elements for maxscores and weights...
+ $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
if (count($elementsraw) < $workshop->nelements) {
- print_string("noteonassignmentelements", "workshop");
- }
- if ($elementsraw) {
- foreach ($elementsraw as $element) {
- $elements[] = $element; // to renumber index 0,1,2...
- }
- } else {
+ print_string("noteonassignmentelements", "workshop");
+ }
+ if ($elementsraw) {
+ foreach ($elementsraw as $element) {
+ $elements[] = $element; // to renumber index 0,1,2...
+ }
+ } else {
$elements = null;
}
- $timenow = time();
+ $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!");
- }
- // 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
+ 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!");
+ }
+ // 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
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);
- }
-
- add_to_log($course->id, "workshop", "assess",
+ 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");
-
- // set up return address
- if (!$returnto = $form->returnto) {
- $returnto = "view.php?id=$cm->id";
- }
-
- // show grade if grading strategy is not zero
- if ($workshop->gradingstrategy) {
- redirect($returnto, get_string("thegradeis", "workshop").": ".number_format($grade, 2).
+
+ // set up return address
+ if (!$returnto = $form->returnto) {
+ $returnto = "view.php?id=$cm->id";
+ }
+
+ // show grade if grading strategy is not zero
+ if ($workshop->gradingstrategy) {
+ redirect($returnto, get_string("thegradeis", "workshop").": ".number_format($grade, 2).
" (".get_string("maximumgrade")." ".number_format($workshop->grade).")");
- }
- else {
- redirect($returnto);
- }
- }
-
-
- /****************** update comment (by author, assessor or teacher) ********************/
- elseif ($action == 'updatecomment') {
- $timenow = time();
-
- $form = (object)$_POST;
-
- // get the comment record...
- if (!$comment = get_record("workshop_comments", "id", $_POST['cid'])) {
- error("Update to Comment failed");
- }
- if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
- error("Update Comment: Assessment not found");
- }
- //save the comment for the assessment...
- if (isset($form->comments)) {
- set_field("workshop_comments", "comments", $form->comments, "id", $comment->id);
- set_field("workshop_comments", "timecreated", $timenow, "id", $comment->id);
- // ..and kick to comment into life (probably not needed but just in case)
- set_field("workshop_comments", "mailed", 0, "id", $comment->id);
- echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTER><BR>\n";
-
- add_to_log($course->id, "workshop", "comment",
+ }
+ else {
+ redirect($returnto);
+ }
+ }
+
+
+ /****************** update comment (by author, assessor or teacher) ********************/
+ elseif ($action == 'updatecomment') {
+ $timenow = time();
+
+ $form = (object)$_POST;
+
+ // get the comment record...
+ if (!$comment = get_record("workshop_comments", "id", $_POST['cid'])) {
+ error("Update to Comment failed");
+ }
+ if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
+ error("Update Comment: Assessment not found");
+ }
+ //save the comment for the assessment...
+ if (isset($form->comments)) {
+ set_field("workshop_comments", "comments", $form->comments, "id", $comment->id);
+ set_field("workshop_comments", "timecreated", $timenow, "id", $comment->id);
+ // ..and kick to comment into life (probably not needed but just in case)
+ set_field("workshop_comments", "mailed", 0, "id", $comment->id);
+ echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTER><BR>\n";
+
+ add_to_log($course->id, "workshop", "comment",
"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$comment->id");
- }
-
- print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id");
- }
-
-
- /****************** update grading (by teacher) ***************************/
- elseif ($action == 'updategrading') {
- $timenow = time();
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $form = (object)$_POST;
-
- if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
- error("Update Grading failed");
- }
- //save the comment and grade for the assessment
- if (isset($form->teachercomment)) {
- set_field("workshop_assessments", "teachercomment", $form->teachercomment, "id", $assessment->id);
- set_field("workshop_assessments", "gradinggrade", $form->gradinggrade, "id", $assessment->id);
- set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
- set_field("workshop_assessments", "mailed", 0, "id", $assessment->id);
- echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTRE><BR>\n";
-
- add_to_log($course->id, "workshop", "grade",
+ }
+
+ print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id");
+ }
+
+
+ /****************** update grading (by teacher) ***************************/
+ elseif ($action == 'updategrading') {
+ $timenow = time();
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $form = (object)$_POST;
+
+ if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
+ error("Update Grading failed");
+ }
+ //save the comment and grade for the assessment
+ if (isset($form->teachercomment)) {
+ set_field("workshop_assessments", "teachercomment", $form->teachercomment, "id", $assessment->id);
+ set_field("workshop_assessments", "gradinggrade", $form->gradinggrade, "id", $assessment->id);
+ set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
+ set_field("workshop_assessments", "mailed", 0, "id", $assessment->id);
+ echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTRE><BR>\n";
+
+ add_to_log($course->id, "workshop", "grade",
"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
- }
- switch ($form->stype) {
- case "student" :
- redirect("assessments.php?action=listungradedstudentsubmissions&id=$cm->id");
- break;
- case "teacher" :
- redirect("assessments.php?action=listungradedteachersubmissions&id=$cm->id");
- break;
- }
- }
-
-
- /****************** user confirm delete ************************************/
- elseif ($action == 'userconfirmdelete' ) {
-
- if (empty($_GET['aid'])) {
- error("User confirm delete: assessment id missing");
- }
-
- notice_yesno(get_string("confirmdeletionofthisitem","workshop",
+ }
+ switch ($form->stype) {
+ case "student" :
+ redirect("assessments.php?action=listungradedstudentsubmissions&id=$cm->id");
+ break;
+ case "teacher" :
+ redirect("assessments.php?action=listungradedteachersubmissions&id=$cm->id");
+ break;
+ }
+ }
+
+
+ /****************** user confirm delete ************************************/
+ elseif ($action == 'userconfirmdelete' ) {
+
+ if (empty($_GET['aid'])) {
+ error("User confirm delete: assessment id missing");
+ }
+
+ notice_yesno(get_string("confirmdeletionofthisitem","workshop",
get_string("assessment", "workshop")),
"assessments.php?action=userdelete&id=$cm->id&aid=$_GET[aid]", "view.php?id=$cm->id");
- }
-
-
- /****************** 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");
- }
-
- print_footer($course);
+ }
+
+
+ /****************** 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");
+ }
+
+ print_footer($course);
?>
<?PHP // $Id: lib.php,v 1.1 22 Aug 2003
/*************************************************
- ACTIONS handled are:
+ ACTIONS handled are:
- adminconfirmdelete
- admindelete
- adminlist
+ adminconfirmdelete
+ admindelete
+ adminlist
analysisofassessments
- calculatefinalgrades
- displayfinalgrades (teachers only)
- displayfinalweights
- listallsubmissions
- listforassessmentstudent
- listforassessmentteacher
- updateoverallocation
- userconfirmdelete
- userdelete
-
+ calculatefinalgrades
+ displayfinalgrades (teachers only)
+ displayfinalweights
+ listallsubmissions
+ listforassessmentstudent
+ listforassessmentteacher
+ updateoverallocation
+ userconfirmdelete
+ userdelete
+
************************************************/
require("lib.php");
require("locallib.php");
- optional_variable($id); // Course Module ID
+ optional_variable($id); // Course Module ID
optional_variable($a); // workshop ID
// get some useful stuff...
- if ($id) {
+ if ($id) {
if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect");
}
$strworkshop = get_string("modulename", "workshop");
$strsubmissions = get_string("submissions", "workshop");
- // ... print the header and...
+ // ... 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> -> $strsubmissions",
"", "", true);
- //...get the action or set up an suitable default
- optional_variable($action);
- if (empty($action)) {
- $action = "listallsubmissions";
- }
-
-
- /******************* admin amend title ************************************/
- if ($action == 'adminamendtitle' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['sid'])) {
- error("Admin Amend Title: submission id missing");
- }
-
- $submission = get_record("workshop_submissions", "id", $_GET['sid']);
- print_heading(get_string("amendtitle", "workshop"));
- ?>
- <form name="amendtitleform" action="submissions.php" method="post">
- <input type="hidden" name="action" value="adminupdatetitle">
- <input type="hidden" name="id" value="<?PHP echo $cm->id ?>">
- <input type="hidden" name="sid" value="<?PHP echo $_REQUEST['sid'] ?>">
- <center>
- <table celpadding="5" border="1">
- <?PHP
-
- // now get the comment
- echo "<tr valign=\"top\">\n";
- echo " <td align=\"right\"><P><B>". get_string("title", "workshop").":</b></p></td>\n";
- echo " <td>\n";
- echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n";
- echo " </td></tr></table>\n";
- echo "<input type=submit VALUE=\"".get_string("amendtitle", "workshop")."\">\n";
- echo "</center></form>\n";
-
- }
-
-
- /******************* admin confirm delete ************************************/
- elseif ($action == 'adminconfirmdelete' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['sid'])) {
- error("Admin confirm delete: submission id missing");
- }
-
- notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")),
- "submissions.php?action=admindelete&id=$cm->id&sid=$_GET[sid]", "submissions.php?id=$cm->id&action=adminlist");
- }
-
-
- /******************* admin delete ************************************/
- elseif ($action == 'admindelete' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['sid'])) {
- error("Admin delete: submission id missing");
- }
-
- if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
- error("Admin delete: can not get submission record");
- }
- print_string("deleting", "workshop");
- // first get any assessments...
- if ($assessments = workshop_get_assessments($submission, 'ALL')) {
- foreach($assessments as $assessment) {
- // ...and all the associated records...
- delete_records("workshop_comments", "assessmentid", $assessment->id);
- delete_records("workshop_grades", "assessmentid", $assessment->id);
- echo ".";
- }
- // ...now delete the assessments...
- delete_records("workshop_assessments", "submissionid", $submission->id);
- }
- // ...and the submission record...
- delete_records("workshop_submissions", "id", $submission->id);
- // ..and finally the submitted file
- workshop_delete_submitted_files($workshop, $submission);
-
- print_continue("submissions.php?id=$cm->id&action=adminlist");
- }
-
-
- /******************* list all submissions ************************************/
- elseif ($action == 'adminlist' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_GET['order'])) {
- $order = "name";
- }
- else {
- $order = $_GET['order'];
- }
-
- workshop_list_submissions_for_admin($workshop, $order);
- print_continue("view.php?id=$cm->id");
-
- }
-
-
- /******************* admin update title ************************************/
- elseif ($action == 'adminupdatetitle' ) {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
- if (empty($_POST['sid'])) {
- error("Admin Update Title: submission id missing");
- }
-
- if (set_field("workshop_submissions", "title", $_POST['title'], "id", $_POST['sid'])) {
- print_heading(get_string("amendtitle", "workshop")." ".get_string("ok"));
- }
- print_continue("submissions.php?id=$cm->id&action=adminlist");
- }
-
-
- /*************** analysis of assessments (by teacher) ***************************/
- elseif ($action == 'analysisofassessments') {
+ //...get the action or set up an suitable default
+ optional_variable($action);
+ if (empty($action)) {
+ $action = "listallsubmissions";
+ }
+
+
+ /******************* admin amend title ************************************/
+ if ($action == 'adminamendtitle' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['sid'])) {
+ error("Admin Amend Title: submission id missing");
+ }
+
+ $submission = get_record("workshop_submissions", "id", $_GET['sid']);
+ print_heading(get_string("amendtitle", "workshop"));
+ ?>
+ <form name="amendtitleform" action="submissions.php" method="post">
+ <input type="hidden" name="action" value="adminupdatetitle">
+ <input type="hidden" name="id" value="<?PHP echo $cm->id ?>">
+ <input type="hidden" name="sid" value="<?PHP echo $_REQUEST['sid'] ?>">
+ <center>
+ <table celpadding="5" border="1">
+ <?PHP
+
+ // now get the comment
+ echo "<tr valign=\"top\">\n";
+ echo " <td align=\"right\"><P><B>". get_string("title", "workshop").":</b></p></td>\n";
+ echo " <td>\n";
+ echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n";
+ echo " </td></tr></table>\n";
+ echo "<input type=submit VALUE=\"".get_string("amendtitle", "workshop")."\">\n";
+ echo "</center></form>\n";
+
+ }
+
+
+ /******************* admin confirm delete ************************************/
+ elseif ($action == 'adminconfirmdelete' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['sid'])) {
+ error("Admin confirm delete: submission id missing");
+ }
+
+ notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")),
+ "submissions.php?action=admindelete&id=$cm->id&sid=$_GET[sid]", "submissions.php?id=$cm->id&action=adminlist");
+ }
+
+
+ /******************* admin delete ************************************/
+ elseif ($action == 'admindelete' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['sid'])) {
+ error("Admin delete: submission id missing");
+ }
+
+ if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
+ error("Admin delete: can not get submission record");
+ }
+ print_string("deleting", "workshop");
+ // first get any assessments...
+ if ($assessments = workshop_get_assessments($submission, 'ALL')) {
+ foreach($assessments as $assessment) {
+ // ...and all the associated records...
+ delete_records("workshop_comments", "assessmentid", $assessment->id);
+ delete_records("workshop_grades", "assessmentid", $assessment->id);
+ echo ".";
+ }
+ // ...now delete the assessments...
+ delete_records("workshop_assessments", "submissionid", $submission->id);
+ }
+ // ...and the submission record...
+ delete_records("workshop_submissions", "id", $submission->id);
+ // ..and finally the submitted file
+ workshop_delete_submitted_files($workshop, $submission);
+
+ print_continue("submissions.php?id=$cm->id&action=adminlist");
+ }
+
+
+ /******************* list all submissions ************************************/
+ elseif ($action == 'adminlist' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_GET['order'])) {
+ $order = "name";
+ }
+ else {
+ $order = $_GET['order'];
+ }
+
+ workshop_list_submissions_for_admin($workshop, $order);
+ print_continue("view.php?id=$cm->id");
+
+ }
+
+
+ /******************* admin update title ************************************/
+ elseif ($action == 'adminupdatetitle' ) {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+ if (empty($_POST['sid'])) {
+ error("Admin Update Title: submission id missing");
+ }
+
+ if (set_field("workshop_submissions", "title", $_POST['title'], "id", $_POST['sid'])) {
+ print_heading(get_string("amendtitle", "workshop")." ".get_string("ok"));
+ }
+ print_continue("submissions.php?id=$cm->id&action=adminlist");
+ }
+
+
+ /*************** 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");
- }
+ 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);
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;
- }
+ for ($i = 0; $i <= 100; $i++) {
+ $numbers[$i] = $i;
+ }
choose_from_menu($numbers, "assessmentstodrop", $assessmentstodrop, "");
echo "</TD></TR>\n";
echo "</TABLE><br />\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;
+ 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);
}
}
}
- }
+ }
reset($num);
if (!$loop) {
echo "<p>".get_string("numberofsubmissions", "workshop", count($num))."</p>\n";
} else {
$vargood[$userid] = 0;
}
- // echo "$user->firstname $user->lastname Error: {$newassessors[$userid]}; n: $n<br />\n";
- }
+ // echo fullname($user)." Error: {$newassessors[$userid]}; n: $n<br />\n";
+ }
// echo "<hr>\n";
// 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"),
+ $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;
+ $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)) {
+ foreach ($assessors as $userid => $error) {
+ if (!$user = get_record("user", "id", $userid)) {
error("Assessment analysis: user record not found");
}
if ($vargood[$userid]) {
number_format($error * 100 / $varguess, 2)."%", $vargoodtext,
$numtext);
$n++;
- }
- print_table($table);
+ }
+ 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"),
+ $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->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) {
+ foreach ($students as $user) {
if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
$n = 0;
foreach ($assessments as $assessment) {
}
$finalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight] +
$submissiongrade) / ($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0);
- if ($n) {
+ if ($n) {
$table->data[] = array(fullname($user),
workshop_print_submission_title($workshop, $submission),
workshop_print_user_assessments($workshop, $user),
number_format($submissiongrade, 2),
number_format($finalgrade, 2));
} else {
- $table->data[] = array(fullname($user),
+ $table->data[] = array(fullname($user),
workshop_print_submission_title($workshop, $submission),
workshop_print_user_assessments($workshop, $user),
number_format($assessmentgrade, 2),
// no submissions
$finalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight]) /
($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0);
- $table->data[] = array(fullname($user),
+ $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);
+ }
+ print_table($table);
echo "<p>< > ".get_string("assessmentdropped", "workshop")."</p>\n";
echo "</CENTER>";
- print_continue("view.php?a=$workshop->id");
+ 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");
- }
-
- // 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);
+ /*************** calculate final grades (by teacher) ***************************/
+ elseif ($action == 'calculatefinalgrades') {
+
+ $form = (object)$_POST;
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ // 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";
+ $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' ) {
-
+ 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' ) {
+
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",
+ 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"));
-
- }
-
-
- /*************** update (league table options teacher) ***************************/
- elseif ($action == 'updateleaguetable') {
-
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
-
- $form = (object)$_POST;
-
- // 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");
- add_to_log($course->id, "workshop", "league table", "view.php?id=$cm->id", $form->nentries, $cm->id);
-
- redirect("submissions.php?action=adminlist&id=$cm->id");
- }
-
-
- /*************** 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 (empty($_GET['sid'])) {
- error("User Confirm Delete: submission id missing");
- }
-
- notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")),
- "submissions.php?action=userdelete&id=$cm->id&sid=$_GET[sid]", "view.php?id=$cm->id");
- }
-
-
- /******************* user delete ************************************/
- elseif ($action == 'userdelete' ) {
-
- if (empty($_GET['sid'])) {
- error("User Delete: submission id missing");
- }
-
- if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
- error("User Delete: can not get submission record");
- }
- print_string("deleting", "workshop");
- // first get any assessments...
- if ($assessments = workshop_get_assessments($submission, 'ALL')) {
- foreach($assessments as $assessment) {
- // ...and all the associated records...
- delete_records("workshop_comments", "assessmentid", $assessment->id);
- delete_records("workshop_grades", "assessmentid", $assessment->id);
- echo ".";
- }
- // ...now delete the assessments...
- delete_records("workshop_assessments", "submissionid", $submission->id);
- }
- // ...and the submission record...
- delete_records("workshop_submissions", "id", $submission->id);
- // ..and finally the submitted file
- workshop_delete_submitted_files($workshop, $submission);
-
- print_continue("view.php?id=$cm->id");
- }
-
-
- /*************** no man's land **************************************/\r
- else {\r
- error("Fatal Error: Unknown Action: ".$action."\n");\r
- }\r
-
- print_footer($course);
+
+ }
+
+
+ /*************** update (league table options teacher) ***************************/
+ elseif ($action == 'updateleaguetable') {
+
+ if (!isteacher($course->id)) {
+ error("Only teachers can look at this page");
+ }
+
+ $form = (object)$_POST;
+
+ // 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");
+ add_to_log($course->id, "workshop", "league table", "view.php?id=$cm->id", $form->nentries, $cm->id);
+
+ redirect("submissions.php?action=adminlist&id=$cm->id");
+ }
+
+
+ /*************** 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 (empty($_GET['sid'])) {
+ error("User Confirm Delete: submission id missing");
+ }
+
+ notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")),
+ "submissions.php?action=userdelete&id=$cm->id&sid=$_GET[sid]", "view.php?id=$cm->id");
+ }
+
+
+ /******************* user delete ************************************/
+ elseif ($action == 'userdelete' ) {
+
+ if (empty($_GET['sid'])) {
+ error("User Delete: submission id missing");
+ }
+
+ if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
+ error("User Delete: can not get submission record");
+ }
+ print_string("deleting", "workshop");
+ // first get any assessments...
+ if ($assessments = workshop_get_assessments($submission, 'ALL')) {
+ foreach($assessments as $assessment) {
+ // ...and all the associated records...
+ delete_records("workshop_comments", "assessmentid", $assessment->id);
+ delete_records("workshop_grades", "assessmentid", $assessment->id);
+ echo ".";
+ }
+ // ...now delete the assessments...
+ delete_records("workshop_assessments", "submissionid", $submission->id);
+ }
+ // ...and the submission record...
+ delete_records("workshop_submissions", "id", $submission->id);
+ // ..and finally the submitted file
+ workshop_delete_submitted_files($workshop, $submission);
+
+ print_continue("view.php?id=$cm->id");
+ }
+
+
+ /*************** no man's land **************************************/
+
+ else {
+
+ error("Fatal Error: Unknown Action: ".$action."\n");
+
+ }
+
+
+ print_footer($course);
?>