mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
New version (2003113000), Analysis of Assessments added.
This commit is contained in:
parent
c2d27ab6a6
commit
285b8f7fef
6 changed files with 559 additions and 55 deletions
|
@ -65,7 +65,17 @@ function workshop_upgrade($oldversion) {
|
||||||
execute_sql("INSERT INTO `{$CFG->prefix}log_display` VALUES ('workshop', 'view', 'workshop', 'name')");
|
execute_sql("INSERT INTO `{$CFG->prefix}log_display` VALUES ('workshop', 'view', 'workshop', 'name')");
|
||||||
execute_sql("INSERT INTO `{$CFG->prefix}log_display` VALUES ('workshop', 'update', 'workshop', 'name')");
|
execute_sql("INSERT INTO `{$CFG->prefix}log_display` VALUES ('workshop', 'update', 'workshop', 'name')");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($oldversion < 2003113000) {
|
||||||
|
execute_sql("ALTER TABLE `{$CFG->prefix}workshop` ADD `teacherloading` tinyint(3) unsigned
|
||||||
|
NOT NULL default '5'");
|
||||||
|
execute_sql("ALTER TABLE `{$CFG->prefix}workshop` ADD `assessmentstodrop` tinyint(3) unsigned
|
||||||
|
NOT NULL default '0'");
|
||||||
|
execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `donotuse` tinyint(3) unsigned
|
||||||
|
NOT NULL default '0' AFTER `resubmission`");
|
||||||
|
execute_sql("ALTER TABLE `{$CFG->prefix}workshop_grades` ADD INDEX (`assessmentid`)");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,8 @@ CREATE TABLE `prefix_workshop` (
|
||||||
`biasweight` tinyint(3) unsigned NOT NULL default '5',
|
`biasweight` tinyint(3) unsigned NOT NULL default '5',
|
||||||
`reliabilityweight` tinyint(3) unsigned NOT NULL default '5',
|
`reliabilityweight` tinyint(3) unsigned NOT NULL default '5',
|
||||||
`gradingweight` tinyint(3) unsigned NOT NULL default '5',
|
`gradingweight` tinyint(3) unsigned NOT NULL default '5',
|
||||||
|
`teacherloading` tinyint(3) unsigned NOT NULL default '5',
|
||||||
|
`assessmentstodrop` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`showleaguetable` tinyint(3) unsigned NOT NULL default '0',
|
`showleaguetable` tinyint(3) unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) COMMENT='Defines workshop';
|
) COMMENT='Defines workshop';
|
||||||
|
@ -73,6 +75,7 @@ CREATE TABLE `prefix_workshop_assessments` (
|
||||||
`gradinggrade` int(3) NOT NULL default '0',
|
`gradinggrade` int(3) NOT NULL default '0',
|
||||||
`mailed` tinyint(3) unsigned NOT NULL default '0',
|
`mailed` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`resubmission` tinyint(3) unsigned NOT NULL default '0',
|
`resubmission` tinyint(3) unsigned NOT NULL default '0',
|
||||||
|
`donotuse` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`generalcomment` text NOT NULL,
|
`generalcomment` text NOT NULL,
|
||||||
`teachercomment` text NOT NULL,
|
`teachercomment` text NOT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
|
|
|
@ -46,7 +46,7 @@ $WORKSHOP_EWEIGHTS = array( 0 => -4.0, 1 => -2.0, 2 => -1.5, 3 => -1.0, 4 => -0
|
||||||
14 => 4.0);
|
14 => 4.0);
|
||||||
|
|
||||||
$WORKSHOP_FWEIGHTS = array( 0 => 0, 1 => 0.1, 2 => 0.25, 3 => 0.5, 4 => 0.75, 5 => 1.0, 6 => 1.5,
|
$WORKSHOP_FWEIGHTS = array( 0 => 0, 1 => 0.1, 2 => 0.25, 3 => 0.5, 4 => 0.75, 5 => 1.0, 6 => 1.5,
|
||||||
7 => 2.0, 8 => 3.0, 9 => 5.0, 10 => 7.5, 11=> 10.0);
|
7 => 2.0, 8 => 3.0, 9 => 5.0, 10 => 7.5, 11=> 10.0, 12=>50.0);
|
||||||
|
|
||||||
if (!defined("COMMENTSCALE")) {
|
if (!defined("COMMENTSCALE")) {
|
||||||
define("COMMENTSCALE", 20);
|
define("COMMENTSCALE", 20);
|
||||||
|
@ -3384,38 +3384,57 @@ function workshop_print_submission_assessments($workshop, $submission, $type) {
|
||||||
case "teacher" :
|
case "teacher" :
|
||||||
if ($submission->teachergrade) { // if there's a final teacher's grade...
|
if ($submission->teachergrade) { // if there's a final teacher's grade...
|
||||||
$str = "$submission->teachergrade ";
|
$str = "$submission->teachergrade ";
|
||||||
}
|
}
|
||||||
foreach ($assessments as $assessment) {
|
foreach ($assessments as $assessment) {
|
||||||
if (isteacher($workshop->course, $assessment->userid)) {
|
if (isteacher($workshop->course, $assessment->userid)) {
|
||||||
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">[";
|
|
||||||
|
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
|
||||||
|
if ($assessment->donotuse) {
|
||||||
|
$str .= "<";
|
||||||
|
} else {
|
||||||
|
$str .= "[";
|
||||||
|
}
|
||||||
$str .= number_format($assessment->grade, 0);
|
$str .= number_format($assessment->grade, 0);
|
||||||
if ($assessment->gradinggrade) { // funny, teacher is grading self!
|
if ($assessment->gradinggrade) { // funny, teacher is grading self!
|
||||||
$str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%";
|
$str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%";
|
||||||
}
|
|
||||||
$str .= "]</A> ";
|
|
||||||
}
|
}
|
||||||
|
if ($assessment->donotuse) {
|
||||||
|
$str .= "></A> ";
|
||||||
|
} else {
|
||||||
|
$str .= "]</A> ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "student" :
|
case "student" :
|
||||||
if ($submission->peergrade) { // if there's a final peer grade...
|
if ($submission->peergrade) { // if there's a final peer grade...
|
||||||
$str = "$submission->peergrade ";
|
$str = "$submission->peergrade ";
|
||||||
}
|
}
|
||||||
foreach ($assessments as $assessment) {
|
foreach ($assessments as $assessment) {
|
||||||
if (isstudent($workshop->course, $assessment->userid)) {
|
if (isstudent($workshop->course, $assessment->userid)) {
|
||||||
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">{";
|
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
|
||||||
|
if ($assessment->donotuse) {
|
||||||
|
$str .= "<";
|
||||||
|
} else {
|
||||||
|
$str .= "{";
|
||||||
|
}
|
||||||
$str .= number_format($assessment->grade, 0);
|
$str .= number_format($assessment->grade, 0);
|
||||||
if ($assessment->gradinggrade) {
|
if ($assessment->gradinggrade) {
|
||||||
$str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%";
|
$str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%";
|
||||||
}
|
|
||||||
$str .= "}</A> ";
|
|
||||||
}
|
}
|
||||||
|
if ($assessment->donotuse) {
|
||||||
|
$str .= "></A> ";
|
||||||
|
} else {
|
||||||
|
$str .= "}</A> ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!$str) {
|
if (!$str) {
|
||||||
$str = " "; // be kind to Mozilla browsers!
|
$str = " "; // be kind to Mozilla browsers!
|
||||||
}
|
}
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3569,7 +3588,7 @@ function workshop_print_upload_form($workshop) {
|
||||||
function workshop_print_user_assessments($workshop, $user) {
|
function workshop_print_user_assessments($workshop, $user) {
|
||||||
// Returns the number of assessments and a hyperlinked list of grading grades for the assessments made by this user
|
// Returns the number of assessments and a hyperlinked list of grading grades for the assessments made by this user
|
||||||
|
|
||||||
if ($assessments = workshop_get_user_assessments($workshop, $user)) {
|
if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
|
||||||
$n = count($assessments);
|
$n = count($assessments);
|
||||||
$str = "$n (";
|
$str = "$n (";
|
||||||
foreach ($assessments as $assessment) {
|
foreach ($assessments as $assessment) {
|
||||||
|
@ -3577,19 +3596,23 @@ function workshop_print_user_assessments($workshop, $user) {
|
||||||
$gradingscaled = intval($assessment->gradinggrade * $workshop->grade / COMMENTSCALE);
|
$gradingscaled = intval($assessment->gradinggrade * $workshop->grade / COMMENTSCALE);
|
||||||
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
|
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
|
||||||
$str .= "$gradingscaled</A> ";
|
$str .= "$gradingscaled</A> ";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
|
$str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">";
|
||||||
$str .= "-</A> ";
|
if ($assessment->donotuse) {
|
||||||
}
|
$str .= "<".number_format($assessment->grade, 0)."></A> ";
|
||||||
|
} else {
|
||||||
|
$str .= number_format($assessment->grade, 0)."</A> ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$str .= ")";
|
|
||||||
}
|
}
|
||||||
|
$str .= ")";
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
$str ="0";
|
$str ="0";
|
||||||
}
|
|
||||||
return $str;
|
|
||||||
}
|
}
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
adminconfirmdelete
|
adminconfirmdelete
|
||||||
admindelete
|
admindelete
|
||||||
adminlist
|
adminlist
|
||||||
|
analysisofassessments
|
||||||
calculatefinalgrades
|
calculatefinalgrades
|
||||||
displayfinalgrades (teachers only)
|
displayfinalgrades (teachers only)
|
||||||
displayfinalweights
|
displayfinalweights
|
||||||
|
@ -96,9 +97,9 @@
|
||||||
<?PHP
|
<?PHP
|
||||||
|
|
||||||
// now get the comment
|
// now get the comment
|
||||||
echo "<tr valign=\"top\">\n";
|
echo "<tr valign=\"top\">\n";
|
||||||
echo " <td align=\"right\"><P><B>". get_string("title", "workshop").":</b></p></td>\n";
|
echo " <td align=\"right\"><P><B>". get_string("title", "workshop").":</b></p></td>\n";
|
||||||
echo " <td>\n";
|
echo " <td>\n";
|
||||||
echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n";
|
echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n";
|
||||||
echo " </td></tr></table>\n";
|
echo " </td></tr></table>\n";
|
||||||
echo "<input type=submit VALUE=\"".get_string("amendtitle", "workshop")."\">\n";
|
echo "<input type=submit VALUE=\"".get_string("amendtitle", "workshop")."\">\n";
|
||||||
|
@ -192,6 +193,455 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************** analysis of assessments (by teacher) ***************************/
|
||||||
|
elseif ($action == 'analysisofassessments') {
|
||||||
|
|
||||||
|
// timeout after 10 minutes
|
||||||
|
set_time_limit(600);
|
||||||
|
|
||||||
|
if (!isteacher($course->id)) {
|
||||||
|
error("Only teachers can look at this page");
|
||||||
|
}
|
||||||
|
|
||||||
|
// this analysis does not use bias or reliability...
|
||||||
|
set_field("workshop", "biasweight", 0, "id", $workshop->id);
|
||||||
|
set_field("workshop", "reliabilityweight", 0, "id", $workshop->id);
|
||||||
|
// ...and unity weights for teacher and peer assessments
|
||||||
|
set_field("workshop", "teacherweight", 5, "id", $workshop->id);
|
||||||
|
set_field("workshop", "peerweight", 5, "id", $workshop->id);
|
||||||
|
|
||||||
|
echo "<form name=\"optionsform\" method=\"post\" action=\"submissions.php\">\n";
|
||||||
|
echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$cm->id\">\n";
|
||||||
|
echo "<input type=\"hidden\" name=\"action\" value=\"saveanalysisoptions\">\n";
|
||||||
|
|
||||||
|
// get the options from the database...
|
||||||
|
$teacherloading = get_field("workshop", "teacherloading", "id", $workshop->id);
|
||||||
|
$gradingweight = get_field("workshop", "gradingweight", "id", $workshop->id);
|
||||||
|
$assessmentstodrop = get_field("workshop", "assessmentstodrop", "id", $workshop->id);
|
||||||
|
|
||||||
|
// ...now show the options used in a table
|
||||||
|
print_heading_with_help(get_string("analysisofassessments", "workshop"), "analysisofassessments",
|
||||||
|
"workshop");
|
||||||
|
echo "<center><TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
|
||||||
|
echo "<TR><td COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>".
|
||||||
|
get_string("optionsusedinanalysis", "workshop")."</B></CENTER></TD></TR>\n";
|
||||||
|
echo "<tr><td align=\"right\">".get_string("loadingforteacherassessments", "workshop",
|
||||||
|
$course->teacher).":</td>\n";
|
||||||
|
echo "<TD>";
|
||||||
|
workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "teacherloading", $teacherloading, "");
|
||||||
|
echo "</TD></TR>\n";
|
||||||
|
echo "<tr><td align=\"right\">".get_string("weightforgradingofassessments", "workshop").":</td>\n";
|
||||||
|
echo "<TD>";
|
||||||
|
workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "gradingweight", $gradingweight, "");
|
||||||
|
echo "</TD></TR>\n";
|
||||||
|
echo "<TR><TD ALIGN=\"right\">".get_string("percentageofassessments", "workshop").":</TD>\n";
|
||||||
|
echo "<TD>";
|
||||||
|
for ($i = 0; $i <= 100; $i++) {
|
||||||
|
$numbers[$i] = $i;
|
||||||
|
}
|
||||||
|
choose_from_menu($numbers, "assessmentstodrop", $assessmentstodrop, "");
|
||||||
|
echo "</TD></TR>\n";
|
||||||
|
echo "</TABLE><br />\n";
|
||||||
|
echo "<INPUT TYPE=submit VALUE=\"".get_string("repeatanalysis", "workshop")."\">\n";
|
||||||
|
echo "</FORM>\n";
|
||||||
|
|
||||||
|
|
||||||
|
// set up the array of users who have made assessments
|
||||||
|
if (!$students = get_course_students($course->id, "u.lastname, u.firstname")) {
|
||||||
|
print_heading(get_string("nostudentsyet"));
|
||||||
|
print_footer($course);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
$teachers = get_course_teachers($course->id);
|
||||||
|
$users = array_merge($students, $teachers);
|
||||||
|
$nassessments = 0;
|
||||||
|
foreach ($users as $user) {
|
||||||
|
if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
|
||||||
|
// the value put into the array element is not particularly important at this stage
|
||||||
|
// it will hold the user's assessment error after the first iteration
|
||||||
|
$n = count($assessments);
|
||||||
|
$assessors[$user->id] = $n;
|
||||||
|
$nassessments += $n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ntodrop = intval(($assessmentstodrop * $nassessments / 100.0) + 0.5);
|
||||||
|
|
||||||
|
// set minumim value for the variance (of the elements)
|
||||||
|
$minvar = 0.05;
|
||||||
|
|
||||||
|
flush();
|
||||||
|
// we now do up to five iterations, the first with all users. The second and subsequent if
|
||||||
|
// the number of assessors is not the full set. Two or three iterations with the reduced set
|
||||||
|
// should be enough to stablise the list of dropped assessments.
|
||||||
|
if ($ntodrop == 0) {
|
||||||
|
$loopcount = 1;
|
||||||
|
} else {
|
||||||
|
$loopcount = 7; // max loops, should finish before that loop
|
||||||
|
}
|
||||||
|
for ($loop = 0; $loop < $loopcount; $loop++) {
|
||||||
|
// calculate the means for each submission using just the "good" assessments
|
||||||
|
// on the first iteration all the assessments are included
|
||||||
|
unset($num);
|
||||||
|
unset($sum);
|
||||||
|
foreach ($assessors as $userid => $error) {
|
||||||
|
if (!$user = get_record("user", "id", $userid)) {
|
||||||
|
error("Analysis of assessments: User record not found");
|
||||||
|
}
|
||||||
|
$assessments = workshop_get_user_assessments_done($workshop, $user);
|
||||||
|
foreach ($assessments as $assessment) {
|
||||||
|
if (isset($drop[$assessment->id])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
|
||||||
|
error("Analysis of Assessments: submission record not found");
|
||||||
|
}
|
||||||
|
if (isset($num[$submission->id])) {
|
||||||
|
if (isteacher($course->id, $userid)) {
|
||||||
|
$num[$submission->id] += $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
|
||||||
|
} else {
|
||||||
|
$num[$submission->id]++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isteacher($course->id, $userid)) {
|
||||||
|
$num[$submission->id] = $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
|
||||||
|
} else {
|
||||||
|
$num[$submission->id] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$grade = get_field("workshop_grades", "grade",
|
||||||
|
"assessmentid", $assessment->id, "elementno", $i);
|
||||||
|
if (isset($sum[$submission->id][$i])) {
|
||||||
|
if (isteacher($course->id, $userid)) {
|
||||||
|
$sum[$submission->id][$i] += $grade * $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
|
||||||
|
} else {
|
||||||
|
$sum[$submission->id][$i] += $grade;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isteacher($course->id, $userid)) {
|
||||||
|
$sum[$submission->id][$i] = $grade * $WORKSHOP_FWEIGHTS[$workshop->teacherloading];
|
||||||
|
} else {
|
||||||
|
$sum[$submission->id][$i] = $grade;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
reset($num);
|
||||||
|
if (!$loop) {
|
||||||
|
echo "<p>".get_string("numberofsubmissions", "workshop", count($num))."</p>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// (re)calculate the means for each submission
|
||||||
|
foreach ($num as $submissionid => $n) {
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$mean[$submissionid][$i] = $sum[$submissionid][$i] / $n;
|
||||||
|
// echo "Submission: $submissionid; Element: $i; Mean: {$mean[$submissionid][$i]}<br />\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// only calculate the sd's and the error from guessing once
|
||||||
|
if (!$loop) {
|
||||||
|
// now get an estimate of the standard deviation of each element in the assessment
|
||||||
|
$n = 0;
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$var[$i] = 0;
|
||||||
|
}
|
||||||
|
foreach ($assessors as $userid => $error) {
|
||||||
|
if (!$user = get_record("user", "id", $userid)) {
|
||||||
|
error("Submissions: User record not found");
|
||||||
|
}
|
||||||
|
$assessments = workshop_get_user_assessments_done($workshop, $user);
|
||||||
|
foreach ($assessments as $assessment) {
|
||||||
|
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
|
||||||
|
error("Analysis of Assessments: submission record not found");
|
||||||
|
}
|
||||||
|
$n++;
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$grade = get_field("workshop_grades", "grade",
|
||||||
|
"assessmentid", $assessment->id, "elementno", $i);
|
||||||
|
$temp = $mean[$submission->id][$i] - $grade;
|
||||||
|
$var[$i] += $temp * $temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$sd[$i] = sqrt($var[$i] / ($n - 1));
|
||||||
|
echo get_string("standarddeviation", "workshop", $i+1)."$sd[$i]<br />";
|
||||||
|
if ($sd[$i] <= $minvar) {
|
||||||
|
get_string("standarddeviationnote", "workshop")."<br />\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// calculate the mean variance (error) if just guessing
|
||||||
|
// first get the assignment elements for maxscores...
|
||||||
|
$elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
|
||||||
|
foreach ($elementsraw as $element) {
|
||||||
|
$maxscore[] = $element->maxscore; // to renumber index 0,1,2...
|
||||||
|
$weight[] = $element->weight; // to renumber index 0,1,2...
|
||||||
|
}
|
||||||
|
$n = 0;
|
||||||
|
$totvar = 0;
|
||||||
|
foreach ($assessors as $userid => $error) {
|
||||||
|
if (!$user = get_record("user", "id", $userid)) {
|
||||||
|
error("Submissions: User record not found");
|
||||||
|
}
|
||||||
|
$assessments = workshop_get_user_assessments_done($workshop, $user);
|
||||||
|
foreach ($assessments as $assessment) {
|
||||||
|
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
|
||||||
|
error("Analysis of Assessments: submission record not found");
|
||||||
|
}
|
||||||
|
$n++;
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$grade = mt_rand(0, $maxscore[$i]);
|
||||||
|
if ($sd[$i] > $minvar) {
|
||||||
|
$temp = ($mean[$submission->id][$i] - $grade) *
|
||||||
|
$WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i];
|
||||||
|
} else {
|
||||||
|
$temp = 0;
|
||||||
|
}
|
||||||
|
$totvar += $temp * $temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// take the average of these variances
|
||||||
|
$varguess = $totvar / $n;
|
||||||
|
}
|
||||||
|
|
||||||
|
// calculate the variance (error) for each assessment (adjusted after the first loop)
|
||||||
|
// and work out the user's average error with all their assessments and without
|
||||||
|
// the dropped assessments (their "good" assessments)
|
||||||
|
foreach ($assessors as $userid => $error) {
|
||||||
|
if (!$user = get_record("user", "id", $userid)) {
|
||||||
|
error("Submissions: User record not found");
|
||||||
|
}
|
||||||
|
$assessments = workshop_get_user_assessments_done($workshop, $user);
|
||||||
|
$n = 0;
|
||||||
|
$ngood = 0;
|
||||||
|
$totvar = 0;
|
||||||
|
$totvargood = 0;
|
||||||
|
foreach ($assessments as $assessment) {
|
||||||
|
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
|
||||||
|
error("Analysis of Assessments: submission record not found");
|
||||||
|
}
|
||||||
|
$n++;
|
||||||
|
$var = 0;
|
||||||
|
for ($i = 0; $i < $workshop->nelements; $i++) {
|
||||||
|
$grade = get_field("workshop_grades", "grade",
|
||||||
|
"assessmentid", $assessment->id, "elementno", $i);
|
||||||
|
if ($sd[$i] > $minvar) {
|
||||||
|
$temp = ($mean[$submission->id][$i] - $grade) *
|
||||||
|
$WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i];
|
||||||
|
} else {
|
||||||
|
$temp = 0;
|
||||||
|
}
|
||||||
|
$var += $temp * $temp;
|
||||||
|
}
|
||||||
|
// the variances are adjusted by the user's overall error (once it's calculated)
|
||||||
|
if ($loop) {
|
||||||
|
$assessmentvar[$assessment->id] = $var * $error;
|
||||||
|
} else {
|
||||||
|
$assessmentvar[$assessment->id] = $var;
|
||||||
|
}
|
||||||
|
$totvar += $var;
|
||||||
|
if (empty($drop[$assessment->id])) {
|
||||||
|
$ngood++;
|
||||||
|
$totvargood += $var;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$nsubmissions[$userid] = $n;
|
||||||
|
$newassessors[$userid] = $totvar / $n;
|
||||||
|
if ($ngood) {
|
||||||
|
$vargood[$userid] = $totvargood / $ngood;
|
||||||
|
} else {
|
||||||
|
$vargood[$userid] = 0;
|
||||||
|
}
|
||||||
|
// echo "$user->firstname $user->lastname Error: {$newassessors[$userid]}; n: $n<br />\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// echo "<hr>\n";
|
||||||
|
|
||||||
|
|
||||||
|
// now drop the assessments with the largest (adjusted) variances
|
||||||
|
$nchanged = 0;
|
||||||
|
if ($ntodrop) {
|
||||||
|
asort($assessmentvar);
|
||||||
|
$n = 1;
|
||||||
|
foreach ($assessmentvar as $assessmentid => $adjvar) {
|
||||||
|
if ($n <= ($nassessments - $ntodrop)) {
|
||||||
|
if (isset($drop[$assessmentid])) {
|
||||||
|
unset($drop[$assessmentid]);
|
||||||
|
$nchanged++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (empty($drop[$assessmentid])) {
|
||||||
|
$drop[$assessmentid] = 1;
|
||||||
|
$nchanged++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset the assessors array
|
||||||
|
$assessors = $newassessors;
|
||||||
|
// put the assessors in order (for the next iteration, if there is one)
|
||||||
|
asort($assessors);
|
||||||
|
reset($assessors);
|
||||||
|
$i = $loop + 1;
|
||||||
|
echo get_string("iteration", "workshop", "$i / $loopcount")."<br />\n";
|
||||||
|
echo get_string("numberofassessmentschanged", "workshop", $nchanged)."<br />\n";
|
||||||
|
flush();
|
||||||
|
if (!$nchanged) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} // end of iteration loop
|
||||||
|
|
||||||
|
// flag the assessments which were classed as outliers
|
||||||
|
// but first clear any existing flags
|
||||||
|
execute_sql("UPDATE {$CFG->prefix}workshop_assessments SET donotuse = 0
|
||||||
|
WHERE workshopid = $workshop->id", false);
|
||||||
|
if ($ntodrop) {
|
||||||
|
foreach ($drop as $assessmentid => $flag) {
|
||||||
|
if (!set_field("workshop_assessments", "donotuse", 1, "id", $assessmentid)) {
|
||||||
|
error("Analysis of assessments: unable to set donotuse field");
|
||||||
|
}
|
||||||
|
$userid = get_field("workshop_assessments", "userid", "id", $assessmentid);
|
||||||
|
if (empty($ndropped[$userid])) {
|
||||||
|
$ndropped[$userid] = 1;
|
||||||
|
} else {
|
||||||
|
$ndropped[$userid]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// echo "<p>".get_string("expectederror", "workshop", $varguess)."</p>\n";
|
||||||
|
print_heading(get_string("errortable", "workshop"));
|
||||||
|
$table->head = array(" ",get_string("name"), get_string("averageerror", "workshop"),
|
||||||
|
get_string("averageerror", "workshop")."<br />".
|
||||||
|
get_string("excludingdroppedassessments", "workshop"),
|
||||||
|
get_string("numberofassessments", "workshop"));
|
||||||
|
$table->align = array ("left","left", "center", "center", "center");
|
||||||
|
$table->size = array ("*", "*", "*", "*", "*");
|
||||||
|
$table->cellpadding = 2;
|
||||||
|
$table->cellspacing = 0;
|
||||||
|
$n = 1;
|
||||||
|
foreach ($assessors as $userid => $error) {
|
||||||
|
if (!$user = get_record("user", "id", $userid)) {
|
||||||
|
error("Assessment analysis: user record not found");
|
||||||
|
}
|
||||||
|
if ($vargood[$userid]) {
|
||||||
|
$vargoodtext = number_format($vargood[$userid] * 100 / $varguess, 2)."%";
|
||||||
|
} else {
|
||||||
|
$vargoodtext = "-";
|
||||||
|
}
|
||||||
|
if (empty($ndropped[$userid])) {
|
||||||
|
$numtext = "$nsubmissions[$userid]";
|
||||||
|
} else {
|
||||||
|
$numtext = "$nsubmissions[$userid] <$ndropped[$userid]>";
|
||||||
|
}
|
||||||
|
$table->data[] = array($n, "$user->firstname $user->lastname",
|
||||||
|
number_format($error * 100 / $varguess, 2)."%", $vargoodtext,
|
||||||
|
$numtext);
|
||||||
|
$n++;
|
||||||
|
}
|
||||||
|
print_table($table);
|
||||||
|
echo "<p>< > ".get_string("assessmentsexcluded", "workshop", $course->student)."</p>\n";
|
||||||
|
echo "<p>".get_string("submissionsused", "workshop", count($num))."</p>\n";;
|
||||||
|
|
||||||
|
// display student grades
|
||||||
|
print_heading(get_string("gradetable", "workshop"));
|
||||||
|
unset($table);
|
||||||
|
$table->head = array(get_string("name"), get_string("submission", "workshop"),
|
||||||
|
get_string("assessmentsdone", "workshop"), get_string("assessments", "workshop"),
|
||||||
|
get_string("studentassessments", "workshop", $course->teacher),
|
||||||
|
get_string("studentassessments", "workshop", $course->student),
|
||||||
|
get_string("submission", "workshop"), get_string("overallgrade", "workshop"));
|
||||||
|
$table->align = array ("left", "center", "center", "center", "center", "center", "center", "center");
|
||||||
|
$table->size = array ("*", "*", "*", "*", "*", "*", "*", "*");
|
||||||
|
$table->cellpadding = 2;
|
||||||
|
$table->cellspacing = 0;
|
||||||
|
$table->data[] = array("<b>".get_string("weight", "workshop")."</b>", " ", " ",
|
||||||
|
"<b>".$WORKSHOP_FWEIGHTS[$workshop->gradingweight]."</b>", " ", " ","<b>1</b>", " ");
|
||||||
|
$maxassessments = $workshop->nsassessments + $workshop->ntassessments;
|
||||||
|
foreach ($students as $user) {
|
||||||
|
if ($assessments = workshop_get_user_assessments_done($workshop, $user)) {
|
||||||
|
$n = 0;
|
||||||
|
foreach ($assessments as $assessment) {
|
||||||
|
if (!$assessment->donotuse) {
|
||||||
|
$n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($maxassessments) {
|
||||||
|
$assessmentgrade = ($n / $maxassessments) * $workshop->grade;
|
||||||
|
} else {
|
||||||
|
$assessmentgrade = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// no assessments
|
||||||
|
$assessmentgrade = 0;
|
||||||
|
}
|
||||||
|
if ($submissions = workshop_get_user_submissions($workshop, $user)) {
|
||||||
|
foreach ($submissions as $submission) {
|
||||||
|
$submissiongrade = 0;
|
||||||
|
$n = 0;
|
||||||
|
if ($assessments = workshop_get_assessments($submission)) {
|
||||||
|
$sum = 0;
|
||||||
|
foreach ($assessments as $assessment) {
|
||||||
|
if (!$assessment->donotuse) {
|
||||||
|
$n++;
|
||||||
|
$sum += $assessment->grade;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($n) {
|
||||||
|
$submissiongrade = $sum / $n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$totalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight] +
|
||||||
|
$submissiongrade) / ($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0);
|
||||||
|
if ($n) {
|
||||||
|
$table->data[] = array("$user->firstname $user->lastname",
|
||||||
|
workshop_print_submission_title($workshop, $submission),
|
||||||
|
workshop_print_user_assessments($workshop, $user),
|
||||||
|
number_format($assessmentgrade, 2),
|
||||||
|
workshop_print_submission_assessments($workshop, $submission, "teacher"),
|
||||||
|
workshop_print_submission_assessments($workshop, $submission, "student"),
|
||||||
|
number_format($submissiongrade, 2),
|
||||||
|
number_format($totalgrade, 2));
|
||||||
|
} else {
|
||||||
|
$table->data[] = array("$user->firstname $user->lastname",
|
||||||
|
workshop_print_submission_title($workshop, $submission),
|
||||||
|
workshop_print_user_assessments($workshop, $user),
|
||||||
|
number_format($assessmentgrade, 2),
|
||||||
|
workshop_print_submission_assessments($workshop, $submission, "teacher"),
|
||||||
|
workshop_print_submission_assessments($workshop, $submission, "student"),
|
||||||
|
"<b>".get_string("noassessments", "workshop")."</b>",
|
||||||
|
number_format($totalgrade, 2));
|
||||||
|
}
|
||||||
|
// save grades in submission record
|
||||||
|
set_field("workshop_submissions", "finalgrade", $submissiongrade, "id", $submission->id);
|
||||||
|
set_field("workshop_submissions", "gradinggrade", $assessmentgrade, "id",
|
||||||
|
$submission->id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// no submissions
|
||||||
|
$totalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight]) /
|
||||||
|
($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0);
|
||||||
|
$table->data[] = array("$user->firstname $user->lastname",
|
||||||
|
"-", workshop_print_user_assessments($workshop, $user),
|
||||||
|
number_format($assessmentgrade, 2), "-", "-",
|
||||||
|
get_string("nosubmission", "workshop"),
|
||||||
|
number_format($totalgrade,2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print_table($table);
|
||||||
|
echo "<p>< > ".get_string("assessmentdropped", "workshop")."</p>\n";
|
||||||
|
echo "</CENTER>";
|
||||||
|
print_continue("view.php?a=$workshop->id");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************** calculate final grades (by teacher) ***************************/
|
/*************** calculate final grades (by teacher) ***************************/
|
||||||
elseif ($action == 'calculatefinalgrades') {
|
elseif ($action == 'calculatefinalgrades') {
|
||||||
|
|
||||||
|
@ -643,11 +1093,11 @@
|
||||||
/*************** display final grades (by teacher) ***************************/
|
/*************** display final grades (by teacher) ***************************/
|
||||||
elseif ($action == 'displayfinalgrades') {
|
elseif ($action == 'displayfinalgrades') {
|
||||||
// Get all the students
|
// Get all the students
|
||||||
if (!$users = get_course_students($course->id, "u.firstname, u.lastname")) {
|
if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) {
|
||||||
print_heading(get_string("nostudentsyet"));
|
print_heading(get_string("nostudentsyet"));
|
||||||
print_footer($course);
|
print_footer($course);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the final weights from the database
|
// get the final weights from the database
|
||||||
$teacherweight = get_field("workshop","teacherweight", "id", $workshop->id);
|
$teacherweight = get_field("workshop","teacherweight", "id", $workshop->id);
|
||||||
|
@ -660,82 +1110,82 @@
|
||||||
// teacher grades?
|
// teacher grades?
|
||||||
if ($workshop->gradingstrategy and $teacherweight) {
|
if ($workshop->gradingstrategy and $teacherweight) {
|
||||||
$useteachersgrades = 1;
|
$useteachersgrades = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$useteachersgrades = 0;
|
$useteachersgrades = 0;
|
||||||
}
|
}
|
||||||
// peergrades?
|
// peergrades?
|
||||||
if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) {
|
if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) {
|
||||||
$usepeergrades = 1;
|
$usepeergrades = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$usepeergrades = 0;
|
$usepeergrades = 0;
|
||||||
}
|
}
|
||||||
// bias grades?
|
// bias grades?
|
||||||
if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
|
if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
|
||||||
and $biasweight ) {
|
and $biasweight ) {
|
||||||
$usebiasgrades = 1;
|
$usebiasgrades = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$usebiasgrades = 0;
|
$usebiasgrades = 0;
|
||||||
}
|
}
|
||||||
// reliability grades?
|
// reliability grades?
|
||||||
if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
|
if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades)
|
||||||
and $reliabilityweight ) {
|
and $reliabilityweight ) {
|
||||||
$usereliabilitygrades = 1;
|
$usereliabilitygrades = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$usereliabilitygrades = 0;
|
$usereliabilitygrades = 0;
|
||||||
}
|
}
|
||||||
// grading grades?
|
// grading grades?
|
||||||
if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) {
|
if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) {
|
||||||
$usegradinggrades = 1;
|
$usegradinggrades = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$usegradinggrades = 0;
|
$usegradinggrades = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// show the final grades as stored in the tables...
|
// show the final grades as stored in the tables...
|
||||||
print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop");
|
print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop");
|
||||||
echo "<center><table border=\"1\" width=\"90%\"><tr>
|
echo "<center><table border=\"1\" width=\"90%\"><tr>
|
||||||
<td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
|
<td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submissions", "workshop")."</b></td>";
|
echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
|
||||||
if ($useteachersgrades) {
|
if ($useteachersgrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", $course->teachers)."</b></td>";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", $course->teachers)."</b></td>";
|
||||||
}
|
}
|
||||||
if ($usepeergrades) {
|
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("assessmentsby", "workshop", $course->students)."</b></td>";
|
||||||
}
|
}
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>";
|
||||||
if ($usebiasgrades) {
|
if ($usebiasgrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforbias", "workshop")."</b></td>";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforbias", "workshop")."</b></td>";
|
||||||
}
|
}
|
||||||
if ($usereliabilitygrades) {
|
if ($usereliabilitygrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforreliability", "workshop")."</b></td>";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforreliability", "workshop")."</b></td>";
|
||||||
}
|
}
|
||||||
if ($usegradinggrades) {
|
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("gradeforassessments", "workshop")."</b></td>";
|
||||||
}
|
}
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></TR>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></TR>\n";
|
||||||
// now the weights
|
// now the weights
|
||||||
echo "<TR><td bgcolor=\"$THEME->cellheading2\"><b>".get_string("weights", "workshop")."</b></td>";
|
echo "<TR><td bgcolor=\"$THEME->cellheading2\"><b>".get_string("weights", "workshop")."</b></td>";
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b> </b></td>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b> </b></td>\n";
|
||||||
if ($useteachersgrades) {
|
if ($useteachersgrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$teacherweight]</b></td>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$teacherweight]</b></td>\n";
|
||||||
}
|
}
|
||||||
if ($usepeergrades) {
|
if ($usepeergrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$peerweight]</b></td>\n";
|
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";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b> </b></td>\n";
|
||||||
if ($usebiasgrades) {
|
if ($usebiasgrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$biasweight]</b></td>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$biasweight]</b></td>\n";
|
||||||
}
|
}
|
||||||
if ($usereliabilitygrades) {
|
if ($usereliabilitygrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$reliabilityweight]</b></td>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$reliabilityweight]</b></td>\n";
|
||||||
}
|
}
|
||||||
if ($usegradinggrades) {
|
if ($usegradinggrades) {
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$gradingweight]</b></td>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$gradingweight]</b></td>\n";
|
||||||
}
|
}
|
||||||
echo "<td bgcolor=\"$THEME->cellheading2\"><b> </b></td></tr>\n";
|
echo "<td bgcolor=\"$THEME->cellheading2\"><b> </b></td></tr>\n";
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
if ($submissions = workshop_get_user_submissions($workshop, $user)) {
|
if ($submissions = workshop_get_user_submissions($workshop, $user)) {
|
||||||
|
@ -744,34 +1194,34 @@
|
||||||
echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
|
echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
|
||||||
if ($useteachersgrades) {
|
if ($useteachersgrades) {
|
||||||
echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "teacher")."</td>";
|
echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "teacher")."</td>";
|
||||||
}
|
}
|
||||||
if ($usepeergrades) {
|
if ($usepeergrades) {
|
||||||
echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "student")."</td>";
|
echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "student")."</td>";
|
||||||
}
|
}
|
||||||
echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>";
|
echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>";
|
||||||
if ($usebiasgrades) {
|
if ($usebiasgrades) {
|
||||||
echo "<td align=\"center\">$submission->biasgrade</td>";
|
echo "<td align=\"center\">$submission->biasgrade</td>";
|
||||||
}
|
}
|
||||||
if ($usereliabilitygrades) {
|
if ($usereliabilitygrades) {
|
||||||
echo "<td align=\"center\">$submission->reliabilitygrade</td>";
|
echo "<td align=\"center\">$submission->reliabilitygrade</td>";
|
||||||
}
|
}
|
||||||
if ($usegradinggrades) {
|
if ($usegradinggrades) {
|
||||||
echo "<td align=\"center\">$submission->gradinggrade</td>";
|
echo "<td align=\"center\">$submission->gradinggrade</td>";
|
||||||
}
|
|
||||||
echo "<td align=\"center\">$submission->finalgrade</td></tr>\n";
|
|
||||||
}
|
}
|
||||||
|
echo "<td align=\"center\">$submission->finalgrade</td></tr>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
echo "</table><br clear=\"all\">\n";
|
echo "</table><br clear=\"all\">\n";
|
||||||
if ($workshop->showleaguetable) {
|
if ($workshop->showleaguetable) {
|
||||||
workshop_print_league_table($workshop);
|
workshop_print_league_table($workshop);
|
||||||
if ($workshop->anonymous) {
|
if ($workshop->anonymous) {
|
||||||
echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n";
|
echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
echo "<p>".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade)."</p>\n";
|
echo "<p>".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade)."</p>\n";
|
||||||
print_continue("view.php?a=$workshop->id");
|
print_continue("view.php?a=$workshop->id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************** display final weights (by teacher) ***************************/
|
/*************** display final weights (by teacher) ***************************/
|
||||||
|
@ -904,6 +1354,22 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************* save analysis options (for teachers only) ************************************/
|
||||||
|
elseif ($action == 'saveanalysisoptions' ) {
|
||||||
|
|
||||||
|
if (!isteacher($course->id)) {
|
||||||
|
error("Only teachers can look at this page");
|
||||||
|
}
|
||||||
|
|
||||||
|
set_field("workshop", "teacherloading", $_POST['teacherloading'], "id", "$workshop->id");
|
||||||
|
set_field("workshop", "gradingweight", $_POST['gradingweight'], "id", "$workshop->id");
|
||||||
|
set_field("workshop", "assessmentstodrop", $_POST['assessmentstodrop'], "id", "$workshop->id");
|
||||||
|
redirect("submissions.php?id=$cm->id&action=analysisofassessments",
|
||||||
|
get_string("savedok", "workshop"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************** update over allocation (by teacher) ***************************/
|
/*************** update over allocation (by teacher) ***************************/
|
||||||
elseif ($action == 'updateoverallocation') {
|
elseif ($action == 'updateoverallocation') {
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
// This fragment is called by /admin/index.php
|
// This fragment is called by /admin/index.php
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
$module->version = 2003100800;
|
$module->version = 2003113000;
|
||||||
$module->cron = 60;
|
$module->cron = 60;
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -514,6 +514,8 @@
|
||||||
get_string("studentsubmissionsforassessment", "workshop"), "workshop");
|
get_string("studentsubmissionsforassessment", "workshop"), "workshop");
|
||||||
print_heading("<a href=\"submissions.php?id=$cm->id&action=displayfinalweights\">".
|
print_heading("<a href=\"submissions.php?id=$cm->id&action=displayfinalweights\">".
|
||||||
get_string("calculationoffinalgrades", "workshop")."</a>");
|
get_string("calculationoffinalgrades", "workshop")."</a>");
|
||||||
|
print_heading("<a href=\"submissions.php?id=$cm->id&action=analysisofassessments\">".
|
||||||
|
get_string("analysisofassessments", "workshop")."</a>");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: // show final grades
|
case 6: // show final grades
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue