Passed
Push — master ( b95980...a81919 )
by Julito
08:46
created

Version20181025064351::down()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 0
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
nc 1
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
class Version20181025064351 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Migrate gradebook_category';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $table = $schema->getTable('gradebook_result_log');
22
        if ($table->hasColumn('id_result')) {
23
            $this->addSql('DELETE FROM gradebook_result_log WHERE id_result IS NULL');
24
            $this->addSql('ALTER TABLE gradebook_result_log CHANGE id_result result_id INT DEFAULT NULL');
25
        }
26
27
        $this->addSql('UPDATE gradebook_result_log SET evaluation_id = NULL WHERE evaluation_id = 0');
28
        $this->addSql('ALTER TABLE gradebook_result_log CHANGE evaluation_id evaluation_id INT DEFAULT NULL');
29
30
        $this->addSql('UPDATE gradebook_result_log SET user_id = NULL WHERE user_id = 0');
31
        $this->addSql('ALTER TABLE gradebook_result_log CHANGE user_id user_id INT DEFAULT NULL');
32
33
        if (false === $table->hasForeignKey('FK_C5C4CABB7A7B643')) {
34
            $this->addSql(
35
                'ALTER TABLE gradebook_result_log ADD CONSTRAINT FK_C5C4CABB7A7B643 FOREIGN KEY (result_id) REFERENCES gradebook_result (id) ON DELETE CASCADE;'
36
            );
37
            $this->addSql('CREATE INDEX IDX_C5C4CABB7A7B643 ON gradebook_result_log (result_id)');
38
        }
39
40
        if (false === $table->hasForeignKey('FK_C5C4CABB456C5646')) {
41
            $this->addSql(
42
                'ALTER TABLE gradebook_result_log ADD CONSTRAINT FK_C5C4CABB456C5646 FOREIGN KEY (evaluation_id) REFERENCES gradebook_evaluation (id) ON DELETE CASCADE;'
43
            );
44
            $this->addSql('CREATE INDEX IDX_C5C4CABB456C5646 ON gradebook_result_log (evaluation_id);');
45
        }
46
47
        if (false === $table->hasForeignKey('FK_C5C4CABBA76ED395')) {
48
            $this->addSql(
49
                'ALTER TABLE gradebook_result_log ADD CONSTRAINT FK_C5C4CABBA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
50
            );
51
        }
52
53
        if (false === $table->hasIndex('IDX_C5C4CABBA76ED395')) {
54
            $this->addSql('CREATE INDEX IDX_C5C4CABBA76ED395 ON gradebook_result_log (user_id)');
55
        }
56
57
        $table = $schema->getTable('gradebook_category');
58
59
        $this->addSql('ALTER TABLE gradebook_category CHANGE user_id user_id INT DEFAULT NULL');
60
        $this->addSql(
61
            'DELETE FROM gradebook_category WHERE user_id IS NOT NULL AND user_id NOT IN (SELECT id FROM user)'
62
        );
63
64
        if ($table->hasIndex('idx_gb_cat_parent')) {
65
            $this->addSql(' DROP INDEX idx_gb_cat_parent ON gradebook_category;');
66
        }
67
68
        $this->addSql('UPDATE gradebook_category SET session_id = NULL WHERE session_id = 0');
69
        $this->addSql('UPDATE gradebook_category SET parent_id = NULL WHERE parent_id = 0');
70
71
        if (false === $table->hasForeignKey('FK_96A4C705727ACA70')) {
72
            $this->addSql('ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C705727ACA70 FOREIGN KEY (parent_id) REFERENCES gradebook_category (id);');
73
        }
74
75
        if (false === $table->hasForeignKey('FK_96A4C705613FECDF')) {
76
            $this->addSql('ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C705613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE;');
77
        }
78
79
        if (false === $table->hasIndex('IDX_96A4C705613FECDF')) {
80
            $this->addSql('CREATE INDEX IDX_96A4C705613FECDF ON gradebook_category (session_id)');
81
        }
82
83
        if (false === $table->hasIndex('IDX_96A4C705727ACA70')) {
84
            $this->addSql('CREATE INDEX IDX_96A4C705727ACA70 ON gradebook_category (parent_id);');
85
        }
