Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 144
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
SchemaHooks
0.00% covered (danger)
0.00%
0 / 144
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 1
 onLoadExtensionSchemaUpdates
0.00% covered (danger)
0.00%
0 / 144
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * Hooks for ContentTranslation extension.
4 *
5 * @copyright See AUTHORS.txt
6 * @license GPL-2.0-or-later
7 */
8namespace ContentTranslation;
9
10use MediaWiki\Installer\DatabaseUpdater;
11use MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook;
12
13class SchemaHooks implements LoadExtensionSchemaUpdatesHook {
14
15    /**
16     * Hook: LoadExtensionSchemaUpdates
17     * @param DatabaseUpdater $updater
18     */
19    public function onLoadExtensionSchemaUpdates( $updater ) {
20        $dir = dirname( __DIR__ );
21        $dbType = $updater->getDB()->getType();
22
23        // All tables for the extension
24        $updater->addExtensionUpdateOnVirtualDomain( [
25            ConnectionProvider::VIRTUAL_DOMAIN,
26            'addTable',
27            'cx_translations',
28            "$dir/sql/$dbType/tables-generated.sql",
29            true
30        ] );
31
32        // 1.37
33        $updater->addExtensionUpdateOnVirtualDomain( [
34            ConnectionProvider::VIRTUAL_DOMAIN,
35            'addField',
36            'cx_notification_log',
37            'cxn_wiki_id',
38            "$dir/sql/patch-2020-09-21-notification-log-add-wikiid.sql",
39            true
40        ] );
41
42        // 1.38
43        $updater->addExtensionUpdateOnVirtualDomain( [
44            ConnectionProvider::VIRTUAL_DOMAIN,
45            'addTable',
46            'cx_significant_edits',
47            "$dir/sql/significant-edits.sql",
48            true
49        ] );
50        $updater->addExtensionUpdateOnVirtualDomain( [
51            ConnectionProvider::VIRTUAL_DOMAIN,
52            'addTable',
53            'cx_section_translations',
54            "$dir/sql/section-translations.sql",
55            true
56        ] );
57
58        // Here we want to add "cxsx_translation_status" and "cxsx_translation_progress".
59        // Since those 2 fields have been added together, we can add only one of them to the
60        // updater, and the other one will be picked up by the updater anyway.
61        // 1.41
62        $updater->addExtensionUpdateOnVirtualDomain( [
63            ConnectionProvider::VIRTUAL_DOMAIN,
64            'addField',
65            'cx_section_translations',
66            'cxsx_translation_status',
67            "$dir/sql/$dbType/patch-new-fields-to-cx_section_translations.sql",
68            true
69        ] );
70
71        // 1.39
72        if ( $dbType === 'mysql' ) {
73            $updater->addExtensionUpdateOnVirtualDomain( [
74                ConnectionProvider::VIRTUAL_DOMAIN,
75                'modifyField',
76                'cx_lists',
77                'cxl_end_time',
78                "$dir/sql/patch-cx_lists-timestamps.sql",
79                true
80            ] );
81            $updater->addExtensionUpdateOnVirtualDomain( [
82                ConnectionProvider::VIRTUAL_DOMAIN,
83                'modifyField',
84                'cx_notification_log',
85                'cxn_newest',
86                "$dir/sql/patch-cx_notification_log-timestamps.sql",
87                true
88            ] );
89            $updater->addExtensionUpdateOnVirtualDomain( [
90                ConnectionProvider::VIRTUAL_DOMAIN,
91                'modifyField',
92                'cx_corpora',
93                'cxc_timestamp',
94                "$dir/sql/patch-cx_corpora-timestamp.sql",
95                true
96            ] );
97            $updater->addExtensionUpdateOnVirtualDomain( [
98                ConnectionProvider::VIRTUAL_DOMAIN,
99                'modifyField',
100                'cx_translations',
101                'translation_last_updated_timestamp',
102                "$dir/sql/patch-cx_translations-timestamps.sql",
103                true
104            ] );
105            $updater->addExtensionUpdateOnVirtualDomain( [
106                ConnectionProvider::VIRTUAL_DOMAIN,
107                'modifyField',
108                'cx_notification_log',
109                'cxn_wiki_id',
110                "$dir/sql/patch-tables-binary.sql",
111                true
112            ] );
113        }
114        $updater->addExtensionUpdateOnVirtualDomain( [
115            ConnectionProvider::VIRTUAL_DOMAIN,
116            'dropIndex',
117            'cx_translators',
118            'cx_translation_translators',
119            "$dir/sql/$dbType/patch-cx_translators-unique-to-pk.sql",
120            true
121        ] );
122        $updater->addExtensionUpdateOnVirtualDomain( [
123            ConnectionProvider::VIRTUAL_DOMAIN,
124            'addIndex',
125            'cx_translations',
126            'cx_translation_target_title',
127            "$dir/sql/$dbType/patch-cx_translations-target-title-index.sql",
128            true
129        ] );
130        $updater->addExtensionUpdateOnVirtualDomain( [
131            ConnectionProvider::VIRTUAL_DOMAIN,
132            'addIndex',
133            'cx_translators',
134            'cx_translators_translation_id',
135            "$dir/sql/$dbType/patch-cx_translators-index-translator_translation_id.sql",
136            true
137        ] );
138        $updater->addExtensionUpdateOnVirtualDomain( [
139            ConnectionProvider::VIRTUAL_DOMAIN,
140            'addIndex',
141            'cx_translations',
142            'cx_translations_started_by_last_updated_timestamp',
143            "$dir/sql/$dbType/patch-cx_translations-index-translation_started_by_last_updated_timestamp.sql",
144            true
145        ] );
146        $updater->addExtensionUpdateOnVirtualDomain( [
147            ConnectionProvider::VIRTUAL_DOMAIN,
148            'addIndex',
149            'cx_suggestions',
150            'cx_suggestions_source_language_title',
151            "$dir/sql/$dbType/patch-cx_suggestions-index-source_language_title.sql",
152            true
153        ] );
154        $updater->addExtensionUpdateOnVirtualDomain( [
155            ConnectionProvider::VIRTUAL_DOMAIN,
156            'addIndex',
157            'cx_lists',
158            'cx_lists_owner',
159            "$dir/sql/$dbType/patch-cx_lists-index-owner.sql",
160            true
161        ] );
162        $updater->addExtensionUpdateOnVirtualDomain( [
163            ConnectionProvider::VIRTUAL_DOMAIN,
164            'addIndex',
165            'cx_translations',
166            'cx_translations_last_update_by_last_updated_timestamp',
167            "$dir/sql/$dbType/patch-cx_translations-index-translation_last_update_by_last_updated_timestamp.sql",
168            true
169        ] );
170        $updater->addExtensionUpdateOnVirtualDomain( [
171            ConnectionProvider::VIRTUAL_DOMAIN,
172            'addIndex',
173            'cx_translations',
174            'cx_translations_last_updated_timestamp',
175            "$dir/sql/$dbType/patch-cx_translations-index-translation_last_updated_timestamp.sql",
176            true
177        ] );
178    }
179}