Version20180904175500::up()   F
last analyzed

Complexity

Conditions 28
Paths > 20000

Size

Total Lines 189
Code Lines 111

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 28
eloc 111
c 0
b 0
f 0
nc 134217728
nop 1
dl 0
loc 189
rs 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
class Version20180904175500 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Migrate track_e_exercises, track_e_login';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $this->addSql(
22
            'UPDATE track_e_exercises SET expired_time_control = NULL WHERE CAST(expired_time_control AS CHAR(20)) = "0000-00-00 00:00:00"'
23
        );
24
        $this->addSql('DELETE FROM track_e_exercises WHERE exe_user_id = 0 OR exe_user_id IS NULL');
25
        $this->addSql('ALTER TABLE track_e_exercises CHANGE exe_user_id exe_user_id INT NOT NULL');
26
27
        $this->addSql('ALTER TABLE track_e_exercises CHANGE session_id session_id INT DEFAULT NULL');
28
        $this->addSql('UPDATE track_e_exercises SET session_id = NULL WHERE session_id = 0');
29
30
        $this->addSql('DELETE FROM track_e_exercises WHERE session_id IS NOT NULL AND session_id NOT IN (SELECT id FROM session)');
31
32
        if (!$schema->hasTable('attempt_file')) {
33
            $this->addSql("CREATE TABLE attempt_file (id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid)', attempt_id INT DEFAULT NULL, asset_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid)', comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)', updated_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)', INDEX IDX_4F22BDF0B191BE6B (attempt_id), INDEX IDX_4F22BDF05DA1941 (asset_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;");
34
            $this->addSql('ALTER TABLE attempt_file ADD CONSTRAINT FK_4F22BDF0B191BE6B FOREIGN KEY (attempt_id) REFERENCES track_e_attempt (id) ON DELETE CASCADE;');
35
            $this->addSql('ALTER TABLE attempt_file ADD CONSTRAINT FK_4F22BDF05DA1941 FOREIGN KEY (asset_id) REFERENCES asset (id) ON DELETE CASCADE;');
36
        }
37
38
        if (!$schema->hasTable('attempt_feedback')) {
39
            $this->addSql("CREATE TABLE attempt_feedback (id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid)', attempt_id INT DEFAULT NULL, user_id INT DEFAULT NULL, asset_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid)', comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)', updated_at DATETIME NOT NULL COMMENT '(DC2Type:datetime)', INDEX IDX_BA30B2FEB191BE6B (attempt_id), INDEX IDX_BA30B2FEA76ED395 (user_id), INDEX IDX_BA30B2FE5DA1941 (asset_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;");
40
            $this->addSql('ALTER TABLE attempt_feedback ADD CONSTRAINT FK_BA30B2FEB191BE6B FOREIGN KEY (attempt_id) REFERENCES track_e_attempt (id) ON DELETE CASCADE;');
41
            $this->addSql('ALTER TABLE attempt_feedback ADD CONSTRAINT FK_BA30B2FEA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;');
42
            $this->addSql('ALTER TABLE attempt_feedback ADD CONSTRAINT FK_BA30B2FE5DA1941 FOREIGN KEY (asset_id) REFERENCES asset (id) ON DELETE CASCADE;');
43
        }
44
45
        $table = $schema->getTable('track_e_login');
46
        if (!$table->hasIndex('idx_track_e_login_date')) {
47
            $this->addSql('CREATE INDEX idx_track_e_login_date ON track_e_login (login_date)');
48
        }
49
50
        $this->addSql('DELETE FROM track_e_login WHERE login_user_id NOT IN (SELECT id FROM user)');
51
        $this->addSql('ALTER TABLE track_e_login CHANGE login_user_id login_user_id INT DEFAULT NULL');
52
53
        if (!$table->hasForeignKey('FK_C8EA20EB743CDE8')) {
54
            $this->addSql('ALTER TABLE track_e_login ADD CONSTRAINT FK_C8EA20EB743CDE8 FOREIGN KEY (login_user_id) REFERENCES user (id) ON DELETE CASCADE');
55
        }
56
57
        $table = $schema->getTable('track_e_default');
58
        if (!$table->hasIndex('idx_default_user_id')) {
59
            $this->addSql('CREATE INDEX idx_default_user_id ON track_e_default (default_user_id)');
60
        }
61
62
        $this->addSql('UPDATE track_e_default SET default_date = NOW() WHERE default_date is NULL OR default_date = 0');
63
        $this->addSql('DELETE FROM track_e_default WHERE default_user_id NOT IN (SELECT id FROM user)');
64
        $this->addSql('ALTER TABLE track_e_default CHANGE default_date default_date DATETIME NOT NULL');
65
66
        $table = $schema->getTable('track_e_course_access');
67
        if (!$table->hasIndex('user_course_session_date')) {
68
            $this->addSql(
69
                'CREATE INDEX user_course_session_date ON track_e_course_access (user_id, c_id, session_id, login_course_date)'
70
            );
71
        }