86
87
        if (false === $table->hasColumn('c_id')) {
88
            $this->addSql('ALTER TABLE gradebook_category ADD c_id INT DEFAULT NULL');
89
            $this->addSql('UPDATE gradebook_category SET c_id = (SELECT id FROM course WHERE code = course_code)');
90
            $this->addSql('ALTER TABLE gradebook_category DROP course_code');
91
            $this->addSql(
92
                'ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C70591D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE'
93
            );
94
            $this->addSql('CREATE INDEX IDX_96A4C70591D79BD3 ON gradebook_category (c_id);');
95
        }
96
        if (false === $table->hasColumn('depends')) {
97
            $this->addSql('ALTER TABLE gradebook_category ADD depends LONGTEXT DEFAULT NULL');
98
        }
99
        if (false === $table->hasColumn('minimum_to_validate')) {
100
            $this->addSql('ALTER TABLE gradebook_category ADD minimum_to_validate INT DEFAULT NULL');
101
        }
102
        if (false === $table->hasColumn('gradebooks_to_validate_in_dependence')) {
103
            $this->addSql('ALTER TABLE gradebook_category ADD gradebooks_to_validate_in_dependence INT DEFAULT NULL');
104
        }
105
106
        if (false === $table->hasForeignKey('FK_96A4C705A76ED395')) {
107
            $this->addSql(
108
                'ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C705A76ED395 FOREIGN KEY (user_id) REFERENCES user (id)'
109
            );
110
        }
111
        if (false === $table->hasIndex('IDX_96A4C705A76ED395')) {
112
            $this->addSql('CREATE INDEX IDX_96A4C705A76ED395 ON gradebook_category (user_id)');
113
        }
114
115
        // Evaluation.
116
        $table = $schema->getTable('gradebook_evaluation');
117
        if (false === $table->hasColumn('c_id')) {
118
            $this->addSql('ALTER TABLE gradebook_evaluation ADD c_id INT DEFAULT NULL');
119
            $this->addSql('UPDATE gradebook_evaluation SET c_id = (SELECT id FROM course WHERE code = course_code)');
120
            $this->addSql('ALTER TABLE gradebook_evaluation DROP course_code');
121
            $this->addSql(
122
                'ALTER TABLE gradebook_evaluation ADD CONSTRAINT FK_DDDED80491D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
123
            );
124
            $this->addSql('CREATE INDEX IDX_DDDED80491D79BD3 ON gradebook_evaluation (c_id)');
125
            //$this->addSql('ALTER TABLE gradebook_evaluation RENAME INDEX fk_ddded80491d79bd3 TO IDX_DDDED80491D79BD3;');
126
        }
127
        if (false === $table->hasIndex('idx_ge_cat')) {
128
            $this->addSql('CREATE INDEX idx_ge_cat ON gradebook_evaluation (category_id)');
129
        }
130
131
        if (false === $table->hasForeignKey('FK_DDDED80412469DE2')) {
132
            $this->addSql('ALTER TABLE gradebook_evaluation ADD CONSTRAINT FK_DDDED80412469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id) ON DELETE CASCADE');
133
        }
134
135
        if (false === $table->hasColumn('best_score')) {
136
            $this->addSql('ALTER TABLE gradebook_evaluation ADD best_score DOUBLE PRECISION DEFAULT NULL');
137
        }
138
        if (false === $table->hasColumn('average_score')) {
139
            $this->addSql('ALTER TABLE gradebook_evaluation ADD average_score DOUBLE PRECISION DEFAULT NULL');
140
        }
141
        if (false === $table->hasColumn('score_weight')) {
142
            $this->addSql('ALTER TABLE gradebook_evaluation ADD score_weight DOUBLE PRECISION DEFAULT NULL');
143
        }
144
        if (false === $table->hasColumn('user_score_list')) {
145
            $this->addSql(
146
                'ALTER TABLE gradebook_evaluation ADD user_score_list LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:array)\''
147
            );
148
        }
149
        $this->addSql('ALTER TABLE gradebook_evaluation CHANGE user_id user_id INT DEFAULT NULL');
