jenkins-bot has submitted this change and it was merged.

Change subject: Use extension registration, replace constants with some 
reasonable values, kill i18n shim
......................................................................


Use extension registration, replace constants with some reasonable values, kill 
i18n shim

Bug: T87982
Change-Id: I9ab045da49179618d7c5558b2b066fba2736ae6e
(cherry picked from commit d372b43a75c068d9c07583cfbe9464639eaa2caf)
---
M TitleBlacklist.hooks.php
D TitleBlacklist.i18n.php
M TitleBlacklist.list.php
M TitleBlacklist.php
A extension.json
M tests/ApiQueryTitleBlacklistTest.php
6 files changed, 156 insertions(+), 151 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/TitleBlacklist.hooks.php b/TitleBlacklist.hooks.php
index 7e342d9..34be8eb 100644
--- a/TitleBlacklist.hooks.php
+++ b/TitleBlacklist.hooks.php
@@ -249,4 +249,29 @@
                        $logEntry->publish( $logid );
                }
        }
+
+       /**
+        * Add phpunit tests
+        *
+        * @param array &$files List of test cases and directories to search
+        * @return bool
+        */
+       public static function unitTestsList( &$files ) {
+               $files = array_merge( $files, glob( __DIR__ . 
'/tests/*Test.php' ) );
+               return true;
+       }
+
+       /**
+        * External Lua library for Scribunto
+        *
+        * @param string $engine
+        * @param array $extraLibraries
+        * @return bool
+        */
+       public static function scribuntoExternalLibraries( $engine, array 
&$extraLibraries ) {
+               if( $engine == 'lua' ) {
+                       $extraLibraries['mw.ext.TitleBlacklist'] = 
'Scribunto_LuaTitleBlacklistLibrary';
+               }
+               return true;
+       }
 }
diff --git a/TitleBlacklist.i18n.php b/TitleBlacklist.i18n.php
deleted file mode 100644
index 2b75136..0000000
--- a/TitleBlacklist.i18n.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * This is a backwards-compatibility shim, generated by:
- * 
https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php
- *
- * Beginning with MediaWiki 1.23, translation strings are stored in json files,
- * and the EXTENSION.i18n.php file only exists to provide compatibility with
- * older releases of MediaWiki. For more information about this migration, see:
- * https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format
- *
- * This shim maintains compatibility back to MediaWiki 1.17.
- */
-$messages = array();
-if ( !function_exists( 'wfJsonI18nShimc2acbcab55cdf68b' ) ) {
-       function wfJsonI18nShimc2acbcab55cdf68b( $cache, $code, &$cachedData ) {
-               $codeSequence = array_merge( array( $code ), 
$cachedData['fallbackSequence'] );
-               foreach ( $codeSequence as $csCode ) {
-                       $fileName = dirname( __FILE__ ) . "/i18n/$csCode.json";
-                       if ( is_readable( $fileName ) ) {
-                               $data = FormatJson::decode( file_get_contents( 
$fileName ), true );
-                               foreach ( array_keys( $data ) as $key ) {
-                                       if ( $key === '' || $key[0] === '@' ) {
-                                               unset( $data[$key] );
-                                       }
-                               }
-                               $cachedData['messages'] = array_merge( $data, 
$cachedData['messages'] );
-                       }
-
-                       $cachedData['deps'][] = new FileDependency( $fileName );
-               }
-               return true;
-       }
-
-       $GLOBALS['wgHooks']['LocalisationCacheRecache'][] = 
'wfJsonI18nShimc2acbcab55cdf68b';
-}
diff --git a/TitleBlacklist.list.php b/TitleBlacklist.list.php
index bc0b93f..a9578a5 100644
--- a/TitleBlacklist.list.php
+++ b/TitleBlacklist.list.php
@@ -46,7 +46,7 @@
                }
 
                $sources = $wgTitleBlacklistSources;
-               $sources['local'] = array( 'type' => TBLSRC_MSG );
+               $sources['local'] = array( 'type' => 'message' );
                $this->mBlacklist = array();
                foreach( $sources as $sourceName => $source ) {
                        $this->mBlacklist = array_merge( $this->mBlacklist, 
$this->parseBlacklist( $this->getBlacklistText( $source ), $sourceName ) );
@@ -82,9 +82,9 @@
                        return '';      // Return empty string in error case
                }
 
