Skip to content

Commit 69018a4

Browse files
Develop new database schema and migration
1 parent da30588 commit 69018a4

File tree

4 files changed

+376
-57
lines changed

4 files changed

+376
-57
lines changed

classes/dbtables.php

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
// This file is part of the Moodle plugin block_evasys_sync
3+
//
4+
// Moodle is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
//
9+
// Moodle is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU General Public License for more details.
13+
//
14+
// You should have received a copy of the GNU General Public License
15+
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16+
17+
namespace block_evasys_sync;
18+
19+
defined('MOODLE_INTERNAL') || die();
20+
21+
/**
22+
* Class with constants for tables
23+
* @package block_evasys_sync
24+
* @copyright 2022 Justus Dieckmann WWU
25+
*/
26+
class dbtables {
27+
28+
const CATEGORIES = 'block_evasys_sync_categories';
29+
const EVAL_REQUESTS = 'block_evasys_sync_ereq';
30+
const EVAL_REQUESTS_COURSES = 'block_evasys_sync_ereq_cours';
31+
const EVAL_REQUESTS_VERANSTS = 'block_evasys_sync_ereq_veran';
32+
const EVAL = 'block_evasys_sync_eval';
33+
const EVAL_COURSES = 'block_evasys_sync_eval_cours';
34+
const EVAL_VERANSTS = 'block_evasys_sync_eval_veran';
35+
36+
}

db/install.xml

