]> git.mjollnir.org Git - moodle.git/commitdiff
A new version (2003121000). Fixes to backup/restore. Addition of "late"
authorrkingdon <rkingdon>
Wed, 24 Dec 2003 14:43:24 +0000 (14:43 +0000)
committerrkingdon <rkingdon>
Wed, 24 Dec 2003 14:43:24 +0000 (14:43 +0000)
work and the reduction of the number of phases to 3 (from 4).

mod/exercise/backuplib.php
mod/exercise/db/mysql.php
mod/exercise/db/mysql.sql
mod/exercise/index.php
mod/exercise/lib.php
mod/exercise/restorelib.php
mod/exercise/submissions.php
mod/exercise/upload.php
mod/exercise/version.php
mod/exercise/view.php

index 0677ac92d31a99e8d00517a931750857845f72fe..78b894ddff6e8a15ae0b0ba11c772aba175a304c 100644 (file)
                 //Now we backup exercise elements
                 $status = backup_exercise_elements($bf,$preferences,$exercise->id);
                 //Now we backup any teacher submissions (these are an integral part of the exercise)
-                $status = backup_exercise_teacher_submissions($bf, $preferences, $exercise->id);
-                //if we've selected to backup users info, then execute backup_exercise_submisions
-                if ($preferences->mods["exercise"]->userinfo) {
-                    $status = backup_exercise_student_submissions($bf,$preferences,$exercise->id);
-                }
+                $status = backup_exercise_submissions($bf, $preferences, $exercise->id);
                 //End mod
                 $status =fwrite ($bf,end_tag("MOD",3,true));
                 //we need to backup the teacher files (the exercise descriptions)
         return $status;
     }
 
-    //Backup exercise_teacher_submissions contents (executed from exercise_backup_mods)
-    function backup_exercise_teacher_submissions ($bf,$preferences,$exerciseid) {
+    //Backup exercise_submissions contents (executed from exercise_backup_mods)
+    function backup_exercise_submissions ($bf,$preferences,$exerciseid) {
 
         global $CFG;
 
                 //End submission
                 $status =fwrite ($bf,end_tag("SUBMISSION",5,true));
             }
+            //if we've selected to backup users info, then backup the student submisions
+            if ($preferences->mods["exercise"]->userinfo) {
+                $exercise_submissions = get_records_select("exercise_submissions","exerciseid = $exerciseid
+                        AND isexercise = 0");
+                //If there is submissions
+                if ($exercise_submissions) {
+                    //Iterate over each submission
+                    foreach ($exercise_submissions as $submission) {
+                        //Start submission
+                        $status =fwrite ($bf,start_tag("SUBMISSION",5,true));
+                        //Print submission contents
+                        fwrite ($bf,full_tag("ID",6,false,$submission->id));       
+                        fwrite ($bf,full_tag("USERID",6,false,$submission->userid));       
+                        fwrite ($bf,full_tag("TITLE",6,false,$submission->title));       
+                        fwrite ($bf,full_tag("TIMECREATED",6,false,$submission->timecreated));       
+                        fwrite ($bf,full_tag("RESUBMIT",6,false,$submission->resubmit));       
+                        fwrite ($bf,full_tag("MAILED",6,false,$submission->mailed));       
+                        fwrite ($bf,full_tag("ISEXERCISE",6,false,$submission->isexercise));       
+                        fwrite ($bf,full_tag("LATE",6,false,$submission->late));       
+                        //Now we backup any exercise assessments
+                        $status = backup_exercise_assessments($bf,$preferences,$exerciseid,$submission->id);
+                        //End submission
+                        $status =fwrite ($bf,end_tag("SUBMISSION",5,true));
+                    }
+                }
+            }
             //Write end tag
             $status =fwrite ($bf,end_tag("SUBMISSIONS",4,true));
         }
 
         $status = true;
 
-        $exercise_submissions = get_records_select("exercise_submissions","exerciseid = $exerciseid
-                AND isexercise = 0");
-        //If there is submissions
-        if ($exercise_submissions) {
-            //Write start tag
-            $status =fwrite ($bf,start_tag("SUBMISSIONS",4,true));
-            //Iterate over each submission
-            foreach ($exercise_submissions as $submission) {
-                //Start submission
-                $status =fwrite ($bf,start_tag("SUBMISSION",5,true));
-                //Print submission contents
-                fwrite ($bf,full_tag("ID",6,false,$submission->id));       
-                fwrite ($bf,full_tag("USERID",6,false,$submission->userid));       
-                fwrite ($bf,full_tag("TITLE",6,false,$submission->title));       
-                fwrite ($bf,full_tag("TIMECREATED",6,false,$submission->timecreated));       
-                fwrite ($bf,full_tag("RESUBMIT",6,false,$submission->resubmit));       
-                fwrite ($bf,full_tag("MAILED",6,false,$submission->mailed));       
-                fwrite ($bf,full_tag("ISEXERCISE",6,false,$submission->isexercise));       
-                //Now we backup any exercise assessments
-                $status = backup_exercise_assessments($bf,$preferences,$exerciseid,$submission->id);
-                //End submission
-                $status =fwrite ($bf,end_tag("SUBMISSION",5,true));
-            }
-            //Write end tag
-            $status =fwrite ($bf,end_tag("SUBMISSIONS",4,true));
-        }
         return $status;
     }
 
index fb4e3000907e8e197a916412f0636963b08e1ee5..954aab1e30c9254129090756258152d0ef29a32e 100644 (file)
@@ -13,6 +13,10 @@ function exercise_upgrade($oldversion) {
                execute_sql(" ALTER TABLE `{$CFG->prefix}exercise_assessments` ADD INDEX (`userid`)");
                execute_sql(" ALTER TABLE `{$CFG->prefix}exercise_grades` ADD INDEX (`assessmentid`)");
                }
+    
+    if ($oldversion < 2003121000) {
+               execute_sql(" ALTER TABLE `{$CFG->prefix}exercise_submissions` ADD `late` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0'");
+               }
                
     return true;
 }
index 943bfdc458f7cf26b592c6ccb3ce350360c43f51..916109f4d92bd31e09d6e7c678df4c99105f8aa1 100644 (file)
@@ -35,6 +35,7 @@ CREATE TABLE `prefix_exercise_submissions` (
   `resubmit` tinyint(3) unsigned NOT NULL default '0',
   `mailed` tinyint(3) unsigned NOT NULL default '0',
   `isexercise` tinyint(3) unsigned NOT NULL default '0',
+  `late` tinyint(3) unsigned NOT NULL default '0',
    PRIMARY KEY  (`id`),
    INDEX `userid` (`userid`) 
 ) COMMENT='Info about submitted work from teacher and students';