72
73
        $this->addSql('DELETE FROM track_e_course_access WHERE user_id NOT IN (SELECT id FROM user)');
74
        $this->addSql('ALTER TABLE track_e_course_access CHANGE user_id user_id INT DEFAULT NULL');
75
        if (!$table->hasForeignKey('FK_E8C05DC5A76ED395')) {
76
            $this->addSql(
77
                'ALTER TABLE track_e_course_access ADD CONSTRAINT FK_E8C05DC5A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
78
            );
79
        }
80
81
        $table = $schema->getTable('track_e_access');
82
        if (!$table->hasIndex('user_course_session_date')) {
83
            $this->addSql(
84
                'CREATE INDEX user_course_session_date ON track_e_access (access_user_id, c_id, access_session_id, access_date)'
85
            );
86
        }
87
88
        $table = $schema->hasTable('track_e_access_complete');
89
        if (false === $table) {
90
            $this->addSql(
91
                'CREATE TABLE track_e_access_complete (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, date_reg DATETIME NOT NULL, tool VARCHAR(255) NOT NULL, tool_id INT NOT NULL, tool_id_detail INT NOT NULL, action VARCHAR(255) NOT NULL, action_details VARCHAR(255) NOT NULL, current_id INT NOT NULL, ip_user VARCHAR(255) NOT NULL, user_agent VARCHAR(255) NOT NULL, session_id INT NOT NULL, c_id INT NOT NULL, ch_sid VARCHAR(255) NOT NULL, login_as INT NOT NULL, info LONGTEXT NOT NULL, url LONGTEXT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC;'
92
            );
93
            $this->addSql('ALTER TABLE track_e_access_complete ADD CONSTRAINT FK_57FAFDBFA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
94
            $this->addSql('CREATE INDEX IDX_57FAFDBFA76ED395 ON track_e_access_complete (user_id)');
95
        }
96
        // $this->addSql('ALTER TABLE track_e_hotpotatoes CHANGE exe_result score SMALLINT NOT NULL');
97
        // $this->addSql('ALTER TABLE track_e_hotpotatoes CHANGE exe_weighting max_score SMALLINT NOT NULL');
98
99
        $table = $schema->getTable('track_e_exercises');
100
101
        $this->addSql('ALTER TABLE track_e_exercises CHANGE session_id session_id INT DEFAULT NULL');
102
        $this->addSql('ALTER TABLE track_e_attempt CHANGE session_id session_id INT DEFAULT NULL');
103
        $this->addSql('UPDATE track_e_attempt SET session_id = NULL WHERE session_id = 0');
104
        $this->addSql('DELETE FROM track_e_attempt WHERE session_id IS NOT NULL AND session_id NOT IN (select id FROM session)');
105
106
        $this->addSql('UPDATE track_e_exercises SET session_id = NULL WHERE session_id = 0');
107
        $this->addSql('DELETE FROM track_e_exercises WHERE session_id IS NOT NULL AND session_id NOT IN (select id FROM session)');
108
109
        $this->addSql('UPDATE track_e_exercises SET exe_user_id = NULL WHERE exe_user_id = 0');
110
        $this->addSql('DELETE FROM track_e_exercises WHERE exe_user_id IS NOT NULL AND exe_user_id NOT IN (select id FROM user)');
111
112
        if (!$table->hasForeignKey('FK_AA0DA082613FECDF')) {
113
            $this->addSql('ALTER TABLE track_e_exercises ADD CONSTRAINT FK_AA0DA082613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE');
114
        }
115
116
        if (!$table->hasForeignKey('FK_AA0DA082613FECDF')) {
117
            $this->addSql('ALTER TABLE track_e_exercises ADD CONSTRAINT FK_AA0DA08291D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE');
118
        }
119
120
        if (!$table->hasForeignKey('FK_AA0DA082F6A6790')) {
121
            $this->addSql('ALTER TABLE track_e_exercises ADD CONSTRAINT FK_AA0DA082F6A6790 FOREIGN KEY (exe_user_id) REFERENCES user (id) ON DELETE CASCADE ');
122
        }
123
124
        if ($table->hasColumn('exe_weighting')) {
125
            $this->addSql('ALTER TABLE track_e_exercises CHANGE exe_weighting max_score DOUBLE PRECISION NOT NULL');
126
        }
127
        if ($table->hasColumn('exe_result')) {
128
            $this->addSql('ALTER TABLE track_e_exercises CHANGE exe_result score DOUBLE PRECISION NOT NULL');
129
        }
130
131
        if (!$table->hasColumn('blocked_categories')) {
132
            $this->addSql('ALTER TABLE track_e_exercises ADD blocked_categories LONGTEXT DEFAULT NULL');
133
        }
134
135
        $this->addSql('ALTER TABLE track_e_exercises CHANGE exe_exo_id exe_exo_id INT DEFAULT NULL');
136
        $this->addSql('UPDATE track_e_exercises SET exe_exo_id = NULL WHERE exe_exo_id NOT IN (SELECT iid FROM c_quiz)');
137
138
        if (!$table->hasForeignKey('FK_AA0DA082B9773F9E')) {
139
            $this->addSql('ALTER TABLE track_e_exercises ADD CONSTRAINT FK_AA0DA082B9773F9E FOREIGN KEY (exe_exo_id) REFERENCES c_quiz (iid) ON DELETE SET NULL');
140
        }
141
142
        if (!$table->hasIndex('IDX_AA0DA082B9773F9E')) {
143
            $this->addSql('CREATE INDEX IDX_AA0DA082B9773F9E ON track_e_exercises (exe_exo_id)');
144
        }
145
146
        $table = $schema->getTable('track_e_hotspot');
147
148
        $this->addSql('DELETE FROM track_e_hotspot WHERE c_id NOT IN (SELECT id FROM course)');
149
150
        if (!$table->hasForeignKey('FK_A89CC3B691D79BD3')) {
151
            $this->addSql(
152
                'ALTER TABLE track_e_hotspot ADD CONSTRAINT FK_A89CC3B691D79BD3 FOREIGN KEY (c_id) REFERENCES course (id)'
153
            );
154
        }
155
        if (false === $table->hasIndex('IDX_A89CC3B691D79BD3')) {
156
            $this->addSql('CREATE INDEX IDX_A89CC3B691D79BD3 ON track_e_hotspot (c_id)');
157
        }
158
159
        $table = $schema->getTable('track_e_attempt');
160
161
        if (!$table->hasIndex('course')) {
162
            $this->addSql('DROP INDEX course ON track_e_attempt;');
163
        }
164
165
        if (!$table->hasIndex('session_id')) {
166
            $this->addSql('DROP INDEX session_id ON track_e_attempt;');
167
        }
168
169
        $this->addSql('DELETE FROM track_e_attempt WHERE c_id NOT IN (SELECT id FROM course)');
170
        $this->addSql('DELETE FROM track_e_attempt WHERE user_id NOT IN (SELECT id FROM user)');
171
        $this->addSql('ALTER TABLE track_e_attempt CHANGE c_id c_id INT DEFAULT NULL');
172
173
        $this->addSql('UPDATE track_e_attempt SET tms = NOW() WHERE tms IS NULL OR tms = 0');
174
        $this->addSql('ALTER TABLE track_e_attempt CHANGE tms tms DATETIME NOT NULL');
175
        $this->addSql('DELETE FROM track_e_attempt WHERE exe_id = 0 OR exe_id IS NULL');
176
        $this->addSql('DELETE FROM track_e_attempt WHERE exe_id NOT IN (select exe_id FROM track_e_exercises)');
177
178
        if (!$table->hasForeignKey('FK_F8C342C3B5A18F57')) {
179
            $this->addSql(
180
                'ALTER TABLE track_e_attempt ADD CONSTRAINT FK_F8C342C3B5A18F57 FOREIGN KEY (exe_id) REFERENCES track_e_exercises (exe_id) ON DELETE CASCADE'
181
            );
182
        }
183
184
        if (!$table->hasIndex('idx_track_e_attempt_tms')) {
185
            $this->addSql('CREATE INDEX idx_track_e_attempt_tms ON track_e_attempt (tms)');
186
        }
187
188
        if (!$table->hasColumn('seconds_spent')) {
189
            $this->addSql('ALTER TABLE track_e_attempt ADD seconds_spent INT NOT NULL, CHANGE user_id user_id INT DEFAULT NULL');
190
        }
191
192
        if (!$table->hasForeignKey('FK_F8C342C3A76ED395')) {
193
            $this->addSql('ALTER TABLE track_e_attempt ADD CONSTRAINT FK_F8C342C3A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;');
194
        }
195
196
        if (!$schema->hasTable('track_e_exercise_confirmation')) {
197
            $this->addSql(
198
                "CREATE TABLE track_e_exercise_confirmation (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, course_id INT NOT NULL, attempt_id INT NOT NULL, quiz_id INT NOT NULL, session_id INT NOT NULL, confirmed TINYINT(1) DEFAULT '0' NOT NULL, questions_count INT NOT NULL, saved_answers_count INT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_980C28C7A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;"
199
            );
200
            $this->addSql(
201
                'ALTER TABLE track_e_exercise_confirmation ADD CONSTRAINT FK_980C28C7A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;'
202
            );
203
        }
204
205
        $table = $schema->getTable('track_e_attempt_recording');
206
        if (false === $table->hasColumn('answer')) {
207
            $this->addSql('ALTER TABLE track_e_attempt_recording ADD answer LONGTEXT DEFAULT NULL');
208
        }
209
    }
210
211
    public function down(Schema $schema): void {}
212
}
213