/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
1 by Henrik G.
First seed of Lenasys ... Needs to be Organized Further
1
<?php
2
if(isset($_POST['listVariantObjects'])){
3
	
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
7
						FROM QuizVariantObject
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);
15
		$stmt->execute();
16
		$quizVariantIds=$stmt->fetchAll(PDO::FETCH_ASSOC);
17
		$dataObjectsString="";
18
		foreach($quizVariantIds as $objectId){
19
			$dataObjectsString.=$objectId['id']." ";
20
		}
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();
33
		/*
34
		if($updateStmt->execute()){
35
			$userMsg.=" Object ID list for quiz ".$quizNr." variant ".$qVarNr." successfully updated"; 
36
		} else {
37
			$errorMsg.="ERROR: Object ID list for quiz ".$quizNr." variant ".$qVarNr." FAILED to update"; 
38
		}*/
39
		$updateStmt->closeCursor();
40
	}
41
	
42
	//updateDataObject
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";
62
		} else {
63
			$errorMsg.="ERROR: Object update failed";
64
			$updatedObjectId=$_POST['newObjectId'];
65
			$objectUpdateMsg="Failed";
66
		}
67
		$updateStmt->closeCursor();
68
		updateDataObjectList($_POST['quizNr'], $_POST['qVarNr'], $_POST['courseName'], $pdo);
69
	}
70
	
71
	//deleteDataObject
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"; 
85
		// } else {
86
			// $errorMsg.="ERROR: Object ID ".$_POST['objectId']." NOT deleted"; 
87
		// }
88
		// updateDataObjectList($_POST['quizNr'], $_POST['qVarNr'], $_POST['courseName'], $pdo);
89
		$errorMsg.="ERROR: Object ID ".$_POST['objectId']." NOT deleted - FUNCTION DISABLED"; 
90
	}
91
	
92
	//addDataObject
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"; 
104
		} else {
105
			$errorMsg.="ERROR: Object ID ".$_POST['newObjectId']." NOT added"; 
106
		}
107
		updateDataObjectList($_POST['quizNr'], $_POST['qVarNr'], $_POST['courseName'], $pdo);
108
	}
109
	
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']);
120
	$stmt->execute();
121
	$quizVariantObjects=$stmt->fetchAll(PDO::FETCH_ASSOC);
122
	
123
	//Fetch data for the selected variant
124
	$queryString = "SELECT * 
125
					FROM QuizVariant
126
					WHERE quizNr=:QNR
127
						AND qVarNr=:QVNR
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']);
133
	$stmt->execute();
134
	$quizVariant=$stmt->fetch(PDO::FETCH_ASSOC);
135
	
136
	$content="quiz/listDataObjects.html.php";
137
} else if(isset($_POST['editSelectedQuiz']) || isset($_POST['addQuizSubmit'])){ //If user selected add or edit quiz
138
		
139
	if(isset($_POST['editSelectedQuiz'])){
140
		$queryString = "SELECT Quiz.nr, Quiz.courseName, Quiz.opening, Quiz.closing, Quiz.quizData, Quiz.autoCorrected, Quiz.allowMultipleReplies, Quiz.quizURI
141
						FROM Quiz 
142
						WHERE nr=:QNR AND courseName=:CNAME";
143
		$stmt = $pdo->prepare($queryString);
144
		$stmt->bindParam(':QNR', $_POST['quizNr']);
145
		$stmt->bindParam(':CNAME', $_POST['courseName']);
146
		$stmt->execute();
147
		$quiz=$stmt->fetch(PDO::FETCH_ASSOC);
148
	}
149
	$content="quiz/addEditQuiz.html.php";
150
		
151
} else if(isset($_POST['listVariantsForSelectedQuiz'])){
152
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;
164
		} else {
165
			$errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT added"; 
166
		}
167
	}
168
	
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'];
185
		} else {
186
			$errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT updated"; 
187
		}
188
		$updateStmt->closeCursor();
189
	} 
190
	
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"; 
204
		// } else {
205
			// $errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT deleted"; 
206
		// }
207
		 $errorMsg.="ERROR: Variant nr: ".$_POST['qVarNr']." for quiz nr: ".$_POST['quizNr']." NOT deleted - FUNCTION DISABLED"; 
208
	}
209
	
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']);
219
	$stmt->execute();
220
	$quizVariants=$stmt->fetchAll(PDO::FETCH_ASSOC);
221
	
222
	$content="quiz/editVariants.html.php";
223
224
} else { //Else display course selection
225
		
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']);
234
		
235
		// if($deleteStmt->execute()){
236
			// $userMsg.="Quiz nr: ".$_POST['quizNr']." successfully deleted from ".$_POST['courseName']; 
237
		// } else {
238
			// $errorMsg.="ERROR: Could not delete Quiz nr: ".$_POST['quizNr']." from ".$_POST['courseName']; 
239
		// }
240
		$errorMsg.="ERROR: Could not delete Quiz nr: ".$_POST['quizNr']." from ".$_POST['courseName']." - FUNCTION DISABLED";
241
	}
242
	
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']!="")
252
			$autoCorrected=1;
253
		else
254
			$autoCorrected=0;
255
		$updateStmt->bindParam(':AUTO', $autoCorrected);
256
		if($_POST['allowMultipleReplies']!="")
257
			$allowMultipleReplies=1;
258
		else
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;
266
		else
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"; 
274
		} else {
275
			$errorMsg.="ERROR: Quiz nr: ".$_POST['quizNr']." for ".$_POST['courseName']." NOT updated"; 
276
		}
277
	} 
278
	
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']!="")
289
			$autoCorrected=1;
290
		else
291
			$autoCorrected=0;
292
		$insertStmt->bindParam(':AUTO', $autoCorrected);
293
		if($_POST['allowMultipleReplies']!="")
294
			$allowMultipleReplies=1;
295
		else
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"; 
303
		} else {
304
			$errorMsg.="ERROR: Quiz for ".$_POST['courseName']." NOT added"; 
305
		}
306
	}
307
	
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
311
		                FROM Quiz
312
						WHERE Quiz.courseName=:CNAME;";
313
		$stmt = $pdo->prepare($queryString);
314
		$stmt->bindParam(':CNAME', $_POST['courseName']);
315
		$stmt->execute();
316
		$quizList=$stmt->fetchAll(PDO::FETCH_ASSOC);
317
	}
318
	
319
	//Fetch all courses from Course-table to populate dropdown-list
320
	$queryString = "SELECT * FROM Course";
321
	$stmt = $pdo->prepare($queryString);
322
	$stmt->execute();
323
	$courseList=$stmt->fetchAll(PDO::FETCH_ASSOC);
324
	
325
	$content="quiz/listQuizzes.html.php";
326
}
327
?>