150
151
        if (false === $table->hasForeignKey('FK_DDDED804A76ED395')) {
152
            $this->addSql(
153
                'ALTER TABLE gradebook_evaluation ADD CONSTRAINT FK_DDDED804A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
154
            );
155
        }
156
157
        if (false === $table->hasIndex('IDX_DDDED804A76ED395')) {
158
            $this->addSql('CREATE INDEX IDX_DDDED804A76ED395 ON gradebook_evaluation (user_id)');
159
        }
160
161
        $table = $schema->getTable('gradebook_link');
162
        if (false === $table->hasColumn('c_id')) {
163
            $this->addSql('ALTER TABLE gradebook_link ADD c_id INT DEFAULT NULL');
164
            $this->addSql('UPDATE gradebook_link SET c_id = (SELECT id FROM course WHERE code = course_code)');
165
            $this->addSql('ALTER TABLE gradebook_link DROP course_code');
166
            $this->addSql(
167
                'ALTER TABLE gradebook_link ADD CONSTRAINT FK_4F0F595F91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
168
            );
169
            $this->addSql('CREATE INDEX IDX_4F0F595F91D79BD3 ON gradebook_link (c_id);');
170
        }
171
172
        if (false === $table->hasColumn('best_score')) {
173
            $this->addSql('ALTER TABLE gradebook_link ADD best_score DOUBLE PRECISION DEFAULT NULL');
174
        }
175
        if (false === $table->hasColumn('average_score')) {
176
            $this->addSql(
177
                'ALTER TABLE gradebook_link ADD average_score DOUBLE PRECISION DEFAULT NULL'
178
            );
179
        }
180
181
        if (false === $table->hasColumn('score_weight')) {
182
            $this->addSql('ALTER TABLE gradebook_link ADD score_weight DOUBLE PRECISION DEFAULT NULL');
183
        }
184
185
        if (false === $table->hasColumn('user_score_list')) {
186
            $this->addSql(
187
                'ALTER TABLE gradebook_link ADD user_score_list LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:array)\''
188
            );
189
        }
190
191
        if (false === $table->hasIndex('idx_gl_cat')) {
192
            $this->addSql('CREATE INDEX idx_gl_cat ON gradebook_link (category_id)');
193
        }
194
195
        $this->addSql('ALTER TABLE gradebook_link CHANGE user_id user_id INT DEFAULT NULL');
196
197
        if (false === $table->hasForeignKey('FK_4F0F595FA76ED395')) {
198
            $this->addSql(
199
                'ALTER TABLE gradebook_link ADD CONSTRAINT FK_4F0F595FA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
200
            );
201
        }
202
203
        if (false === $table->hasIndex('IDX_4F0F595FA76ED395')) {
204
            $this->addSql('CREATE INDEX IDX_4F0F595FA76ED395 ON gradebook_link (user_id)');
205
        }
206
207
        $this->addSql('ALTER TABLE gradebook_link CHANGE category_id category_id INT DEFAULT NULL;');
208
        $this->addSql('UPDATE gradebook_link SET category_id = NULL WHERE category_id = 0');
209
210
        if (false === $table->hasForeignKey('FK_4F0F595F12469DE2')) {
211
            $this->addSql('ALTER TABLE gradebook_link ADD CONSTRAINT FK_4F0F595F12469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id) ON DELETE CASCADE');
212
        }
213
214
        $table = $schema->getTable('gradebook_result');
215
216
        if (false === $table->hasIndex('idx_gb_uid_eid')) {
217
            $this->addSql('CREATE INDEX idx_gb_uid_eid ON gradebook_result (user_id, evaluation_id);');
218
        }
219
220
        if (false === $table->hasIndex('IDX_B88AEB67456C5646')) {
221
            $this->addSql('CREATE INDEX IDX_B88AEB67456C5646 ON gradebook_result (evaluation_id);');
222
        }
223
224
        $this->addSql('ALTER TABLE gradebook_result CHANGE evaluation_id evaluation_id INT DEFAULT NULL;');
225
        $this->addSql('UPDATE gradebook_result SET evaluation_id = NULL WHERE evaluation_id = 0');
