/**
* Bump whenever the registration cache needs resetting
*/
- const CACHE_VERSION = 5;
+ const CACHE_VERSION = 6;
/**
* Special key that defines the merge strategy
*/
const MERGE_STRATEGY = '_merge_strategy';
- /**
- * @var BagOStuff
- */
- protected $cache;
-
/**
* Array of loaded things, keyed by name, values are credits information
*
return self::$instance;
}
- public function __construct() {
- // We use a try/catch because we don't want to fail here
- // if $wgObjectCaches is not configured properly for APC setup
- try {
- $this->cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
- } catch ( MWException $e ) {
- $this->cache = new EmptyBagOStuff();
- }
- }
-
/**
* @param string $path Absolute path to the JSON file
*/
* be loaded then).
*/
public function loadFromQueue() {
- global $wgVersion;
+ global $wgVersion, $wgDevelopmentWarnings;
if ( !$this->queued ) {
return;
}
'mediawiki' => $wgVersion
];
+ // We use a try/catch because we don't want to fail here
+ // if $wgObjectCaches is not configured properly for APC setup
+ try {
+ $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
+ } catch ( MWException $e ) {
+ $cache = new EmptyBagOStuff();
+ }
// See if this queue is in APC
- $key = wfMemcKey(
+ $key = $cache->makeKey(
'registration',
md5( json_encode( $this->queued + $versions ) )
);
- $data = $this->cache->get( $key );
+ $data = $cache->get( $key );
if ( $data ) {
$this->exportExtractedData( $data );
} else {
// did that, but it should be cached
$data['globals']['wgAutoloadClasses'] += $data['autoload'];
unset( $data['autoload'] );
- $this->cache->set( $key, $data, 60 * 60 * 24 );
+ if ( !( $data['warnings'] && $wgDevelopmentWarnings ) ) {
+ // If there were no warnings that were shown, cache it
+ $cache->set( $key, $data, 60 * 60 * 24 );
+ }
}
$this->queued = [];
}
$versionChecker = new VersionChecker( $wgVersion );
$extDependencies = [];
$incompatible = [];
+ $warnings = false;
foreach ( $queue as $path => $mtime ) {
$json = file_get_contents( $path );
if ( $json === false ) {
}
if ( !isset( $info['manifest_version'] ) ) {
+ wfDeprecated(
+ "{$info['name']}'s extension.json or skin.json does not have manifest_version",
+ '1.29'
+ );
+ $warnings = true;
// For backwards-compatability, assume a version of 1
$info['manifest_version'] = 1;
}
$processor->extractInfo( $path, $info, $version );
}
$data = $processor->getExtractedInfo();
+ $data['warnings'] = $warnings;
// check for incompatible extensions
$incompatible = array_merge(