Passed
Push — master ( 3b9d17...c5f69b )
by Julito
17:12
created

Version20170904145500::up()   F

Complexity

Conditions 43
Paths 0

Size

Total Lines 269
Code Lines 139

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 43
eloc 139
nc 0
nop 1
dl 0
loc 269
rs 3.3333
c 0
b 0
f 0

How to fix   Long Method    Complexity   

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
/**
13
 * Quiz changes.
14
 */
15
class Version20170904145500 extends AbstractMigrationChamilo
16
{
17
    public function up(Schema $schema): void
18
    {
19
        if (false === $schema->hasTable('c_exercise_category')) {
20
            $this->addSql(
21
                'CREATE TABLE c_exercise_category (id BIGINT AUTO_INCREMENT NOT NULL, c_id INT NOT NULL, name VARCHAR(255) NOT NULL, description LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, position INT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'
22
            );
23
            $this->addSql('ALTER TABLE c_exercise_category ADD resource_node_id INT DEFAULT NULL');
24
            $this->addSql(
25
                'ALTER TABLE c_exercise_category ADD CONSTRAINT FK_B94C157E91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE'
26
            );
27
            $this->addSql(
28
                'ALTER TABLE c_exercise_category ADD CONSTRAINT FK_B94C157E1BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE'
29
            );
30
            $this->addSql('CREATE INDEX IDX_B94C157E91D79BD3 ON c_exercise_category (c_id)');
31
            $this->addSql('CREATE UNIQUE INDEX UNIQ_B94C157E1BAD783F ON c_exercise_category (resource_node_id)');
32
        }
33
34
        // c_quiz.
35
        $table = $schema->getTable('c_quiz');
36
        if ($table->hasColumn('exercise_category_id')) {
37
            $this->addSql('ALTER TABLE c_quiz CHANGE exercise_category_id exercise_category_id BIGINT DEFAULT NULL;');
38
            if (false === $table->hasForeignKey('FK_B7A1C35FB48D66')) {
39
                $this->addSql(
40
                    'ALTER TABLE c_quiz ADD CONSTRAINT FK_B7A1C35FB48D66 FOREIGN KEY (exercise_category_id) REFERENCES c_exercise_category (id) ON DELETE SET NULL'
41
                );
42
            }
43
        } else {
44
            $this->addSql('ALTER TABLE c_quiz ADD COLUMN exercise_category_id BIGINT DEFAULT NULL;');
45
            $this->addSql(
46
                'ALTER TABLE c_quiz ADD CONSTRAINT FK_B7A1C35FB48D66 FOREIGN KEY (exercise_category_id) REFERENCES c_exercise_category (id) ON DELETE SET NULL'
47
            );
48
        }
49
50
        if (!$table->hasColumn('autolaunch')) {
51
            $this->addSql('ALTER TABLE c_quiz ADD autolaunch TINYINT(1) DEFAULT 0');
52
        }
53
        if (false === $table->hasIndex('IDX_B7A1C35FB48D66')) {
54
            $this->addSql('CREATE INDEX IDX_B7A1C35FB48D66 ON c_quiz (exercise_category_id);');
55
        }
56
57
        if ($table->hasIndex('course')) {
58
            $this->addSql('DROP INDEX course ON c_quiz');
59
        }
60
61
        if ($table->hasIndex('session')) {
62
            $this->addSql('DROP INDEX session ON c_quiz');
63
        }
64
65
        if (false === $table->hasColumn('show_previous_button')) {
66
            $this->addSql(
67
                'ALTER TABLE c_quiz ADD COLUMN show_previous_button TINYINT(1) DEFAULT 1 NOT NULL'
68
            );
69
        } else {
70
            $this->addSql('UPDATE c_quiz SET show_previous_button = 1 WHERE show_previous_button IS NULL');
71
            $this->addSql('ALTER TABLE c_quiz CHANGE show_previous_button show_previous_button TINYINT(1) DEFAULT 1 NOT NULL');
72
        }
73
74
        if (false === $table->hasColumn('notifications')) {
75
            $this->addSql(
76
                'ALTER TABLE c_quiz ADD COLUMN notifications VARCHAR(255) NULL DEFAULT NULL;'
77
            );
78
        }
79
80
        if (false === $table->hasColumn('page_result_configuration')) {
81
            $this->addSql(
82
                "ALTER TABLE c_quiz ADD page_result_configuration LONGTEXT DEFAULT NULL COMMENT '(DC2Type:array)'"
83
            );
84
        }
85
86
        $this->addSql('ALTER TABLE c_quiz MODIFY COLUMN save_correct_answers INT NULL DEFAULT NULL');
87
        if ($table->hasForeignKey('FK_B7A1C35FB48D66')) {
88
            $this->addSql('ALTER TABLE c_quiz DROP FOREIGN KEY FK_B7A1C35FB48D66');
89
        }
90
91
        $this->addSql('ALTER TABLE c_quiz CHANGE type type INT NOT NULL');
92
93
        if (false === $table->hasColumn('resource_node_id')) {
94
            $this->addSql('ALTER TABLE c_quiz ADD COLUMN resource_node_id INT DEFAULT NULL');
95
            $this->addSql(
96
                'ALTER TABLE c_quiz ADD CONSTRAINT FK_B7A1C31BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE'
97
            );
98
            $this->addSql('CREATE UNIQUE INDEX UNIQ_B7A1C31BAD783F ON c_quiz (resource_node_id)');
99
        }
100
101
        if (false === $table->hasColumn('prevent_backwards')) {
102
            $this->addSql(
103
                'ALTER TABLE c_quiz ADD prevent_backwards INT DEFAULT 0 NOT NULL'
104
            );
105
        }
106
        $this->addSql('ALTER TABLE c_quiz CHANGE type type INT NOT NULL');
107
108
        if ($table->hasForeignKey('FK_B7A1C35FB48D66')) {
109
            $this->addSql(
110
                'ALTER TABLE c_quiz ADD CONSTRAINT FK_B7A1C35FB48D66 FOREIGN KEY (exercise_category_id) REFERENCES c_exercise_category (id) ON DELETE SET NULL'
111
            );
112
        }
113
114
        // answer
115
        $table = $schema->getTable('c_quiz_answer');
116
        if ($table->hasColumn('id_auto')) {
117
            $this->addSql('ALTER TABLE c_quiz_answer DROP id_auto');
118
        }
119
        if ($table->hasColumn('id')) {
120
            $this->addSql('ALTER TABLE c_quiz_answer DROP id');
121
        }
122
123
        $this->addSql('ALTER TABLE c_quiz_answer CHANGE question_id question_id INT DEFAULT NULL');
124
        if (false === $table->hasForeignKey('FK_AEBC3EFF1E27F6BF')) {
125
            $this->addSql('ALTER TABLE c_quiz_answer ADD CONSTRAINT FK_AEBC3EFF1E27F6BF FOREIGN KEY (question_id) REFERENCES c_quiz_question (iid) ON DELETE CASCADE');
126
        }
127
128
        // c_quiz_question.
129
        $table = $schema->getTable('c_quiz_question');
130
        if (false === $table->hasColumn('resource_node_id')) {
131
            $this->addSql('ALTER TABLE c_quiz_question ADD resource_node_id INT DEFAULT NULL;');
132
            $this->addSql(
133
                'ALTER TABLE c_quiz_question ADD CONSTRAINT FK_9A48A59F1BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;'
134
            );
135
            $this->addSql('CREATE UNIQUE INDEX UNIQ_9A48A59F1BAD783F ON c_quiz_question (resource_node_id);');
136
        }
137
138
        if (false === $table->hasColumn('mandatory')) {
139
            $this->addSql('ALTER TABLE c_quiz_question ADD mandatory INT NOT NULL');
140
        }
141
142
        if ($table->hasColumn('id')) {
143
            $this->addSql('ALTER TABLE c_quiz_question DROP id');
144
        }
145
146
        if (false === $table->hasColumn('feedback')) {
147
            $this->addSql('ALTER TABLE c_quiz_question ADD feedback LONGTEXT DEFAULT NULL;');
148
        }
149
150
        if ($table->hasIndex('course')) {
151
            $this->addSql('DROP INDEX course ON c_quiz_question');
152
        }
153
154
        // c_quiz_question_category.
155
        $table = $schema->getTable('c_quiz_question_category');
156
        if (false === $table->hasColumn('session_id')) {
157
            /*$this->addSql('ALTER TABLE c_quiz_question_category ADD session_id INT DEFAULT NULL');
158
            if (false === $table->hasIndex('IDX_1414369D613FECDF')) {
159
                $this->addSql('CREATE INDEX IDX_1414369D613FECDF ON c_quiz_question_category (session_id)');
160
            }
161
            if (false === $table->hasForeignKey('FK_1414369D613FECDF')) {
162
                $this->addSql(
163
                    'ALTER TABLE c_quiz_question_category ADD CONSTRAINT FK_1414369D613FECDF FOREIGN KEY (session_id) REFERENCES session (id)'
164
                );
165
            }*/
166
        }
167
        $this->addSql('ALTER TABLE c_quiz_question_category CHANGE description description LONGTEXT DEFAULT NULL;');
168
169
        if ($table->hasIndex('IDX_1414369D613FECDF')) {
170
            $this->addSql('DROP INDEX IDX_1414369D613FECDF ON c_quiz_question_category');
171
        }
172
        if ($table->hasIndex('course')) {
173
            $this->addSql('DROP INDEX course ON c_quiz_question_category');
174
        }
175
176
        /*if (false === $table->hasForeignKey('FK_1414369D91D79BD3')) {
177
            $this->addSql(
178
                'ALTER TABLE c_quiz_question_category ADD CONSTRAINT FK_1414369D91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE;'
179
            );
180
        }*/
181
182
        $table = $schema->getTable('c_quiz_question_option');
183
        if ($table->hasColumn('id')) {
184
            $this->addSql('ALTER TABLE c_quiz_question_option DROP id');
185
        }
186
187
        if (!$table->hasForeignKey('FK_499A73F31E27F6BF')) {
188
            $this->addSql('ALTER TABLE c_quiz_question_option ADD CONSTRAINT FK_499A73F31E27F6BF FOREIGN KEY (question_id) REFERENCES c_quiz_question (iid) ON DELETE CASCADE');
189
            $this->addSql('CREATE INDEX IDX_499A73F31E27F6BF ON c_quiz_question_option (question_id);');
190
        }
191
192
        $table = $schema->getTable('c_quiz_rel_question');
193
194
        $this->addSql('UPDATE c_quiz_rel_category SET count_questions = 0 WHERE count_questions IS NULL');
195
        $this->addSql('ALTER TABLE c_quiz_rel_category CHANGE count_questions count_questions INT NOT NULL');
196
197
        $this->addSql('ALTER TABLE c_quiz_rel_category CHANGE exercise_id exercise_id INT DEFAULT NULL');
198
199
        if (!$table->hasForeignKey('FK_F8EC662312469DE2')) {
200
            $this->addSql('ALTER TABLE c_quiz_rel_category ADD CONSTRAINT FK_F8EC662312469DE2 FOREIGN KEY (category_id) REFERENCES c_quiz_question_category (iid) ON DELETE CASCADE;');
201
        }
202
203
        if (!$table->hasIndex('IDX_F8EC662312469DE2')) {
204
            $this->addSql('CREATE INDEX IDX_F8EC662312469DE2 ON c_quiz_rel_category (category_id)');
205
        }
206
207
        if (!$table->hasIndex('IDX_F8EC6623E934951A')) {
208
            $this->addSql('CREATE INDEX IDX_F8EC6623E934951A ON c_quiz_rel_category (exercise_id)');
209
        }
210
211
        if (!$table->hasForeignKey('FK_F8EC6623E934951A')) {
212
            $this->addSql('ALTER TABLE c_quiz_rel_category ADD CONSTRAINT FK_F8EC6623E934951A FOREIGN KEY (exercise_id) REFERENCES c_quiz (iid) ON DELETE CASCADE');
213
        }
214
215
        if ($table->hasIndex('exercise')) {
216
            $this->addSql('ALTER TABLE c_quiz_rel_question DROP KEY exercise');
217
        }
218
219
        if ($table->hasIndex('course')) {
220
            $this->addSql('DROP INDEX course ON c_quiz_rel_question');
221
        }
222
223
        $this->addSql('ALTER TABLE c_quiz_rel_question CHANGE question_id question_id INT DEFAULT NULL');
224
225
        if ($table->hasColumn('question_id')) {
226
            $this->addSql(' ALTER TABLE c_quiz_rel_question CHANGE exercice_id quiz_id INT DEFAULT NULL;');
227
            $this->addSql(
228
                'ALTER TABLE c_quiz_rel_question ADD CONSTRAINT FK_485736AC853CD175 FOREIGN KEY (quiz_id) REFERENCES c_quiz (iid) ON DELETE CASCADE;'
229
            );
230
            $this->addSql('CREATE INDEX exercise ON c_quiz_rel_question (quiz_id);');
231
        }
232
233
        if (false === $table->hasForeignKey('FK_485736AC1E27F6BF')) {
234
            $this->addSql(
235
                'ALTER TABLE c_quiz_rel_question ADD CONSTRAINT FK_485736AC1E27F6BF FOREIGN KEY (question_id) REFERENCES c_quiz_question (iid) ON DELETE CASCADE;'
236
            );
237
        }
238
239
        /*if (false === $table->hasForeignKey('FK_485736AC89D40298')) {
240
            $this->addSql(
241
                'ALTER TABLE c_quiz_rel_question ADD CONSTRAINT FK_485736AC89D40298 FOREIGN KEY (quiz_id) REFERENCES c_quiz (iid)'
242
            );
243
        }*/
244
245
        $table = $schema->getTable('c_quiz_question_category');
246
        if (false === $table->hasColumn('resource_node_id')) {
247
            $this->addSql('ALTER TABLE c_quiz_question_category ADD resource_node_id INT DEFAULT NULL');
248
            $this->addSql(
249
                'ALTER TABLE c_quiz_question_category ADD CONSTRAINT FK_1414369D1BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE'
250
            );
251
            $this->addSql('CREATE UNIQUE INDEX UNIQ_1414369D1BAD783F ON c_quiz_question_category (resource_node_id)');
252
        }
253
254
        $table = $schema->getTable('c_quiz_question_rel_category');
255
        $this->addSql('ALTER TABLE c_quiz_question_rel_category MODIFY iid INT NOT NULL');
256
        if ($table->hasIndex('course')) {
257
            $this->addSql('DROP INDEX course ON c_quiz_question_rel_category');
258
        }
259
260
        if ($table->hasPrimaryKey()) {
261
            $this->addSql('ALTER TABLE c_quiz_question_rel_category DROP PRIMARY KEY');
262
            $this->addSql('ALTER TABLE c_quiz_question_rel_category ADD PRIMARY KEY (category_id, question_id)');
263
        }
264
        if (false === $table->hasForeignKey('FK_A468585C12469DE2')) {
265
            $this->addSql(
266
                'ALTER TABLE c_quiz_question_rel_category ADD CONSTRAINT FK_A468585C12469DE2 FOREIGN KEY (category_id) REFERENCES c_quiz_question (iid)'
267
            );
268
        }
269
270
        if (false === $table->hasForeignKey('FK_A468585C1E27F6BF')) {
271
            $this->addSql(
272
                'ALTER TABLE c_quiz_question_rel_category ADD CONSTRAINT FK_A468585C1E27F6BF FOREIGN KEY (question_id) REFERENCES c_quiz_question_category (iid)'
273
            );
274
        }
275
276
        if (false === $table->hasIndex('IDX_A468585C12469DE2')) {
277
            $this->addSql('CREATE INDEX IDX_A468585C12469DE2 ON c_quiz_question_rel_category (category_id)');
278
        }
279
280
        //$this->addSql('ALTER TABLE c_quiz_question_rel_category ADD PRIMARY KEY (category_id, question_id)');
281
        /*if ($table->hasIndex('idx_qqrc_qid')) {
282
            $this->addSql('DROP INDEX idx_qqrc_qid ON c_quiz_question_rel_category');
283
        }*/
284
        if (false === $table->hasIndex('IDX_A468585C1E27F6BF')) {
285
            $this->addSql('CREATE INDEX IDX_A468585C1E27F6BF ON c_quiz_question_rel_category (question_id)');
286
        }
287
    }
288
289
    public function down(Schema $schema): void
290
    {
291
    }
292
}
293