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