index f3fe7e1bc4de92062732143c7f3b202e5093dadc..eb0757b2cbd3adb028953960da4bdcf80dd38825 100644 (file)
     }
 
     foreach ($exercises as $exercise) {
+               if ($exercise->deadline > $timenow) {
+            $due = userdate($exercise->deadline);
+        } else {
+            $due = "<FONT COLOR=\"red\">".userdate($exercise->deadline)."</FONT>";
+        }
         if ($submissions = exercise_get_user_submissions($exercise, $USER)) {
             foreach ($submissions as $submission) {
-                               if ($submission->timecreated <= $exercise->deadline) {
-                                       $submitted = userdate($submission->timecreated);
+                               if ($submission->late) {
+                                       $submitted = "<FONT COLOR=\"red\">".userdate($submission->timecreated)."</FONT>";
                                        } 
                                else {
-                                       $submitted = "<FONT COLOR=red>".userdate($submission->timecreated)."</FONT>";
+                                       $submitted = userdate($submission->timecreated);
                                        }
-                               $due = userdate($exercise->deadline);
                                $link = "<A HREF=\"view.php?id=$exercise->coursemodule\">$exercise->name</A>";
                                $title = $submission->title;
                                if ($course->format == "weeks" or $course->format == "topics") {
                     if (isteacher($course->id)) {
+                        $phase = '';
                         switch ($exercise->phase) {
                             case 1: $phase = get_string("phase1short", "exercise");
                                     break;
@@ -76,8 +81,6 @@
                                     break;
                             case 3: $phase = get_string("phase3short", "exercise");
                                     break;
-                            case 4: $phase = get_string("phase4short", "exercise");
-                                    break;
                         }
                                            $table->data[] = array ($exercise->section, $link, $title, $phase, 
                                 $submitted, $due);
                             }
                         }
                         if ($assessed) {
-                            $actualgrade = $grade * $exercise->grade / 100.0; 
+                            $actualgrade = number_format($grade * $exercise->grade / 100.0, 1);
+                            if ($submission->late) {
+                                $actualgrade = "<font color=\"red\">(".$actualgrade.")<font color=\"red\">";
+                            } else {
+                            }
                                            $table->data[] = array ($exercise->section, $link, $title, 
-                                    number_format($actualgrade, 1), $submitted, $due);
+                                    $actualgrade, $submitted, $due);
                         } else {
                                            $table->data[] = array ($exercise->section, $link, $title, 
                                     "-", $submitted, $due);
                else {
             $submitted = get_string("no");
                        $title = '';
-                       $due = userdate($exercise->deadline);
                        $link = "<A HREF=\"view.php?id=$exercise->coursemodule\">$exercise->name</A>";
                        if ($course->format == "weeks" or $course->format == "topics") {
                 if (isteacher($course->id)) {
index f38da93aba369839358d28b05773712e467cb340..488e7847fd256153914895c3ee0a107738a825d9 100644 (file)
@@ -650,7 +650,7 @@ function exercise_print_dual_assessment_form($exercise, $assessment, $submission
 function exercise_print_feedback($course, $submission) {
 function exercise_print_league_table($exercise) {
 function exercise_print_submission_assessments($exercise, $submission, $type) {
-function exercise_print_submission_title($exercise, $user) {
+function exercise_print_submission_title($exercise, $submission) {
 function exercise_print_tabbed_table($table) {
 function exercise_print_teacher_table($course) {
 function exercise_print_time_to_deadline($time) {
@@ -1055,6 +1055,7 @@ function exercise_get_best_submission_grades($exercise) {
                             WHERE u.course = $exercise->course
                               AND s.userid = u.userid
                                                          AND s.exerciseid = $exercise->id
+                              AND s.late = 0
                                                          AND a.submissionid = s.id
                                                          GROUP BY u.userid");
 }
@@ -1104,6 +1105,7 @@ function exercise_get_mean_submission_grades($exercise) {
                             WHERE u.course = $exercise->course
                               AND s.userid = u.userid
                                                          AND s.exerciseid = $exercise->id
+                              AND s.late = 0
                                                          AND a.submissionid = s.id
                               AND a.timecreated < $timenow
                                                          GROUP BY u.userid");
@@ -1351,97 +1353,99 @@ function exercise_list_submissions_for_admin($exercise) {
     }
 
        exercise_print_assignment_info($exercise);
-
-       print_heading_with_help(get_string("administration"), "administration", "exercise");
+    print_heading_with_help(get_string("administration"), "administration", "exercise");
     echo"<p align=\"center\"><b><a href=\"assessments.php?action=teachertable&id=$cm->id\">".
-        get_string("teacherassessmenttable", "exercise", $course->teacher)."</a></b></p>\n";
-
-       ?>
-       <form name="weightsform" method="post" action="submissions.php">
-       <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
-       <input type="hidden" name="action" value="saveweights">
-       <CENTER>
-       <?PHP
-
-       // get the final weights from the database
-       $teacherweight = get_field("exercise","teacherweight", "id", $exercise->id);
-       $gradingweight = get_field("exercise","gradingweight", "id", $exercise->id);
-
-       // now show the weights used in the grades
-       echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
-       echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".
-               get_string("weightsusedforoverallgrade", "exercise")."</b></td></tr>\n";
-       echo "<TR><TD ALIGN=\"right\">".get_string("weightforgradingofassessments", "exercise").":</TD>\n";
-       echo "<TD>";
-       exercise_choose_from_menu($EXERCISE_FWEIGHTS, "gradingweight", $gradingweight, "");
-       echo "</td></tr>\n";
-       echo "<tr><td align=\"right\">".get_string("weightforteacherassessments", "exercise", 
-            $course->teacher).":</td>\n";
-       echo "<td>";
-       exercise_choose_from_menu($EXERCISE_FWEIGHTS, "teacherweight", $teacherweight, "");
-       echo "</td></tr>\n";
-       echo "<tr><td colspan=\"2\" align=\"center\">"; 
-       echo "<INPUT TYPE=submit VALUE=\"".get_string("saveweights", "exercise")."\">\n";
-       echo "</td></tr>\n";
-       echo "</TABLE>\n";
-       echo "</CENTER><br />";
-       echo "</FORM>\n";
-
-       ?>
-       <form name="leagueform" method="post" action="submissions.php">
-       <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
-       <input type="hidden" name="action" value="saveleaguetable">
-       <CENTER>
-       <?PHP
+            get_string("teacherassessmenttable", "exercise", $course->teacher)."</a></b></p>\n";
+
+
+    if (isteacheredit($course->id)) {
+        ?>
+            <form name="weightsform" method="post" action="submissions.php">
+            <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
+            <input type="hidden" name="action" value="saveweights">
+            <CENTER>
+            <?PHP
+
+            // get the final weights from the database
+            $teacherweight = get_field("exercise","teacherweight", "id", $exercise->id);
+        $gradingweight = get_field("exercise","gradingweight", "id", $exercise->id);
+
+        // now show the weights used in the grades
+        echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
+        echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".
+            get_string("weightsusedforoverallgrade", "exercise")."</b></td></tr>\n";
+        echo "<TR><TD ALIGN=\"right\">".get_string("weightforgradingofassessments", "exercise").":</TD>\n";
+        echo "<TD>";
+        exercise_choose_from_menu($EXERCISE_FWEIGHTS, "gradingweight", $gradingweight, "");
+        echo "</td></tr>\n";
+        echo "<tr><td align=\"right\">".get_string("weightforteacherassessments", "exercise", 
+                $course->teacher).":</td>\n";
+        echo "<td>";
+        exercise_choose_from_menu($EXERCISE_FWEIGHTS, "teacherweight", $teacherweight, "");
+        echo "</td></tr>\n";
+        echo "<tr><td colspan=\"2\" align=\"center\">"; 
+        echo "<INPUT TYPE=submit VALUE=\"".get_string("saveweights", "exercise")."\">\n";
+        echo "</td></tr>\n";
+        echo "</TABLE>\n";
+        echo "</CENTER><br />";
+        echo "</FORM>\n";
+
+        ?>
+            <form name="leagueform" method="post" action="submissions.php">
+            <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>">
+            <input type="hidden" name="action" value="saveleaguetable">
+            <CENTER>
+            <?PHP
+
+            echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
+        echo "<tr><td align=\"center\" colspan=\"2\" bgcolor=\"$THEME->cellheading2\"><b>".
+            get_string("leaguetable", "exercise")."</b></td></tr>\n";
+        echo "<tr><td align=\"right\">".get_string("numberofentries", "exercise").":</td>\n";
+        echo "<TD>";
+        $numbers[22] = 'All';
+        $numbers[21] = 50;
+        for ($i=20; $i>=0; $i--) {
+            $numbers[$i] = $i;
+        }
+        $nentries = $exercise->showleaguetable;
+        if ($nentries == 99) {
+            $nentries = 'All';
+        }
+        choose_from_menu($numbers, "nentries", "$nentries", "");
+        echo "</td></tr>\n";
+        echo "<tr><td align=\"right\">".get_string("hidenamesfromstudents", "exercise", 
+                $course->students)."</td><td>\n";
+        $options[0] = get_string("no"); $options[1] = get_string("yes");
+        choose_from_menu($options, "anonymous", $exercise->anonymous, "");
+        echo "</td></tr>\n";
+        echo "<tr><td colspan=\"2\" align=\"center\">"; 
+        echo "<INPUT TYPE=submit VALUE=\"".get_string("saveentries", "exercise")."\">\n";
+        echo "</td></tr>\n";
+        echo "</table>\n";
+        echo "</CENTER>";
+        echo "</FORM>\n";
+
+
+        // list any teacher submissions
+        $table->head = array (get_string("title", "exercise"), get_string("submitted", "exercise"), get_string("action", "exercise"));
+        $table->align = array ("left", "left", "left");
+        $table->size = array ("*", "*", "*");
+        $table->cellpadding = 2;
+        $table->cellspacing = 0;
 
-    echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n";
-    echo "<tr><td align=\"center\" colspan=\"2\" bgcolor=\"$THEME->cellheading2\"><b>".
-        get_string("leaguetable", "exercise")."</b></td></tr>\n";
-    echo "<tr><td align=\"right\">".get_string("numberofentries", "exercise").":</td>\n";
-    echo "<TD>";
-    $numbers[22] = 'All';
-    $numbers[21] = 50;
-    for ($i=20; $i>=0; $i--) {
-        $numbers[$i] = $i;
-    }
-    $nentries = $exercise->showleaguetable;
-    if ($nentries == 99) {
-        $nentries = 'All';
+        if ($submissions = exercise_get_teacher_submissions($exercise)) {
+            foreach ($submissions as $submission) {
+                $action = "<a href=\"submissions.php?action=adminamendtitle&id=$cm->id&sid=$submission->id\">".
+                    get_string("amendtitle", "exercise")."</a>";
+                $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">".
+                    get_string("delete", "exercise")."</a>";
+                $table->data[] = array(exercise_print_submission_title($exercise, $submission), 
+                        userdate($submission->timecreated), $action);
+            }
+            print_heading(get_string("studentsubmissions", "exercise", $course->teacher), "center");
+            print_table($table);
+        }
     }
-    choose_from_menu($numbers, "nentries", "$nentries", "");
-    echo "</td></tr>\n";
-    echo "<tr><td align=\"right\">".get_string("hidenamesfromstudents", "exercise", 
-            $course->students)."</td><td>\n";
-    $options[0] = get_string("no"); $options[1] = get_string("yes");
-    choose_from_menu($options, "anonymous", $exercise->anonymous, "");
-    echo "</td></tr>\n";
-    echo "<tr><td colspan=\"2\" align=\"center\">"; 
-       echo "<INPUT TYPE=submit VALUE=\"".get_string("saveentries", "exercise")."\">\n";
-    echo "</td></tr>\n";
-    echo "</table>\n";
-       echo "</CENTER>";
-       echo "</FORM>\n";
-
-    // list any teacher submissions
-       $table->head = array (get_string("title", "exercise"), get_string("submitted", "exercise"), get_string("action", "exercise"));
-       $table->align = array ("left", "left", "left");
-       $table->size = array ("*", "*", "*");
-       $table->cellpadding = 2;
-       $table->cellspacing = 0;
-
-       if ($submissions = exercise_get_teacher_submissions($exercise)) {
-               foreach ($submissions as $submission) {
-                       $action = "<a href=\"submissions.php?action=adminamendtitle&id=$cm->id&sid=$submission->id\">".
-                               get_string("amendtitle", "exercise")."</a>";
-                       $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">".
-                                       get_string("delete", "exercise")."</a>";
-                       $table->data[] = array(exercise_print_submission_title($exercise, $submission), 
-                               userdate($submission->timecreated), $action);
-                       }
-               print_heading(get_string("studentsubmissions", "exercise", $course->teacher), "center");
-               print_table($table);
-               }
 
        // list student assessments
        // Get all the students...
@@ -1530,15 +1534,23 @@ function exercise_list_submissions_for_admin($exercise) {
                         $action .= " | <a href=\"assessments.php?action=adminlist&id=$cm->id&sid=$submission->id\">".
                             get_string("view", "exercise")." ($nassessments)</a>";
                     }
+                    if ($submission->late) {
+                        $action .= " | <a href=\"submissions.php?action=adminlateflag&id=$cm->id&sid=$submission->id\">".
+                            get_string("clearlateflag", "exercise")."</a>";
+                    }
                     $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">".
                         get_string("delete", "exercise")."</a>";
                     $title = $submission->title;
                     if ($submission->resubmit) {
                         $title .= "*";
                     }
+                    $datesubmitted = userdate($submission->timecreated);
+                    if ($submission->late) {
+                        $datesubmitted = "<font color=\"red\">".$datesubmitted."</font>";
+                    }
                     $table->data[] = array("$user->firstname $user->lastname", $title.
                             " ".exercise_print_submission_assessments($exercise, $submission), 
-                            userdate($submission->timecreated), $action);
+                            $datesubmitted, $action);
                     $nsubmissions++;
                 }
             }
@@ -1549,7 +1561,8 @@ function exercise_list_submissions_for_admin($exercise) {
             print_table($table);
             echo "<p align=\"center\">".get_string("resubmitnote", "exercise", $course->student)."</p>\n";
         }
-        echo "<p align=\"center\">".get_string("allgradeshaveamaximumof", "exercise", $exercise->grade)."</p></center>\n";
+        echo "<p align=\"center\">".get_string("allgradeshaveamaximumof", "exercise", $exercise->grade).
+            "</p></center>\n";
     }
 }
 
@@ -1606,7 +1619,7 @@ function exercise_list_teacher_submissions($exercise, $user, $reassess = false)
        
        if (! $course = get_record("course", "id", $exercise->course)) {
         error("Course is misconfigured");
-        }
+    }
        if (! $cm = get_coursemodule_from_instance("exercise", $exercise->id, $course->id)) {
                error("Course Module ID was incorrect");
        }
@@ -1614,42 +1627,27 @@ function exercise_list_teacher_submissions($exercise, $user, $reassess = false)
        $strexercises = get_string("modulenameplural", "exercise");
     $strexercise  = get_string("modulename", "exercise");
 
-       $nexercises = 1;  // set as a variable (possible future extension)
-       if ($nexercises ==1 ) {
-               $table->head = array ($strexercise, get_string("action", "exercise"), get_string("assessed", "exercise"),
-                       get_string("comment", "exercise"));
-               }
-       else { //use plural
-               $table->head = array ($strexercises, get_string("action", "exercise"), get_string("assessed", "exercise"),
-                       get_string("comment", "exercise"));
-               }
-       $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT");
-       $table->size = array ("*", "*", "*", "*");
-       $table->cellpadding = 2;
-       $table->cellspacing = 0;
-
-       // get the number of assessments this user has done (could include placeholder one)
-       $nassessed = count_records_select("exercise_assessments", "exerciseid = $exercise->id
-                                       AND userid = $user->id");
-       if ($nassessed < $nexercises) { 
-               // if user has not assessed enough, set up "future" assessment records for this user for the teacher submissions...
-               // ... first count the number of assessments for each teacher submission...
+       // get any assessment this user has done (could include hot one)
+       if (!$assessment = get_record_select("exercise_assessments", "exerciseid = $exercise->id
+                                       AND userid = $user->id")) {
+               // the user has not  yet assessed this exercise, set up a hot assessment record for this user for one 
+        // of the teacher submissions, first count the number of assessments for each teacher submission...
                if ($submissions = exercise_get_teacher_submissions($exercise)) {
-                       srand ((float)microtime()*1000000); // initialise random number generator
+                       mt_srand ((float)microtime()*1000000); // initialise random number generator
                        foreach ($submissions as $submission) {
                                $n = count_records("exercise_assessments", "submissionid", $submission->id);
                                // ...OK to have zero, we add a small random number to randomise things...
-                               $nassessments[$submission->id] = $n + rand(0, 99) / 100;
-                               }
+                               $nassessments[$submission->id] = $n + mt_rand(0, 99) / 100;
+                       }
                        // ...put the submissions with the lowest number of assessments first...
                        asort($nassessments);
                        reset($nassessments);
-                       foreach ($nassessments as $submissionid => $n) { // break out of loop when we allocated enough assessments...
+                       foreach ($nassessments as $submissionid => $n) { // break out of loop after the first element
                                $submission = get_record("exercise_submissions", "id", $submissionid);
                                // ... provided the user has NOT already assessed that submission...
                                if (!$assessment = exercise_get_submission_assessment($submission, $user)) {
                                        $yearfromnow = time() + 365 * 86400;
-                                       // ...create one and set timecreated way in the future, this is reset when record is updated
+                                       // ...create one and set timecreated way in the future, reset when record is updated
                                        $assessment->exerciseid = $exercise->id;
                                        $assessment->submissionid = $submission->id;
                                        $assessment->userid = $user->id;
@@ -1657,46 +1655,66 @@ function exercise_list_teacher_submissions($exercise, $user, $reassess = false)
                                        $assessment->timecreated = $yearfromnow;
                                        if (!$assessment->id = insert_record("exercise_assessments", $assessment)) {
                                                error("Could not insert exercise assessment!");
-                                               }
-                                       $nassessed++;
-                                       if ($nassessed >= $nexercises) {
-                                               break;
-                                               }
                                        }
+                                       break;
                                }
                        }
                }
+       } else {
+        // get hold of the teacher submission
+        if (!$submission = get_record("exercise_submissions", "id", $assessment->submissionid)) {
+            error("List teacher submissions: submission record not found");
+        }
+    }
+    print_simple_box_start("center");
+    print_heading_with_help(get_string("theexercise", "exercise"), "junk", "exercise");
+    print_simple_box_start("center");
+    echo "<p align=\"center\"><b>".get_string("description", "exercise").": </b>\n";
+    echo exercise_print_submission_title($exercise, $submission);
+    echo "</p>\n";
+    print_simple_box_end();
+    print_simple_box_end();
+       $table->head = array (get_string("action", "exercise"), get_string("assessed", "exercise"),
+        get_string("comment", "exercise"));
+       $table->align = array ("LEFT", "LEFT", "LEFT");
+       $table->size = array ("*", "*", "*");
+       $table->cellpadding = 2;
+       $table->cellspacing = 0;
+
        // now list user's assessments (but only list those which come from teacher submissions)
+       print_heading(get_string("yourassessment", "exercise"));
        if ($assessments = exercise_get_user_assessments($exercise, $user)) {
                $timenow = time();
                foreach ($assessments as $assessment) {
                        if (!$submission = get_record("exercise_submissions", "id", $assessment->submissionid)) {
                                error ("exercise_list_teacher_submissions: unable to get submission");
-                               }
+                       }
                        // submission from a teacher, i.e an exercise submission?
                        if ($submission->isexercise) {
                                $comment = '';
-                               if ($reassess) {  //just show re-assess
+                               if ($reassess) {  // just show re-assess
                                        $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
                                                get_string("reassess", "exercise")."</A>";
-                                       }
+                               }
                                else { // reassess is false - assessment is a "normal state"
-                                       // user assessment has three states: record created but not assessed (date created in the future); 
-                                       // just assessed but still editable; and "static" (may or may not have been graded by teacher, that
-                                       // is shown in the comment) 
+                                       // user assessment has three states: record created but not assessed (date created 
+                    // in the future); just assessed but still editable; and "static" (may or may not 
+                    // have been graded by teacher, that is shown in the comment) 
                                        if ($assessment->timecreated > $timenow) { // user needs to assess this submission
                                                $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
                                                        get_string("assess", "exercise")."</A>";
-                                               }
-                                       elseif ($assessment->timecreated > ($timenow - $CFG->maxeditingtime)) { // there's still time left to edit...
+                                       }
+                                       elseif ($assessment->timecreated > ($timenow - $CFG->maxeditingtime)) { 
+                        // there's still time left to edit...
                                                $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">".
                                                        get_string("edit", "exercise")."</A>";
-                                               }
+                                       }
                                        else { 
                                                $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">"
                                                        .get_string("view", "exercise")."</A>";
-                                               }
                                        }
+                               }
                                // show the date if in the past (otherwise the user hasn't done the assessment yet
                                $assessmentdate = '';
                                if ($assessment->timecreated < $timenow) {
@@ -1705,19 +1723,18 @@ function exercise_list_teacher_submissions($exercise, $user, $reassess = false)
                                        if (exercise_count_user_submissions($exercise, $user) > 0) {
                                                if ($assessment->timegraded and (($timenow - $assessment->timegraded) > $CFG->maxeditingtime)) {
                                                        $comment .= get_string("thereisfeedbackfromthe", "exercise", $course->teacher);
-                                                       }
+                                               }
                                                else {
                                                        $comment .= get_string("awaitingfeedbackfromthe", "exercise", $course->teacher);
-                                                       }
                                                }
                                        }
-                               $table->data[] = array(exercise_print_submission_title($exercise, $submission), $action, $assessmentdate, 
-                                       $comment);
                                }
+                               $table->data[] = array($action, $assessmentdate, $comment);
                        }
                }
-       print_table($table);
-       }
+           print_table($table);
+    }
+}
 
 
 ///////////////////////////////////////////////////////////////////////////////////////////////
@@ -1772,21 +1789,24 @@ function exercise_list_unassessed_student_submissions($exercise, $user) {
                                 $studentassessment = $assessment;
                                 break; // there should only be one!
                             }
+                            $timegap = get_string("ago", "exercise", format_time($submission->timecreated -
+                                        $timenow));
+                            if ($submission->late) {
+                                $timegap = "<font color=\"red\">".$timegap."</font>";
+                            }
                             if ($warm) {
                                 // last chance salon
                                 $action = "<A HREF=\"assessments.php?action=teacherassessment&id=$cm->id&aid=$studentassessment->id&sid=$submission->id\">".
                                     get_string("edit", "exercise")."</A>";
                                 $table->data[] = array(exercise_print_submission_title($exercise, $submission), 
                                         $submissionowner->firstname." ".$submissionowner->lastname, 
-                                        get_string("ago", "exercise", format_time($submission->timecreated - 
-                                                $timenow)), $action, $comment);
+                                        $timegap, $action, $comment);
                             } else {
                                 $action = "<A HREF=\"assessments.php?action=teacherassessment&id=$cm->id&aid=$studentassessment->id&sid=$submission->id\">".
                                     get_string("assess", "exercise")."</A>";
                                 $table->data[] = array(exercise_print_submission_title($exercise, $submission), 
                                         $submissionowner->firstname." ".$submissionowner->lastname, 
-                                        get_string("ago", "exercise", format_time($submission->timecreated - 
-                                                $timenow)), $action, $comment);
+                                        $timegap, $action, $comment);
                             }
                         } else {
                             // there's no student assessment, odd!!
@@ -1817,9 +1837,14 @@ function exercise_list_unassessed_student_submissions($exercise, $user) {
                                                // last chance salon
                                                $action = "<A HREF=\"assessments.php?action=assessresubmission&id=$cm->id&sid=$submission->id\">".
                                                        get_string("edit", "exercise")."</A>";
+                        $timegap = get_string("ago", "exercise", format_time($submission->timecreated -
+                                    $timenow));
+                        if ($submission->late) {
+                            $timegap = "<font color=\"red\">".$timegap."</font>";
+                        }
                                                $table->data[] = array(exercise_print_submission_title($exercise, $submission), 
                                                        $submissionowner->firstname." ".$submissionowner->lastname, 
-                            format_time($submission->timecreated - $timenow), $action, $comment);
+                            $timegap, $action, $comment);
                                        }
                                        if (!$teacherassessed) { 
                                                // no teacher's assessment
@@ -1849,10 +1874,14 @@ function exercise_list_unassessed_student_submissions($exercise, $user) {
                         }
                                                $action = "<A HREF=\"assessments.php?action=assessresubmission&id=$cm->id&sid=$submission->id\">".
                                                        get_string("assess", "exercise")."</A>";
+                        $timegap = get_string("ago", "exercise", format_time($submission->timecreated -
+                                    $timenow));
+                        if ($submission->late) {
+                             $timegap = "<font color=\"red\">".$timegap."</font>";
+                        }
                                                $table->data[] = array(exercise_print_submission_title($exercise, $submission), 
                                                        $submissionowner->firstname." ".$submissionowner->lastname, 
-                            get_string("ago", "exercise", format_time($submission->timecreated - $timenow)), 
-                            $action, $comment);
+                            $timegap, $action, $comment);
                                        }
                                }
                        }
@@ -1969,7 +1998,7 @@ function exercise_list_user_submissions($exercise, $user) {
        
        $timenow = time();
        $table->head = array (get_string("title", "exercise"),  get_string("action", "exercise"),
-               get_string("submitted", "assignment"),  get_string("comment", "exercise"));
+               get_string("submitted", "exercise"),  get_string("assessment", "exercise"));
        $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT");
        $table->size = array ("*", "*", "*", "*");
        $table->cellpadding = 2;
@@ -1979,14 +2008,11 @@ function exercise_list_user_submissions($exercise, $user) {
                foreach ($submissions as $submission) {
                        $action = '';
                        $comment = '';
-                       if (isstudent($course->id, $user->id)) {
-                               $comment = get_string("awaitingassessmentbythe", "exercise", $course->teacher);
-                               }
                        // allow user to delete submission if it's warm
                        if ($submission->timecreated > $timenow - $CFG->maxeditingtime) {
                                $action = "<a href=\"submissions.php?action=userconfirmdelete&id=$cm->id&sid=$submission->id\">".
                                        get_string("delete", "exercise")."</a>";
-                               }
+                       }
                        // get the teacher assessments (could be more than one, if unlikely, when multiple teachers)
                        if ($assessments = get_records_select("exercise_assessments", "exerciseid = $exercise->id AND 
                                        submissionid = $submission->id")) {
@@ -1995,19 +2021,35 @@ function exercise_list_user_submissions($exercise, $user) {
                                        if ($assessment->timecreated < $timenow - $CFG->maxeditingtime) { // it's cold
                                                if ($action) {
                                                        $action .= " | ";
-                                                       }
-                                               $action .= "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".
-                                               get_string("viewassessment", "exercise")."</a>";;
-                                               $comment = get_string("assessmentmadebythe", "exercise", $course->teacher);
                                                }
-                                       }
+                                               $action .= "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".
+                                               get_string("viewassessment", "exercise")."</a>";
+                        if ($comment) {
+                            $action .= " | ";
+                        }
+                        $grade = number_format($assessment->grade * $exercise->grade / 100.0, 1);
+                        if ($submission->late) {
+                                                   $comment .= get_string("grade").
+                                ": <font color=\"red\">($grade)</font>";
+                        } else {
+                                                   $comment .= get_string("grade").": $grade";
+                        }
+                    }
                                }
-                       $table->data[] = array(exercise_print_submission_title($exercise, $submission), $action,
-                               userdate($submission->timecreated), $comment);
                        }
-               print_table($table);
+                       if (!$comment and isstudent($course->id, $user->id)) {
+                               $comment = get_string("awaitingassessmentbythe", "exercise", $course->teacher);
+                       }
+            $submissiondate = userdate($submission->timecreated);
+            if ($submission->late) {
+                $submissiondate = "<font color=\"red\">".$submissiondate."</font>";
+            }
+                       $table->data[] = array(exercise_print_submission_title($exercise, $submission), $action,
+                               $submissiondate, $comment);
                }
