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