Passed
Push — master ( 445983...d786ab )
by Yannick
39:28
created

Version20241001155300::up()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 268
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 22
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 268
rs 9.568

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
8
9
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
10
use Doctrine\DBAL\Schema\Schema;
11
12
final class Version20241001155300 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Create and modify tables for peer assessment, autogroups, learning paths, group relations, and student publications.';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $this->addSql("
22
            CREATE TABLE IF NOT EXISTS c_peer_autogroup_rel_student_publication (
23
                id INT AUTO_INCREMENT NOT NULL,
24
                user_id INT NOT NULL,
25
                student_publication_id INT DEFAULT NULL,
26
                group_id INT DEFAULT NULL,
27
                peer_autogroup_id INT DEFAULT NULL,
28
                vote TINYINT(1) DEFAULT 0,
29
                date_vote DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
30
                student_publication_parent_id INT DEFAULT NULL,
31
                student_publication_folder_id INT DEFAULT NULL,
32
                PRIMARY KEY(id),
33
                INDEX IDX_52659CE4A76ED395 (user_id),
34
                INDEX IDX_52659CE42F50351C (student_publication_id),
35
                INDEX IDX_52659CE4FE54D947 (group_id),
36
                CONSTRAINT FK_52659CE4A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE,
37
                CONSTRAINT FK_52659CE42F50351C FOREIGN KEY (student_publication_id) REFERENCES c_student_publication (iid) ON DELETE SET NULL,
38
                CONSTRAINT FK_52659CE4FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE SET NULL
39
            )
40
        ");