226
227
        if (false === $table->hasForeignKey('FK_B88AEB67456C5646')) {
228
            $this->addSql('ALTER TABLE gradebook_result ADD CONSTRAINT FK_B88AEB67456C5646 FOREIGN KEY (evaluation_id) REFERENCES gradebook_evaluation (id) ON DELETE CASCADE');
229
        }
230
231
        $this->addSql('ALTER TABLE gradebook_result CHANGE user_id user_id INT DEFAULT NULL');
232
        $this->addSql('UPDATE gradebook_result SET user_id = NULL WHERE user_id = 0');
233
234
        if (false === $table->hasForeignKey('FK_B88AEB67A76ED395')) {
235
            $this->addSql(
236
                'ALTER TABLE gradebook_result ADD CONSTRAINT FK_B88AEB67A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
237
            );
238
        }
239
240
        if (false === $table->hasIndex('IDX_B88AEB67A76ED395')) {
241
            $this->addSql('CREATE INDEX IDX_B88AEB67A76ED395 ON gradebook_result (user_id)');
242
        }
243
244
        $table = $schema->getTable('gradebook_certificate');
245
        $this->addSql('ALTER TABLE gradebook_certificate CHANGE cat_id cat_id INT DEFAULT NULL;');
246
        $this->addSql('UPDATE gradebook_certificate SET cat_id = NULL WHERE cat_id = 0');
247
248
        if (false === $table->hasForeignKey('FK_650669DE6ADA943')) {
249
            if ($table->hasIndex('idx_gradebook_certificate_category_id')) {
250
                $this->addSql('DROP INDEX idx_gradebook_certificate_category_id ON gradebook_certificate;');
251
            }
252
253
            if ($table->hasIndex('idx_gradebook_certificate_category_id_user_id')) {
254
                $this->addSql('DROP INDEX idx_gradebook_certificate_category_id_user_id ON gradebook_certificate;');
255
            }
256
            $this->addSql('ALTER TABLE gradebook_certificate ADD CONSTRAINT FK_650669DE6ADA943 FOREIGN KEY (cat_id) REFERENCES gradebook_category (id) ON DELETE CASCADE;');
257
        }
258
259
        if (false === $table->hasColumn('downloaded_at')) {
260
            $this->addSql('ALTER TABLE gradebook_certificate ADD downloaded_at DATETIME DEFAULT NULL;');
261
            $this->addSql(
262
                'UPDATE gradebook_certificate gc SET downloaded_at = (
263
                        SELECT value from extra_field e
264
                        INNER JOIN extra_field_values v on v.field_id = e.id
265
                        WHERE variable = "downloaded_at" and extra_field_type = 11 and item_id = gc.id
266
                    )'
267
            );
268
        }
269
270
        $this->addSql('ALTER TABLE gradebook_certificate CHANGE user_id user_id INT DEFAULT NULL');
271
272
        if (false === $table->hasForeignKey('FK_650669DA76ED395')) {
273
            $this->addSql(
274
                'ALTER TABLE gradebook_certificate ADD CONSTRAINT FK_650669DA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
275
            );
276
        }
277
278
        if (false === $table->hasIndex('IDX_650669DE6ADA943')) {
279
            $this->addSql('CREATE INDEX IDX_650669DE6ADA943 ON gradebook_certificate (cat_id);');
280
        }
281
282
        if (false === $schema->hasTable('gradebook_result_attempt')) {
283
            $this->addSql(
284
                'CREATE TABLE gradebook_result_attempt (id INT AUTO_INCREMENT NOT NULL, comment LONGTEXT DEFAULT NULL, score DOUBLE PRECISION DEFAULT NULL, result_id INT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC;'
285
            );
286
287
            $this->addSql('ALTER TABLE gradebook_result_attempt ADD CONSTRAINT FK_28B1CC3F7A7B643 FOREIGN KEY (result_id) REFERENCES gradebook_result (id) ON DELETE CASCADE;');
288
            $this->addSql('CREATE INDEX IDX_28B1CC3F7A7B643 ON gradebook_result_attempt (result_id);');
289
        } else {
290
            $table = $schema->getTable('gradebook_result_attempt');
291
            $this->addSql('UPDATE gradebook_result_attempt SET result_id = NULL WHERE result_id = 0');
292
            $this->addSql('ALTER TABLE gradebook_result_attempt CHANGE result_id result_id INT DEFAULT NULL');
293
            if (!$table->hasForeignKey('FK_28B1CC3F7A7B643')) {
294
                $this->addSql('ALTER TABLE gradebook_result_attempt ADD CONSTRAINT FK_28B1CC3F7A7B643 FOREIGN KEY (result_id) REFERENCES gradebook_result (id) ON DELETE CASCADE;');
295
            }
296
297
            if (!$table->hasIndex('IDX_28B1CC3F7A7B643')) {
298
                $this->addSql('CREATE INDEX IDX_28B1CC3F7A7B643 ON gradebook_result_attempt (result_id);');
299
            }
300
        }
