Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 177
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
FlaggedRevsUpdaterHooks
0.00% covered (danger)
0.00%
0 / 177
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 1
 onLoadExtensionSchemaUpdates
0.00% covered (danger)
0.00%
0 / 177
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2// phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName
3// phpcs:disable MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic
4
5use MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook;
6
7/**
8 * Class containing updater functions for a FlaggedRevs environment
9 */
10class FlaggedRevsUpdaterHooks implements
11    LoadExtensionSchemaUpdatesHook
12{
13
14    /**
15     * @inheritDoc
16     */
17    public function onLoadExtensionSchemaUpdates( $du ) {
18        $dbType = $du->getDB()->getType();
19        $du->dropExtensionTable( 'flaggedimages' );
20
21        // Initial install tables (current schema)
22        $du->addExtensionTable( 'flaggedrevs', __DIR__ . "/$dbType/tables-generated.sql" );
23
24        if ( $dbType == 'mysql' ) {
25            $base = __DIR__ . '/mysql';
26
27            // 1.38
28            $du->dropExtensionField(
29                'flaggedrevs',
30                'fr_img_name',
31                "$base/patch-drop-fr_img.sql"
32            );
33
34            // 1.39
35            $du->dropExtensionField(
36                'flaggedpage_config',
37                'fpc_select',
38                "$base/patch-drop-fpc_select.sql"
39            );
40            $du->modifyExtensionField(
41                'flaggedpages',
42                'fp_pending_since',
43                "$base/patch-flaggedpages-timestamp.sql"
44            );
45            $du->modifyExtensionField(
46                'flaggedpage_pending',
47                'fpp_pending_since',
48                "$base/patch-flaggedpage_pending-timestamp.sql"
49            );
50            $du->modifyExtensionField(
51                'flaggedrevs',
52                'fr_timestamp',
53                "$base/patch-flaggedrevs-timestamps.sql"
54            );
55            $du->modifyExtensionField(
56                'flaggedrevs_statistics',
57                'frs_timestamp',
58                "$base/patch-flaggedrevs_statistics-timestamp.sql"
59            );
60            $du->modifyExtensionField(
61                'flaggedpage_config',
62                'fpc_expiry',
63                "$base/patch-flaggedpage_config-timestamp.sql"
64            );
65        } elseif ( $dbType == 'postgres' ) {
66            $base = __DIR__ . '/postgres';
67
68            // 1.38
69            $du->addExtensionUpdate(
70                [ 'dropPgIndex', 'flaggedrevs', 'fr_img_sha1' ]
71            );
72            $du->addExtensionUpdate(
73                [ 'dropPgField', 'flaggedrevs', 'fr_img_name' ]
74            );
75            $du->addExtensionUpdate(
76                [ 'dropPgField', 'flaggedrevs', 'fr_img_timestamp' ]
77            );
78            $du->addExtensionUpdate(
79                [ 'dropPgField', 'flaggedrevs', 'fr_img_sha1' ]
80            );
81
82            // 1.39
83            $du->addExtensionUpdate(
84                [ 'dropPgField', 'flaggedpage_config', 'fpc_select' ]
85            );
86            $du->addExtensionUpdate( [
87                'dropDefault', 'flaggedpages', 'fp_page_id'
88            ] );
89            $du->addExtensionUpdate( [
90                'dropDefault', 'flaggedpages', 'fp_stable'
91            ] );
92            $du->addExtensionUpdate( [
93                'changeField', 'flaggedpages', 'fp_page_id', 'INT', ''
94            ] );
95            $du->addExtensionUpdate( [
96                'changeField', 'flaggedpages', 'fp_reviewed', 'SMALLINT', 'fp_reviewed::SMALLINT DEFAULT 0'
97            ] );
98            $du->addExtensionUpdate( [
99                'changeField', 'flaggedpages', 'fp_stable', 'INT', ''
100            ] );
101            $du->addExtensionUpdate( [
102                'changeField', 'flaggedpages', 'fp_quality', 'SMALLINT', ''
103            ] );
104            $du->addExtensionUpdate( [
105                'changeNullableField', 'flaggedpage_pending', 'fpp_pending_since', 'NOT NULL', true
106            ] );
107            $du->addExtensionUpdate( [
108                'changeField', 'flaggedpage_pending', 'fpp_page_id', 'INT', ''
109            ] );
110            $du->addExtensionUpdate( [
111                'changeField', 'flaggedpage_pending', 'fpp_quality', 'SMALLINT', ''
112            ] );
113            $du->addExtensionUpdate( [
114                'changeField', 'flaggedpage_pending', 'fpp_rev_id', 'INT', ''
115            ] );
116            $du->addExtensionUpdate( [
117                'dropDefault', 'flaggedrevs', 'fr_rev_id'
118            ] );
119            $du->addExtensionUpdate( [
120                'dropDefault', 'flaggedrevs', 'fr_page_id'
121            ] );
122            $du->addExtensionUpdate( [
123                'dropDefault', 'flaggedrevs', 'fr_tags'
124            ] );
125            $du->addExtensionUpdate( [
126                'changeNullableField', 'flaggedrevs', 'fr_user', 'NOT NULL', true
127            ] );
128            $du->addExtensionUpdate( [
129                'changeNullableField', 'flaggedrevs', 'fr_timestamp', 'NOT NULL', true
130            ] );
131            $du->addExtensionUpdate( [
132                'renameIndex', 'flaggedrevs', 'page_rev', 'fr_page_rev'
133            ] );
134            $du->addExtensionUpdate( [
135                'renameIndex', 'flaggedrevs', 'page_time', 'fr_page_time'
136            ] );
137            $du->addExtensionUpdate( [
138                'renameIndex', 'flaggedrevs', 'page_qal_rev', 'fr_page_qal_rev'
139            ] );
140            $du->addExtensionUpdate( [
141                'renameIndex', 'flaggedrevs', 'page_qal_time', 'fr_page_qal_time'
142            ] );
143            $du->addExtensionUpdate( [
144                'changeField', 'flaggedrevs', 'fr_rev_id', 'INT', ''
145            ] );
146            $du->addExtensionUpdate( [
147                'changeField', 'flaggedrevs', 'fr_page_id', 'INT', ''
148            ] );
149            $du->addExtensionUpdate( [
150                'changeField', 'flaggedrevs', 'fr_user', 'INT', ''
151            ] );
152            $du->addExtensionUpdate( [
153                'changeField', 'flaggedrevs', 'fr_quality', 'SMALLINT', 'fr_quality::SMALLINT DEFAULT 0'
154            ] );
155            $du->addExtensionUpdate( [
156                'dropDefault', 'flaggedpage_config', 'fpc_page_id'
157            ] );
158            $du->addExtensionUpdate( [
159                'changeNullableField', 'flaggedpage_config', 'fpc_expiry', 'NOT NULL', true
160            ] );
161            $du->addExtensionUpdate( [
162                'changeField', 'flaggedpage_config', 'fpc_page_id', 'INT', ''
163            ] );
164            $du->addExtensionUpdate( [
165                'changeField', 'flaggedpage_config', 'fpc_override', 'SMALLINT', ''
166            ] );
167            $du->addExtensionUpdate( [
168                'renameIndex', 'flaggedrevs_tracking', 'namespace_title_from', 'frt_namespace_title_from'
169            ] );
170            $du->addExtensionUpdate( [
171                'changeField', 'flaggedrevs_tracking', 'ftr_from', 'INT', 'ftr_from::INT DEFAULT 0'
172            ] );
173            $du->addExtensionUpdate( [
174                'changeField', 'flaggedrevs_tracking', 'ftr_namespace', 'INT', 'ftr_namespace::INT DEFAULT 0'
175            ] );
176            $du->dropExtensionIndex(
177                'flaggedrevs_tracking', 'flaggedrevs_tracking_pkey', "$base/patch-flaggedrevs_tracking-drop-pk.sql"
178            );
179            $du->addExtensionUpdate( [
180                'dropDefault', 'flaggedrevs_promote', 'frp_user_id'
181            ] );
182            $du->addExtensionUpdate( [
183                'dropDefault', 'flaggedrevs_promote', 'frp_user_params'
184            ] );
185            $du->addExtensionUpdate( [
186                'changeField', 'flaggedrevs_promote', 'frp_user_id', 'INT', ''
187            ] );
188        } elseif ( $dbType == 'sqlite' ) {
189            $base = __DIR__ . '/sqlite';
190
191            // 1.38
192            $du->dropExtensionField(
193                'flaggedrevs',
194                'fr_img_name',
195                "$base/patch-drop-fr_img.sql"
196            );
197
198            // 1.39
199            $du->dropExtensionField(
200                'flaggedpage_config',
201                'fpc_select',
202                "$base/patch-drop-fpc_select.sql"
203            );
204        }
205
206        // 1.40
207        $du->dropExtensionIndex(
208            'flaggedrevs_tracking',
209            'frt_from_namespace_title',
210            __DIR__ . "/$dbType/patch-flaggedrevs_tracking-unique-to-pk.sql"
211        );
212        // 1.42
213        $du->dropExtensionTable( 'flaggedtemplates' );
214    }
215}