2
if(isset($_POST['listVariantObjects'])){
4
//Used to update the list of dataobjects stored for each quiz variant
5
function updateDataObjectList($quizNr, $qVarNr, $courseName, $pdo){
6
$queryString = "SELECT QuizVariantObject.id
8
WHERE QuizVariantObject.quizNr=:QNR
9
AND QuizVariantObject.qVarNr=:QVNR
10
AND QuizVariantObject.quizCourseName=:CNAME;";
11
$stmt = $pdo->prepare($queryString);
12
$stmt->bindParam(':QVNR', $qVarNr);
13
$stmt->bindParam(':QNR', $quizNr);
14
$stmt->bindParam(':CNAME', $courseName);
16
$quizVariantIds=$stmt->fetchAll(PDO::FETCH_ASSOC);
17
$dataObjectsString="";
18
foreach($quizVariantIds as $objectId){
19
$dataObjectsString.=$objectId['id']." ";
21
$dataObjectsString=trim($dataObjectsString);
22
$updateString = "UPDATE QuizVariant
23
SET QuizVariant.quizObjectIDs=:OBJECTIDS
24
WHERE QuizVariant.qVarNr=:QVNR
25
AND QuizVariant.quizNr=:QNR
26
AND QuizVariant.quizCourseName=:CNAME;";
27
$updateStmt = $pdo->prepare($updateString);
28
$updateStmt->bindParam(':OBJECTIDS', $dataObjectsString);
29
$updateStmt->bindParam(':QNR', $quizNr);
30
$updateStmt->bindParam(':QVNR', $qVarNr);
31
$updateStmt->bindParam(':CNAME', $courseName);
32
$updateStmt->execute();
34
if($updateStmt->execute()){
35
$userMsg.=" Object ID list for quiz ".$quizNr." variant ".$qVarNr." successfully updated";
37
$errorMsg.="ERROR: Object ID list for quiz ".$quizNr." variant ".$qVarNr." FAILED to update";
39
$updateStmt->closeCursor();
43
if(isset($_POST['updateDataObject'])){
44
$updateString = "UPDATE QuizVariantObject
45
SET QuizVariantObject.id=:NEWID, QuizVariantObject.objectData=:OBJECTDATA
46
WHERE QuizVariantObject.id=:ID
47
AND QuizVariantObject.qVarNr=:QVNR
48
AND QuizVariantObject.quizNr=:QNR
49
AND QuizVariantObject.quizCourseName=:CNAME;";
50
$updateStmt = $pdo->prepare($updateString);
51
$updateStmt->bindParam(':ID', $_POST['objectId']);
52
$updateStmt->bindParam(':NEWID', $_POST['newObjectId']);
53
$objectData=htmlentities($_POST['objectData'], ENT_QUOTES, "UTF-8");
54
$updateStmt->bindParam(':OBJECTDATA', $objectData);
55
$updateStmt->bindParam(':QNR', $_POST['quizNr']);
56
$updateStmt->bindParam(':QVNR', $_POST['qVarNr']);
57
$updateStmt->bindParam(':CNAME', $_POST['courseName']);
58
if($updateStmt->execute()){
59
$userMsg.="Object successfully updated";
60
$updatedObjectId=$_POST['newObjectId'];
61
$objectUpdateMsg="Saved";
63
$errorMsg.="ERROR: Object update failed";
64
$updatedObjectId=$_POST['newObjectId'];
65
$objectUpdateMsg="Failed";
67
$updateStmt->closeCursor();
68
updateDataObjectList($_POST['quizNr'], $_POST['qVarNr'], $_POST['courseName'], $pdo);
72
if(isset($_POST['deleteDataObject'])){
73
// $deleteQuery = "DELETE FROM QuizVariantObject
74
// WHERE QuizVariantObject.id=:ID
75
// AND QuizVariantObject.qVarNr=:QVNR
76
// AND QuizVariantObject.quizNr=:QNR
77
// AND QuizVariantObject.quizCourseName=:CNAME";
78
// $deleteStmt = $pdo->prepare($deleteQuery);
79
// $deleteStmt->bindParam(':ID', $_POST['objectId']);
80
// $deleteStmt->bindParam(':QNR', $_POST['quizNr']);
81
// $deleteStmt->bindParam(':CNAME', $_POST['courseName']);
82
// $deleteStmt->bindParam(':QVNR', $_POST['qVarNr']);
83
// if($deleteStmt->execute()){
84
// $userMsg.="Object ID ".$_POST['objectId']." successfully deleted";
86
// $errorMsg.="ERROR: Object ID ".$_POST['objectId']." NOT deleted";
88
// updateDataObjectList($_POST['quizNr'], $_POST['qVarNr'], $_POST['courseName'], $pdo);
89
$errorMsg.="ERROR: Object ID ".$_POST['objectId']." NOT deleted - FUNCTION DISABLED";
93
if(isset($_POST['addDataObject'])){
94
$insertString = "INSERT INTO QuizVariantObject(id, qVarNr, quizNr, quizCourseName, objectData) VALUES(:ID,:QVNR,:QNR,:CNAME,:OBJECTDATA);";
95
$insertStmt = $pdo->prepare($insertString);
96
$insertStmt->bindParam(':ID', $_POST['newObjectId']);
97
$insertStmt->bindParam(':QNR', $_POST['quizNr']);
98
$insertStmt->bindParam(':CNAME', $_POST['courseName']);
99
$insertStmt->bindParam(':QVNR', $_POST['qVarNr']);
100
$objectData=htmlsafe($_POST['objectData']);
101
$insertStmt->bindParam(':OBJECTDATA', $objectData);
102
if($insertStmt->execute()){
103
$userMsg.="Object ID ".$_POST['newObjectId']." successfully added";
105
$errorMsg.="ERROR: Object ID ".$_POST['newObjectId']." NOT added";
107
updateDataObjectList($_POST['quizNr'], $_POST['qVarNr'], $_POST['courseName'], $pdo);
110
//Fetch all data objects in selected quiz variant
111
$queryString = "SELECT *
112
FROM QuizVariantObject
113
WHERE QuizVariantObject.qVarNr=:QVNR
114
AND QuizVariantObject.quizNr=:QNR
115
AND quizCourseName=:CNAME;";
116
$stmt = $pdo->prepare($queryString);
117
$stmt->bindParam(':QVNR', $_POST['qVarNr']);
118
$stmt->bindParam(':QNR', $_POST['quizNr']);
119
$stmt->bindParam(':CNAME', $_POST['courseName']);
121
$quizVariantObjects=$stmt->fetchAll(PDO::FETCH_ASSOC);
123
//Fetch data for the selected variant
124
$queryString = "SELECT *
128
AND quizCourseName=:CNAME;";
129
$stmt = $pdo->prepare($queryString);
130
$stmt->bindParam(':QNR', $_POST['quizNr']);
131
$stmt->bindParam(':QVNR', $_POST['qVarNr']);
132
$stmt->bindParam(':CNAME', $_POST['courseName']);
134
$quizVariant=$stmt->fetch(PDO::FETCH_ASSOC);
136
$content="quiz/listDataObjects.html.php";
137
} else if(isset($_POST['editSelectedQuiz']) || isset($_POST['addQuizSubmit'])){ //If user selected add or edit quiz
139
if(isset($_POST['editSelectedQuiz'])){
140
$queryString = "SELECT Quiz.nr, Quiz.courseName, Quiz.opening, Quiz.closing, Quiz.quizData, Quiz.autoCorrected, Quiz.allowMultipleReplies, Quiz.quizURI
142
WHERE nr=:QNR AND courseName=:CNAME";
143
$stmt = $pdo->prepare($queryString);
144
$stmt->bindParam(':QNR', $_POST['quizNr']);
145
$stmt->bindParam(':CNAME', $_POST['courseName']);
147
$quiz=$stmt->fetch(PDO::FETCH_ASSOC);
149
$content="quiz/addEditQuiz.html.php";
151
} else if(isset($_POST['listVariantsForSelectedQuiz'])){
153
//Add new variant of quiz
154
if(isset($_POST['addVariantToQuizFormSubmit'])){
155
$insertString = "INSERT INTO QuizVariant(qVarNr, quizNr, quizCourseName, correctAnswer) VALUES(:QVNR, :QNR,:CNAME,:CANSWER);";
156
$insertStmt = $pdo->prepare($insertString);
157
$insertStmt->bindParam(':QNR', $_POST['quizNr']);
158
$insertStmt->bindParam(':CNAME', $_POST['courseName']);
159
$insertStmt->bindParam(':QVNR', $_POST['newQVarNr']);
160
$insertStmt->bindParam(':CANSWER', $_POST['correctAnswer']);
161
if($insertStmt->execute()){
162
$userMsg.="Variant nr: ".$_POST['newQVarNr']." for quiz nr: ".$_POST['quizNr']." successfully added";
163
$_POST['qVarNr']=$_POST['newQVarNr']+1;
165
$errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT added";
169
//Apply changes to variant of quiz
170
if(isset($_POST['editVariantOfQuizFormSubmit'])){
171
$updateString = "UPDATE QuizVariant
172
SET QuizVariant.qVarNr=:NEWQVNR, QuizVariant.correctAnswer=:CANSWER
173
WHERE QuizVariant.qVarNr=:QVNR
174
AND QuizVariant.quizNr=:QNR
175
AND QuizVariant.quizCourseName=:CNAME;";
176
$updateStmt = $pdo->prepare($updateString);
177
$updateStmt->bindParam(':NEWQVNR', $_POST['newQVarNr']);
178
$updateStmt->bindParam(':CANSWER', $_POST['correctAnswer']);
179
$updateStmt->bindParam(':QNR', $_POST['quizNr']);
180
$updateStmt->bindParam(':QVNR', $_POST['qVarNr']);
181
$updateStmt->bindParam(':CNAME', $_POST['courseName']);
182
if($updateStmt->execute()){
183
$userMsg.="Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." successfully updated";
184
$_POST['qVarNr']=$_POST['newQVarNr'];
186
$errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT updated";
188
$updateStmt->closeCursor();
191
//deleteVariantOfQuizSubmit
192
//Delete variant of quiz (and all quiz-assignments to students)
193
if(isset($_POST['deleteVariantOfQuizSubmit'])){
194
// $deleteQuery = "DELETE FROM QuizVariant
195
// WHERE QuizVariant.qVarNr=:QVNR
196
// AND QuizVariant.quizNr=:QNR
197
// AND QuizVariant.quizCourseName=:CNAME";
198
// $deleteStmt = $pdo->prepare($deleteQuery);
199
// $deleteStmt->bindParam(':QNR', $_POST['quizNr']);
200
// $deleteStmt->bindParam(':CNAME', $_POST['courseName']);
201
// $deleteStmt->bindParam(':QVNR', $_POST['qVarNr']);
202
// if($deleteStmt->execute()){
203
// $userMsg.="Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." successfully deleted";
205
// $errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT deleted";
207
$errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT deleted - FUNCTION DISABLED";
210
//Fetch all variants of selected quiz
211
$queryString = "SELECT QuizVariant.qVarNr, QuizVariant.quizNr, QuizVariant.quizCourseName, QuizVariant.correctAnswer, QuizVariant.quizObjectIDs, Quiz.quizURI
212
FROM QuizVariant, Quiz
213
WHERE Quiz.nr=QuizVariant.quizNr
214
AND QuizVariant.quizNr=:QNR
215
AND quizCourseName=:CNAME;";
216
$stmt = $pdo->prepare($queryString);
217
$stmt->bindParam(':QNR', $_POST['quizNr']);
218
$stmt->bindParam(':CNAME', $_POST['courseName']);
220
$quizVariants=$stmt->fetchAll(PDO::FETCH_ASSOC);
222
$content="quiz/editVariants.html.php";
224
} else { //Else display course selection
226
//Delete quiz from course (and all variants of the quiz and all quiz-assignments to students)
227
if(isset($_POST['deleteSelectedQuiz'])){
228
// $deleteQuery = "DELETE FROM Quiz
229
// WHERE Quiz.nr=:QNR
230
// AND Quiz.courseName=:CNAME";
231
// $deleteStmt = $pdo->prepare($deleteQuery);
232
// $deleteStmt->bindParam(':QNR', $_POST['quizNr']);
233
// $deleteStmt->bindParam(':CNAME', $_POST['courseName']);
235
// if($deleteStmt->execute()){
236
// $userMsg.="Quiz nr: ".$_POST['quizNr']." successfully deleted from ".$_POST['courseName'];
238
// $errorMsg.="ERROR: Could not delete Quiz nr: ".$_POST['quizNr']." from ".$_POST['courseName'];
240
$errorMsg.="ERROR: Could not delete Quiz nr: ".$_POST['quizNr']." from ".$_POST['courseName']." - FUNCTION DISABLED";
243
//Make submitted changes to quiz
244
if(isset($_POST['submitChangesToQuizSubmit'])){
245
$updateString = "UPDATE Quiz
246
SET Quiz.nr=:NEWQNR, Quiz.opening=:OPEN, Quiz.closing=:CLOSE, Quiz.quizData=:QDATA, Quiz.autoCorrected=:AUTO, Quiz.allowMultipleReplies=:MULTIPLE, Quiz.quizURI=:QURI
247
WHERE Quiz.nr=:QNR AND Quiz.courseName=:CNAME;";
248
$updateStmt = $pdo->prepare($updateString);
249
$updateStmt->bindParam(':OPEN', $_POST['quizOpeningDateTime']);
250
$updateStmt->bindParam(':CLOSE', $_POST['quizClosingDateTime']);
251
if($_POST['quizAutoCorrected']!="")
255
$updateStmt->bindParam(':AUTO', $autoCorrected);
256
if($_POST['allowMultipleReplies']!="")
257
$allowMultipleReplies=1;
259
$allowMultipleReplies=0;
260
$updateStmt->bindParam(':MULTIPLE', $allowMultipleReplies);
261
$quizData=htmlsafe($_POST['quizData']);
262
$updateStmt->bindParam(':QDATA', $quizData);
263
$updateStmt->bindParam(':QNR', $_POST['quizNr']);
264
if($_POST['allowMultipleReplies']!="")
265
$allowMultipleReplies=1;
267
$allowMultipleReplies=0;
268
$updateStmt->bindParam(':MULTIPLE', $allowMultipleReplies);
269
$updateStmt->bindParam(':QURI', $_POST['quizURI']);
270
$updateStmt->bindParam(':NEWQNR', $_POST['newQuizNr']);
271
$updateStmt->bindParam(':CNAME', $_POST['courseName']);
272
if($updateStmt->execute()){
273
$userMsg.="Quiz nr: ".$_POST['quizNr']." for ".$_POST['courseName']." successfully updated";
275
$errorMsg.="ERROR: Quiz nr: ".$_POST['quizNr']." for ".$_POST['courseName']." NOT updated";
279
//Add new quiz to course
280
if(isset($_POST['addQuizToCourseSubmit'])){
281
$insertString = "INSERT INTO Quiz(nr, courseName, opening, closing, autoCorrected, allowMultipleReplies, quizURI, quizData)
282
VALUES(:QNR,:CNAME,:OPEN,:CLOSE,:AUTO,:MULTIPLE,:QURI,:QDATA);";
283
$insertStmt = $pdo->prepare($insertString);
284
$insertStmt->bindParam(':QNR', $_POST['newQuizNr']);
285
$insertStmt->bindParam(':CNAME', $_POST['courseName']);
286
$insertStmt->bindParam(':OPEN', $_POST['quizOpeningDateTime']);
287
$insertStmt->bindParam(':CLOSE', $_POST['quizClosingDateTime']);
288
if($_POST['quizAutoCorrected']!="")
292
$insertStmt->bindParam(':AUTO', $autoCorrected);
293
if($_POST['allowMultipleReplies']!="")
294
$allowMultipleReplies=1;
296
$allowMultipleReplies=0;
297
$insertStmt->bindParam(':MULTIPLE', $allowMultipleReplies);
298
$insertStmt->bindParam(':QURI', $_POST['quizURI']);
299
$quizData=htmlsafe($_POST['quizData']);
300
$insertStmt->bindParam(':QDATA', $quizData);
301
if($insertStmt->execute()){
302
$userMsg.="Quiz for ".$_POST['courseName']." successfully added";
304
$errorMsg.="ERROR: Quiz for ".$_POST['courseName']." NOT added";
308
//Fetch all quizzes for selected course
309
if(isset($_POST['listQuizzesSubmit'])){
310
$queryString = "SELECT Quiz.nr, Quiz.courseName, Quiz.opening, Quiz.closing, Quiz.autoCorrected, Quiz.allowMultipleReplies, Quiz.quizURI
312
WHERE Quiz.courseName=:CNAME;";
313
$stmt = $pdo->prepare($queryString);
314
$stmt->bindParam(':CNAME', $_POST['courseName']);
316
$quizList=$stmt->fetchAll(PDO::FETCH_ASSOC);
319
//Fetch all courses from Course-table to populate dropdown-list
320
$queryString = "SELECT * FROM Course";
321
$stmt = $pdo->prepare($queryString);
323
$courseList=$stmt->fetchAll(PDO::FETCH_ASSOC);
325
$content="quiz/listQuizzes.html.php";
b'\\ No newline at end of file'