1 <?php // $Id: lib.php,v 1.1 22 Aug 2003
3 /*************************************************
15 editelements (teachers only)
16 gradeallassessments (teachers only)
17 gradeassessment (teachers only)
19 insertelements (for teachers)
20 listungradedstudentsubmissions (for teachers)
21 listungradedteachersubmissions (for teachers)
22 listteachersubmissions
23 regradestudentassessments (for teachers)
31 ************************************************/
33 require("../../config.php");
35 require("locallib.php");
37 require_variable($id); // Course Module ID
39 // get some useful stuff...
40 if (! $cm = get_record("course_modules", "id", $id)) {
41 error("Course Module ID was incorrect");
43 if (! $course = get_record("course", "id", $cm->course)) {
44 error("Course is misconfigured");
46 if (! $workshop = get_record("workshop", "id", $cm->instance)) {
47 error("Course module is incorrect");
50 require_login($course->id);
53 if ($course->category) {
54 $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->";
57 $strworkshops = get_string("modulenameplural", "workshop");
58 $strworkshop = get_string("modulename", "workshop");
59 $strassessments = get_string("assessments", "workshop");
61 // ... print the header and...
62 print_header_simple("$workshop->name", "",
63 "<a href=\"index.php?id=$course->id\">$strworkshops</a> ->
64 <a href=\"view.php?id=$cm->id\">$workshop->name</a> -> $strassessments",
68 require_variable($action);
71 /*************** add comment to assessment (by author, assessor or teacher) ***************************/
72 if ($action == 'addcomment') {
74 print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop");
75 // get assessment record
76 if (!$assessmentid = $_REQUEST['aid']) { // comes from link or hidden form variable
77 error("Assessment id not given");
79 $assessment = get_record("workshop_assessments", "id", $assessmentid);
80 if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
81 error("Submission not found");
84 <form name="commentform" action="assessments.php" method="post">
85 <input type="hidden" name="action" value="insertcomment" />
86 <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
87 <input type="hidden" name="aid" value="<?php echo $_REQUEST['aid'] ?>" />
89 <table cellpadding="5" border="1">
92 // now get the comment
93 echo "<tr valign=\"top\">\n";
95 echo " <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
99 echo " <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
100 echo "</textarea>\n";
102 echo " </td></tr></table>\n";
103 echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
104 echo "</center></form>\n";
105 echo "<center><b>".get_string("assessment", "workshop"). "</b></center>\n";
106 workshop_print_assessment($workshop, $assessment);
111 /*************** add stock comment (by teacher ) ***************************/
112 elseif ($action == 'addstockcomment') {
114 require_variable($aid);
115 require_variable($elementno);
117 if (!isteacher($course->id)) {
118 error("Only teachers can look at this page");
121 if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
122 error("workshop assessment is misconfigured");
124 $form = data_submitted("nomatch"); // probably always come from the same page, change this statement
126 // store the comment in the stock comments table
127 if ($elementno == 99) { // it's the general comment
128 $form->feedback_99 = $form->generalcomment;
130 $comment->workshopid = $workshop->id;
131 $comment->elementno = $elementno;
132 $comment->comments = $form->{"feedback_$elementno"};
133 if (!(trim($comment->comments))) {
134 // no comment given - just redisplay assessment form
135 workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);
136 print_footer($course);
140 if (!$element->id = insert_record("workshop_stockcomments", $comment)) {
141 error("Could not insert comment into comment bank");
144 // now upate the assessment (just the elements, the assessment itself is not updated)
146 // first get the assignment elements for maxscores and weights...
147 $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
148 if (count($elementsraw) < $workshop->nelements) {
149 print_string("noteonassignmentelements", "workshop");
152 foreach ($elementsraw as $element) {
153 $elements[] = $element; // to renumber index 0,1,2...
160 // don't fiddle about, delete all the old and add the new!
161 delete_records("workshop_grades", "assessmentid", $assessment->id);
164 //determine what kind of grading we have
165 switch ($workshop->gradingstrategy) {
166 case 0: // no grading
167 // Insert all the elements that contain something
168 for ($i = 0; $i < $workshop->nelements; $i++) {
170 $element->workshopid = $workshop->id;
171 $element->assessmentid = $assessment->id;
172 $element->elementno = $i;
173 $element->feedback = $form->{"feedback_$i"};
174 if (!$element->id = insert_record("workshop_grades", $element)) {
175 error("Could not insert workshop grade!");
178 $grade = 0; // set to satisfy save to db
181 case 1: // accumulative grading
182 // Insert all the elements that contain something
183 foreach ($form->grade as $key => $thegrade) {
185 $element->workshopid = $workshop->id;
186 $element->assessmentid = $assessment->id;
187 $element->elementno = $key;
188 $element->feedback = $form->{"feedback_$key"};
189 $element->grade = $thegrade;
190 if (!$element->id = insert_record("workshop_grades", $element)) {
191 error("Could not insert workshop grade!");
194 // now work out the grade...
197 foreach ($form->grade as $key => $grade) {
198 $maxscore = $elements[$key]->maxscore;
199 $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
201 $totalweight += $weight;
203 $rawgrade += ($grade / $maxscore) * $weight;
204 // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";
206 $grade = 100.0 * ($rawgrade / $totalweight);
209 case 2: // error banded graded
210 // Insert all the elements that contain something
212 for ($i =0; $i < $workshop->nelements; $i++) {
214 $element->workshopid = $workshop->id;
215 $element->assessmentid = $assessment->id;
216 $element->elementno = $i;
217 $element->feedback = $form->{"feedback_$i"};
218 $element->grade = $form->grade[$i];
219 if (!$element->id = insert_record("workshop_grades", $element)) {
220 error("Could not insert workshop grade!");
222 if (empty($form->grade[$i])){
223 $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
226 // now save the adjustment
228 $i = $workshop->nelements;
229 $element->workshopid = $workshop->id;
230 $element->assessmentid = $assessment->id;
231 $element->elementno = $i;
232 $element->grade = $form->grade[$i];
233 if (!$element->id = insert_record("workshop_grades", $element)) {
234 error("Could not insert workshop grade!");
236 $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
240 } elseif ($grade > 100) {
243 echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n";
246 case 3: // criteria grading
247 // save in the selected criteria value in element zero,
249 $element->workshopid = $workshop->id;
250 $element->assessmentid = $assessment->id;
251 $element->elementno = 0;
252 $element->grade = $form->grade[0];
253 if (!$element->id = insert_record("workshop_grades", $element)) {
254 error("Could not insert workshop grade!");
256 // now save the adjustment in element one
258 $element->workshopid = $workshop->id;
259 $element->assessmentid = $assessment->id;
260 $element->elementno = 1;
261 $element->grade = $form->grade[1];
262 if (!$element->id = insert_record("workshop_grades", $element)) {
263 error("Could not insert workshop grade!");
265 $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
268 case 4: // rubric grading (identical to accumulative grading)
269 // Insert all the elements that contain something
270 foreach ($form->grade as $key => $thegrade) {
272 $element->workshopid = $workshop->id;
273 $element->assessmentid = $assessment->id;
274 $element->elementno = $key;
275 $element->feedback = $form->{"feedback_$key"};
276 $element->grade = $thegrade;
277 if (!$element->id = insert_record("workshop_grades", $element)) {
278 error("Could not insert workshop grade!");
281 // now work out the grade...
284 foreach ($form->grade as $key => $grade) {
285 $maxscore = $elements[$key]->maxscore;
286 $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
288 $totalweight += $weight;
290 $rawgrade += ($grade / $maxscore) * $weight;
292 $grade = 100.0 * ($rawgrade / $totalweight);
299 if (!empty($form->generalcomment)) { // update the object (no need to update the db record)
300 $assessment->generalcomment = $form->generalcomment;
303 // redisplay form, going back to original returnto address
304 workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);
306 // add_to_log($course->id, "workshop", "assess", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
311 /******************* admin confirm delete ************************************/
312 elseif ($action == 'adminconfirmdelete' ) {
314 if (!isteacher($course->id)) {
315 error("Only teachers can look at this page");
317 if (empty($_GET['aid'])) {
318 error("Admin confirm delete: assessment id missing");
321 notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")),
322 "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id");
326 /******************* admin delete ************************************/
327 elseif ($action == 'admindelete' ) {
329 if (!isteacher($course->id)) {
330 error("Only teachers can look at this page");
332 if (empty($_GET['aid'])) {
333 error("Admin delete: submission id missing");
336 print_string("deleting", "workshop");
337 // first delete all the associated records...
338 delete_records("workshop_comments", "assessmentid", $_GET['aid']);
339 delete_records("workshop_grades", "assessmentid", $_GET['aid']);
340 // ...now delete the assessment...
341 delete_records("workshop_assessments", "id", $_GET['aid']);
343 print_continue("submissions.php?id=$cm->id&action=adminlist");
347 /*********************** admin list of asssessments (of a submission) (by teachers)**************/
348 elseif ($action == 'adminlist') {
350 if (!isteacher($course->id)) {
351 error("Only teachers can look at this page");
354 if (empty($_GET['sid'])) {
355 error ("Workshop asssessments: adminlist called with no sid");
357 $submission = get_record("workshop_submissions", "id", $_GET['sid']);
358 workshop_print_assessments_for_admin($workshop, $submission);
359 print_continue("submissions.php?action=adminlist&id=$cm->id");
363 /*********************** admin list of asssessments by a student (used by teachers only )******************/
364 elseif ($action == 'adminlistbystudent') {
366 if (!isteacher($course->id)) {
367 error("Only teachers can look at this page");
370 if (empty($_GET['userid'])) {
371 error ("Workshop asssessments: adminlistbystudent called with no userid");
373 $user = get_record("user", "id", $_GET['userid']);
374 workshop_print_assessments_by_user_for_admin($workshop, $user);
375 print_continue("submissions.php?action=adminlist&id=$cm->id");
379 /*************** agree (to) assessment (by student) ***************************/
380 elseif ($action == 'agreeassessment') {
382 // assessment id comes from link or hidden form variable
383 if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) {
384 error("Assessment : agree assessment failed");
386 //save time of agreement
387 set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
388 echo "<centre><b>".get_string("savedok", "workshop")."</b></center><br />\n";
390 add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id");
391 print_continue("view.php?id=$cm->id");
396 /*************** Assess submission (by teacher or student) ***************************/
397 elseif ($action == 'assesssubmission') {
399 require_variable($sid);
401 optional_variable($allowcomments);
402 if (!isset($allowcomments)) {
403 $allowcomments = false;
406 if (! $submission = get_record("workshop_submissions", "id", $sid)) {
407 error("Assess submission is misconfigured - no submission record!");
410 // there can be an assessment record (for teacher submissions), if there isn't...
411 if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid",
413 // if it's the teacher see if the user has done a self assessment if so copy it
414 if (isteacher($course->id) and ($assessment = get_record("workshop_assessments", "submissionid",
415 $submission->id, "userid", $submission->userid))) {
416 $assessment = workshop_copy_assessment($assessment, $submission, true);
417 // need to set owner of assessment
418 set_field("workshop_assessments", "userid", $USER->id, "id", $assessment->id);
419 $assessment->resubmission = 0; // not set by workshop_copy_assessment
420 $assessment->timegraded = 0; // not set by workshop_copy_assessment
421 $assessment->timeagreed = 0; // not set by workshop_copy_assessment
423 $yearfromnow = time() + 365 * 86400;
424 // ...create one and set timecreated way in the future, this is reset when record is updated
425 $assessment->workshopid = $workshop->id;
426 $assessment->submissionid = $submission->id;
427 $assessment->userid = $USER->id;
428 $assessment->timecreated = $yearfromnow;
429 $assessment->grade = -1; // set impossible grade
430 $assessment->timegraded = 0;
431 $assessment->timeagreed = 0;
432 $assessment->resubmission = 0;
433 if (!$assessment->id = insert_record("workshop_assessments", $assessment)) {
434 error("Could not insert workshop assessment!");
436 // if it's the teacher and the workshop is error banded set all the elements to Yes
437 if (isteacher($course->id) and ($workshop->gradingstrategy == 2)) {
438 for ($i =0; $i < $workshop->nelements; $i++) {
440 $element->workshopid = $workshop->id;
441 $element->assessmentid = $assessment->id;
442 $element->elementno = $i;
443 $element->feedback = '';
445 if (!$element->id = insert_record("workshop_grades", $element)) {
446 error("Could not insert workshop grade!");
449 // now set the adjustment
451 $i = $workshop->nelements;
452 $element->workshopid = $workshop->id;
453 $element->assessmentid = $assessment->id;
454 $element->elementno = $i;
456 if (!$element->id = insert_record("workshop_grades", $element)) {
457 error("Could not insert workshop grade!");
463 print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop");
465 // show assessment and allow changes
466 workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]);
470 /*************** display grading form (viewed by student) *********************************/
471 elseif ($action == 'displaygradingform') {
473 print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop");
475 workshop_print_assessment($workshop); // called with no assessment
476 print_continue("view.php?id=$cm->id");
480 /*************** edit comment on assessment (by author, assessor or teacher) ***************************/
481 elseif ($action == 'editcomment') {
483 print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop");
484 // get the comment record...
485 if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) {
486 error("Edit Comment: Comment not found");
488 if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
489 error("Edit Comment: Assessment not found");
491 if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
492 error("Edit Comment: Submission not found");
495 <form name="gradingform" action="assessments.php" method="post">
496 <input type="hidden" name="action" value="updatecomment" />
497 <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
498 <input type="hidden" name="cid" value="<?php echo $_GET['cid'] ?>" />
500 <table cellpadding="5" border="1">
503 // now show the comment
504 echo "<tr valign=\"top\">\n";
505 echo " <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
507 echo " <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
508 if (isset($comment->comments)) {
509 echo $comment->comments;
511 echo " </textarea>\n";
512 echo " </td></tr></table>\n";
513 echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
514 echo "</center></form>\n";
515 workshop_print_assessment($workshop, $assessment);
519 /*********************** edit assessment elements (for teachers) ***********************/
520 elseif ($action == 'editelements') {
522 if (!isteacher($course->id)) {
523 error("Only teachers can look at this page");
526 $count = count_records("workshop_grades", "workshopid", $workshop->id);
528 notify(get_string("warningonamendingelements", "workshop"));
530 // set up heading, form and table
531 print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop");
533 <form name="form" method="post" action="assessments.php">
534 <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
535 <input type="hidden" name="action" value="insertelements" />
536 <center><table cellpadding="5" border="1">
539 // get existing elements, if none set up appropriate default ones
540 if ($elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC" )) {
541 foreach ($elementsraw as $element) {
542 $elements[] = $element; // to renumber index 0,1,2...
545 // check for missing elements (this happens either the first time round or when the number of elements is icreased)
546 for ($i=0; $i<$workshop->nelements; $i++) {
547 if (!isset($elements[$i])) {
548 $elements[$i]->description = '';
549 $elements[$i]->scale =0;
550 $elements[$i]->maxscore = 0;
551 $elements[$i]->weight = 11;
555 switch ($workshop->gradingstrategy) {
556 case 0: // no grading
557 for ($i=0; $i<$workshop->nelements; $i++) {
559 echo "<tr valign=\"top\">\n";
560 echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
561 echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
562 echo " </td></tr>\n";
563 echo "<tr valign=\"top\">\n";
564 echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"> </td>\n";
569 case 1: // accumulative grading
570 // set up scales name
571 foreach ($WORKSHOP_SCALES as $KEY => $SCALE) {
572 $SCALES[] = $SCALE['name'];
574 for ($i=0; $i<$workshop->nelements; $i++) {
576 echo "<tr valign=\"top\">\n";
577 echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
578 echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
579 echo " </td></tr>\n";
580 echo "<tr valign=\"top\">\n";
581 echo " <td align=\"right\"><b>". get_string("typeofscale", "workshop"). ":</b></td>\n";
582 echo "<td valign=\"top\">\n";
583 choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, "");
584 if ($elements[$i]->weight == '') { // not set
585 $elements[$i]->weight = 11; // unity
588 echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
589 workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
592 echo "<tr valign=\"top\">\n";
593 echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"> </td>\n";
598 case 2: // error banded grading
599 for ($i=0; $i<$workshop->nelements; $i++) {
601 echo "<tr valign=\"top\">\n";
602 echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
603 echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
604 echo " </td></tr>\n";
605 if ($elements[$i]->weight == '') { // not set
606 $elements[$i]->weight = 11; // unity
609 echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
610 workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
613 echo "<tr valign=\"top\">\n";
614 echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"> </td>\n";
617 echo "</center></table><br />\n";
618 echo "<center><b>".get_string("gradetable","workshop")."</b></center>\n";
619 echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">".
620 get_string("numberofnegativeresponses", "workshop");
621 echo "</td><td>". get_string("suggestedgrade", "workshop")."</td></tr>\n";
622 for ($j = $workshop->grade; $j >= 0; $j--) {
625 for ($i=0; $i<=$workshop->nelements; $i++) {
626 echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">";
627 if (!isset($elements[$i])) { // the "last one" will be!
628 $elements[$i]->description = "";
629 $elements[$i]->maxscore = 0;
631 choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
634 echo "</table></center>\n";
637 case 3: // criterion grading
638 for ($j = 100; $j >= 0; $j--) {
641 for ($i=0; $i<$workshop->nelements; $i++) {
643 echo "<tr valign=\"top\">\n";
644 echo " <td align=\"right\"><b>". get_string("criterion","workshop")." $iplus1:</b></td>\n";
645 echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
646 echo " </td></tr>\n";
647 echo "<tr><td><b>". get_string("suggestedgrade", "workshop").":</b></td><td>\n";
648 choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
650 echo "<tr valign=\"top\">\n";
651 echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"> </td>\n";
657 for ($j = 100; $j >= 0; $j--) {
660 if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) {
661 foreach ($rubricsraw as $rubric) {
662 $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2...
665 for ($i=0; $i<$workshop->nelements; $i++) {
667 echo "<tr valign=\"top\">\n";
668 echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
669 echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
670 echo " </td></tr>\n";
671 echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
672 workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
676 for ($j=0; $j<5; $j++) {
678 if (empty($rubrics[$i][$j])) {
679 $rubrics[$i][$j] = "";
681 echo "<tr valign=\"top\">\n";
682 echo " <td align=\"right\"><b>". get_string("grade","workshop")." $j:</b></td>\n";
683 echo "<td><textarea name=\"rubric[$i][$j]\" rows=\"3\" cols=\"75\">".$rubrics[$i][$j]."</textarea>\n";
684 echo " </td></tr>\n";
686 echo "<tr valign=\"top\">\n";
687 echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"> </td>\n";
692 // close table and form
696 <input type="submit" value="<?php print_string("savechanges") ?>" />
697 <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" />
704 /*************** grade all assessments (by teacher) ***************************/
705 elseif ($action == 'gradeallassessments') {
707 if (!isteacher($course->id)) {
708 error("Only teachers can look at this page");
711 print_heading(get_string("gradingallassessments", "workshop"));
712 workshop_grade_assessments($workshop);
713 print_continue("view.php?id=$cm->id");
717 /*************** grade (student's) assessment (by teacher) ***************************/
718 elseif ($action == 'gradeassessment') {
720 if (!isteacher($course->id)) {
721 error("Only teachers can look at this page");
724 print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
725 // get assessment record
726 if (!$assessmentid = $_GET['aid']) {
727 error("Assessment id not given");
729 $assessment = get_record("workshop_assessments", "id", $assessmentid);
730 if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
731 error("Submission not found");
733 // get the teacher's assessment first
734 if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) {
735 echo "<center><b>".get_string("teacherassessments", "workshop", $course->teacher)."</b></center>\n";
736 workshop_print_assessment($workshop, $teachersassessment);
738 // now the student's assessment (don't allow changes)
739 $user = get_record("user", "id", $assessment->userid);
740 echo "<center><b>".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."</b></center>\n";
741 workshop_print_assessment($workshop, $assessment);
743 include('assessment_grading_form.html');
748 /*************** insert (new) comment (by author, assessor or teacher) ***************************/
749 elseif ($action == 'insertcomment') {
752 $form = (object)$_POST;
754 if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
755 error("Unable to insert comment");
757 // save the comment...
758 $comment->workshopid = $workshop->id;
759 $comment->assessmentid = $assessment->id;
760 $comment->userid = $USER->id;
761 $comment->timecreated = $timenow;
762 $comment->comments = $form->comments;
763 if (!$comment->id = insert_record("workshop_comments", $comment)) {
764 error("Could not insert workshop comment!");
767 add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id");
769 print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id");
773 /*********************** insert/update assignment elements (for teachers)***********************/
774 elseif ($action == 'insertelements') {
776 if (!isteacher($course->id)) {
777 error("Only teachers can look at this page");
780 $form = (object)$HTTP_POST_VARS;
782 // let's not fool around here, dump the junk!
783 delete_records("workshop_elements", "workshopid", $workshop->id);
785 // determine wich type of grading
786 switch ($workshop->gradingstrategy) {
787 case 0: // no grading
788 // Insert all the elements that contain something
789 foreach ($form->description as $key => $description) {
792 $element->description = $description;
793 $element->workshopid = $workshop->id;
794 $element->elementno = $key;
795 if (!$element->id = insert_record("workshop_elements", $element)) {
796 error("Could not insert workshop element!");
802 case 1: // accumulative grading
803 // Insert all the elements that contain something
804 foreach ($form->description as $key => $description) {
807 $element->description = $description;
808 $element->workshopid = $workshop->id;
809 $element->elementno = $key;
810 if (isset($form->scale[$key])) {
811 $element->scale = $form->scale[$key];
812 switch ($WORKSHOP_SCALES[$form->scale[$key]]['type']) {
813 case 'radio' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'] - 1;
815 case 'selection' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'];
819 if (isset($form->weight[$key])) {
820 $element->weight = $form->weight[$key];
822 if (!$element->id = insert_record("workshop_elements", $element)) {
823 error("Could not insert workshop element!");
829 case 2: // error banded grading...
830 case 3: // ...and criterion grading
831 // Insert all the elements that contain something, the number of descriptions is one less than the number of grades
832 foreach ($form->maxscore as $key => $themaxscore) {
834 $element->workshopid = $workshop->id;
835 $element->elementno = $key;
836 $element->maxscore = $themaxscore;
837 if (isset($form->description[$key])) {
838 $element->description = $form->description[$key];
840 if (isset($form->weight[$key])) {
841 $element->weight = $form->weight[$key];
843 if (!$element->id = insert_record("workshop_elements", $element)) {
844 error("Could not insert workshop element!");
849 case 4: // ...and criteria grading
850 // Insert all the elements that contain something
851 foreach ($form->description as $key => $description) {
853 $element->workshopid = $workshop->id;
854 $element->elementno = $key;
855 $element->description = $description;
856 $element->weight = $form->weight[$key];
857 for ($j=0;$j<5;$j++) {
858 if (empty($form->rubric[$key][$j]))
861 $element->maxscore = $j - 1;
862 if (!$element->id = insert_record("workshop_elements", $element)) {
863 error("Could not insert workshop element!");
866 // let's not fool around here, dump the junk!
867 delete_records("workshop_rubrics", "workshopid", $workshop->id);
868 for ($i=0;$i<$workshop->nelements;$i++) {
869 for ($j=0;$j<5;$j++) {
871 if (empty($form->rubric[$i][$j])) { // OK to have an element with fewer than 5 items
874 $element->workshopid = $workshop->id;
875 $element->elementno = $i;
876 $element->rubricno = $j;
877 $element->description = $form->rubric[$i][$j];
878 if (!$element->id = insert_record("workshop_rubrics", $element)) {
879 error("Could not insert workshop element!");
886 redirect("view.php?id=$cm->id", get_string("savedok","workshop"));
890 /*********************** list assessments for grading (Student submissions)(by teachers)***********************/
891 elseif ($action == 'listungradedstudentsubmissions') {
893 if (!isteacher($course->id)) {
894 error("Only teachers can look at this page");
896 workshop_list_ungraded_assessments($workshop, "student");
897 print_continue("view.php?id=$cm->id");
901 /*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/
902 elseif ($action == 'listungradedteachersubmissions') {
904 if (!isteacher($course->id)) {
905 error("Only teachers can look at this page");
907 workshop_list_ungraded_assessments($workshop, "teacher");
908 print_continue("view.php?id=$cm->id");
912 /****************** list teacher submissions ***********************/
913 elseif ($action == 'listteachersubmissions') {
915 workshop_list_teacher_submissions($workshop, $USER);
916 print_continue("view.php?id=$cm->id");
920 /******************* regrade student assessments ************************************/
921 elseif ($action == 'regradestudentassessments' ) {
924 if (!isteacher($course->id)) {
925 error("Only teachers can look at this page");
927 // get all the submissions...
928 if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) {
929 foreach ($submissions as $submission) {
931 if (($submission->timecreated + $CFG->maxeditingtime) < $timenow) {
932 // ...clear assessment count so workshop_grade_assessments() can do its thing
933 set_field("workshop_submissions", "nassessments", 0, "id", $submission->id);
938 workshop_grade_assessments($workshop);
939 print_continue("submissions.php?id=$cm->id&action=adminlist");
943 /*************** remove stock comment (by teacher ) ***************************/
944 elseif ($action == 'removestockcomment') {
946 require_variable($aid);
947 require_variable($stockcommentid);
949 if (!isteacher($course->id)) {
950 error("Only teachers can look at this page");
953 if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
954 error("workshop assessment is misconfigured");
956 $form = data_submitted("nomatch"); // probably always come from the same page, change this statement
958 // delete the comment from the stock comments table
959 if (!delete_records("workshop_stockcomments", "id", $stockcommentid)) {
960 error("Could not remove comment from the comment bank");
963 // now upate the assessment (just the elements, the assessment itself is not updated)
965 // first get the assignment elements for maxscores and weights...
966 $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
967 if (count($elementsraw) < $workshop->nelements) {
968 print_string("noteonassignmentelements", "workshop");
971 foreach ($elementsraw as $element) {
972 $elements[] = $element; // to renumber index 0,1,2...
979 // don't fiddle about, delete all the old and add the new!
980 delete_records("workshop_grades", "assessmentid", $assessment->id);
983 //determine what kind of grading we have
984 switch ($workshop->gradingstrategy) {
985 case 0: // no grading
986 // Insert all the elements that contain something
987 for ($i =0; $i < $workshop->nelements; $i++) {
989 $element->workshopid = $workshop->id;
990 $element->assessmentid = $assessment->id;
991 $element->elementno = $i;
992 $element->feedback = $form->{"feedback_$i"};
993 if (!$element->id = insert_record("workshop_grades", $element)) {
994 error("Could not insert workshop grade!");
997 $grade = 0; // set to satisfy save to db
1000 case 1: // accumulative grading
1001 // Insert all the elements that contain something
1002 foreach ($form->grade as $key => $thegrade) {
1004 $element->workshopid = $workshop->id;
1005 $element->assessmentid = $assessment->id;
1006 $element->elementno = $key;
1007 $element->feedback = $form->{"feedback_$key"};
1008 $element->grade = $thegrade;
1009 if (!$element->id = insert_record("workshop_grades", $element)) {
1010 error("Could not insert workshop grade!");
1013 // now work out the grade...
1016 foreach ($form->grade as $key => $grade) {
1017 $maxscore = $elements[$key]->maxscore;
1018 $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
1020 $totalweight += $weight;
1022 $rawgrade += ($grade / $maxscore) * $weight;
1023 // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";
1025 $grade = 100.0 * ($rawgrade / $totalweight);
1028 case 2: // error banded graded
1029 // Insert all the elements that contain something
1031 for ($i =0; $i < $workshop->nelements; $i++) {
1033 $element->workshopid = $workshop->id;
1034 $element->assessmentid = $assessment->id;
1035 $element->elementno = $i;
1036 $element->feedback = $form->{"feedback_$i"};
1037 $element->grade = $form->grade[$i];
1038 if (!$element->id = insert_record("workshop_grades", $element)) {
1039 error("Could not insert workshop grade!");
1041 if (empty($form->grade[$i])){
1042 $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
1045 // now save the adjustment
1047 $i = $workshop->nelements;
1048 $element->workshopid = $workshop->id;
1049 $element->assessmentid = $assessment->id;
1050 $element->elementno = $i;
1051 $element->grade = $form->grade[$i];
1052 if (!$element->id = insert_record("workshop_grades", $element)) {
1053 error("Could not insert workshop grade!");
1055 $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
1059 } elseif ($grade > 100) {
1062 echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n";
1065 case 3: // criteria grading
1066 // save in the selected criteria value in element zero,
1068 $element->workshopid = $workshop->id;
1069 $element->assessmentid = $assessment->id;
1070 $element->elementno = 0;
1071 $element->grade = $form->grade[0];
1072 if (!$element->id = insert_record("workshop_grades", $element)) {
1073 error("Could not insert workshop grade!");
1075 // now save the adjustment in element one
1077 $element->workshopid = $workshop->id;
1078 $element->assessmentid = $assessment->id;
1079 $element->elementno = 1;
1080 $element->grade = $form->grade[1];
1081 if (!$element->id = insert_record("workshop_grades", $element)) {
1082 error("Could not insert workshop grade!");
1084 $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
1087 case 4: // rubric grading (identical to accumulative grading)
1088 // Insert all the elements that contain something
1089 foreach ($form->grade as $key => $thegrade) {
1091 $element->workshopid = $workshop->id;
1092 $element->assessmentid = $assessment->id;
1093 $element->elementno = $key;
1094 $element->feedback = $form->{"feedback_$key"};
1095 $element->grade = $thegrade;
1096 if (!$element->id = insert_record("workshop_grades", $element)) {
1097 error("Could not insert workshop grade!");
1100 // now work out the grade...
1103 foreach ($form->grade as $key => $grade) {
1104 $maxscore = $elements[$key]->maxscore;
1105 $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
1107 $totalweight += $weight;
1109 $rawgrade += ($grade / $maxscore) * $weight;
1111 $grade = 100.0 * ($rawgrade / $totalweight);
1118 if (!empty($form->generalcomment)) { // update the object (no need to update the db record)
1119 $assessment->generalcomment = $form->generalcomment;
1122 // redisplay form, going back to original returnto address
1123 workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);
1125 // add_to_log($course->id, "workshop", "assess", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
1130 /*************** update assessment (by teacher or student) ***************************/
1131 elseif ($action == 'updateassessment') {
1133 require_variable($aid);
1134 if (! $assessment = get_record("workshop_assessments", "id", $aid)) {
1135 error("workshop assessment is misconfigured");
1138 // first get the assignment elements for maxscores and weights...
1139 $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
1140 if (count($elementsraw) < $workshop->nelements) {
1141 print_string("noteonassignmentelements", "workshop");
1144 foreach ($elementsraw as $element) {
1145 $elements[] = $element; // to renumber index 0,1,2...
1152 // don't fiddle about, delete all the old and add the new!
1153 delete_records("workshop_grades", "assessmentid", $assessment->id);
1155 $form = data_submitted("nomatch"); // probably always come from the same page, change this statement
1157 //determine what kind of grading we have
1158 switch ($workshop->gradingstrategy) {
1159 case 0: // no grading
1160 // Insert all the elements that contain something
1161 for ($i = 0; $i < $workshop->nelements; $i++) {
1163 $element->workshopid = $workshop->id;
1164 $element->assessmentid = $assessment->id;
1165 $element->elementno = $i;
1166 $element->feedback = $form->{"feedback_$i"};
1167 if (!$element->id = insert_record("workshop_grades", $element)) {
1168 error("Could not insert workshop grade!");
1171 $grade = 0; // set to satisfy save to db
1174 case 1: // accumulative grading
1175 // Insert all the elements that contain something
1176 foreach ($form->grade as $key => $thegrade) {
1178 $element->workshopid = $workshop->id;
1179 $element->assessmentid = $assessment->id;
1180 $element->elementno = $key;
1181 $element->feedback = $form->{"feedback_$key"};
1182 $element->grade = $thegrade;
1183 if (!$element->id = insert_record("workshop_grades", $element)) {
1184 error("Could not insert workshop grade!");
1187 // now work out the grade...
1190 foreach ($form->grade as $key => $grade) {
1191 $maxscore = $elements[$key]->maxscore;
1192 $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
1194 $totalweight += $weight;
1196 $rawgrade += ($grade / $maxscore) * $weight;
1197 // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";
1199 $grade = 100.0 * ($rawgrade / $totalweight);
1202 case 2: // error banded graded
1203 // Insert all the elements that contain something
1205 for ($i =0; $i < $workshop->nelements; $i++) {
1207 $element->workshopid = $workshop->id;
1208 $element->assessmentid = $assessment->id;
1209 $element->elementno = $i;
1210 $element->feedback = $form->{"feedback_$i"};
1211 $element->grade = $form->grade[$i];
1212 if (!$element->id = insert_record("workshop_grades", $element)) {
1213 error("Could not insert workshop grade!");
1215 if (empty($form->grade[$i])){
1216 $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
1219 // now save the adjustment
1221 $i = $workshop->nelements;
1222 $element->workshopid = $workshop->id;
1223 $element->assessmentid = $assessment->id;
1224 $element->elementno = $i;
1225 $element->grade = $form->grade[$i];
1226 if (!$element->id = insert_record("workshop_grades", $element)) {
1227 error("Could not insert workshop grade!");
1229 $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
1233 } elseif ($grade > 100) {
1236 echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n";
1239 case 3: // criteria grading
1240 // save in the selected criteria value in element zero,
1242 $element->workshopid = $workshop->id;
1243 $element->assessmentid = $assessment->id;
1244 $element->elementno = 0;
1245 $element->grade = $form->grade[0];
1246 if (!$element->id = insert_record("workshop_grades", $element)) {
1247 error("Could not insert workshop grade!");
1249 // now save the adjustment in element one
1251 $element->workshopid = $workshop->id;
1252 $element->assessmentid = $assessment->id;
1253 $element->elementno = 1;
1254 $element->grade = $form->grade[1];
1255 if (!$element->id = insert_record("workshop_grades", $element)) {
1256 error("Could not insert workshop grade!");
1258 $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
1261 case 4: // rubric grading (identical to accumulative grading)
1262 // Insert all the elements that contain something
1263 foreach ($form->grade as $key => $thegrade) {
1265 $element->workshopid = $workshop->id;
1266 $element->assessmentid = $assessment->id;
1267 $element->elementno = $key;
1268 $element->feedback = $form->{"feedback_$key"};
1269 $element->grade = $thegrade;
1270 if (!$element->id = insert_record("workshop_grades", $element)) {
1271 error("Could not insert workshop grade!");
1274 // now work out the grade...
1277 foreach ($form->grade as $key => $grade) {
1278 $maxscore = $elements[$key]->maxscore;
1279 $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
1281 $totalweight += $weight;
1283 $rawgrade += ($grade / $maxscore) * $weight;
1285 $grade = 100.0 * ($rawgrade / $totalweight);
1290 // update the time of the assessment record (may be re-edited)...
1291 set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id);
1293 if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
1294 error ("Updateassessment: submission record not found");
1297 // if the workshop does need peer agreement AND it's self assessment then set timeagreed
1298 if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) {
1299 set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
1303 set_field("workshop_assessments", "grade", $grade, "id", $assessment->id);
1304 // ...and clear the timegraded but set the graddinggrade to maximum, may to reduced subsequently...
1305 set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id);
1306 set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id);
1307 // ...and the resubmission flag
1308 set_field("workshop_assessments", "resubmission", 0, "id", $assessment->id);
1310 // if there's examples or peer assessments clear the counter in the submission so that
1311 // the cron job will regrade this assessment (and the other assessments fo the submission)
1312 if ($workshop->ntassessments or $workshop->nsassessments) {
1313 set_field("workshop_submissions", "nassessments", 0, "id", $submission->id);
1314 } else { // it could be self assessment....
1315 // now see if there's a corresponding assessment so that the gradinggrade can be set
1316 if (isteacher($course->id)) {
1317 // see if there's are student assessments, if so set their gradinggrade
1318 if ($assessments = workshop_get_assessments($submission)) {
1319 foreach($assessments as $studentassessment) {
1320 // skip if it's not a student assessment
1321 if (!isstudent($course->id, $studentassessment->userid)) {
1324 $gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment);
1325 set_field("workshop_assessments", "timegraded", $timenow, "id", $studentassessment->id);
1326 set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $studentassessment->id);
1329 } else { //it's a student assessment, see if there's a corresponding teacher's assessment
1330 if ($assessments = workshop_get_assessments($submission)) {
1331 foreach($assessments as $teacherassessment) {
1332 if (isteacher($course->id, $teacherassessment->userid)) {
1333 $gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment);
1334 set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
1335 set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
1336 break; // only look for the first teacher assessment
1344 if (!empty($form->generalcomment)) {
1345 set_field("workshop_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id);
1348 add_to_log($course->id, "workshop", "assess",
1349 "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
1351 // set up return address
1352 if (!$returnto = $form->returnto) {
1353 $returnto = "view.php?id=$cm->id";
1356 // show grade if grading strategy is not zero
1357 if ($workshop->gradingstrategy) {
1358 redirect($returnto, get_string("thegradeis", "workshop").": ".
1359 number_format($grade * $workshop->grade / 100, 2).
1360 " (".get_string("maximumgrade")." ".number_format($workshop->grade).")");
1363 redirect($returnto);
1368 /****************** update comment (by author, assessor or teacher) ********************/
1369 elseif ($action == 'updatecomment') {
1372 $form = (object)$_POST;
1374 // get the comment record...
1375 if (!$comment = get_record("workshop_comments", "id", $_POST['cid'])) {
1376 error("Update to Comment failed");
1378 if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
1379 error("Update Comment: Assessment not found");
1381 //save the comment for the assessment...
1382 if (isset($form->comments)) {
1383 set_field("workshop_comments", "comments", $form->comments, "id", $comment->id);
1384 set_field("workshop_comments", "timecreated", $timenow, "id", $comment->id);
1385 // ..and kick to comment into life (probably not needed but just in case)
1386 set_field("workshop_comments", "mailed", 0, "id", $comment->id);
1387 echo "<centre><b>".get_string("savedok", "workshop")."</b></center><br />\n";
1389 add_to_log($course->id, "workshop", "comment",
1390 "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$comment->id");
1393 print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id");
1397 /****************** update grading (by teacher) ***************************/
1398 elseif ($action == 'updategrading') {
1401 if (!isteacher($course->id)) {
1402 error("Only teachers can look at this page");
1405 $form = (object)$_POST;
1407 if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
1408 error("Update Grading failed");
1410 //save the comment and grade for the assessment
1411 if (isset($form->teachercomment)) {
1412 set_field("workshop_assessments", "teachercomment", $form->teachercomment, "id", $assessment->id);
1413 set_field("workshop_assessments", "gradinggrade", $form->gradinggrade, "id", $assessment->id);
1414 set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
1415 set_field("workshop_assessments", "mailed", 0, "id", $assessment->id);
1416 set_field("workshop_assessments", "teachergraded", 1, "id", $assessment->id);
1417 echo "<centre><b>".get_string("savedok", "workshop")."</b></centre><br />\n";
1419 add_to_log($course->id, "workshop", "grade",
1420 "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id");
1422 switch ($form->stype) {
1424 redirect("assessments.php?action=listungradedstudentsubmissions&id=$cm->id");
1427 redirect("assessments.php?action=listungradedteachersubmissions&id=$cm->id");
1433 /****************** user confirm delete ************************************/
1434 elseif ($action == 'userconfirmdelete' ) {
1436 if (empty($_GET['aid'])) {
1437 error("User confirm delete: assessment id missing");
1440 notice_yesno(get_string("confirmdeletionofthisitem","workshop",
1441 get_string("assessment", "workshop")),
1442 "assessments.php?action=userdelete&id=$cm->id&aid=$_GET[aid]", "view.php?id=$cm->id");
1446 /****************** user delete ************************************/
1447 elseif ($action == 'userdelete' ) {
1449 if (empty($_GET['aid'])) {
1450 error("User delete: assessment id missing");
1453 print_string("deleting", "workshop");
1454 // first delete all the associated records...
1455 delete_records("workshop_comments", "assessmentid", $_GET['aid']);
1456 delete_records("workshop_grades", "assessmentid", $_GET['aid']);
1457 // ...now delete the assessment...
1458 delete_records("workshop_assessments", "id", $_GET['aid']);
1460 print_continue("view.php?id=$cm->id");
1464 /****************** view all assessments ***********************/
1465 elseif ($action == 'viewallassessments') {
1467 if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
1468 error("View All Assessments: submission record not found");
1471 if ($assessments = workshop_get_assessments($submission)) {
1472 foreach ($assessments as $assessment) {
1473 workshop_print_assessment($workshop, $assessment);
1476 // only called from list all submissions
1477 print_continue("submissions.php?action=listallsubmissions&id=$cm->id");
1481 /****************** view assessment *****************************/
1482 elseif ($action == 'viewassessment') {
1484 optional_variable($allowcomments);
1485 if (!isset($allowcomments)) {
1486 $allowcomments = false;
1489 // get the assessment record
1490 if (!$assessment = get_record("workshop_assessments", "id", $_GET['aid'])) {
1491 error("Assessment record not found");
1494 // show assessment but don't allow changes
1495 workshop_print_assessment($workshop, $assessment, false, $allowcomments);
1497 if (isteacher($course->id) and !isteacher($course->id, $assessment->userid)) {
1498 print_heading('<a href="assessments.php?action=gradeassessment&id='.$cm->id.'&stype=student&aid='.$assessment->id.'">'.
1499 get_string('assessthisassessment', 'workshop').'</a>');
1502 print_continue("view.php?id=$cm->id");
1506 /*************** no man's land **************************************/
1508 error("Fatal Error: Unknown Action: ".$action."\n");
1511 print_footer($course);