41
42
        $this->addSql("
43
            CREATE TABLE IF NOT EXISTS c_lp_user_access (
44
                id INT AUTO_INCREMENT NOT NULL,
45
                user_id INT DEFAULT NULL,
46
                lp_id INT DEFAULT NULL,
47
                start_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
48
                end_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
49
                is_open_without_date TINYINT(1) DEFAULT 0,
50
                PRIMARY KEY(id),
51
                INDEX IDX_7CAC73F7A76ED395 (user_id),
52
                INDEX IDX_7CAC73F768DFD1EF (lp_id),
53
                CONSTRAINT FK_7CAC73F7A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL,
54
                CONSTRAINT FK_7CAC73F768DFD1EF FOREIGN KEY (lp_id) REFERENCES c_lp (iid) ON DELETE SET NULL
55
            )
56
        ");
57
58
        $this->addSql("
59
            CREATE TABLE IF NOT EXISTS c_group_rel_usergroup (
60
                id INT AUTO_INCREMENT NOT NULL,
61
                group_id INT NOT NULL,
62
                usergroup_id INT NOT NULL,
63
                session_id INT DEFAULT NULL,
64
                c_id INT DEFAULT NULL,
65
                ready_autogroup TINYINT(1) NOT NULL,
66
                PRIMARY KEY(id),
67
                INDEX IDX_AEE272A8FE54D947 (group_id),
68
                INDEX IDX_AEE272A8D2112630 (usergroup_id),
69
                INDEX IDX_AEE272A8613FECDF (session_id),
70
                INDEX IDX_AEE272A891D79BD3 (c_id),
71
                CONSTRAINT FK_AEE272A8FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE,
72
                CONSTRAINT FK_AEE272A8D2112630 FOREIGN KEY (usergroup_id) REFERENCES usergroup (id) ON DELETE CASCADE,
73
                CONSTRAINT FK_AEE272A8613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE,
74
                CONSTRAINT FK_AEE272A891D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE
75
            )
76
        ");
77
78
        $this->addSql("
79
            CREATE TABLE IF NOT EXISTS c_group_category_rel_user (
80
                id INT NOT NULL,
81
                group_category_id INT NOT NULL,
82
                population_type SMALLINT NOT NULL,
83
                population_id INT NOT NULL,
84
                status_in_category SMALLINT NOT NULL,
85
                PRIMARY KEY(id, group_category_id),
86
                INDEX IDX_4D66D81337FE8223 (group_category_id),
87
                CONSTRAINT FK_4D66D81337FE8223 FOREIGN KEY (group_category_id) REFERENCES c_group_category (iid) ON DELETE CASCADE
88
            )
89
        ");
90
91
        $this->addSql("
92
            CREATE TABLE IF NOT EXISTS c_peer_assessment (
93
                id INT AUTO_INCREMENT NOT NULL,
94
                c_id INT DEFAULT NULL,
95
                group_category_id INT DEFAULT NULL,
96
                max_correction_per_student INT DEFAULT 0,
97
                state INT DEFAULT 0,
98
                start_work_repository_option INT DEFAULT 0,
99
                end_work_repository_option INT DEFAULT NULL,
100
                start_correction_option INT DEFAULT 0,
101
                end_correction_option INT DEFAULT 0,
102
                distribute_correction_option INT DEFAULT 0 NOT NULL,
103
                end_repository_option INT DEFAULT NULL,
104
                examiner_role_condition TINYINT(1) DEFAULT 0,
105
                student_access_to_correction TINYINT(1) DEFAULT 0,
106
                comment_constraint TINYINT(1) DEFAULT 0,
107
                correct_own_work TINYINT(1) DEFAULT 0,
108
                correct_benchmark_work TINYINT(1) DEFAULT 0,
109
                distribution_algorithm TINYINT(1) DEFAULT 0,
110
                send_work_start_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
111
                send_work_end_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
112
                start_correction_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
113
                end_correction_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
114
                created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)',
115
                updated_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)',
116
                PRIMARY KEY(id),
117
                INDEX IDX_8532634391D79BD3 (c_id),
118
                INDEX IDX_8532634337FE8223 (group_category_id),
119
                CONSTRAINT FK_8532634391D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE,
120
                CONSTRAINT FK_8532634337FE8223 FOREIGN KEY (group_category_id) REFERENCES c_group_category (iid) ON DELETE CASCADE
121
            )
122
        ");
123
124
        $this->addSql("
125
            CREATE TABLE IF NOT EXISTS c_peer_assessment_log (
126
                id INT AUTO_INCREMENT NOT NULL,
127
                peer_assessment_id INT DEFAULT NULL,
128
                user_id INT DEFAULT NULL,
129
                date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
130
                description VARCHAR(255) DEFAULT NULL,
131
                PRIMARY KEY(id),
132
                INDEX IDX_71C6D04B672C3733 (peer_assessment_id),
133
                INDEX IDX_71C6D04BA76ED395 (user_id),
134
                CONSTRAINT FK_71C6D04B672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE,
135
                CONSTRAINT FK_71C6D04BA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL
136
            )
137
        ");
138
139
        $this->addSql("
140
            CREATE TABLE IF NOT EXISTS c_peer_assessment_rel_student_publication (
141
                id INT AUTO_INCREMENT NOT NULL,
142
                peer_assessment_id INT DEFAULT NULL,
143
                student_publication_id INT DEFAULT NULL,
144
                group_id INT DEFAULT NULL,
145
                student_publication_folder_id INT DEFAULT NULL,
146
                PRIMARY KEY(id),
147
                INDEX IDX_1B078BC7672C3733 (peer_assessment_id),
148
                INDEX IDX_1B078BC72F50351C (student_publication_id),
149
                INDEX IDX_1B078BC7FE54D947 (group_id),
150
                CONSTRAINT FK_1B078BC7672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE,
151
                CONSTRAINT FK_1B078BC72F50351C FOREIGN KEY (student_publication_id) REFERENCES c_student_publication (iid) ON DELETE CASCADE,
152
                CONSTRAINT FK_1B078BC7FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE
153
            )
154
        ");
155
156
        $this->addSql("
157
            CREATE TABLE IF NOT EXISTS c_autogroup_user_invitation (
158
                id INT AUTO_INCREMENT NOT NULL,
159
                group_category_id INT NOT NULL,
160
                group_id INT NOT NULL,
161
                user_id INT NOT NULL,
162
                confirm TINYINT(1) DEFAULT NULL,
163
                PRIMARY KEY(id),
164
                INDEX IDX_84AB498037FE8223 (group_category_id),
165
                INDEX IDX_84AB4980FE54D947 (group_id),
166
                INDEX IDX_84AB4980A76ED395 (user_id),
167
                CONSTRAINT FK_84AB498037FE8223 FOREIGN KEY (group_category_id) REFERENCES c_group_category (iid) ON DELETE CASCADE,
168
                CONSTRAINT FK_84AB4980FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE,
169
                CONSTRAINT FK_84AB4980A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE
170
            )
171
        ");
172
173
        $this->addSql("
174
            CREATE TABLE IF NOT EXISTS c_peer_assessment_correction (
175
                id INT AUTO_INCREMENT NOT NULL,
176
                peer_assessment_id INT DEFAULT NULL,
177
                student_group_id INT DEFAULT NULL,
178
                examiner_id INT DEFAULT NULL,
179
                examiner_group_id INT DEFAULT NULL,
180
                total_score INT DEFAULT NULL,
181
                maximum_score INT DEFAULT NULL,
182
                delivered TINYINT(1) DEFAULT NULL,
183
                examiner_folder_id INT DEFAULT NULL,
184
                examiner_document_id INT DEFAULT NULL,
185
                completed TINYINT(1) DEFAULT NULL,
186
                PRIMARY KEY(id),
187
                INDEX IDX_AFB0F2B7672C3733 (peer_assessment_id),
188
                INDEX IDX_AFB0F2B74DDF95DC (student_group_id),
189
                CONSTRAINT FK_AFB0F2B7672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE,
190
                CONSTRAINT FK_AFB0F2B74DDF95DC FOREIGN KEY (student_group_id) REFERENCES usergroup (id) ON DELETE CASCADE
191
            )
192
        ");
193
194
        $this->addSql("
195
            CREATE TABLE IF NOT EXISTS c_peer_assessment_criteria (
196
                id INT AUTO_INCREMENT NOT NULL,
197
                peer_assessment_id INT DEFAULT NULL,
198
                title VARCHAR(255) DEFAULT NULL,
199
                description LONGTEXT DEFAULT NULL,
200
                score INT DEFAULT NULL,
201
                position INT DEFAULT NULL,
202
                PRIMARY KEY(id),
203
                INDEX IDX_5025776B672C3733 (peer_assessment_id),
204
                CONSTRAINT FK_5025776B672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE
205
            )
206
        ");
207
208
        $this->addSql("
209
            CREATE TABLE IF NOT EXISTS c_peer_assessment_correction_criteria (
210
                id INT AUTO_INCREMENT NOT NULL,
211
                peer_assessment_correction_id INT DEFAULT NULL,
212
                peer_assessment_criteria_id INT DEFAULT NULL,
213
                comment LONGTEXT DEFAULT NULL,
214
                score INT DEFAULT NULL,
215
                PRIMARY KEY(id),
216
                INDEX IDX_C1AB8C19D723148D (peer_assessment_correction_id),
217
                INDEX IDX_C1AB8C1962488999 (peer_assessment_criteria_id),
218
                CONSTRAINT FK_C1AB8C19D723148D FOREIGN KEY (peer_assessment_correction_id) REFERENCES c_peer_assessment_correction (id) ON DELETE CASCADE,
219
                CONSTRAINT FK_C1AB8C1962488999 FOREIGN KEY (peer_assessment_criteria_id) REFERENCES c_peer_assessment_criteria (id) ON DELETE CASCADE
220
            )
221
        ");
222
223
        $this->addSql("
224
            ALTER TABLE c_student_publication
225
            ADD IF NOT EXISTS student_delete_own_publication TINYINT(1) DEFAULT 0,
226
            ADD IF NOT EXISTS default_visibility TINYINT(1) DEFAULT 0,
227
            ADD IF NOT EXISTS extensions LONGTEXT DEFAULT NULL
228
        ");
229
230
        $this->addSql("
231
            ALTER TABLE c_group_category
232
            ADD IF NOT EXISTS min_student INT DEFAULT NULL,
233
            ADD IF NOT EXISTS begin_inscription_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
234
            ADD IF NOT EXISTS end_inscription_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
235
            ADD IF NOT EXISTS only_me TINYINT(1) DEFAULT 0 NOT NULL,
236
            ADD COLUMN peer_assessment INT (11) DEFAULT '0',
237
            ADD COLUMN allow_coach_change_options_groups TINYINT(1) DEFAULT 0 NOT NULL AFTER peer_assessment,
238
            ADD COLUMN allow_change_group_name INT(11) DEFAULT 1 NULL AFTER allow_coach_change_options_groups,
239
            ADD COLUMN allow_autogroup TINYINT(1) DEFAULT 0 NOT NULL AFTER allow_change_group_name
240
        ");
241
242
        $this->addSql("
243
            ALTER TABLE c_lp
244
            ADD IF NOT EXISTS subscribe_user_by_date TINYINT(1) DEFAULT 0 NOT NULL,
245
            ADD IF NOT EXISTS display_not_allowed_lp TINYINT(1) DEFAULT 0
246
        ");
247
248
        $this->addSql("
249
            ALTER TABLE c_lp_rel_user
250
            ADD IF NOT EXISTS group_id INT NOT NULL,
251
            ADD IF NOT EXISTS start_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
252
            ADD IF NOT EXISTS end_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
253
            ADD IF NOT EXISTS is_open_without_date TINYINT(1) DEFAULT 0 NOT NULL
254
        ");
255
256
        $this->addSql("
257
            ALTER TABLE c_group_rel_user
258
            ADD COLUMN ready_autogroup TINYINT(1) NOT NULL AFTER role
259
        ");
260
261
        $this->addSql("
262
            ALTER TABLE c_student_publication
263
            ADD COLUMN group_category_id INT DEFAULT 0 NULL AFTER post_group_id
264
        ");
265
266
        $this->addSql("
267
            CREATE INDEX IF NOT EXISTS IDX_AD97516EFE54D947 ON c_lp_rel_user (group_id)
268
        ");
269
270
        $this->addSql("
271
            ALTER TABLE c_lp_rel_user
272
            MODIFY group_id INT DEFAULT NULL
273
        ");
274
275
        $this->addSql("
276
            UPDATE c_lp_rel_user
277
            SET group_id = NULL
278
            WHERE group_id = 0
279
        ");
280
281
        $this->addSql("
282
            ALTER TABLE c_lp_rel_user
283
            ADD CONSTRAINT FK_AD97516EFE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE
284
        ");
285
286
        $this->addSql("
287
            ALTER TABLE c_quiz
288
            ADD IF NOT EXISTS display_chart_degree_certainty INT DEFAULT 0 NOT NULL,
289
            ADD IF NOT EXISTS send_email_chart_degree_certainty INT DEFAULT 0 NOT NULL,
290
            ADD IF NOT EXISTS not_display_balance_percentage_categorie_question INT DEFAULT 0 NOT NULL,
291
            ADD IF NOT EXISTS display_chart_degree_certainty_category INT DEFAULT 0 NOT NULL,
292
            ADD IF NOT EXISTS gather_questions_categories INT DEFAULT 0 NOT NULL
293
        ");
294
    }
295
296
    public function down(Schema $schema): void
297
    {
298
        $this->addSql("DROP TABLE IF EXISTS c_peer_autogroup_rel_student_publication");
299
        $this->addSql("DROP TABLE IF EXISTS c_lp_user_access");
300
        $this->addSql("DROP TABLE IF EXISTS c_group_rel_usergroup");
301
        $this->addSql("DROP TABLE IF EXISTS c_group_category_rel_user");
302
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment");
303
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_log");
304
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_rel_student_publication");
305
        $this->addSql("DROP TABLE IF EXISTS c_autogroup_user_invitation");
306
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_correction");
307
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_criteria");
308
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_correction_criteria");
309
310
        $this->addSql("
311
            ALTER TABLE c_student_publication
312
            DROP IF EXISTS student_delete_own_publication,
313
            DROP IF EXISTS default_visibility,
314
            DROP IF EXISTS group_category_id,
315
            DROP IF EXISTS extensions
316
        ");
317
318
        $this->addSql("
319
            ALTER TABLE c_group_category
320
            DROP COLUMN min_student,
321
            DROP COLUMN begin_inscription_date,
322
            DROP COLUMN end_inscription_date,
323
            DROP COLUMN only_me,
324
            DROP COLUMN peer_assessment,
325
            DROP COLUMN allow_coach_change_options_groups,
326
            DROP COLUMN allow_change_group_name,
327
            DROP COLUMN allow_autogroup
328
        ");
329
330
        $this->addSql("
331
            ALTER TABLE c_group_rel_user
332
            DROP COLUMN ready_autogroup
333
        ");
334
335
336
        $this->addSql("
337
            ALTER TABLE c_lp
338
            DROP IF EXISTS subscribe_user_by_date,
339
            DROP IF EXISTS display_not_allowed_lp
340
        ");
341
342
        $this->addSql("
343
            ALTER TABLE c_lp_rel_user
344
            DROP IF EXISTS group_id,
345
            DROP IF EXISTS start_date,
346
            DROP IF EXISTS end_date,
347
            DROP IF EXISTS is_open_without_date
348
        ");
349
350
        $this->addSql("
351
            ALTER TABLE c_quiz
352
            DROP IF EXISTS display_chart_degree_certainty,
353
            DROP IF EXISTS send_email_chart_degree_certainty,
354
            DROP IF EXISTS not_display_balance_percentage_categorie_question,
355
            DROP IF EXISTS display_chart_degree_certainty_category,
356
            DROP IF EXISTS gather_questions_categories
357
        ");
358
    }
359
}
360