Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
50.00% covered (danger)
50.00%
6 / 12
66.67% covered (warning)
66.67%
4 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
RegistrationHooks
50.00% covered (danger)
50.00%
6 / 12
66.67% covered (warning)
66.67%
4 / 6
10.50
0.00% covered (danger)
0.00%
0 / 1
 registerExtension
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 onListDefinedTags
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsAllowedAdd
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsListActive
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetReservedNames
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 onLoadExtensionSchemaUpdates
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Extension\MediaUploader\Hooks;
4
5use DatabaseUpdater;
6use MediaWiki\ChangeTags\Hook\ChangeTagsAllowedAddHook;
7use MediaWiki\ChangeTags\Hook\ChangeTagsListActiveHook;
8use MediaWiki\ChangeTags\Hook\ListDefinedTagsHook;
9use MediaWiki\Extension\MediaUploader\Maintenance\MigrateCampaigns;
10use MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook;
11use MediaWiki\User\Hook\UserGetReservedNamesHook;
12
13/**
14 * Hooks loosely related to extension registration.
15 */
16class RegistrationHooks implements
17    UserGetReservedNamesHook,
18    ListDefinedTagsHook,
19    ChangeTagsListActiveHook,
20    ChangeTagsAllowedAddHook,
21    LoadExtensionSchemaUpdatesHook
22{
23    /**
24     * Change tags used in the extension.
25     */
26    public const CHANGE_TAGS = [ 'uploadwizard' ];
27
28    /**
29     * Sets up constants.
30     */
31    public static function registerExtension(): void {
32        require_once dirname( __DIR__, 2 ) . '/defines.php';
33    }
34
35    /**
36     * Lists tags used by MediaUploader (via ListDefinedTags,
37     * ListExplicitlyDefinedTags & ChangeTagsListActive hooks)
38     *
39     * @param string[] &$tags
40     *
41     * @return bool true
42     */
43    public function onListDefinedTags( &$tags ): bool {
44        $tags = array_merge( $tags, self::CHANGE_TAGS );
45        return true;
46    }
47
48    /**
49     * @inheritDoc
50     */
51    public function onChangeTagsAllowedAdd( &$allowedTags, $addTags, $user ): bool {
52        return $this->onListDefinedTags( $allowedTags );
53    }
54
55    /**
56     * @inheritDoc
57     */
58    public function onChangeTagsListActive( &$tags ): bool {
59        return $this->onListDefinedTags( $tags );
60    }
61
62    /**
63     * Reserves the 'MediaUploader' username.
64     *
65     * @param array &$reservedUsernames
66     *
67     * @return true
68     */
69    public function onUserGetReservedNames( &$reservedUsernames ): bool {
70        $reservedUsernames[] = 'MediaUploader';
71        return true;
72    }
73
74    /**
75     * @param DatabaseUpdater $updater
76     *
77     * @return true
78     */
79    public function onLoadExtensionSchemaUpdates( $updater ) {
80        $type = $updater->getDB()->getType();
81        $path = dirname( __DIR__, 2 ) . '/sql';
82
83        $updater->addExtensionTable( 'mu_campaign', "$path/$type/tables-generated.sql" );
84
85        $updater->addPostDatabaseUpdateMaintenance( MigrateCampaigns::class );
86
87        return true;
88    }
89}