+111-54
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,112 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
2-
<XMLDB PATH="blocks/evasys_sync/db" VERSION="2017121403" COMMENT="XMLDB file for Moodle blocks/evasys_sync"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd">
5-
<TABLES>
6-
<TABLE NAME="block_evasys_sync_categories" COMMENT="Responsible moodle users for course categories">
7-
<FIELDS>
8-
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
9-
<FIELD NAME="course_category" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
10-
<FIELD NAME="category_mode" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
11-
<FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
12-
<FIELD NAME="usermodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
13-
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
14-
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
15-
<FIELD NAME="standard_time_end" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
16-
<FIELD NAME="standard_time_start" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
17-
</FIELDS>
18-
<KEYS>
19-
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
20-
<KEY NAME="course_category" TYPE="foreign-unique" FIELDS="course_category" REFTABLE="course_categories" REFFIELDS="id"/>
21-
<KEY NAME="userid" TYPE="foreign" FIELDS="userid" REFTABLE="user" REFFIELDS="id"/>
22-
</KEYS>
23-
</TABLE>
24-
<TABLE NAME="block_evasys_sync_courseeval" COMMENT="Course start and end dates">
25-
<FIELDS>
26-
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
27-
<FIELD NAME="course" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
28-
<FIELD NAME="startdate" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
29-
<FIELD NAME="enddate" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
30-
<FIELD NAME="state" TYPE="int" LENGTH="2" NOTNULL="false" SEQUENCE="false"/>
31-
<FIELD NAME="usermodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
32-
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
33-
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
34-
</FIELDS>
35-
<KEYS>
36-
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
37-
<KEY NAME="survey" TYPE="foreign-unique" FIELDS="course" REFTABLE="course" REFFIELDS="id"/>
38-
</KEYS>
39-
</TABLE>
40-
<TABLE NAME="block_evasys_sync_courses" COMMENT="Maps one moodle course to multiple EvaSys-courses">
41-
<FIELDS>
42-
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
43-
<FIELD NAME="course" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
44-
<FIELD NAME="evasyscourses" TYPE="text" NOTNULL="true" SEQUENCE="false"/>
45-
<FIELD NAME="usermodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
46-
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
47-
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
48-
</FIELDS>
49-
<KEYS>
50-
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
51-
<KEY NAME="survey" TYPE="foreign-unique" FIELDS="course" REFTABLE="course" REFFIELDS="id"/>
52-
</KEYS>
53-
</TABLE>
54-
</TABLES>
55-
</XMLDB>
2+
<XMLDB PATH="blocks/evasys_sync/db" VERSION="20220924" COMMENT="XMLDB file for Moodle blocks/evasys_sync"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
5+
>
6+
<TABLES>
7+
<TABLE NAME="block_evasys_sync_categories" COMMENT="Responsible moodle users for course categories">
8+
<FIELDS>
9+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
10+
<FIELD NAME="course_category" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
11+
<FIELD NAME="category_mode" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
12+
<FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
13+
<FIELD NAME="usermodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
14+
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
15+
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
16+
<FIELD NAME="standard_time_end" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
17+
<FIELD NAME="standard_time_start" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
18+
</FIELDS>
19+
<KEYS>
20+
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
21+
<KEY NAME="course_category" TYPE="foreign-unique" FIELDS="course_category" REFTABLE="course_categories" REFFIELDS="id"/>
22+
<KEY NAME="userid" TYPE="foreign" FIELDS="userid" REFTABLE="user" REFFIELDS="id"/>
23+
</KEYS>
24+
</TABLE>
25+
<TABLE NAME="block_evasys_sync_ereq" COMMENT="Table of outstanding evaluation (change) requests">
26+
<FIELDS>
27+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
28+
<FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
29+
<FIELD NAME="state" TYPE="int" LENGTH="4" NOTNULL="true" SEQUENCE="false"/>
30+
<FIELD NAME="shouldevaluate" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="1" SEQUENCE="false" COMMENT="0 if course should not be evaluated"/>
31+
<FIELD NAME="evasyscategoryid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="Which category this is associated with. Makes it easier to find unassociated requests"/>
32+
<FIELD NAME="usermodified" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
33+
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
34+
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
35+
</FIELDS>
36+
<KEYS>
37+
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
38+
<KEY NAME="courseid" TYPE="unique" FIELDS="courseid"/>
39+
<KEY NAME="evasyscategoryid" TYPE="foreign" FIELDS="evasyscategoryid" REFTABLE="block_evasys_sync_categories" REFFIELDS="id"/>
40+
<KEY NAME="usermodified" TYPE="foreign" FIELDS="usermodified" REFTABLE="user" REFFIELDS="id"/>
41+
</KEYS>
42+
</TABLE>
43+
<TABLE NAME="block_evasys_sync_ereq_cours" COMMENT="Courses that should share the evaluation">
44+
<FIELDS>
45+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
46+
<FIELD NAME="erequestid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
47+
<FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
48+
</FIELDS>
49+
<KEYS>
50+
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
51+
<KEY NAME="erequestid" TYPE="foreign" FIELDS="erequestid" REFTABLE="block_evasys_sync_ereq" REFFIELDS="id"/>
52+
<KEY NAME="courseid" TYPE="foreign-unique" FIELDS="courseid" REFTABLE="course" REFFIELDS="id"/>
53+
</KEYS>
54+
</TABLE>
55+
<TABLE NAME="block_evasys_sync_ereq_veran" COMMENT="Veranstaltungen that should be evaluated">
56+
<FIELDS>
57+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
58+
<FIELD NAME="erequestid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
59+
<FIELD NAME="veranstid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
60+
<FIELD NAME="veransttitle" TYPE="text" NOTNULL="false" SEQUENCE="false"/>
61+
<FIELD NAME="starttime" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
62+
<FIELD NAME="endtime" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
63+
</FIELDS>
64+
<KEYS>
65+
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
66+
<KEY NAME="erequestid" TYPE="foreign" FIELDS="erequestid" REFTABLE="block_evasys_sync_ereq" REFFIELDS="id"/>
67+
<KEY NAME="veranstid" TYPE="unique" FIELDS="veranstid"/>
68+
</KEYS>
69+
</TABLE>
70+
<TABLE NAME="block_evasys_sync_eval" COMMENT="Table of evaluation groups. Really only used to have an id to associate courses and veranstaltungen with.">
71+
<FIELDS>
72+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
73+
<FIELD NAME="initialcourse" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
74+
</FIELDS>
75+
<KEYS>
76+
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
77+
</KEYS>
78+
</TABLE>
79+
<TABLE NAME="block_evasys_sync_eval_cours" COMMENT="Contains (course, evaluation) pairs">
80+
<FIELDS>
81+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
82+
<FIELD NAME="evalid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
83+
<FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
84+
</FIELDS>
85+
<KEYS>
86+
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
87+
<KEY NAME="evalid" TYPE="foreign" FIELDS="evalid" REFTABLE="block_evasys_sync_eval" REFFIELDS="id"/>
88+
<KEY NAME="courseid" TYPE="foreign" FIELDS="courseid" REFTABLE="course" REFFIELDS="id"/>
89+
</KEYS>
90+
</TABLE>
91+
<TABLE NAME="block_evasys_sync_eval_veran" COMMENT="Contains evaluations for evasys veranstaltungen">
92+
<FIELDS>
93+
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
94+
<FIELD NAME="evalid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
95+
<FIELD NAME="veranstid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
96+
<FIELD NAME="veransttitle" TYPE="text" NOTNULL="false" SEQUENCE="false"/>
97+
<FIELD NAME="starttime" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
98+
<FIELD NAME="endtime" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
99+
<FIELD NAME="state" TYPE="int" LENGTH="4" NOTNULL="true" SEQUENCE="false"/>
100+
<FIELD NAME="usermodified" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
101+
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
102+
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
103+
</FIELDS>
104+
<KEYS>
105+
<KEY NAME="id" TYPE="primary" FIELDS="id"/>
106+
<KEY NAME="evalid" TYPE="foreign" FIELDS="evalid" REFTABLE="block_evasys_sync_eval" REFFIELDS="id"/>
107+
<KEY NAME="veranstid" TYPE="unique" FIELDS="veranstid"/>
108+
<KEY NAME="usermodified" TYPE="foreign" FIELDS="usermodified" REFTABLE="user" REFFIELDS="id"/>
109+
</KEYS>
110+
</TABLE>
111+
</TABLES>
112+
</XMLDB>

0 commit comments

Comments
 (0)