| Conditions | 37 |
| Paths | > 20000 |
| Total Lines | 369 |
| Code Lines | 210 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 1 | Features | 0 |
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:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 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 | } |
||
| 394 |