Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
SchemaHookHandler.php
1<?php
2
3declare( strict_types=1 );
4
5namespace MediaWiki\Extension\Translate;
6
7use DatabaseUpdater;
10use MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook;
11
12class SchemaHookHandler implements LoadExtensionSchemaUpdatesHook {
13
15 public function onLoadExtensionSchemaUpdates( $updater ) {
16 $dir = dirname( __DIR__, 1 ) . '/sql';
17 $dbType = $updater->getDB()->getType();
18
19 if ( $dbType === 'mysql' || $dbType === 'sqlite' ) {
20 $updater->addExtensionTable(
21 'translate_sections',
22 "{$dir}/{$dbType}/translate_sections.sql"
23 );
24 $updater->addExtensionTable(
25 'revtag',
26 "{$dir}/{$dbType}/revtag.sql"
27 );
28 $updater->addExtensionTable(
29 'translate_groupstats',
30 "{$dir}/{$dbType}/translate_groupstats.sql"
31 );
32 $updater->addExtensionTable(
33 'translate_reviews',
34 "{$dir}/{$dbType}/translate_reviews.sql"
35 );
36 $updater->addExtensionTable(
37 'translate_groupreviews',
38 "{$dir}/{$dbType}/translate_groupreviews.sql"
39 );
40 $updater->addExtensionTable(
41 'translate_tms',
42 "{$dir}/{$dbType}/translate_tm.sql"
43 );
44 $updater->addExtensionTable(
45 'translate_metadata',
46 "{$dir}/{$dbType}/translate_metadata.sql"
47 );
48 $updater->addExtensionTable(
49 'translate_messageindex',
50 "{$dir}/{$dbType}/translate_messageindex.sql"
51 );
52 $updater->addExtensionTable(
53 'translate_stash',
54 "{$dir}/{$dbType}/translate_stash.sql"
55 );
56 $updater->addExtensionTable(
57 'translate_translatable_bundles',
58 "{$dir}/{$dbType}/translate_translatable_bundles.sql"
59 );
60 $updater->addExtensionTable(
61 'translate_message_group_subscriptions',
62 "{$dir}/{$dbType}/translate_message_group_subscriptions.sql"
63 );
64
65 $updater->addExtensionTable(
66 'translate_cache',
67 "{$dir}/{$dbType}/translate_cache.sql"
68 );
69
70 if ( $dbType === 'mysql' ) {
71 // 1.38
72 $updater->modifyExtensionField(
73 'translate_cache',
74 'tc_key',
75 "{$dir}/{$dbType}/translate_cache-alter-varbinary.sql"
76 );
77 }
78 } elseif ( $dbType === 'postgres' ) {
79 $updater->addExtensionTable(
80 'translate_sections',
81 "{$dir}/{$dbType}/tables-generated.sql"
82 );
83 $updater->addExtensionUpdate( [
84 'changeField', 'translate_cache', 'tc_exptime', 'TIMESTAMPTZ', 'th_timestamp::timestamp with time zone'
85 ] );
86 }
87
88 // 1.39
89 $updater->dropExtensionIndex(
90 'translate_messageindex',
91 'tmi_key',
92 "{$dir}/{$dbType}/patch-translate_messageindex-unique-to-pk.sql"
93 );
94 $updater->dropExtensionIndex(
95 'translate_tmt',
96 'tms_sid_lang',
97 "{$dir}/{$dbType}/patch-translate_tmt-unique-to-pk.sql"
98 );
99 $updater->dropExtensionIndex(
100 'revtag',
101 'rt_type_page_revision',
102 "{$dir}/{$dbType}/patch-revtag-unique-to-pk.sql"
103 );
104
105 // MW 1.43
106 $updater->modifyExtensionTable(
107 'revtag',
108 "{$dir}/{$dbType}/patch-revtag-int-to-bigint-unsigned.sql"
109 );
110 $updater->modifyExtensionTable(
111 'translate_reviews',
112 "{$dir}/{$dbType}/patch-translate_reviews-unsigned.sql"
113 );
114
115 $updater->addPostDatabaseUpdateMaintenance( SyncTranslatableBundleStatusMaintenanceScript::class );
116 $updater->addPostDatabaseUpdateMaintenance( RemoveRedundantMessageGroupMetadataMaintenanceScript::class );
117 }
118}
Script to identify the status of the translatable bundles in the rev_tag table and update them in the...