-               if ( $source['type'] == TBLSRC_MSG ) {
+               if ( $source['type'] == 'message' ) {
                        return wfMessage( 'titleblacklist' 
)->inContentLanguage()->text();
-               } elseif ( $source['type'] == TBLSRC_LOCALPAGE && count( 
$source ) >= 2 ) {
+               } elseif ( $source['type'] == 'localpage' && count( $source ) 
>= 2 ) {
                        $title = Title::newFromText( $source['src'] );
                        if ( is_null( $title ) ) {
                                return '';
@@ -103,9 +103,9 @@
                                        return $article->getContent();
                                }
                        }
-               } elseif ( $source['type'] == TBLSRC_URL && count( $source ) >= 
2 ) {
+               } elseif ( $source['type'] == 'url' && count( $source ) >= 2 ) {
                        return self::getHttp( $source['src'] );
-               } elseif ( $source['type'] == TBLSRC_FILE && count( $source ) 
>= 2 ) {
+               } elseif ( $source['type'] == 'file' && count( $source ) >= 2 ) 
{
                        if ( file_exists( $source['src'] ) ) {
                                return file_get_contents( $source['src'] );
                        } else {
diff --git a/TitleBlacklist.php b/TitleBlacklist.php
index f517c33..c66a760 100644
--- a/TitleBlacklist.php
+++ b/TitleBlacklist.php
@@ -1,112 +1,23 @@
 <?php
-if ( !defined( 'MEDIAWIKI' ) ) {
-       exit( 1 );
+
+if ( function_exists( 'wfLoadExtension' ) ) {
+
+       /** @defgroup Title blacklist source types
+        *  @deprecated Use values directly instead.
+        */
+       define( 'TBLSRC_MSG', 'message' ); ///< For internal usage
+       define( 'TBLSRC_LOCALPAGE', 'localpage' ); ///< Local wiki page
+       define( 'TBLSRC_URL', 'url' ); ///< Load blacklist from URL
+       define( 'TBLSRC_FILE', 'file' ); ///< Load from file
+
+       wfLoadExtension( 'TitleBlacklist' );
+       // Keep i18n globals so mergeMessageFileList.php doesn't break
+       $wgMessagesDirs['TitleBlacklist'] = __DIR__ . '/i18n';
+       /* wfWarn(
+               'Deprecated PHP entry point used for TitleBlacklist extension. 
Please use wfLoadExtension instead, ' .
+               'see https://www.mediawiki.org/wiki/Extension_registration for 
more details.'
+       ); */
+       return;
+} else {
+       die( 'This version of the TitleBlacklist extension requires MediaWiki 
1.25+' );
 }
-
-// @{
-/**
- * @file
- * @ingroup Extensions
- */
-
-$wgExtensionCredits['antispam'][] = array(
-       'path'           => __FILE__,
-       'name'           => 'Title Blacklist',
-       'author'         => array( 'Victor Vasiliev', 'Fran Rogers' ),
-       'version'        => '1.5.0',
-       'url'            => 
'https://www.mediawiki.org/wiki/Extension:Title_Blacklist',
-       'descriptionmsg' => 'titleblacklist-desc',
-       'license-name'   => 'GPL-2.0+',
-);
-
-$dir = __DIR__;
-$wgMessagesDirs['TitleBlacklist'] = __DIR__ . '/i18n';
-$wgExtensionMessagesFiles['TitleBlacklist'] = $dir . 
'/TitleBlacklist.i18n.php';
-$wgAutoloadClasses['TitleBlacklist'] = $dir . '/TitleBlacklist.list.php';
-$wgAutoloadClasses['TitleBlacklistEntry'] = $dir . '/TitleBlacklist.list.php';
-$wgAutoloadClasses['TitleBlacklistHooks'] = $dir . '/TitleBlacklist.hooks.php';
-$wgAutoloadClasses['Scribunto_LuaTitleBlacklistLibrary'] = $dir . 
'/TitleBlacklist.library.php';
-
-/** @defgroup Title blacklist source types
- *  @{
- */
-define( 'TBLSRC_MSG', 0 ); ///< For internal usage
-define( 'TBLSRC_LOCALPAGE', 1 ); ///< Local wiki page
-define( 'TBLSRC_URL', 2 ); ///< Load blacklist from URL
-define( 'TBLSRC_FILE', 3 ); ///< Load from file
-/** @} */
-
-/**
- * Array of title blacklist sources.
- *
- * Should be in array( name => source description ) format.
- * See extension documentation for details of source description.
- */
-$wgTitleBlacklistSources = array();
-
-/**
- * Sets the sources which may work as a username filter.
- *
- * '*' is for all; false disables all.
- *
- * If you want to limit it to particular sources, use
- * array( source name 1, source name 2 ).
- * This may be useful when you have shared account creation system
- * in order to avoid blacklist fragmentation.
- */
-$wgTitleBlacklistUsernameSources = '*';
-
-/**
- * Log blacklist hits to Special:Log
- */
-$wgTitleBlacklistLogHits = false;
-
-$wgTitleBlacklistCaching = array(
-       'warningchance' => 100,
-       'expiry' => 900,
-       'warningexpiry' => 600,
-);
-
-$dir = dirname( __FILE__ );
-
-// Register the API method
-$wgAutoloadClasses['ApiQueryTitleBlacklist'] = 
"$dir/api/ApiQueryTitleBlacklist.php";
-$wgAPIModules['titleblacklist'] = 'ApiQueryTitleBlacklist';
-
-$wgAvailableRights[] = 'tboverride'; // Implies tboverride-account
-$wgAvailableRights[] = 'tboverride-account'; // For account creation
-$wgGroupPermissions['sysop']['tboverride'] = true;
-
-$wgHooks['getUserPermissionsErrorsExpensive'][] = 
'TitleBlacklistHooks::userCan';
-$wgHooks['TitleGetEditNotices'][] = 
'TitleBlacklistHooks::displayBlacklistOverrideNotice';
-$wgHooks['AbortMove'][] = 'TitleBlacklistHooks::abortMove';
-$wgHooks['MovePageCheckPermissions'][] = 
'TitleBlacklistHooks::onMovePageCheckPermissions';
-$wgHooks['AbortNewAccount'][] = 'TitleBlacklistHooks::abortNewAccount';
-$wgHooks['AbortAutoAccount'][] = 'TitleBlacklistHooks::abortNewAccount';
-$wgHooks['EditFilter'][] = 'TitleBlacklistHooks::validateBlacklist';
-$wgHooks['ArticleSaveComplete'][] = 'TitleBlacklistHooks::clearBlacklist';
-$wgHooks['UserCreateForm'][] = 'TitleBlacklistHooks::addOverrideCheckbox';
-$wgHooks['UnitTestsList'][] = function( &$files ) {
-       $files = array_merge( $files, glob( __DIR__ . '/tests/*Test.php' ) );
-       return true;
-};
-$wgHooks['ScribuntoExternalLibraries'][] = function( $engine, array 
&$extraLibraries ) {
-       if( $engine == 'lua' ) {
-               $extraLibraries['mw.ext.TitleBlacklist'] = 
'Scribunto_LuaTitleBlacklistLibrary';
-       }
-       return true;
-};
-
-$wgLogTypes[] = 'titleblacklist';
-$wgLogActionsHandlers['titleblacklist/*'] = 'LogFormatter';
-$wgLogRestrictions['titleblacklist'] = 'titleblacklistlog';
-$wgGroupPermissions['sysop']['titleblacklistlog'] = true;
-$wgAvailableRights[] = 'titleblacklistlog';
-
-$wgResourceModules['mediawiki.api.titleblacklist'] = array(
-       'scripts' => 'mediawiki.api.titleblacklist.js',
-       'localBasePath' => $dir . '/modules',
-       'remoteExtPath' => 'TitleBlacklist/modules',
-       'dependencies' => array( 'mediawiki.api' ),
-);
-// @}
diff --git a/extension.json b/extension.json
new file mode 100644
index 0000000..2e64802
--- /dev/null
+++ b/extension.json
@@ -0,0 +1,104 @@
+{
+       "name": "Title Blacklist",
+       "version": "1.5.0",
+       "author": [
+               "Victor Vasiliev",
+               "Fran Rogers"
+       ],
+       "url": "https://www.mediawiki.org/wiki/Extension:Title_Blacklist";,
+       "descriptionmsg": "titleblacklist-desc",
+       "license-name": "GPL-2.0+",
+       "type": "antispam",
+       "GroupPermissions": {
+               "sysop": {
+                       "tboverride": true,
+                       "titleblacklistlog": true
+               }
+       },
+       "AvailableRights": [
+               "tboverride",
+               "tboverride-account",
+               "titleblacklistlog"
+       ],
+       "LogTypes": [
+               "titleblacklist"
+       ],
+       "LogRestrictions": {
+               "titleblacklist": "titleblacklistlog"
+       },
+       "LogActionsHandlers": {
+               "titleblacklist/*": "LogFormatter"
+       },
+       "APIModules": {
+               "titleblacklist": "ApiQueryTitleBlacklist"
+       },
+       "MessagesDirs": {
+               "TitleBlacklist": [
+                       "i18n"
+               ]
+       },
+       "AutoloadClasses": {
+               "TitleBlacklist": "TitleBlacklist.list.php",
+               "TitleBlacklistEntry": "TitleBlacklist.list.php",
+               "TitleBlacklistHooks": "TitleBlacklist.hooks.php",
+               "Scribunto_LuaTitleBlacklistLibrary": 
"TitleBlacklist.library.php",
+               "ApiQueryTitleBlacklist": "api/ApiQueryTitleBlacklist.php"
+       },
+       "ResourceModules": {
+               "mediawiki.api.titleblacklist": {
+                       "scripts": "mediawiki.api.titleblacklist.js",
+                       "dependencies": [
+                               "mediawiki.api"
+                       ]
+               }
+       },
+       "ResourceFileModulePaths": {
+               "localBasePath": "modules",
+               "remoteExtPath": "TitleBlacklist/modules"
+       },
+       "Hooks": {
+               "getUserPermissionsErrorsExpensive": [
+                       "TitleBlacklistHooks::userCan"
+               ],
+               "TitleGetEditNotices": [
+                       "TitleBlacklistHooks::displayBlacklistOverrideNotice"
+               ],
+               "AbortMove": [
+                       "TitleBlacklistHooks::abortMove"
+               ],
+               "MovePageCheckPermissions": [
+                       "TitleBlacklistHooks::onMovePageCheckPermissions"
+               ],
+               "AbortNewAccount": [
+                       "TitleBlacklistHooks::abortNewAccount"
+               ],
+               "AbortAutoAccount": [
+                       "TitleBlacklistHooks::abortNewAccount"
+               ],
+               "EditFilter": [
+                       "TitleBlacklistHooks::validateBlacklist"
+               ],
+               "ArticleSaveComplete": [
+                       "TitleBlacklistHooks::clearBlacklist"
+               ],
+               "UserCreateForm": [
+                       "TitleBlacklistHooks::addOverrideCheckbox"
+               ],
+               "UnitTestsList": [
+                       "TitleBlacklistHooks::unitTestsList"
+               ],
+               "ScribuntoExternalLibraries": [
+                       "TitleBlacklistHooks::scribuntoExternalLibraries"
+               ]
+       },
+       "config": {
+               "TitleBlacklistSources": [],
+               "TitleBlacklistUsernameSources": "*",
+               "TitleBlacklistLogHits": false,
+               "TitleBlacklistCaching": {
+                       "warningchance": 100,
+                       "expiry": 900,
+                       "warningexpiry": 600
+               }
+       }
+}
diff --git a/tests/ApiQueryTitleBlacklistTest.php 
b/tests/ApiQueryTitleBlacklistTest.php
index 953cdfc..734fec7 100644
--- a/tests/ApiQueryTitleBlacklistTest.php
+++ b/tests/ApiQueryTitleBlacklistTest.php
@@ -25,7 +25,7 @@
 
                $wgTitleBlacklistSources = array(
                        array(
-                               'type' => TBLSRC_FILE,
+                               'type' => 'file',
                                'src'  => __DIR__ . '/testSource',
                        ),
                );

-- 
To view, visit https://gerrit.wikimedia.org/r/212317
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9ab045da49179618d7c5558b2b066fba2736ae6e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/TitleBlacklist
Gerrit-Branch: REL1_25
Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: Alex Monk <kren...@gmail.com>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to