/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
DROP DATABASE quizsystem;
2
CREATE DATABASE quizsystem;
3
USE quizsystem;
4
/* Students */
5
CREATE TABLE Student(
6
    ssn CHAR(11), /*YYMMDD-XXXX*/
7
    name VARCHAR(100),
8
    loginName VARCHAR(50) UNIQUE, /*a02leifo */
9
    passw VARCHAR(50), /*MD5-hashat lösenord*/
10
    PRIMARY KEY(ssn)    
11
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
12
13
/* Courses */
14
CREATE TABLE Course(
15
    name VARCHAR(200),
16
	description TEXT,
17
	courseData TEXT,
18
    PRIMARY KEY(name)
19
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
20
21
CREATE TABLE StudentCourseRegistration(
22
    studentSsn CHAR(11), /*YYMMDD-XXXX*/
23
    courseName VARCHAR(200),
24
    courseOccasion VARCHAR(25),
25
    PRIMARY KEY(studentSsn, courseName, courseOccasion),
26
    FOREIGN KEY(studentSsn) REFERENCES Student(ssn) ON UPDATE CASCADE,
27
    FOREIGN KEY(courseName) REFERENCES Course(name) ON UPDATE CASCADE
28
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
29
30
CREATE TABLE Quiz(
31
    nr INTEGER,
32
    courseName VARCHAR(200),
33
	opening TIMESTAMP,
34
	closing TIMESTAMP,
35
    quizData TEXT,
36
	autoCorrected BOOLEAN,
37
	allowMultipleReplies BOOLEAN,
38
	quizURI VARCHAR(255),
39
    PRIMARY KEY(nr, courseName),
40
    FOREIGN KEY(courseName) REFERENCES Course(name) ON UPDATE CASCADE
41
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
42
43
CREATE TABLE QuizVariant(
44
    qVarNr INTEGER,
45
    quizNr INTEGER,
46
    quizCourseName VARCHAR(200),
47
    correctAnswer VARCHAR(255),
48
    quizObjectIDs TEXT,
49
    PRIMARY KEY(qVarNr, quizNr, quizCourseName),
50
    FOREIGN KEY(quizNr, quizCourseName) REFERENCES Quiz(nr, courseName) ON UPDATE CASCADE
51
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
52
53
CREATE TABLE QuizVariantObject(
54
    id VARCHAR(255),
55
    quizNr INTEGER,
56
    qVarNr INTEGER,
57
    quizCourseName VARCHAR(200),
58
    objectData TEXT,
59
    PRIMARY KEY(id, quizNr, qVarNr, quizCourseName),
60
    FOREIGN KEY(qVarNr, quizNr, quizCourseName) REFERENCES QuizVariant(qVarNr, quizNr, quizCourseName) ON UPDATE CASCADE
61
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
62
63
CREATE TABLE AssignedQuizzes(
64
    ssn CHAR(11), /*YYMMDD-XXXX*/
65
    quizNr INTEGER,
66
    qVarNr INTEGER,
67
    quizCourseName VARCHAR(200),
68
	courseOccasion VARCHAR(25),
69
    answerHash VARCHAR(255), /*Hash of Student login name + answer */
70
    answer TEXT,
71
	grade VARCHAR(10),
72
	gradeComment TEXT,
73
	answeredDateTime TIMESTAMP,
74
    userAgent VARCHAR(1024),
75
    userIP VARCHAR(20), /*$_SERVER['REMOTE_ADDR']*/
76
    PRIMARY KEY(ssn, quizNr, quizCourseName, courseOccasion),
77
    FOREIGN KEY(ssn) REFERENCES Student(ssn) ON UPDATE CASCADE,
78
    FOREIGN KEY(quizNr, quizCourseName) REFERENCES QuizVariant(quizNr, quizCourseName) ON UPDATE CASCADE
79
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
80
81
CREATE TABLE AssignedQuizzesAnswerLog(
82
    ssn CHAR(11), /*YYMMDD-XXXX*/
83
	loginName VARCHAR(50),
84
    quizNr INTEGER,
85
    qVarNr INTEGER,
86
    quizCourseName VARCHAR(200),
87
	courseOccasion VARCHAR(25),
88
    answerHash VARCHAR(255), /*Hash of Student login name + answer */
89
    answer TEXT,
90
	grade VARCHAR(10),
91
	gradeComment TEXT,
92
	answeredDateTime TIMESTAMP,
93
    userAgent VARCHAR(1024), /*$_SERVER['HTTP_USER_AGENT']*/
94
    userIP VARCHAR(20) /*$_SERVER['REMOTE_ADDR']*/
95
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
96
97
CREATE TABLE QSystemUser(
98
    userName     VARCHAR(16) UNIQUE NOT NULL,
99
    passw        VARCHAR(41) NOT NULL,
100
    userType     VARCHAR(10) NOT NULL,
101
    PRIMARY KEY(userName)
102
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
103
104
/* Logging of all student login attempts */
105
CREATE TABLE userLoginsLog(
106
    id INTEGER AUTO_INCREMENT,
107
    loginName VARCHAR(16),
108
    userAgent VARCHAR(1024), /*$_SERVER['HTTP_USER_AGENT']*/
109
    userIP VARCHAR(20), /*$_SERVER['REMOTE_ADDR']*/
110
    DateTime TIMESTAMP,
111
	success VARCHAR(25),
112
	courseName VARCHAR(100),
113
	courseOccasion VARCHAR(25),
114
    quizNr INTEGER,
115
    PRIMARY KEY(id)
116
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
117
118
/* Logging of failed attempt to login to the backend */
119
CREATE TABLE logFailedUserLogins(
120
    id INTEGER AUTO_INCREMENT,
121
    userName VARCHAR(16),
122
    user	Type VARCHAR(10),
123
    userAgent VARCHAR(1024), /*$_SERVER['HTTP_USER_AGENT']*/
124
    userIP VARCHAR(20), /*$_SERVER['REMOTE_ADDR']*/
125
    DateTime TIMESTAMP,
126
	success VARCHAR(25),
127
    PRIMARY KEY(id)
128
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
129
130
131
132
/* Logging of successful logins to the backend */
133
CREATE TABLE userLoginsLog(
134
    id INTEGER AUTO_INCREMENT,
135
    loginName VARCHAR(16),
136
    userAgent VARCHAR(1024), /*$_SERVER['HTTP_USER_AGENT']*/
137
    userIP VARCHAR(20), /*$_SERVER['REMOTE_ADDR']*/
138
    DateTime TIMESTAMP,
139
	success VARCHAR(25),
140
    PRIMARY KEY(id)
141
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
142
143
INSERT INTO Course(name) VALUES('DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)');
144
INSERT INTO QSystemUser(userName,passw,userType) VALUES('tomtefar','$1$nwRo7ye/$WK7wY9GbNMRj3lIeuaPcG/','admin');
145
146
INSERT INTO Student(ssn,name,loginName,passw) VALUES ('780323-1212','Lei Fo','a02leifo','56edf750f3bb2053b3c1c44429b3ce82'); 
147
INSERT INTO StudentCourseRegistration(studentSsn, courseName, courseOccasion) VALUES ('780323-1212','DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','HT-12 LP1');
148
INSERT INTO StudentCourseRegistration(studentSsn, courseName, courseOccasion) VALUES ('780323-1212','DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','HT-12 LP2');
149
150
INSERT INTO Quiz(nr, courseName, opening, closing, autoCorrected, allowMultipleReplies, quizURI, quizData) VALUES(1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','2012-08-19 00:00:00','2012-08-28 00:00:00',1,0,'','<div id="dugga"><h1>Dugga ett för en kurs</h1><p>Duggan ditten och duggan datten</p></div>');
151
INSERT INTO QuizVariant(quizNr, qVarNr, quizCourseName, correctAnswer, quizObjectIDs) VALUES(1,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','1,2,3,4,5,6,7,8','TEST1 TEST2 TEST3 TEST4');
152
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST1',1,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<div id="TEST1"><p>Du ska göra bla bla...</p></div>');
153
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST2',1,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<div id="TEST2"><strong>1 2 3 4 5</strong></div>');
154
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST3',1,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<script lang="Javascript">alert("TEST3");</script>');
155
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST4',1,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<script lang="Javascript">alert("&lt;TEST4");</script>');
156
157
INSERT INTO QuizVariant(quizNr, qVarNr, quizCourseName, correctAnswer, quizObjectIDs) VALUES(1,2,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','8,7,6,5,4,3,2,1','TEST1 TEST2 TEST3 TEST4');
158
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST1',1,2,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<div id="TEST1"><p>Variant 2 på dugga 1</p></div>');
159
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST2',1,2,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<div id="TEST2"><strong>1111 2222 33333</strong></div>');
160
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST3',1,2,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<script lang="Javascript">alert("TEST3 Var2");</script>');
161
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST4',1,2,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<script lang="Javascript">alert("&lt;TEST4 Var2");</script>');
162
163
INSERT INTO Quiz(nr, courseName, opening, closing, autoCorrected, quizData) VALUES(2,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','2012-08-19 00:00:00','2012-08-28 00:00:00',0,'<div id="dugga"><h1>Dugga 2 för en kurs</h1><p>Duggan ditten och duggan datten</p></div>');
164
INSERT INTO QuizVariant(quizNr, qVarNr, quizCourseName, correctAnswer, quizObjectIDs) VALUES(2,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','1,2,3,4,5,6,7,8','TEST1 TEST2 TEST3 TEST4');
165
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST1',2,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<div id="TEST1"><p>I dugga 2 variant 1 ska bla bla...</p></div>');
166
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST2',2,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<div id="TEST2"><strong>--!!--!!--!!--</strong></div>');
167
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST3',2,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<script lang="Javascript">alert("TEST3 d2 var1");</script>');
168
INSERT INTO QuizVariantObject(id, quizNr, qVarNr, quizCourseName, objectData) VALUES('TEST4',2,1,'DA133G Webbutveckling - datorgrafik G1N, 7,5hp (IKI)','<script lang="Javascript">alert("&lt;TEST4 d2 var1");</script>');
169
170
171
DELIMITER //
172
DROP PROCEDURE IF EXISTS CHECKLOGIN;
173
CREATE PROCEDURE CHECKLOGIN(userName VARCHAR(16), userPassword VARCHAR(41))
174
BEGIN
175
   SELECT userName,passw,userType FROM QSystemUser WHERE userName=userName AND passw=userPassword;
176
END;
177
//
178
DELIMITER ;
179
180
;
181
	allowMultipleReplies BOOLEAN,
182
	quizURI VARCHAR(255),