Passed
Push — master ( c83bf1...0c3c7b )
by Julito
09:39
created

Version20::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
nc 1
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
6
7
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
8
use Doctrine\DBAL\Schema\Schema;
9
use Doctrine\DBAL\Types\Types;
10
11
/**
12
 * Class Version20
13
 * Migrate file to updated to Chamilo 2.0.
14
 */
15
class Version20 extends AbstractMigrationChamilo
16
{
17
    public function up(Schema $schema): void
18
    {
19
        // Use $schema->createTable
20
        $this->addSql('set sql_mode=""');
21
22
        $table = $schema->getTable('access_url_rel_user');
23
        if (false === $table->hasColumn('id')) {
24
            $this->addSql('ALTER TABLE access_url_rel_user MODIFY COLUMN access_url_id INT NOT NULL');
25
            $this->addSql('ALTER TABLE access_url_rel_user MODIFY COLUMN user_id INT NOT NULL');
26
            $this->addSql('ALTER TABLE access_url_rel_user DROP PRIMARY KEY');
27
            $this->addSql(
28
                'ALTER TABLE access_url_rel_user ADD id INT AUTO_INCREMENT NOT NULL, CHANGE access_url_id access_url_id INT DEFAULT NULL, CHANGE user_id user_id INT DEFAULT NULL, ADD PRIMARY KEY (id);'
29
            );
30
        }
31
32
        $table = $schema->getTable('access_url_rel_session');
33
        if (false === $table->hasColumn('id')) {
34
            $this->addSql('ALTER TABLE access_url_rel_session DROP PRIMARY KEY');
35
            $this->addSql(
36
                'ALTER TABLE access_url_rel_session ADD id INT AUTO_INCREMENT NOT NULL, CHANGE access_url_id access_url_id INT DEFAULT NULL, CHANGE session_id session_id INT DEFAULT NULL, ADD PRIMARY KEY (id);'
37
            );
38
            $this->addSql(
39
                'ALTER TABLE access_url_rel_session ADD CONSTRAINT FK_6CBA5F5D613FECDF FOREIGN KEY (session_id) REFERENCES session (id);'
40
            );
41
            $this->addSql(
42
                'ALTER TABLE access_url_rel_session ADD CONSTRAINT FK_6CBA5F5D73444FD5 FOREIGN KEY (access_url_id) REFERENCES access_url (id);'
43
            );
44
            $this->addSql('CREATE INDEX IDX_6CBA5F5D613FECDF ON access_url_rel_session (session_id);');
45
            $this->addSql('CREATE INDEX IDX_6CBA5F5D73444FD5 ON access_url_rel_session (access_url_id);');
46
        }
47
48
        $table = $schema->getTable('fos_group');
49
        if (false === $table->hasColumn('name')) {
50
            $this->addSql(
51
                'ALTER TABLE fos_group ADD name VARCHAR(180) NOT NULL, ADD roles LONGTEXT NOT NULL COMMENT "(DC2Type:array)";'
52
            );
53
            $this->addSql('CREATE UNIQUE INDEX UNIQ_4B019DDB5E237E06 ON fos_group (name);');
54
        }
55
56
        $table = $schema->getTable('access_url');
57
        if (false === $table->hasColumn('limit_courses')) {
58
            $this->addSql(
59
                'ALTER TABLE access_url ADD limit_courses INT DEFAULT NULL, ADD limit_active_courses INT DEFAULT NULL, ADD limit_sessions INT DEFAULT NULL, ADD limit_users INT DEFAULT NULL, ADD limit_teachers INT DEFAULT NULL, ADD limit_disk_space INT DEFAULT NULL, ADD email VARCHAR(255) DEFAULT NULL;'
60
            );
61
        }
62
        $this->addSql('ALTER TABLE course_request CHANGE user_id user_id INT DEFAULT NULL;');
63
        $table = $schema->getTable('course_request');
64
        if (false === $table->hasForeignKey('FK_33548A73A76ED395')) {
65
            $this->addSql(
66
                'ALTER TABLE course_request ADD CONSTRAINT FK_33548A73A76ED395 FOREIGN KEY (user_id) REFERENCES user (id);'
67
            );
68
            $this->addSql('CREATE INDEX IDX_33548A73A76ED395 ON course_request (user_id);');
69
        }
70
71
        $table = $schema->getTable('search_engine_ref');
72
        if (false === $table->hasColumn('c_id')) {
73
            $this->addSql('ALTER TABLE search_engine_ref ADD c_id INT DEFAULT NULL');
74
            $this->addSql('UPDATE search_engine_ref SET c_id = (SELECT id FROM course WHERE code = course_code)');
75
            $this->addSql('ALTER TABLE search_engine_ref DROP course_code');
76
            $this->addSql(
77
                'ALTER TABLE search_engine_ref ADD CONSTRAINT FK_473F037891D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
78
            );
79
            $this->addSql('CREATE INDEX IDX_473F037891D79BD3 ON search_engine_ref (c_id);');
80
        }
81
82
        $this->addSql('ALTER TABLE hook_observer CHANGE class_name class_name VARCHAR(190) DEFAULT NULL');
83
        $this->addSql('ALTER TABLE hook_event CHANGE class_name class_name VARCHAR(190) DEFAULT NULL;');
84
85
        $table = $schema->getTable('c_tool');
86
        if (false === $table->hasForeignKey('FK_8456658091D79BD3')) {
87
            $this->addSql(
88
                'ALTER TABLE c_tool ADD CONSTRAINT FK_8456658091D79BD3 FOREIGN KEY (c_id) REFERENCES course (id)'
89
            );
90
        }
91
92
        $this->addSql('UPDATE c_tool SET name = "blog" WHERE name = "blog_management" ');
93
        $this->addSql('UPDATE c_tool SET name = "agenda" WHERE name = "calendar_event" ');
94
        $this->addSql('UPDATE c_tool SET name = "maintenance" WHERE name = "course_maintenance" ');
95
        $this->addSql('UPDATE c_tool SET name = "assignment" WHERE name = "student_publication" ');
96
        $this->addSql('UPDATE c_tool SET name = "settings" WHERE name = "course_setting" ');
97
98
        $this->addSql('UPDATE session_category SET date_start = NULL WHERE date_start = "0000-00-00"');
99
        $this->addSql('UPDATE session_category SET date_end = NULL WHERE date_end = "0000-00-00"');
100
101
        $table = $schema->getTable('personal_agenda');
102
        if ($table->hasColumn('course')) {
103
            $this->addSql('ALTER TABLE personal_agenda DROP course');
104
        }
105
106
        $this->addSql('UPDATE sys_announcement SET lang = (SELECT isocode FROM language WHERE english_name = lang);');
107
        //$this->addSql('ALTER TABLE c_tool_intro CHANGE id tool VARCHAR(255) NOT NULL');
108
109
        /*$table = $schema->getTable('course_rel_class');
110
        if (!$table->hasColumn('c_id')) {
111
            $this->addSql("ALTER TABLE course_rel_class ADD c_id int NOT NULL");
112
        }
113
        if ($table->hasColumn('course_code')) {
114
            $this->addSql("
115
                UPDATE course_rel_class cc
116
                SET cc.c_id = (SELECT id FROM course WHERE code = cc.course_code)
117
            ");
118
119
            $this->addSql("ALTER TABLE course_rel_class DROP course_code");
120
            $this->addSql("ALTER TABLE course_rel_class DROP PRIMARY KEY");
121
            $this->addSql("ALTER TABLE course_rel_class MODIFY COLUMN class_id INT DEFAULT NULL");
122
            $this->addSql("ALTER TABLE course_rel_class ADD PRIMARY KEY (class_id, c_id)");
123
            $this->addSql("ALTER TABLE course_rel_class ADD FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE RESTRICT");
124
        }*/
125
126
        $tables = [
127
            'shared_survey',
128
            'specific_field_values',
129
            'templates',
130
        ];
131
132
        foreach ($tables as $table) {
133
            //$tableObj = $schema->getTable($table);
134
            /*if (!$tableObj->hasColumn('c_id')) {
135
                $this->addSql("ALTER TABLE $table ADD c_id int NOT NULL");
136
137
                if ($tableObj->hasColumn('course_code')) {
138
                    $this->addSql("
139
                      UPDATE $table t
140
                      SET t.c_id = (SELECT id FROM course WHERE code = t.course_code)
141
                    ");
142
                    $this->addSql("ALTER TABLE $table DROP course_code");
143
                }
144
            }*/
145
            /*$this->addSql("
146
                ALTER TABLE $table ADD FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE RESTRICT
147
            ");*/
148
        }
149
        /*
150
                $this->addSql("ALTER TABLE personal_agenda DROP course");
151
152
                $this->addSql("
153
                    ALTER TABLE specific_field_values
154
                    ADD c_id int(11) NOT NULL,
155
                    ADD FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE RESTRICT;
156
                ");
157
        */
158
159
        $this->addSql(
160
            'CREATE TABLE IF NOT EXISTS scheduled_announcements (id INT AUTO_INCREMENT NOT NULL, subject VARCHAR(255) NOT NULL, message LONGTEXT NOT NULL, date DATETIME DEFAULT NULL, sent TINYINT(1) NOT NULL, session_id INT NOT NULL, c_id INT DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
161
        );
162
163
        $table = $schema->getTable('session');
164
        if (!$table->hasColumn('position')) {
165
            $this->addSql('ALTER TABLE session ADD COLUMN position INT DEFAULT 0 NOT NULL');
166
        } else {
167
            $this->addSql('ALTER TABLE session CHANGE position position INT DEFAULT 0 NOT NULL');
168
        }
169
170
        // Portfolio
171
        if (!$schema->hasTable('portfolio')) {
172
            $this->addSql(
173
                'CREATE TABLE portfolio_category (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, title LONGTEXT DEFAULT NULL, description LONGTEXT DEFAULT NULL, is_visible TINYINT(1) DEFAULT "1" NOT NULL, INDEX user (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
174
            );
175
            $this->addSql(
176
                'CREATE TABLE portfolio (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, c_id INT DEFAULT NULL, session_id INT DEFAULT NULL, category_id INT DEFAULT NULL, title LONGTEXT NOT NULL, content LONGTEXT NOT NULL, creation_date DATETIME NOT NULL, update_date DATETIME NOT NULL, is_visible TINYINT(1) DEFAULT "1" NOT NULL, INDEX user (user_id), INDEX course (c_id), INDEX session (session_id), INDEX category (category_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
177
            );
178
            $this->addSql(
179
                'ALTER TABLE portfolio_category ADD CONSTRAINT FK_7AC64359A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
180
            );
181
            $this->addSql(
182
                'ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED1062A76ED395 FOREIGN KEY (user_id) REFERENCES user (id);'
183
            );
184
            $this->addSql(
185
                'ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED106291D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
186
            );
187
            $this->addSql(
188
                'ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED1062613FECDF FOREIGN KEY (session_id) REFERENCES session (id);'
189
            );
190
            $this->addSql(
191
                'ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED106212469DE2 FOREIGN KEY (category_id) REFERENCES portfolio_category (id);'
192
            );
193
        } else {
194
            $this->addSql('ALTER TABLE portfolio_category CHANGE title title LONGTEXT DEFAULT NULL');
195
        }
196
197
        // Skills
198
        if (!$schema->hasTable('skill_rel_item_rel_user')) {
199
            $this->addSql(
200
                'CREATE TABLE skill_rel_item_rel_user (id INT AUTO_INCREMENT NOT NULL, skill_rel_item_id INT NOT NULL, user_id INT NOT NULL, result_id INT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_D1133E0DFD4B12DC (skill_rel_item_id), INDEX IDX_D1133E0DA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
201
            );
202
            $this->addSql(
203
                'CREATE TABLE skill_rel_item (id INT AUTO_INCREMENT NOT NULL, skill_id INT DEFAULT NULL, item_type INT NOT NULL, item_id INT NOT NULL, obtain_conditions VARCHAR(255) DEFAULT NULL, requires_validation TINYINT(1) NOT NULL, is_real TINYINT(1) NOT NULL, c_id INT DEFAULT NULL, session_id INT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_EB5B2A0D5585C142 (skill_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
204
            );
205
            $this->addSql(
206
                'CREATE TABLE skill_rel_course (id INT AUTO_INCREMENT NOT NULL, skill_id INT DEFAULT NULL, c_id INT NOT NULL, session_id INT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_E7CEC7FA5585C142 (skill_id), INDEX IDX_E7CEC7FA91D79BD3 (c_id), INDEX IDX_E7CEC7FA613FECDF (session_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
207
            );
208
            $this->addSql(
209
                'ALTER TABLE skill_rel_item_rel_user ADD CONSTRAINT FK_D1133E0DFD4B12DC FOREIGN KEY (skill_rel_item_id) REFERENCES skill_rel_item (id);'
210
            );
211
            $this->addSql(
212
                'ALTER TABLE skill_rel_item_rel_user ADD CONSTRAINT FK_D1133E0DA76ED395 FOREIGN KEY (user_id) REFERENCES user (id);'
213
            );
214
            $this->addSql(
215
                'ALTER TABLE skill_rel_item ADD CONSTRAINT FK_EB5B2A0D5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id);'
216
            );
217
            $this->addSql(
218
                'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id);'
219
            );
220
            $this->addSql(
221
                'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
222
            );
223
            $this->addSql(
224
                'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA613FECDF FOREIGN KEY (session_id) REFERENCES session (id);'
225
            );
226
        }
227
228
        $table = $schema->getTable('skill_rel_user');
229
        if (!$table->hasColumn('validation_status')) {
230
            $this->addSql('ALTER TABLE skill_rel_user ADD validation_status INT NOT NULL');
231
        }
232
233
        $this->addSql(
234
            'CREATE TABLE IF NOT EXISTS ext_translations (id INT AUTO_INCREMENT NOT NULL, locale VARCHAR(8) NOT NULL, object_class VARCHAR(190) NOT NULL, field VARCHAR(32) NOT NULL, foreign_key VARCHAR(64) NOT NULL, content LONGTEXT DEFAULT NULL, INDEX translations_lookup_idx (locale, object_class, foreign_key), UNIQUE INDEX lookup_unique_idx (locale, object_class, field, foreign_key), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
235
        );
236
        $this->addSql(
237
            'CREATE TABLE IF NOT EXISTS ext_log_entries (id INT AUTO_INCREMENT NOT NULL, action VARCHAR(8) NOT NULL, logged_at DATETIME NOT NULL, object_id VARCHAR(64) DEFAULT NULL, object_class VARCHAR(255) NOT NULL, version INT NOT NULL, data LONGTEXT DEFAULT NULL COMMENT "(DC2Type:array)", username VARCHAR(255) DEFAULT NULL, INDEX log_class_lookup_idx (object_class), INDEX log_date_lookup_idx (logged_at), INDEX log_user_lookup_idx (username), INDEX log_version_lookup_idx (object_id, object_class, version), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
238
        );
239
        $this->addSql(
240
            'CREATE TABLE IF NOT EXISTS tool (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, image VARCHAR(255) DEFAULT NULL, description LONGTEXT DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
241
        );
242
243
        // From configuration.dist.php 1.11.x
244
        $this->addSql('ALTER TABLE c_dropbox_file CHANGE filename filename VARCHAR(190) NOT NULL');
245
        $this->addSql('ALTER TABLE course_category CHANGE name name LONGTEXT NOT NULL;');
246
        $this->addSql('ALTER TABLE c_course_description CHANGE title title LONGTEXT DEFAULT NULL');
247
        $this->addSql('ALTER TABLE c_thematic CHANGE title title LONGTEXT NOT NULL');
248
        $this->addSql('ALTER TABLE c_quiz CHANGE title title LONGTEXT NOT NULL');
249
        $this->addSql('ALTER TABLE c_lp_category CHANGE name name LONGTEXT NOT NULL');
250
        $this->addSql('ALTER TABLE c_glossary CHANGE name name LONGTEXT NOT NULL');
251
        $this->addSql('ALTER TABLE c_tool CHANGE name name LONGTEXT NOT NULL');
252
        $this->addSql('ALTER TABLE portfolio CHANGE title title LONGTEXT NOT NULL');
253
        $this->addSql('ALTER TABLE block CHANGE path path VARCHAR(190) NOT NULL');
254
255
        $table = $schema->getTable('sys_announcement');
256
        if ($table->hasColumn('visible_drh')) {
257
            $this->addSql('ALTER TABLE sys_announcement CHANGE visible_drh visible_drh TINYINT(1) NOT NULL');
258
        } else {
259
            $this->addSql('ALTER TABLE sys_announcement ADD COLUMN visible_drh TINYINT(1) NOT NULL');
260
        }
261
262
        if ($table->hasColumn('visible_session_admin')) {
263
            $this->addSql(
264
                'ALTER TABLE sys_announcement CHANGE visible_session_admin visible_session_admin TINYINT(1) NOT NULL'
265
            );
266
        } else {
267
            $this->addSql(
268
                'ALTER TABLE sys_announcement ADD COLUMN visible_session_admin TINYINT(1) NOT NULL'
269
            );
270
        }
271
        if ($table->hasColumn('visible_boss')) {
272
            $this->addSql('ALTER TABLE sys_announcement CHANGE visible_boss visible_boss TINYINT(1) NOT NULL');
273
        } else {
274
            $this->addSql('ALTER TABLE sys_announcement ADD COLUMN visible_boss TINYINT(1) NOT NULL');
275
        }
276
277
        $table = $schema->getTable('c_group_info');
278
        if (!$table->hasColumn('document_access')) {
279
            $this->addSql('ALTER TABLE c_group_info ADD document_access INT DEFAULT 0 NOT NULL;');
280
        }
281
282
        $table = $schema->getTable('c_group_category');
283
        if (!$table->hasColumn('document_access')) {
284
            $this->addSql('ALTER TABLE c_group_category ADD document_access INT DEFAULT 0 NOT NULL;');
285
        }
286
287
        $table = $schema->getTable('usergroup');
288
        if (!$table->hasColumn('author_id')) {
289
            $this->addSql('ALTER TABLE usergroup ADD author_id INT DEFAULT NULL');
290
        }
291
292
        $this->addSql(
293
            'ALTER TABLE access_url_rel_course_category CHANGE access_url_id access_url_id INT DEFAULT NULL, CHANGE course_category_id course_category_id INT DEFAULT NULL'
294
        );
295
        $table = $schema->getTable('access_url_rel_course_category');
296
        if (false === $table->hasForeignKey('FK_3545C2A673444FD5')) {
297
            $this->addSql(
298
                'ALTER TABLE access_url_rel_course_category ADD CONSTRAINT FK_3545C2A673444FD5 FOREIGN KEY (access_url_id) REFERENCES access_url (id)'
299
            );
300
        }
301
        if (false === $table->hasForeignKey('FK_3545C2A66628AD36')) {
302
            $this->addSql(
303
                'ALTER TABLE access_url_rel_course_category ADD CONSTRAINT FK_3545C2A66628AD36 FOREIGN KEY (course_category_id) REFERENCES course_category (id)'
304
            );
305
        }
306
        if (false === $table->hasIndex('IDX_3545C2A673444FD5')) {
307
            $this->addSql('CREATE INDEX IDX_3545C2A673444FD5 ON access_url_rel_course_category (access_url_id)');
308
        }
309
        if (false === $table->hasIndex('IDX_3545C2A66628AD36')) {
310
            $this->addSql('CREATE INDEX IDX_3545C2A66628AD36 ON access_url_rel_course_category (course_category_id)');
311
        }
312
313
        $this->addSql('ALTER TABLE access_url_rel_usergroup CHANGE access_url_id access_url_id INT DEFAULT NULL');
314
315
        $table = $schema->getTable('access_url_rel_usergroup');
316
        if (false === $table->hasForeignKey('FK_AD488DD573444FD5')) {
317
            $this->addSql(
318
                'ALTER TABLE access_url_rel_usergroup ADD CONSTRAINT FK_AD488DD573444FD5 FOREIGN KEY (access_url_id) REFERENCES access_url (id)'
319
            );
320
        }
321
        if (false === $table->hasIndex('IDX_AD488DD573444FD5')) {
322
            $this->addSql('CREATE INDEX IDX_AD488DD573444FD5 ON access_url_rel_usergroup (access_url_id)');
323
        }
324
325
        // Update template.
326
        $table = $schema->getTable('templates');
327
        if ($table->hasColumn('course_code')) {
328
            $this->addSql('DELETE FROM templates WHERE course_code NOT IN (SELECT code FROM course)');
329
        }
330
        if (false === $table->hasColumn('c_id')) {
331
            $this->addSql('ALTER TABLE templates ADD c_id INT DEFAULT NULL');
332
            $this->addSql('CREATE INDEX IDX_6F287D8E91D79BD3 ON templates (c_id)');
333
            $this->addSql(
334
                'ALTER TABLE templates ADD CONSTRAINT FK_6F287D8E91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id)'
335
            );
336
            $this->addSql('UPDATE templates SET c_id = (SELECT id FROM course WHERE code = course_code)');
337
        }
338
339
        $this->addSql('ALTER TABLE c_group_info CHANGE category_id category_id INT DEFAULT NULL');
340
341
        $table = $schema->getTable('user_course_category');
342
        if (!$table->hasColumn('collapsed')) {
343
            $this->addSql('ALTER TABLE user_course_category ADD collapsed TINYINT(1) DEFAULT NULL');
344
        }
345
346
        // Drop unused columns
347
        $dropColumnsAndIndex = [
348
            'track_e_uploads' => ['columns' => ['upload_cours_id'], 'index' => ['upload_cours_id']],
349
            'track_e_hotspot' => ['columns' => ['hotspot_course_code'], 'index' => ['hotspot_course_code']],
350
            'templates' => ['columns' => ['course_code'], 'index' => []],
351
            'personal_agenda' => ['columns' => ['hotspot_course_code'], 'index' => []],
352
        ];
353
354
        foreach ($dropColumnsAndIndex as $tableName => $data) {
355
            if ($schema->hasTable($tableName)) {
356
                $indexList = $data['index'];
357
                foreach ($indexList as $index) {
358
                    if ($table->hasIndex($index)) {
359
                        $table->dropIndex($index);
360
                    }
361
                }
362
363
                $columns = $data['columns'];
364
                $table = $schema->getTable($tableName);
365
                foreach ($columns as $column) {
366
                    if ($table->hasColumn($column)) {
367
                        $table->dropColumn($column);
368
                    }
369
                }
370
            }
371
        }
372
373
        // Drop tables
374
        $dropTables = [
375
            'event_email_template',
376
            'event_sent',
377
            'user_rel_event_type',
378
            'openid_association',
379
            'track_stored_values',
380
            'track_stored_values_stack',
381
            'course_module',
382
        ];
383
        foreach ($dropTables as $table) {
384
            if ($schema->hasTable($table)) {
385
                $schema->dropTable($table);
386
            }
387
        }
388
    }
389
390
    public function down(Schema $schema): void
391
    {
392
    }
393
}
394