Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 50
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
InstallHandler
0.00% covered (danger)
0.00%
0 / 50
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
 onLoadExtensionSchemaUpdates
0.00% covered (danger)
0.00%
0 / 50
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace MediaWiki\Extension\SecurePoll\HookHandler;
4
5use MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook;
6
7class InstallHandler implements LoadExtensionSchemaUpdatesHook {
8    /**
9     * @inheritDoc
10     */
11    public function onLoadExtensionSchemaUpdates( $updater ) {
12        $base = dirname( dirname( __DIR__ ) );
13        $type = $updater->getDB()->getType();
14
15        $updater->addExtensionTable( 'securepoll_entity', "$base/sql/$type/tables-generated.sql" );
16
17        switch ( $type ) {
18            case 'mysql':
19                // 1.39
20                $updater->modifyExtensionField(
21                    'securepoll_elections',
22                    'el_end_date',
23                    "$base/sql/$type/patch-securepoll_elections-timestamps.sql"
24                );
25                $updater->modifyExtensionField(
26                    'securepoll_votes',
27                    'vote_timestamp',
28                    "$base/sql/$type/patch-securepoll_votes-timestamp.sql"
29                );
30                $updater->modifyExtensionField(
31                    'securepoll_strike',
32                    'st_timestamp',
33                    "$base/sql/$type/patch-securepoll_strike-timestamp.sql"
34                );
35                $updater->modifyExtensionField(
36                    'securepoll_cookie_match',
37                    'cm_timestamp',
38                    "$base/sql/$type/patch-securepoll_cookie_match-timestamp.sql"
39                );
40                break;
41            case 'postgres':
42                // 1.39
43                $updater->addExtensionUpdate( [
44                    'changeField',
45                    'securepoll_votes', 'vote_timestamp', 'TIMESTAMPTZ', 'th_timestamp::timestamp with time zone'
46                ] );
47                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_msgs', 'msg_entity' ] );
48                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_elections', 'msg_entel_entityity' ] );
49                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_voters', 'voter_election' ] );
50                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_votes', 'vote_election' ] );
51                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_votes', 'vote_voter' ] );
52                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_strike', 'st_vote' ] );
53                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_cookie_match', 'cm_election' ] );
54                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_cookie_match', 'cm_voter_1' ] );
55                $updater->addExtensionUpdate( [ 'dropFkey', 'securepoll_cookie_match', 'cm_voter_2' ] );
56                $updater->dropExtensionIndex(
57                    'securepoll_msgs', 'securepoll_msgs_pkey', "$base/sql/$type/patch-securepoll_msgs-drop-pk.sql"
58                );
59                break;
60        }
61
62        // 1.40
63        $updater->dropExtensionIndex(
64            'securepoll_msgs', 'spmsg_entity', "$base/sql/$type/patch-securepoll_msgs-unique-to-pk.sql"
65        );
66        $updater->dropExtensionIndex(
67            'securepoll_properties', 'sppr_entity', "$base/sql/$type/patch-securepoll_properties-unique-to-pk.sql"
68        );
69
70        $updater->addPostDatabaseUpdateMaintenance( \UpdateNotBlockedKey::class );
71    }
72}