+               print_table($table);
        }
+}
 
 
 ///////////////////////////////////////////////////////////////////////////////////////////////
@@ -2142,14 +2184,14 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch
                        // now print the form
                        for ($i=0; $i < count($elements); $i++) {
                                $iplus1 = $i+1;
-                               echo "<TR valign=top>\n";\r
-                               echo "  <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n";\r
+                               echo "<TR valign=top>\n";
+                               echo "  <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n";
                                echo "  <TD>".text_to_html($elements[$i]->description);
                                echo "</TD></TR>\n";
-                               echo "<TR valign=top>\n";\r
-                               echo "  <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n";\r
+                               echo "<TR valign=top>\n";
+                               echo "  <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n";
                                echo "  <TD>\n";
-                               if ($allowchanges) {\r
+                               if ($allowchanges) {
                                        echo "          <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n";
                                        if (isset($grades[$i]->feedback)) {
                                                echo $grades[$i]->feedback;
@@ -2158,11 +2200,11 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch
                                        }
                                else {
                                        echo text_to_html($grades[$i]->feedback);
-                                       }\r
-                               echo "  </TD>\n";\r
-                               echo "</TR>\n";\r
-                               echo "<TR valign=top>\n";\r
-                               echo "  <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n";\r
+                                       }
+                               echo "  </TD>\n";
+                               echo "</TR>\n";
+                               echo "<TR valign=top>\n";
+                               echo "  <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n";
                                echo "</TR>\n";
                                }
                        break;
@@ -2171,7 +2213,7 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch
                        // now print the form
                        for ($i=0; $i < count($elements); $i++) {
                                $iplus1 = $i+1;
-                               echo "<TR valign=top>\n";\r
+                               echo "<TR valign=top>\n";
                                echo "  <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n";\r
                                echo "  <TD>".text_to_html($elements[$i]->description);
                                echo "<P align=right><FONT size=1>Weight: "
@@ -2225,10 +2267,10 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch
                                        echo "  </TD>\n";
                                        echo "</TR>\n";
                                        }
-                               echo "<TR valign=top>\n";\r
-                               echo "  <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n";\r
+                               echo "<TR valign=top>\n";
+                               echo "  <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n";
                                echo "  <TD>\n";
-                               if ($allowchanges) {\r
+                               if ($allowchanges) {
                                        echo "          <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n";
                                        if (isset($grades[$i]->feedback)) {
                                                echo $grades[$i]->feedback;
@@ -2237,11 +2279,11 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch
                                        }
                                else {
                                        echo text_to_html($grades[$i]->feedback);
-                                       }\r
-                               echo "  </TD>\n";\r
-                               echo "</TR>\n";\r
-                               echo "<TR valign=top>\n";\r
-                               echo "  <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n";\r
+                                       }
+                               echo "  </TD>\n";
+                               echo "</TR>\n";
+                               echo "<TR valign=top>\n";
+                               echo "  <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n";
                                echo "</TR>\n";
                                }
                        break;
@@ -2606,10 +2648,10 @@ function exercise_print_assignment_info($exercise) {
 
        if (! $course = get_record("course", "id", $exercise->course)) {
         error("Course is misconfigured");
-        }
+    }
     if (! $cm = get_coursemodule_from_instance("exercise", $exercise->id, $course->id)) {
         error("Course Module ID was incorrect");
-               }
+    }
        // print standard assignment heading
        $strdifference = format_time($exercise->deadline - time());
        if (($exercise->deadline - time()) < 0) {
@@ -2624,17 +2666,17 @@ function exercise_print_assignment_info($exercise) {
        echo "<b>".get_string("handlingofmultiplesubmissions", "exercise")."</b>:";
        if ($exercise->usemaximum) {
                echo get_string("usemaximum", "exercise")."<br />\n";
-               }
+       }
        else {
                echo get_string("usemean", "exercise")."<br />\n";
-               }
+       }
        echo "<b>".get_string("detailsofassessment", "exercise")."</b>: 
                <a href=\"assessments.php?id=$cm->id&action=displaygradingform\">".
                get_string("specimenassessmentform", "exercise")."</a><br />";
        print_simple_box_end();
        print_simple_box_end();
        echo "<br />";  
