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