Passed
Push — master ( 241889...c18706 )
by Angel Fernando Quiroz
07:34
created

Version20201212114908::up()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 205
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 13
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 205
rs 9.8333

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
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
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 Version20201212114908 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
        $this->addSql("
42
            CREATE TABLE IF NOT EXISTS c_lp_user_access (
43
                id INT AUTO_INCREMENT NOT NULL,
44
                user_id INT DEFAULT NULL,
45
                lp_id INT DEFAULT NULL,
46
                start_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
47
                end_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
48
                is_open_without_date TINYINT(1) DEFAULT 0,
49
                PRIMARY KEY(id),
50
                INDEX IDX_7CAC73F7A76ED395 (user_id),
51
                INDEX IDX_7CAC73F768DFD1EF (lp_id),
52
                CONSTRAINT FK_7CAC73F7A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL,
53
                CONSTRAINT FK_7CAC73F768DFD1EF FOREIGN KEY (lp_id) REFERENCES c_lp (iid) ON DELETE SET NULL
54
            )
55
        ");
56
        $this->addSql("
57
            CREATE TABLE IF NOT EXISTS c_group_rel_usergroup (
58
                id INT AUTO_INCREMENT NOT NULL,
59
                group_id INT NOT NULL,
60
                usergroup_id INT NOT NULL,
61
                session_id INT DEFAULT NULL,
62
                c_id INT DEFAULT NULL,
63
                ready_autogroup TINYINT(1) NOT NULL,
64
                PRIMARY KEY(id),
65
                INDEX IDX_AEE272A8FE54D947 (group_id),
66
                INDEX IDX_AEE272A8D2112630 (usergroup_id),
67
                INDEX IDX_AEE272A8613FECDF (session_id),
68
                INDEX IDX_AEE272A891D79BD3 (c_id),
69
                CONSTRAINT FK_AEE272A8FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE,
70
                CONSTRAINT FK_AEE272A8D2112630 FOREIGN KEY (usergroup_id) REFERENCES usergroup (id) ON DELETE CASCADE,
71
                CONSTRAINT FK_AEE272A8613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE,
72
                CONSTRAINT FK_AEE272A891D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE
73
            )
74
        ");
75
        $this->addSql("
76
            CREATE TABLE IF NOT EXISTS c_group_category_rel_user (
77
                id INT NOT NULL,
78
                group_category_id INT NOT NULL,
79
                population_type SMALLINT NOT NULL,
80
                population_id INT NOT NULL,
81
                status_in_category SMALLINT NOT NULL,
82
                PRIMARY KEY(id, group_category_id),
83
                INDEX IDX_4D66D81337FE8223 (group_category_id),
84
                CONSTRAINT FK_4D66D81337FE8223 FOREIGN KEY (group_category_id) REFERENCES c_group_category (iid) ON DELETE CASCADE
85
            )
86
        ");
87
        $this->addSql("
88
            CREATE TABLE IF NOT EXISTS c_peer_assessment (
89
                id INT AUTO_INCREMENT NOT NULL,
90
                c_id INT DEFAULT NULL,
91
                group_category_id INT DEFAULT NULL,
92
                max_correction_per_student INT DEFAULT 0,
93
                state INT DEFAULT 0,
94
                start_work_repository_option INT DEFAULT 0,
95
                end_work_repository_option INT DEFAULT NULL,
96
                start_correction_option INT DEFAULT 0,
97
                end_correction_option INT DEFAULT 0,
98
                distribute_correction_option INT DEFAULT 0 NOT NULL,
99
                end_repository_option INT DEFAULT NULL,
100
                examiner_role_condition TINYINT(1) DEFAULT 0,
101
                student_access_to_correction TINYINT(1) DEFAULT 0,
102
                comment_constraint TINYINT(1) DEFAULT 0,
103
                correct_own_work TINYINT(1) DEFAULT 0,
104
                correct_benchmark_work TINYINT(1) DEFAULT 0,
105
                distribution_algorithm TINYINT(1) DEFAULT 0,
106
                send_work_start_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
107
                send_work_end_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
108
                start_correction_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
109
                end_correction_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
110
                created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)',
111
                updated_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)',
112
                PRIMARY KEY(id),
113
                INDEX IDX_8532634391D79BD3 (c_id),
114
                INDEX IDX_8532634337FE8223 (group_category_id),
115
                CONSTRAINT FK_8532634391D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE,
116
                CONSTRAINT FK_8532634337FE8223 FOREIGN KEY (group_category_id) REFERENCES c_group_category (iid) ON DELETE CASCADE
117
            )
118
        ");
119
        $this->addSql("
120
            CREATE TABLE IF NOT EXISTS c_peer_assessment_log (
121
                id INT AUTO_INCREMENT NOT NULL,
122
                peer_assessment_id INT DEFAULT NULL,
123
                user_id INT DEFAULT NULL,
124
                date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
125
                description VARCHAR(255) DEFAULT NULL,
126
                PRIMARY KEY(id),
127
                INDEX IDX_71C6D04B672C3733 (peer_assessment_id),
128
                INDEX IDX_71C6D04BA76ED395 (user_id),
129
                CONSTRAINT FK_71C6D04B672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE,
130
                CONSTRAINT FK_71C6D04BA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL
131
            )
132
        ");
133
        $this->addSql("
134
            CREATE TABLE IF NOT EXISTS c_peer_assessment_rel_student_publication (
135
                id INT AUTO_INCREMENT NOT NULL,
136
                peer_assessment_id INT DEFAULT NULL,
137
                student_publication_id INT DEFAULT NULL,
138
                group_id INT DEFAULT NULL,
139
                student_publication_folder_id INT DEFAULT NULL,
140
                PRIMARY KEY(id),
141
                INDEX IDX_1B078BC7672C3733 (peer_assessment_id),
142
                INDEX IDX_1B078BC72F50351C (student_publication_id),
143
                INDEX IDX_1B078BC7FE54D947 (group_id),
144
                CONSTRAINT FK_1B078BC7672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE,
145
                CONSTRAINT FK_1B078BC72F50351C FOREIGN KEY (student_publication_id) REFERENCES c_student_publication (iid) ON DELETE CASCADE,
146
                CONSTRAINT FK_1B078BC7FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE
147
            )
148
        ");
149
        $this->addSql("
150
            CREATE TABLE IF NOT EXISTS c_autogroup_user_invitation (
151
                id INT AUTO_INCREMENT NOT NULL,
152
                group_category_id INT NOT NULL,
153
                group_id INT NOT NULL,
154
                user_id INT NOT NULL,
155
                confirm TINYINT(1) DEFAULT NULL,
156
                PRIMARY KEY(id),
157
                INDEX IDX_84AB498037FE8223 (group_category_id),
158
                INDEX IDX_84AB4980FE54D947 (group_id),
159
                INDEX IDX_84AB4980A76ED395 (user_id),
160
                CONSTRAINT FK_84AB498037FE8223 FOREIGN KEY (group_category_id) REFERENCES c_group_category (iid) ON DELETE CASCADE,
161
                CONSTRAINT FK_84AB4980FE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid) ON DELETE CASCADE,
162
                CONSTRAINT FK_84AB4980A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE
163
            )
164
        ");
165
        $this->addSql("
166
            CREATE TABLE IF NOT EXISTS c_peer_assessment_correction (
167
                id INT AUTO_INCREMENT NOT NULL,
168
                peer_assessment_id INT DEFAULT NULL,
169
                student_group_id INT DEFAULT NULL,
170
                examiner_id INT DEFAULT NULL,
171
                examiner_group_id INT DEFAULT NULL,
172
                total_score INT DEFAULT NULL,
173
                maximum_score INT DEFAULT NULL,
174
                delivered TINYINT(1) DEFAULT NULL,
175
                examiner_folder_id INT DEFAULT NULL,
176
                examiner_document_id INT DEFAULT NULL,
177
                completed TINYINT(1) DEFAULT NULL,
178
                PRIMARY KEY(id),
179
                INDEX IDX_AFB0F2B7672C3733 (peer_assessment_id),
180
                INDEX IDX_AFB0F2B74DDF95DC (student_group_id),
181
                CONSTRAINT FK_AFB0F2B7672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE,
182
                CONSTRAINT FK_AFB0F2B74DDF95DC FOREIGN KEY (student_group_id) REFERENCES usergroup (id) ON DELETE CASCADE
183
            )
184
        ");
185
        $this->addSql("
186
            CREATE TABLE IF NOT EXISTS c_peer_assessment_criteria (
187
                id INT AUTO_INCREMENT NOT NULL,
188
                peer_assessment_id INT DEFAULT NULL,
189
                title VARCHAR(255) DEFAULT NULL,
190
                description LONGTEXT DEFAULT NULL,
191
                score INT DEFAULT NULL,
192
                position INT DEFAULT NULL,
193
                PRIMARY KEY(id),
194
                INDEX IDX_5025776B672C3733 (peer_assessment_id),
195
                CONSTRAINT FK_5025776B672C3733 FOREIGN KEY (peer_assessment_id) REFERENCES c_peer_assessment (id) ON DELETE CASCADE
196
            )
197
        ");
198
        $this->addSql("
199
            CREATE TABLE IF NOT EXISTS c_peer_assessment_correction_criteria (
200
                id INT AUTO_INCREMENT NOT NULL,
201
                peer_assessment_correction_id INT DEFAULT NULL,
202
                peer_assessment_criteria_id INT DEFAULT NULL,
203
                comment LONGTEXT DEFAULT NULL,
204
                score INT DEFAULT NULL,
205
                PRIMARY KEY(id),
206
                INDEX IDX_C1AB8C19D723148D (peer_assessment_correction_id),
207
                INDEX IDX_C1AB8C1962488999 (peer_assessment_criteria_id),
208
                CONSTRAINT FK_C1AB8C19D723148D FOREIGN KEY (peer_assessment_correction_id) REFERENCES c_peer_assessment_correction (id) ON DELETE CASCADE,
209
                CONSTRAINT FK_C1AB8C1962488999 FOREIGN KEY (peer_assessment_criteria_id) REFERENCES c_peer_assessment_criteria (id) ON DELETE CASCADE
210
            )
211
        ");
212
        $this->addSql("
213
            ALTER TABLE c_group_category
214
            ADD IF NOT EXISTS min_student INT DEFAULT NULL,
215
            ADD IF NOT EXISTS begin_inscription_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
216
            ADD IF NOT EXISTS end_inscription_date DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime)',
217
            ADD IF NOT EXISTS only_me TINYINT(1) DEFAULT 0 NOT NULL,
218
            ADD COLUMN peer_assessment INT (11) DEFAULT '0',
219
            ADD COLUMN allow_coach_change_options_groups TINYINT(1) DEFAULT 0 NOT NULL AFTER peer_assessment,
220
            ADD COLUMN allow_change_group_name INT(11) DEFAULT 1 NULL AFTER allow_coach_change_options_groups,
221
            ADD COLUMN allow_autogroup TINYINT(1) DEFAULT 0 NOT NULL AFTER allow_change_group_name
222
        ");
223
        $this->addSql("
224
            ALTER TABLE c_group_rel_user
225
            ADD COLUMN ready_autogroup TINYINT(1) NOT NULL AFTER role
226
        ");
227
    }
228
229
    public function down(Schema $schema): void
230
    {
231
        $this->addSql("DROP TABLE IF EXISTS c_peer_autogroup_rel_student_publication");
232
        $this->addSql("DROP TABLE IF EXISTS c_lp_user_access");
233
        $this->addSql("DROP TABLE IF EXISTS c_group_rel_usergroup");
234
        $this->addSql("DROP TABLE IF EXISTS c_group_category_rel_user");
235
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment");
236
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_log");
237
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_rel_student_publication");
238
        $this->addSql("DROP TABLE IF EXISTS c_autogroup_user_invitation");
239
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_correction");
240
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_criteria");
241
        $this->addSql("DROP TABLE IF EXISTS c_peer_assessment_correction_criteria");
242
        $this->addSql("
243
            ALTER TABLE c_group_category
244
            DROP COLUMN min_student,
245
            DROP COLUMN begin_inscription_date,
246
            DROP COLUMN end_inscription_date,
247
            DROP COLUMN only_me,
248
            DROP COLUMN peer_assessment,
249
            DROP COLUMN allow_coach_change_options_groups,
250
            DROP COLUMN allow_change_group_name,
251
            DROP COLUMN allow_autogroup
252
        ");
253
        $this->addSql("
254
            ALTER TABLE c_group_rel_user
255
            DROP COLUMN ready_autogroup
256
        ");
257
    }
258
}