Conditions | 25 |
Paths | > 20000 |
Total Lines | 161 |
Code Lines | 103 |
Lines | 0 |
Ratio | 0 % |
Changes | 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 |
||
19 | public function up(Schema $schema): void |
||
20 | { |
||
21 | $table = $schema->getTable('session'); |
||
22 | if (false === $table->hasColumn('position')) { |
||
23 | $this->addSql('ALTER TABLE session ADD COLUMN position INT DEFAULT 0 NOT NULL'); |
||
24 | } else { |
||
25 | $this->addSql('ALTER TABLE session CHANGE position position INT DEFAULT 0 NOT NULL'); |
||
26 | } |
||
27 | |||
28 | $this->addSql('UPDATE session SET promotion_id = NULL WHERE promotion_id = 0'); |
||
29 | if (!$table->hasForeignKey('FK_D044D5D4139DF194')) { |
||
30 | $this->addSql('ALTER TABLE session ADD CONSTRAINT FK_D044D5D4139DF194 FOREIGN KEY (promotion_id) REFERENCES promotion (id) ON DELETE CASCADE'); |
||
31 | $this->addSql('CREATE INDEX IDX_D044D5D4139DF194 ON session (promotion_id);'); |
||
32 | } |
||
33 | |||
34 | if (!$table->hasColumn('status')) { |
||
35 | $this->addSql('ALTER TABLE session ADD COLUMN status INT NOT NULL'); |
||
36 | } else { |
||
37 | $this->addSql('ALTER TABLE session CHANGE status status INT NOT NULL'); |
||
38 | } |
||
39 | |||
40 | if (!$table->hasForeignKey('FK_D044D5D4EF87E278')) { |
||
41 | $this->addSql('ALTER TABLE session ADD CONSTRAINT FK_D044D5D4EF87E278 FOREIGN KEY(session_admin_id) REFERENCES user(id);'); |
||
42 | } |
||
43 | |||
44 | $this->addSql('UPDATE session_category SET date_start = NULL WHERE CAST(date_start AS CHAR(11)) = "0000-00-00"'); |
||
45 | $this->addSql('UPDATE session_category SET date_end = NULL WHERE CAST(date_end AS CHAR(11)) = "0000-00-00"'); |
||
46 | |||
47 | $table = $schema->getTable('session_rel_course_rel_user'); |
||
48 | |||
49 | if (!$table->hasColumn('progress')) { |
||
50 | $this->addSql('ALTER TABLE session_rel_course_rel_user ADD progress INT NOT NULL'); |
||
51 | } |
||
52 | |||
53 | if ($table->hasForeignKey('FK_720167E91D79BD3')) { |
||
54 | $this->addSql('ALTER TABLE session_rel_course_rel_user DROP FOREIGN KEY FK_720167E91D79BD3'); |
||
55 | $this->addSql('ALTER TABLE session_rel_course_rel_user ADD CONSTRAINT FK_720167E91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE'); |
||
56 | } else { |
||
57 | $this->addSql('ALTER TABLE session_rel_course_rel_user ADD CONSTRAINT FK_720167E91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE'); |
||
58 | } |
||
59 | |||
60 | // Remove duplicates. |
||
61 | $sql = 'SELECT max(id) id, session_id, c_id, user_id, status, count(*) as count |
||
62 | FROM session_rel_course_rel_user |
||
63 | GROUP BY session_id, c_id, user_id, status |
||
64 | HAVING count > 1'; |
||
65 | $result = $this->connection->executeQuery($sql); |
||
66 | $items = $result->fetchAllAssociative(); |
||
67 | |||
68 | foreach ($items as $item) { |
||
69 | $userId = $item['user_id']; |
||
70 | $sessionId = $item['session_id']; |
||
71 | $courseId = $item['c_id']; |
||
72 | $status = $item['status']; |
||
73 | |||
74 | $sql = "SELECT id |
||
75 | FROM session_rel_course_rel_user |
||
76 | WHERE user_id = $userId AND session_id = $sessionId AND c_id = $courseId AND status = $status"; |
||
77 | $result = $this->connection->executeQuery($sql); |
||
78 | $subItems = $result->fetchAllAssociative(); |
||
79 | $counter = 0; |
||
80 | foreach ($subItems as $subItem) { |
||
81 | $id = $subItem['id']; |
||
82 | if (0 === $counter) { |
||
83 | $counter++; |
||
84 | |||
85 | continue; |
||
86 | } |
||
87 | $sql = "DELETE FROM session_rel_course_rel_user WHERE id = $id"; |
||
88 | $this->connection->executeQuery($sql); |
||
89 | $counter++; |
||
90 | } |
||
91 | } |
||
92 | |||
93 | if (!$table->hasIndex('course_session_unique')) { |
||
94 | $this->addSql(' CREATE UNIQUE INDEX course_session_unique ON session_rel_course_rel_user (session_id, c_id, user_id, status);'); |
||
95 | } |
||
96 | |||
97 | $table = $schema->getTable('session_rel_course'); |
||
98 | if (!$table->hasIndex('course_session_unique')) { |
||
99 | $this->addSql('CREATE UNIQUE INDEX course_session_unique ON session_rel_course (session_id, c_id)'); |
||
100 | } |
||
101 | |||
102 | $table = $schema->getTable('session_rel_user'); |
||
103 | if (!$table->hasIndex('session_user_unique')) { |
||
104 | $this->addSql('CREATE UNIQUE INDEX session_user_unique ON session_rel_user (session_id, user_id, relation_type);'); |
||
105 | } |
||
106 | |||
107 | // Move id_coach to session_rel_user |
||
108 | $result = $this->connection->executeQuery('SELECT id, session_admin_id, id_coach FROM session'); |
||
109 | $items = $result->fetchAllAssociative(); |
||
110 | |||
111 | foreach ($items as $item) { |
||
112 | $coachId = (int) $item['id_coach']; |
||
113 | $adminId = (int) $item['session_admin_id']; |
||
114 | $sessionId = (int) $item['id']; |
||
115 | |||
116 | if (!empty($coachId)) { |
||
117 | $sql = "SELECT * FROM session_rel_user |
||
118 | WHERE user_id = $coachId AND session_id = $sessionId AND relation_type = 3 "; |
||
119 | $result = $this->connection->executeQuery($sql); |
||
120 | $exists = $result->fetchAllAssociative(); |
||
121 | if (empty($exists)) { |
||
122 | $sql = "INSERT INTO session_rel_user (relation_type, duration, registered_at, user_id, session_id) |
||
123 | VALUES (3, 0, NOW(), $coachId, $sessionId)"; |
||
124 | $this->connection->executeQuery($sql); |
||
125 | } |
||
126 | } |
||
127 | |||
128 | if (!empty($adminId)) { |
||
129 | $sql = "SELECT * FROM session_rel_user |
||
130 | WHERE user_id = $adminId AND session_id = $sessionId AND relation_type = 4 "; |
||
131 | $result = $this->connection->executeQuery($sql); |
||
132 | $exists = $result->fetchAllAssociative(); |
||
133 | if (empty($exists)) { |
||
134 | $sql = "INSERT INTO session_rel_user (relation_type, duration, registered_at, user_id, session_id) |
||
135 | VALUES (4, 0, NOW(), $adminId, $sessionId)"; |
||
136 | $this->connection->executeQuery($sql); |
||
137 | } |
||
138 | } |
||
139 | } |
||
140 | |||
141 | $sql = 'SELECT user_id, session_id, status |
||
142 | FROM session_rel_course_rel_user scu |
||
143 | WHERE user_id NOT IN (SELECT user_id FROM session_rel_user WHERE session_id = scu.session_id)'; |
||
144 | $result = $this->connection->executeQuery($sql); |
||
145 | $items = $result->fetchAllAssociative(); |
||
146 | |||
147 | foreach ($items as $item) { |
||
148 | $userId = (int) $item['user_id']; |
||
149 | $sessionId = (int) $item['session_id']; |
||
150 | $status = (int) $item['status']; |
||
151 | if (!empty($userId)) { |
||
152 | $sql = "SELECT * FROM session_rel_user |
||
153 | WHERE user_id = $userId AND session_id = $sessionId AND relation_type = $status"; |
||
154 | $result = $this->connection->executeQuery($sql); |
||
155 | $exists = $result->fetchAllAssociative(); |
||
156 | if (empty($exists)) { |
||
157 | $sql = "INSERT INTO session_rel_user (relation_type, duration, registered_at, user_id, session_id) |
||
158 | VALUES ($status, 0, NOW(), $userId, $sessionId)"; |
||
159 | $this->connection->executeQuery($sql); |
||
160 | } |
||
161 | } |
||
162 | } |
||
163 | |||
164 | $table = $schema->getTable('session'); |
||
165 | if ($table->hasForeignKey('FK_D044D5D4D1DC2CFC')) { |
||
166 | $this->addSql('ALTER TABLE session DROP FOREIGN KEY FK_D044D5D4D1DC2CFC'); |
||
167 | } |
||
168 | |||
169 | // $this->addSql('ALTER TABLE session DROP COLUMN id_coach'); |
||
170 | if ($table->hasForeignKey('FK_D044D5D4EF87E278')) { |
||
171 | $this->addSql('ALTER TABLE session DROP FOREIGN KEY FK_D044D5D4EF87E278'); |
||
172 | } |
||
173 | |||
174 | if ($table->hasIndex('idx_id_coach')) { |
||
175 | $this->addSql('DROP INDEX idx_id_coach ON session'); |
||
176 | } |
||
177 | |||
178 | if ($table->hasForeignKey('idx_id_session_admin_id')) { |
||
179 | $this->addSql('DROP INDEX idx_id_session_admin_id ON session'); |
||
180 | } |
||
186 |