-       }
+}
 
 
 ///////////////////////////////////////////////////////////////////////////////////////////////
@@ -3609,6 +3651,9 @@ function exercise_print_league_table($exercise) {
         $n = 1;
                foreach ($submissions as $submission) {
                        if (empty($done[$submission->userid])) {
+                if ($submission->late) {
+                    continue;
+                }
                                if (!$user = get_record("user", "id", $submission->userid)) {
                                        error("Print league table: user not found");
                                        }
index 53654f454c5984a4d821c0ff6cb6cfe38d5eb4b4..1bbd4eb511e241c1b86e693b62726c1f27fb0e44 100644 (file)
 
         $status = true;
 
-        //Get the submissions array 
+        //Get the submissions array (teacher submissions)
         $submissions = $info['MOD']['#']['SUBMISSIONS']['0']['#']['SUBMISSION'];
-
         //Iterate over submissions
         for($i = 0; $i < sizeof($submissions); $i++) {
             $sub_info = $submissions[$i];
             $submission->resubmit = backup_todb($sub_info['#']['RESUBMIT']['0']['#']);
             $submission->mailed = backup_todb($sub_info['#']['MAILED']['0']['#']);
             $submission->isexercise = backup_todb($sub_info['#']['ISEXERCISE']['0']['#']);
+            $submission->late = backup_todb($sub_info['#']['LATE']['0']['#']);
 
-            //test if this is from teacher or we restoring student submissions
-            if ($submission->isexercise or $restore->mods['exercise']->userinfo) {
+            // always save the exercise descriptions and optionally the student submissions
+            if ($submission->isexercise or $restore->mods["exercise"]->userinfo) {
                 //We have to recode the userid field
                 $user = backup_getid($restore->backup_unique_code,"user",$olduserid);
                 if ($user) {
index e19ec1ade65e018e9a54ae0b7481f2b4e6271248..39c4ff0776e59fbb9239adcfe87f9c7be2f6579d 100644 (file)
@@ -4,8 +4,10 @@
        ACTIONS handled are:
 
        adminamendtitle
+    adminclearlate
        adminconfirmdelete
        admindelete
+    adminlateflag
        adminlist
        displayfinalgrades (teachers only)
        listforassessmentstudent
@@ -78,9 +80,9 @@
                <?PHP
 
                // now get the comment
-               echo "<tr valign=\"top\">\n";\r
-               echo "  <td align=\"right\"><P><B>". get_string("title", "exercise").":</b></p></td>\n";\r
-               echo "  <td>\n";\r
+               echo "<tr valign=\"top\">\n";
+               echo "  <td align=\"right\"><P><B>". get_string("title", "exercise").":</b></p></td>\n";
+               echo "  <td>\n";
                echo "          <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n";
                echo "  </td></tr></table>\n";
                echo "<input type=submit VALUE=\"".get_string("amendtitle", "exercise")."\">\n";
                }
        
 
+       /******************* admin clear late (flag) ************************************/
+       elseif ($action == 'adminclearlate' ) {
+
+               if (!isteacher($course->id)) {
+                       error("Only teachers can look at this page");
+               }
+               if (empty($_GET['sid'])) {
+                       error("Admin clear late flag: submission id missing");
+               }
+       
+               if (!$submission = get_record("exercise_submissions", "id", $_GET['sid'])) {
+                       error("Admin clear late flag: can not get submission record");
+               }
+               if (set_field("exercise_submissions", "late", 0, "id", $_GET['sid'])) {
+                       print_heading(get_string("clearlateflag", "exercise")." ".get_string("ok"));
+               }
+        
+        add_to_log($course->id, "exercise", "late flag cleared", "view.php?id=$cm->id", "submission $submission->id");
+               
+               print_continue("submissions.php?id=$cm->id&action=adminlist");
+       }
+       
+
        /******************* admin confirm delete ************************************/
        elseif ($action == 'adminconfirmdelete' ) {
 
                if (empty($_GET['sid'])) {
                        error("Admin confirm delete: submission id missing");
                        }
-                       
+               if (!$submission = get_record("exercise_submissions", "id", $_GET['sid'])) {
+                       error("Admin delete: can not get submission record");
+                       }
+
+        if (isteacher($course->id, $submission->userid)) {
+            if (!isteacheredit($course->id)) {
+                error("Only teacher with editing permissions can delete teacher submissions.");
+            }
+        }
                notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("submission", "exercise")), 
                         "submissions.php?action=admindelete&id=$cm->id&sid=$_GET[sid]", "submissions.php?id=$cm->id&action=adminlist");
                }
                }
        
 
+       /******************* admin (confirm) late flag ************************************/
+       elseif ($action == 'adminlateflag' ) {
+
+               if (!isteacher($course->id)) {
+                       error("Only teachers can look at this page");
+                       }
+               if (empty($_GET['sid'])) {
+                       error("Admin confirm late flag: submission id missing");
+                       }
+               if (!$submission = get_record("exercise_submissions", "id", $_GET['sid'])) {
+                       error("Admin confirm late flag: can not get submission record");
+                       }
+
+               notice_yesno(get_string("clearlateflag","exercise")."?", 
+                        "submissions.php?action=adminclearlate&id=$cm->id&sid=$_GET[sid]", 
+             "submissions.php?id=$cm->id&action=adminlist");
+               }
+       
+
        /******************* list all submissions ************************************/
        elseif ($action == 'adminlist' ) {
 
                                foreach ($submissions as $submission) {
                                        if ($assessments = exercise_get_assessments($submission)) {
                                                foreach ($assessments as $assessment) { // (normally there should only be one
+                            $grade = number_format($assessment->grade * $exercise->grade / 100.0, 1);
+                            $overallgrade = number_format(((($assessment->grade * 
+                                $EXERCISE_FWEIGHTS[$teacherweight] / 100.0) + 
+                                ($ownassessment->gradinggrade * $EXERCISE_FWEIGHTS[$gradingweight]/
+                                COMMENTSCALE )) * $exercise->grade) / ($EXERCISE_FWEIGHTS[$teacherweight] + 
+                                $EXERCISE_FWEIGHTS[$gradingweight]), 1);
+                            if ($submission->late) {
+                                $grade = "<font color=\"red\">(".$grade.")</font>";
+                                $overallgrade = "<font color=\"red\">(".$overallgrade.")</font>";
+                            }
                                                        echo "<tr><td>$user->firstname $user->lastname</td>\n";
                                                        echo "<td>".exercise_print_submission_title($exercise, $submission)."</td>\n";
                                                        echo "<td align=\"center\">".number_format($ownassessment->gradinggrade * $exercise->grade / COMMENTSCALE, 1)."</td>";
-                                                       echo "<td align=\"center\">".number_format($assessment->grade * $exercise->grade / 100.0, 1)."</td>";
-                                                       echo "<td align=\"center\">". number_format(((($assessment->grade * $EXERCISE_FWEIGHTS[$teacherweight] 
-                                                               / 100.0) + ($ownassessment->gradinggrade * $EXERCISE_FWEIGHTS[$gradingweight] 
-                                                               / COMMENTSCALE )) * $exercise->grade) / 
-                                                               ($EXERCISE_FWEIGHTS[$teacherweight] + $EXERCISE_FWEIGHTS[$gradingweight]), 1).
-                                                               "</td></tr>\n";
+                                                       echo "<td align=\"center\">$grade</td>";
+                                                       echo "<td align=\"center\">$overallgrade</td></tr>\n";
                                                }
                                        }
                                }
index df8810aeb2f5d544952461386bd2a946dcddbd6a..f2782b18aa76d4d553f5f4b31786f46326061824 100644 (file)
                                        if (isteacher($course->id)) {
                                                // it's an exercise submission, flag it as such
                                                $newsubmission->userid         = 0;
-                                               $newsubmission->isexercise = 1;  // it'sa description of an exercise
+                                               $newsubmission->isexercise = 1;  // it's a description of an exercise
                                                }
                                        else {
-                                               $newsubmission->userid         = $USER->id;
+                                               $newsubmission->userid = $USER->id;
                                                }
                                        $newsubmission->title  = $title;
                                        $newsubmission->timecreated  = $timenow;
+                    if ($timenow > $exercise->deadline) {
+                        $newsubmission->late = 1;
+                    }
                                        if (!$newsubmission->id = insert_record("exercise_submissions", $newsubmission)) {
                                                error("exercise upload: Failure to create new submission record!");
                                                }
index dc30cd5e6b521443887f87a398f6b7a3dd1fcdc4..1163c78d889036258949cc3c8bb46444ed08fa10 100644 (file)
@@ -5,7 +5,7 @@
 //  This fragment is called by /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2003111400;
+$module->version  = 2003121000;
 $module->cron     = 60;
 
 ?>
index 7a8640c5346c4d5907018f0e5c53ad8118132242..c9d4e76e494319f4c2adc3083151057210a7c89a 100644 (file)
@@ -3,7 +3,6 @@
 /*************************************************
        ACTIONS handled are:
 
-       closeexercise( for teachers)
        displayfinalgrade (for students)
        makeleaguetableavailable (for teachers)
        notavailable (for students)
@@ -73,8 +72,7 @@
                        case 0 :
                        case 1 : $action = 'notavailable'; break;
                        case 2 : $action = 'studentsview'; break;
-                       case 3 : $action = 'showsubmissions'; break;
-                       case 4 : $action = 'displayfinalgrade';
+                       case 3 : $action = 'displayfinalgrade';
                }
        }
        else { // it's a guest, oh no!
        }
        
        
-       /************** close exercise for student assessments and submissions (phase 3) (for teachers)**/
-       if ($action == 'closeexercise') {
-
-               if (!isteacher($course->id)) {
-                       error("Only teachers can look at this page");
-               }
-
-               // move to phase 3
-               set_field("exercise", "phase", 3, "id", "$exercise->id");
-               add_to_log($course->id, "exercise", "close", "view.php?id=$cm->id", "$exercise->id");
-               redirect("view.php?id=$cm->id", get_string("movingtophase", "exercise", 3));
-       }
-       
-
        /****************** display final grade (for students) ************************************/
-       elseif ($action == 'displayfinalgrade' ) {
+    if ($action == 'displayfinalgrade' ) {
 
                // get the final weights from the database
                $teacherweight = get_field("exercise","teacherweight", "id", $exercise->id);
                        foreach ($submissions as $submission) {
                                if ($assessments = exercise_get_assessments($submission)) {
                                        foreach ($assessments as $assessment) { // (normally there should only be one
+                        $grade = number_format($assessment->grade * $exercise->grade / 100.0, 1);
+                        $overallgrade = number_format(((($assessment->grade * 
+                                $EXERCISE_FWEIGHTS[$teacherweight] / 100.0) + ($ownassessment->gradinggrade *
+                                $EXERCISE_FWEIGHTS[$gradingweight] / COMMENTSCALE )) * $exercise->grade) / 
+                                                           ($EXERCISE_FWEIGHTS[$teacherweight] + $EXERCISE_FWEIGHTS[$gradingweight]), 1);
+                        if ($submission->late) {
+                            $grade = "<font color=\"red\">(".$grade.")</font>";
+                            $overallgrade = "<font color=\"red\">(".$overallgrade.")</font>";
+                        }
                                                echo "<TR><td>".exercise_print_submission_title($exercise, $submission)."</td>\n";
                                                echo "<td align=\"center\">".number_format($ownassessment->gradinggrade * $exercise->grade / COMMENTSCALE, 1)."</td>";
-                                               echo "<td align=\"center\">".number_format($assessment->grade * $exercise->grade / 100.0, 1)."</td>";
-                                               echo "<td align=\"center\">". number_format(((($assessment->grade * $EXERCISE_FWEIGHTS[$teacherweight] 
-                                                       / 100.0) + ($ownassessment->gradinggrade * $EXERCISE_FWEIGHTS[$gradingweight] 
-                                                       / COMMENTSCALE )) * $exercise->grade) / 
-                                                       ($EXERCISE_FWEIGHTS[$teacherweight] + $EXERCISE_FWEIGHTS[$gradingweight]), 1).
-                                                       "</td></TR>\n";
+                                               echo "<td align=\"center\">$grade</td>";
+                                               echo "<td align=\"center\">$overallgrade</td></TR>\n";
                                        }
                                }
                        }
        /****************** make final grades available (for teachers only)**************/
        elseif ($action == 'makeleaguetableavailable') {
 
-               if (!isteacher($course->id)) {
-                       error("Only teachers can look at this page");
+               if (!isteacheredit($course->id)) {
+                       error("Only teachers with editing permissions can do this.");
                }
 
-               set_field("exercise", "phase", 4, "id", "$exercise->id");
+               set_field("exercise", "phase", 3, "id", "$exercise->id");
                add_to_log($course->id, "exercise", "display", "view.php?id=$cm->id", "$exercise->id");
-               redirect("view.php?id=$cm->id", get_string("movingtophase", "exercise", 4));
+               redirect("view.php?id=$cm->id", get_string("movingtophase", "exercise", 3));
        }
        
        
        /****************** open exercise for student assessments and submissions (phase 2) (for teachers)**/
        elseif ($action == 'openexercise') {
 
-               if (!isteacher($course->id)) {
-                       error("Only teachers can look at this page");
+               if (!isteacheredit($course->id)) {
+                       error("Only teachers with editing permissions can do this.");
                }
 
                // move to phase 2, check that teacher has made enough submissions
        elseif ($action == 'setupassignment') {
 
                if (!isteacher($course->id)) {
-                       error("Only teachers can look at this page");
+                       error("Only teachers with editing permissions can do this.");
                }
 
                set_field("exercise", "phase", 1, "id", "$exercise->id");
        }
        
        
-       /****************** student's view could be in 1 of 4 stages ***********************/
-       elseif ($action == 'studentsview') {
-               exercise_print_assignment_info($exercise);
-               // in Stage 1 - the student must make an assessment (linked to the teacher's exercise/submission
-               if (!exercise_test_user_assessments($exercise, $USER)) {
-                       print_heading(get_string("pleaseviewtheexercise", "exercise", $course->teacher));
-                       exercise_list_teacher_submissions($exercise, $USER);
-               }
-               // in stage 2? - submit own first attempt
-               else {
-                       // show assessment the teacher's examples, there may be feedback from teacher
-                       if (exercise_count_user_submissions($exercise, $USER) == 0) {
-                               print_heading(get_string("atthisstageyou", "exercise", $course->teacher));
-                               exercise_list_teacher_submissions($exercise, $USER, true);  // true = allow re-assessing
-                               // print upload form
-                               print_heading(get_string("pleasesubmityourwork", "exercise").":");
-                               exercise_print_upload_form($exercise);
-                       }
-                       // in stage 3? - awaiting grading of assessment and assessment of work by teacher, 
-            // may resubmit if allowed
-                       else {
-                               print_heading(get_string("yourassessment", "exercise"));
-                               exercise_list_teacher_submissions($exercise, $USER);
-                               echo "<hr size=\"1\" noshade>";
-                               print_heading(get_string("yoursubmission", "exercise"));
-                               exercise_list_user_submissions($exercise, $USER);
-                               if (exercise_test_for_resubmission($exercise, $USER)) {
-                                       // if resubmission requested print upload form
-                                       echo "<hr size=\"1\" noshade>";
-                                       print_heading(get_string("pleasesubmityourwork", "exercise").":");
-                                       exercise_print_upload_form($exercise);
-                                       echo "<hr size=\"1\" noshade>";
-                               }
-                       }
-               }
-       }
-
-
        /****************** showsubmissions (for students, in phase 3)***********************/
        elseif ($action == 'showsubmissions') {
                exercise_print_assignment_info($exercise);
             print_simple_box_end();
         } else {
             print_heading(get_string("nosubmissions", "exercise"));
+        }
+        // always allow student to resubmit
+        if (exercise_test_for_resubmission($exercise, $USER)) {
+            // if resubmission requested print upload form
+            echo "<hr size=\"1\" noshade>";
+            print_heading(get_string("pleasesubmityourwork", "exercise").":");
+            exercise_print_upload_form($exercise);
         }
                echo "<hr size=\"1\" noshade>";
        }
 
 
+       /****************** student's view could be in 1 of 4 stages ***********************/
+       elseif ($action == 'studentsview') {
+               exercise_print_assignment_info($exercise);
+               // in Stage 1 - the student must make an assessment (linked to the teacher's exercise/submission
+               if (!exercise_test_user_assessments($exercise, $USER)) {
+                       print_heading(get_string("pleaseviewtheexercise", "exercise", $course->teacher));
+                       exercise_list_teacher_submissions($exercise, $USER);
+               }
+               // in stage 2? - submit own first attempt
+               else {
+                       // show assessment the teacher's examples, there may be feedback from teacher
+                       if (exercise_count_user_submissions($exercise, $USER) == 0) {
+                               print_heading(get_string("atthisstageyou", "exercise", $course->teacher));
+                               exercise_list_teacher_submissions($exercise, $USER, true);  // true = allow re-assessing
+                               // print upload form
+                               print_heading(get_string("pleasesubmityourwork", "exercise").":");
+                               exercise_print_upload_form($exercise);
+                       }
+                       // in stage 3? - awaiting grading of assessment and assessment of work by teacher, 
+            // may resubmit if allowed
+                       else {
+                               exercise_list_teacher_submissions($exercise, $USER);
+                               echo "<hr size=\"1\" noshade>";
+                               print_heading(get_string("yoursubmission", "exercise"));
+                               exercise_list_user_submissions($exercise, $USER);
+                               if (exercise_test_for_resubmission($exercise, $USER)) {
+                                       // if resubmission requested print upload form
+                                       echo "<hr size=\"1\" noshade>";
+                                       print_heading(get_string("pleasesubmityourwork", "exercise").":");
+                                       exercise_print_upload_form($exercise);
+                                       echo "<hr size=\"1\" noshade>";
+                               }
+                       }
+               }
+       }
+
+
        /****************** submission of assignment by teacher only***********************/
        elseif ($action == 'submitassignment') {
        
-               if (!isteacher($course->id)) {
-                       error("Only teachers can look at this page");
+               if (!isteacheredit($course->id)) {
+                       error("Only teachers with editing permissions can do this.");
                }
                        
                exercise_print_assignment_info($exercise);
                exercise_print_assignment_info($exercise);
                $tabs->names = array("1. ".get_string("phase1", "exercise"), 
             "2. ".get_string("phase2", "exercise", $course->student), 
-                       "3. ".get_string("phase3", "exercise", $course->student), 
-            "4. ".get_string("phase4", "exercise"));
+                       "3. ".get_string("phase3", "exercise", $course->student)); 
                $tabs->urls = array("view.php?id=$cm->id&action=setupassignment", 
                        "view.php?id=$cm->id&action=openexercise",
-                       "view.php?id=$cm->id&action=closeexercise",
                        "view.php?id=$cm->id&action=makeleaguetableavailable");
                if ($exercise->phase) { // phase 1 or more
                        $tabs->highlight = $exercise->phase - 1;
                        switch ($exercise->phase) {
                                case 0:
                                case 1: // set up assignment
-                                       echo "<p><b><a href=\"assessments.php?id=$cm->id&action=editelements\">".
-                                                 get_string("amendassessmentelements", "exercise")."</a></b> \n";
-                                       helpbutton("elements", get_string("amendassessmentelements", "exercise"), "exercise");
-                                       echo "<p><b><a href=\"view.php?id=$cm->id&action=submitassignment\">".
-                                               get_string("submitexercisedescription", "exercise")."</a></b> \n";
-                                       helpbutton("submissionofdescriptions", get_string("submitexercisedescription", "exercise"), "exercise");
+                    if (isteacheredit($course->id)) {
+                        echo "<p><b><a href=\"assessments.php?id=$cm->id&action=editelements\">".
+                            get_string("amendassessmentelements", "exercise")."</a></b> \n";
+                        helpbutton("elements", get_string("amendassessmentelements", "exercise"), "exercise");
+                        echo "<p><b><a href=\"view.php?id=$cm->id&action=submitassignment\">".
+                            get_string("submitexercisedescription", "exercise")."</a></b> \n";
+                        helpbutton("submissionofdescriptions", get_string("submitexercisedescription", "exercise"), "exercise");
+                    }
                                        break;
                                        
                                case 2: // submissions and assessments
                             "exercise");
                                        break;
                                        
-                               case 3: // finish assessing
-                                       // same as phase 2
+                               case 3: // show final grades
                                        echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">".
                                                  get_string("studentsubmissionsforassessment", "exercise", 
                                                  exercise_count_unassessed_student_submissions($exercise))."</a></b> \n";
                                        helpbutton("grading", get_string("studentsubmissionsforassessment", "exercise"), 
                             "exercise");
-                                       break;
-                                       
-                               case 4: // show final grades
                                        print_heading("<A HREF=\"submissions.php?id=$cm->id&action=displayfinalgrades\">".
                                                  get_string("displayoffinalgrades", "exercise")."</A>");
                }