301
302
        if (false === $table->hasForeignKey('FK_1F554C7474C99BA2')) {
303
        }
304
305
        $table = $schema->getTable('gradebook_linkeval_log');
306
307
        $this->addSql('UPDATE gradebook_linkeval_log SET user_id_log = NULL WHERE user_id_log = 0');
308
        $this->addSql('ALTER TABLE gradebook_linkeval_log CHANGE user_id_log user_id_log INT DEFAULT NULL');
309
310
        if (false === $table->hasForeignKey('FK_1F554C7474C99BA2')) {
311
            $this->addSql(
312
                'ALTER TABLE gradebook_linkeval_log ADD CONSTRAINT FK_1F554C7474C99BA2 FOREIGN KEY (user_id_log) REFERENCES user (id) ON DELETE CASCADE'
313
            );
314
        }
315
316
        if (false === $table->hasIndex('IDX_1F554C7474C99BA2')) {
317
            $this->addSql('CREATE INDEX IDX_1F554C7474C99BA2 ON gradebook_linkeval_log (user_id_log)');
318
        }
319
320
        $table = $schema->getTable('gradebook_score_log');
321
322
        $this->addSql('ALTER TABLE gradebook_score_log CHANGE user_id user_id INT DEFAULT NULL');
323
        $this->addSql('ALTER TABLE gradebook_score_log CHANGE category_id category_id INT DEFAULT NULL;');
324
325
        if (false === $table->hasForeignKey('FK_640C6449A76ED395')) {
326
            $this->addSql(
327
                'ALTER TABLE gradebook_score_log ADD CONSTRAINT FK_640C6449A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
328
            );
329
        }
330
331
        if (false === $table->hasForeignKey('FK_640C644912469DE2')) {
332
            $this->addSql(
333
                'ALTER TABLE gradebook_score_log ADD CONSTRAINT FK_640C644912469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id) ON DELETE CASCADE;'
334
            );
335
        }
336
337
        if (false === $table->hasIndex('IDX_640C644912469DE2')) {
338
            $this->addSql('CREATE INDEX IDX_640C644912469DE2 ON gradebook_score_log (category_id);');
339
        }
340
341
        $table = $schema->hasTable('gradebook_comment');
342
        if (false === $table) {
343
            $this->addSql('CREATE TABLE gradebook_comment (id BIGINT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, gradebook_id INT DEFAULT NULL, comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_C3B70763A76ED395 (user_id), INDEX IDX_C3B70763AD3ED51C (gradebook_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;');
344
            $this->addSql('ALTER TABLE gradebook_comment ADD CONSTRAINT FK_C3B70763A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;');
345
            $this->addSql('ALTER TABLE gradebook_comment ADD CONSTRAINT FK_C3B70763AD3ED51C FOREIGN KEY (gradebook_id) REFERENCES gradebook_category (id) ON DELETE CASCADE;');
346
        }
347
348
        $table = $schema->getTable('gradebook_score_display');
349
        $this->addSql('ALTER TABLE gradebook_score_display CHANGE category_id category_id INT DEFAULT NULL;');
350
        $this->addSql('UPDATE gradebook_score_display SET  category_id = NULL WHERE category_id = 0');
351
352
        if (false === $table->hasForeignKey('FK_61F7DC8412469DE2')) {
353
            $this->addSql('ALTER TABLE gradebook_score_display ADD CONSTRAINT FK_61F7DC8412469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id) ON DELETE CASCADE;');
354
        }
355
    }
356
357
    public function down(Schema $schema): void
358
    {
359
    }
360
}
361