course)) { error("Course is misconfigured"); } if (! $workshop = get_record("workshop", "id", $cm->instance)) { error("Course module is incorrect"); } require_login($course->id); $navigation = ""; if ($course->category) { $navigation = "id\">$course->shortname ->"; } $strworkshops = get_string("modulenameplural", "workshop"); $strworkshop = get_string("modulename", "workshop"); $strassessments = get_string("assessments", "workshop"); // ... print the header and... print_header_simple("$workshop->name", "", "id\">$strworkshops -> id\">$workshop->name -> $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"); } ?>
\n"; echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\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 grade!");
}
// 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 grade!");
}
$grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
break;
case 4: // rubric grading (identical to accumulative grading)
// Insert all the elements that contain something
foreach ($form->grade as $key => $thegrade) {
unset($element);
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $key;
$element->feedback = $form->{"feedback_$key"};
$element->grade = $thegrade;
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
// now work out the grade...
$rawgrade=0;
$totalweight=0;
foreach ($form->grade as $key => $grade) {
$maxscore = $elements[$key]->maxscore;
$weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
if ($weight > 0) {
$totalweight += $weight;
}
$rawgrade += ($grade / $maxscore) * $weight;
}
$grade = 100.0 * ($rawgrade / $totalweight);
break;
} // end of switch
// any comment?
if (!empty($form->generalcomment)) { // update the object (no need to update the db record)
$assessment->generalcomment = $form->generalcomment;
}
// redisplay form, going back to original returnto address
workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);
// add_to_log($course->id, "workshop", "assess", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
}
/******************* admin confirm delete ************************************/
elseif ($action == 'adminconfirmdelete' ) {
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
if (empty($_GET['aid'])) {
error("Admin confirm delete: assessment id missing");
}
notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")),
"assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id");
}
/******************* admin delete ************************************/
elseif ($action == 'admindelete' ) {
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
if (empty($_GET['aid'])) {
error("Admin delete: submission id missing");
}
print_string("deleting", "workshop");
// first delete all the associated records...
delete_records("workshop_comments", "assessmentid", $_GET['aid']);
delete_records("workshop_grades", "assessmentid", $_GET['aid']);
// ...now delete the assessment...
delete_records("workshop_assessments", "id", $_GET['aid']);
print_continue("submissions.php?id=$cm->id&action=adminlist");
}
/*********************** admin list of asssessments (of a submission) (by teachers)**************/
elseif ($action == 'adminlist') {
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
if (empty($_GET['sid'])) {
error ("Workshop asssessments: adminlist called with no sid");
}
$submission = get_record("workshop_submissions", "id", $_GET['sid']);
workshop_print_assessments_for_admin($workshop, $submission);
print_continue("submissions.php?action=adminlist&id=$cm->id");
}
/*********************** admin list of asssessments by a student (used by teachers only )******************/
elseif ($action == 'adminlistbystudent') {
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
if (empty($_GET['userid'])) {
error ("Workshop asssessments: adminlistbystudent called with no userid");
}
$user = get_record("user", "id", $_GET['userid']);
workshop_print_assessments_by_user_for_admin($workshop, $user);
print_continue("submissions.php?action=adminlist&id=$cm->id");
}
/*************** agree (to) assessment (by student) ***************************/
elseif ($action == 'agreeassessment') {
$timenow = time();
// assessment id comes from link or hidden form variable
if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) {
error("Assessment : agree assessment failed");
}
//save time of agreement
set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
echo " ".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\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 grade!");
}
// 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 grade!");
}
$grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
break;
case 4: // rubric grading (identical to accumulative grading)
// Insert all the elements that contain something
foreach ($form->grade as $key => $thegrade) {
unset($element);
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $key;
$element->feedback = $form->{"feedback_$key"};
$element->grade = $thegrade;
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
// now work out the grade...
$rawgrade=0;
$totalweight=0;
foreach ($form->grade as $key => $grade) {
$maxscore = $elements[$key]->maxscore;
$weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
if ($weight > 0) {
$totalweight += $weight;
}
$rawgrade += ($grade / $maxscore) * $weight;
}
$grade = 100.0 * ($rawgrade / $totalweight);
break;
} // end of switch
// any comment?
if (!empty($form->generalcomment)) { // update the object (no need to update the db record)
$assessment->generalcomment = $form->generalcomment;
}
// redisplay form, going back to original returnto address
workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);
// add_to_log($course->id, "workshop", "assess", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->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 {
$elements = null;
}
$timenow = time();
// don't fiddle about, delete all the old and add the new!
delete_records("workshop_grades", "assessmentid", $assessment->id);
$form = data_submitted("nomatch"); // probably always come from the same page, change this statement
//determine what kind of grading we have
switch ($workshop->gradingstrategy) {
case 0: // no grading
// Insert all the elements that contain something
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"};
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
$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 grade!");
}
}
// 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 ".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\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 grade!");
}
// 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 grade!");
}
$grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
break;
case 4: // rubric grading (identical to accumulative grading)
// Insert all the elements that contain something
foreach ($form->grade as $key => $thegrade) {
unset($element);
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $key;
$element->feedback = $form->{"feedback_$key"};
$element->grade = $thegrade;
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
// now work out the grade...
$rawgrade=0;
$totalweight=0;
foreach ($form->grade as $key => $grade) {
$maxscore = $elements[$key]->maxscore;
$weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
if ($weight > 0) {
$totalweight += $weight;
}
$rawgrade += ($grade / $maxscore) * $weight;
}
$grade = 100.0 * ($rawgrade / $totalweight);
break;
} // end of switch
// update the time of the assessment record (may be re-edited)...
set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id);
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
error ("Updateassessment: submission record not found");
}
// if the workshop does need peer agreement AND it's self assessment then set timeagreed
if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) {
set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
}
// set grade...
set_field("workshop_assessments", "grade", $grade, "id", $assessment->id);
// ...and clear the timegraded but set the graddinggrade to maximum, may to reduced subsequently...
set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id);
set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id);
// ...and the resubmission flag
set_field("workshop_assessments", "resubmission", 0, "id", $assessment->id);
// if there's examples or peer assessments clear the counter in the submission so that
// the cron job will regrade this assessment (and the other assessments fo the submission)
if ($workshop->ntassessments or $workshop->nsassessments) {
set_field("workshop_submissions", "nassessments", 0, "id", $submission->id);
} else { // it could be self assessment....
// now see if there's a corresponding assessment so that the gradinggrade can be set
if (isteacher($course->id)) {
// see if there's are student assessments, if so set their gradinggrade
if ($assessments = workshop_get_assessments($submission)) {
foreach($assessments as $studentassessment) {
// skip if it's not a student assessment
if (!isstudent($course->id, $studentassessment->userid)) {
continue;
}
$gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment);
set_field("workshop_assessments", "timegraded", $timenow, "id", $studentassessment->id);
set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $studentassessment->id);
}
}
} else { //it's a student assessment, see if there's a corresponding teacher's assessment
if ($assessments = workshop_get_assessments($submission)) {
foreach($assessments as $teacherassessment) {
if (isteacher($course->id, $teacherassessment->userid)) {
$gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment);
set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
break; // only look for the first teacher assessment
}
}
}
}
}
// any comment?
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 * $workshop->grade / 100, 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 "
\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)) {
// if it's the teacher see if the user has done a self assessment if so copy it
if (isteacher($course->id) and ($assessment = get_record("workshop_assessments", "submissionid",
$submission->id, "userid", $submission->userid))) {
$assessment = workshop_copy_assessment($assessment, $submission, true);
// need to set owner of assessment
set_field("workshop_assessments", "userid", $USER->id, "id", $assessment->id);
$assessment->resubmission = 0; // not set by workshop_copy_assessment
$assessment->timegraded = 0; // not set by workshop_copy_assessment
$assessment->timeagreed = 0; // not set by workshop_copy_assessment
} else {
$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->timecreated = $yearfromnow;
$assessment->grade = -1; // set impossible grade
$assessment->timegraded = 0;
$assessment->timeagreed = 0;
$assessment->resubmission = 0;
if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
error("Could not insert workshop assessment!");
}
// if it's the teacher and the workshop is error banded set all the elements to Yes
if (isteacher($course->id) and ($workshop->gradingstrategy == 2)) {
for ($i =0; $i < $workshop->nelements; $i++) {
unset($element);
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $i;
$element->feedback = '';
$element->grade = 1;
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
// now set the adjustment
unset($element);
$i = $workshop->nelements;
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $i;
$element->grade = 0;
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
}
}
print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop");
// show assessment and allow changes
workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]);
}
/*************** display grading form (viewed by student) *********************************/
elseif ($action == 'displaygradingform') {
print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop");
workshop_print_assessment($workshop); // called with no assessment
print_continue("view.php?id=$cm->id");
}
/*************** edit comment on assessment (by author, assessor or teacher) ***************************/
elseif ($action == 'editcomment') {
print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop");
// get the comment record...
if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) {
error("Edit Comment: Comment not found");
}
if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
error("Edit Comment: Assessment not found");
}
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
error("Edit Comment: Submission not found");
}
?>
\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");
?>
id)) {
error("Only teachers can look at this page");
}
print_heading(get_string("gradingallassessments", "workshop"));
workshop_grade_assessments($workshop);
print_continue("view.php?id=$cm->id");
}
/*************** grade (student's) assessment (by teacher) ***************************/
elseif ($action == 'gradeassessment') {
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
// set up coment scale
for ($i=COMMENTSCALE; $i>=0; $i--) {
$num[$i] = $i;
}
print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
// get assessment record
if (!$assessmentid = $_GET['aid']) {
error("Assessment id not given");
}
$assessment = get_record("workshop_assessments", "id", $assessmentid);
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
error("Submission not found");
}
// get the teacher's assessment first
if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) {
echo "";
workshop_grade_assessments($workshop);
print_continue("submissions.php?id=$cm->id&action=adminlist");
}
/*************** remove stock comment (by teacher ) ***************************/
elseif ($action == 'removestockcomment') {
require_variable($aid);
require_variable($stockcommentid);
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
error("workshop assessment is misconfigured");
}
$form = data_submitted("nomatch"); // probably always come from the same page, change this statement
// delete the comment from the stock comments table
if (!delete_records("workshop_stockcomments", "id", $stockcommentid)) {
error("Could not remove comment from the comment bank");
}
// now upate the assessment (just the elements, the assessment itself is not updated)
// 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 {
$elements = null;
}
$timenow = time();
// don't fiddle about, delete all the old and add the new!
delete_records("workshop_grades", "assessmentid", $assessment->id);
//determine what kind of grading we have
switch ($workshop->gradingstrategy) {
case 0: // no grading
// Insert all the elements that contain something
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"};
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
}
$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 grade!");
}
}
// 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
";
}
$grade = 100.0 * ($rawgrade / $totalweight);
break;
case 2: // error banded graded
// Insert all the elements that contain something
$error = 0.0;
for ($i =0; $i < $workshop->nelements; $i++) {
unset($element);
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $i;
$element->feedback = $form->{"feedback_$i"};
$element->grade = $form->grade[$i];
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
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 grade!");
}
$grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
// do sanity check
if ($grade < 0) {
$grade = 0;
} elseif ($grade > 100) {
$grade = 100;
}
echo "
";
}
$grade = 100.0 * ($rawgrade / $totalweight);
break;
case 2: // error banded graded
// Insert all the elements that contain something
$error = 0.0;
for ($i =0; $i < $workshop->nelements; $i++) {
unset($element);
$element->workshopid = $workshop->id;
$element->assessmentid = $assessment->id;
$element->elementno = $i;
$element->feedback = $form->{"feedback_$i"};
$element->grade = $form->grade[$i];
if (!$element->id = insert_record("workshop_grades", $element)) {
error("Could not insert workshop grade!");
}
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 grade!");
}
$grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
// do sanity check
if ($grade < 0) {
$grade = 0;
} elseif ($grade > 100) {
$grade = 100;
}
echo "
\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 "
\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",
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?id=$cm->id");
}
/*************** no man's land **************************************/
else {
error("Fatal Error: Unknown Action: ".$action."\n");
}
print_footer($course);
?>