1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
<?php
//Quiz checking
if(isset($_POST['checkSelectedQuiz']) || isset($_POST['displayQuizAnswerDetails'])){
/*
QuizVariant(
qVarNr INTEGER,
quizNr INTEGER,
quizCourseName VARCHAR(200),
correctAnswer VARCHAR(255),
quizObjectIDs TEXT,
PRIMARY KEY(qVarNr, quizNr, quizCourseName),
AssignedQuizzes(
ssn CHAR(11),
quizNr INTEGER,
qVarNr INTEGER,
quizCourseName VARCHAR(200),
courseOccasion VARCHAR(25),
answerHash VARCHAR(255),
answer TEXT,
grade VARCHAR(10),
gradeComment TEXT,
answeredDateTime TIMESTAMP,
userAgent VARCHAR(1024),
userIP VARCHAR(20),
PRIMARY KEY(ssn, qVarNr, quizNr, quizCourseName, courseOccasion),
*/
if(isset($_POST['clearAnswerHash'])){
//Clear the answer hash (allows resubmitting of the quiz)
$updateString = "UPDATE AssignedQuizzes
SET AssignedQuizzes.answerHash=:AHASH
WHERE AssignedQuizzes.qVarNr=:QVNR
AND AssignedQuizzes.quizNr=:QNR
AND AssignedQuizzes.quizCourseName=:CNAME
AND AssignedQuizzes.courseOccasion=:COCCASION
AND AssignedQuizzes.ssn=:SSN;";
$updateStmt = $pdo->prepare($updateString);
$hash=null;
$updateStmt->bindParam(':AHASH', $hash);
$updateStmt->bindParam(':QNR', $_POST['quizNr']);
$updateStmt->bindParam(':QVNR', $_POST['qVarNr']);
$updateStmt->bindParam(':CNAME', $_POST['courseName']);
$updateStmt->bindParam(':COCCASION', $_POST['courseOccasion']);
$updateStmt->bindParam(':SSN', $_POST['ssn']);
$updateStmt->execute();
if($updateStmt->execute()){
$userMsg.="Hash cleared";
} else {
$errorMsg.="Error: Hash NOT cleared";
}
$updateStmt->closeCursor();
}
if(isset($_POST['checkAnswerHash'])){
//Check if the answer hash matches login+answer md5-hash
$generatedHash=md5($_POST['loginName'].$_POST['answer']);
if(strcmp($generatedHash,$_POST['answerHash'])==0){
$hashCompareMsg="Hash check OK";
} else {
$hashCompareMsg="Hash check FAILED";
}
}
if(isset($_POST['saveGrade'])){
//Store new grade
$updateString = "UPDATE AssignedQuizzes
SET AssignedQuizzes.grade=:GRADE
WHERE AssignedQuizzes.qVarNr=:QVNR
AND AssignedQuizzes.quizNr=:QNR
AND AssignedQuizzes.quizCourseName=:CNAME
AND AssignedQuizzes.courseOccasion=:COCCASION
AND AssignedQuizzes.ssn=:SSN;";
$updateStmt = $pdo->prepare($updateString);
$updateStmt->bindParam(':GRADE', $_POST['grade']);
$updateStmt->bindParam(':QNR', $_POST['quizNr']);
$updateStmt->bindParam(':QVNR', $_POST['qVarNr']);
$updateStmt->bindParam(':CNAME', $_POST['courseName']);
$updateStmt->bindParam(':COCCASION', $_POST['courseOccasion']);
$updateStmt->bindParam(':SSN', $_POST['ssn']);
$updateStmt->execute();
if($updateStmt->execute()){
$userMsg.="Grade saved";
$gradeSavedMsg="Saved";
$gradeSavedForSSN=$_POST['ssn'];
} else {
$errorMsg.="ERROR: Failed to save new grade";
$gradeSavedMsg="Error: Not saved";
}
$updateStmt->closeCursor();
}
if(isset($_POST['saveGradeComment'])){
//Store new grade comment
$updateString = "UPDATE AssignedQuizzes
SET AssignedQuizzes.gradeComment=:GRADECOMMENT
WHERE AssignedQuizzes.qVarNr=:QVNR
AND AssignedQuizzes.quizNr=:QNR
AND AssignedQuizzes.quizCourseName=:CNAME
AND AssignedQuizzes.courseOccasion=:COCCASION
AND AssignedQuizzes.ssn=:SSN;";
$updateStmt = $pdo->prepare($updateString);
$updateStmt->bindParam(':GRADECOMMENT', $_POST['gradeComment']);
$updateStmt->bindParam(':QNR', $_POST['quizNr']);
$updateStmt->bindParam(':QVNR', $_POST['qVarNr']);
$updateStmt->bindParam(':CNAME', $_POST['courseName']);
$updateStmt->bindParam(':COCCASION', $_POST['courseOccasion']);
$updateStmt->bindParam(':SSN', $_POST['ssn']);
$updateStmt->execute();
if($updateStmt->execute()){
$userMsg.="Grade comment saved";
$gradeCommentSavedMsg="Saved";
} else {
$errorMsg.="ERROR: Failed to save new grade comment";
$gradeCommentSavedMsg="Error: Not saved";
}
$updateStmt->closeCursor();
}
if(isset($_POST['displayQuizAnswerDetails'])){
//Fetch data for specific quiz answer
$queryString = "SELECT Student.ssn, Student.loginName, Student.name, QuizVariant.correctAnswer, AssignedQuizzes.*
FROM QuizVariant, AssignedQuizzes, Student
WHERE AssignedQuizzes.quizCourseName=QuizVariant.quizCourseName
AND AssignedQuizzes.qVarNr=QuizVariant.qVarNr
AND AssignedQuizzes.quizNr=QuizVariant.quizNr
AND AssignedQuizzes.ssn=Student.ssn
AND Student.ssn=:SSN
AND AssignedQuizzes.quizCourseName=:CNAME
AND AssignedQuizzes.quizNr=:QNR
AND AssignedQuizzes.qVarNr=:QVNR
AND AssignedQuizzes.courseOccasion=:COCCASION
;";
$stmt = $pdo->prepare($queryString);
$stmt->bindParam(':SSN', $_POST['ssn']);
$stmt->bindParam(':CNAME', $_POST['courseName']);
$stmt->bindParam(':QNR', $_POST['quizNr']);
$stmt->bindParam(':QVNR', $_POST['qVarNr']);
$stmt->bindParam(':COCCASION', $_POST['courseOccasion']);
$stmt->execute();
$quizAnswerData=$stmt->fetch(PDO::FETCH_ASSOC);
$content="quizChecking/quizAnswerDetails.html.php";
} else {
//Fetch all quiz assignments for selected quiz
$queryString = "SELECT Student.ssn, Student.loginName, Student.name, AssignedQuizzes.quizNr, AssignedQuizzes.qVarNr, QuizVariant.correctAnswer, AssignedQuizzes.answer, AssignedQuizzes.answerHash, AssignedQuizzes.grade, AssignedQuizzes.gradeComment, AssignedQuizzes.answeredDateTime, Quiz.quizURI
FROM QuizVariant, AssignedQuizzes, Student, Quiz
WHERE AssignedQuizzes.quizCourseName=QuizVariant.quizCourseName
AND AssignedQuizzes.qVarNr=QuizVariant.qVarNr
AND AssignedQuizzes.quizNr=QuizVariant.quizNr
AND AssignedQuizzes.ssn=Student.ssn
AND AssignedQuizzes.quizCourseName=:CNAME
AND AssignedQuizzes.quizNr=:QNR
AND AssignedQuizzes.courseOccasion=:COCCASION
AND AssignedQuizzes.quizNr=Quiz.nr
ORDER BY Student.name COLLATE utf8_swedish_ci ASC
;";
$stmt = $pdo->prepare($queryString);
$stmt->bindParam(':CNAME', $_POST['courseName']);
$stmt->bindParam(':QNR', $_POST['quizNr']);
$stmt->bindParam(':COCCASION', $_POST['courseOccasion']);
$stmt->execute();
$quizAssignmentsList=$stmt->fetchAll(PDO::FETCH_ASSOC);
$content="quizChecking/listQuizAnswers.html.php";
}
} else if(isset($_POST['listQuizzesForCourseOccasionSubmit'])){ //Course and course occasion selected
//Fetch all quizzes for selected course
$queryString = "SELECT Quiz.nr, Quiz.courseName, Quiz.opening, Quiz.closing, Quiz.autoCorrected
FROM Quiz
WHERE Quiz.courseName=:CNAME;";
$stmt = $pdo->prepare($queryString);
$stmt->bindParam(':CNAME', $_POST['courseName']);
$stmt->execute();
$quizList=$stmt->fetchAll(PDO::FETCH_ASSOC);
$content="quizChecking/selectQuiz.html.php";
}else{ //Display list of courses
//Fetch all courses from Course-table to populate course list
$queryString = "SELECT * FROM Course";
$stmt = $pdo->prepare($queryString);
$stmt->execute();
$courseList=$stmt->fetchAll(PDO::FETCH_ASSOC);
$content="quizChecking/selectCourse.html.php";
}
?>
|