Add extensions.json, empty PHP entry point, remove i18n shim

Bug: T88059
Change-Id: I730a2012609f7dfac3d49012ae14038e6bcac3ae
This commit is contained in:
paladox 2015-05-05 22:44:21 +02:00
parent 217c0132c7
commit 5d882775f6
4 changed files with 104 additions and 110 deletions

View file

@ -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( 'wfJsonI18nShime2760ddac42b5b1c' ) ) {
function wfJsonI18nShime2760ddac42b5b1c( $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'][] = 'wfJsonI18nShime2760ddac42b5b1c';
}

View file

@ -1,77 +1,13 @@
<?php
# Loader for spam blacklist feature
# Include this from LocalSettings.php
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
if ( function_exists( 'wfLoadExtension' ) ) {
wfLoadExtension( 'SpamBlacklist' );
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['SpamBlackList'] = __DIR__ . '/i18n';
/* wfWarn(
'Deprecated PHP entry point used for SpamBlacklist extension. Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
); */
return;
} else {
die( 'This version of the SpamBlacklist extension requires MediaWiki 1.25+' );
}
$wgExtensionCredits['antispam'][] = array(
'path' => __FILE__,
'name' => 'SpamBlacklist',
'author' => array( 'Tim Starling', 'John Du Hart', 'Daniel Kinzler' ),
'url' => 'https://www.mediawiki.org/wiki/Extension:SpamBlacklist',
'descriptionmsg' => 'spam-blacklist-desc',
);
$dir = __DIR__ . '/';
$wgMessagesDirs['SpamBlackList'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['SpamBlackList'] = $dir . 'SpamBlacklist.i18n.php';
// Register the API method
$wgAutoloadClasses['ApiSpamBlacklist'] = "$dir/api/ApiSpamBlacklist.php";
$wgAPIModules['spamblacklist'] = 'ApiSpamBlacklist';
/**
* Array of settings for blacklist classes
*/
$wgBlacklistSettings = array(
'spam' => array(
'files' => array( "https://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1" )
)
);
/**
* Log blacklist hits to Special:Log
*/
$wgLogSpamBlacklistHits = false;
/**
* @deprecated
*/
$wgSpamBlacklistFiles =& $wgBlacklistSettings['spam']['files'];
/**
* @deprecated
*/
$wgSpamBlacklistSettings =& $wgBlacklistSettings['spam'];
if ( !defined( 'MW_SUPPORTS_CONTENTHANDLER' ) ) {
die( "This version of SpamBlacklist requires a version of MediaWiki that supports the ContentHandler facility (supported since MW 1.21)." );
}
// filter pages on save
$wgHooks['EditFilterMergedContent'][] = 'SpamBlacklistHooks::filterMergedContent';
$wgHooks['APIEditBeforeSave'][] = 'SpamBlacklistHooks::filterAPIEditBeforeSave';
// editing filter rules
$wgHooks['EditFilter'][] = 'SpamBlacklistHooks::validate';
$wgHooks['PageContentSaveComplete'][] = 'SpamBlacklistHooks::pageSaveContent';
// email filters
$wgHooks['UserCanSendEmail'][] = 'SpamBlacklistHooks::userCanSendEmail';
$wgHooks['AbortNewAccount'][] = 'SpamBlacklistHooks::abortNewAccount';
$wgAutoloadClasses['BaseBlacklist'] = $dir . 'BaseBlacklist.php';
$wgAutoloadClasses['EmailBlacklist'] = $dir . 'EmailBlacklist.php';
$wgAutoloadClasses['SpamBlacklistHooks'] = $dir . 'SpamBlacklistHooks.php';
$wgAutoloadClasses['SpamBlacklist'] = $dir . 'SpamBlacklist_body.php';
$wgAutoloadClasses['SpamRegexBatch'] = $dir . 'SpamRegexBatch.php';
$wgLogTypes[] = 'spamblacklist';
$wgLogActionsHandlers['spamblacklist/*'] = 'LogFormatter';
$wgLogRestrictions['spamblacklist'] = 'spamblacklistlog';
$wgGroupPermissions['sysop']['spamblacklistlog'] = true;
$wgAvailableRights[] = 'spamblacklistlog';

View file

@ -4,6 +4,30 @@
* Hooks for the spam blacklist extension
*/
class SpamBlacklistHooks {
/**
* T99257: Extension registration does not properly support 2d arrays so set it as a global for now
*/
public static function registerExtension() {
global $wgSpamBlacklistFiles, $wgBlacklistSettings, $wgSpamBlacklistSettings;
$wgBlacklistSettings = array(
'spam' => array(
'files' => array( "https://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1" )
)
);
/**
* @deprecated
*/
$wgSpamBlacklistFiles =& $wgBlacklistSettings['spam']['files'];
/**
* @deprecated
*/
$wgSpamBlacklistSettings =& $wgBlacklistSettings['spam'];
}
/**
* Hook function for EditFilterMergedContent
*

69
extension.json Normal file
View file

@ -0,0 +1,69 @@
{
"name": "SpamBlacklist",
"author": [
"Tim Starling",
"John Du Hart",
"Daniel Kinzler"
],
"url": "https://www.mediawiki.org/wiki/Extension:SpamBlacklist",
"descriptionmsg": "spam-blacklist-desc",
"type": "antispam",
"callback": "SpamBlacklistHooks::registerExtension",
"GroupPermissions": {
"sysop": {
"spamblacklistlog": true
}
},
"AvailableRights": [
"spamblacklistlog"
],
"LogTypes": [
"spamblacklist"
],
"LogRestrictions": {
"spamblacklist": "spamblacklistlog"
},
"LogActionsHandlers": {
"spamblacklist/*": "LogFormatter"
},
"APIModules": {
"spamblacklist": "ApiSpamBlacklist"
},
"MessagesDirs": {
"SpamBlackList": [
"i18n"
]
},
"AutoloadClasses": {
"ApiSpamBlacklist": "api/ApiSpamBlacklist.php",
"BaseBlacklist": "BaseBlacklist.php",
"EmailBlacklist": "EmailBlacklist.php",
"SpamBlacklistHooks": "SpamBlacklistHooks.php",
"SpamBlacklist": "SpamBlacklist_body.php",
"SpamRegexBatch": "SpamRegexBatch.php"
},
"Hooks": {
"EditFilterMergedContent": [
"SpamBlacklistHooks::filterMergedContent"
],
"APIEditBeforeSave": [
"SpamBlacklistHooks::filterAPIEditBeforeSave"
],
"EditFilter": [
"SpamBlacklistHooks::validate"
],
"PageContentSaveComplete": [
"SpamBlacklistHooks::pageSaveContent"
],
"UserCanSendEmail": [
"SpamBlacklistHooks::userCanSendEmail"
],
"AbortNewAccount": [
"SpamBlacklistHooks::abortNewAccount"
]
},
"config": {
"@doc": "BlacklistSettings are set in SpamBlacklistHooks.php",
"LogSpamBlacklistHits": false
}
}