* be loaded then).
*/
public function loadFromQueue() {
- global $wgVersion, $wgDevelopmentWarnings;
+ global $wgVersion, $wgDevelopmentWarnings, $wgObjectCaches;
if ( !$this->queued ) {
return;
}
// We use a try/catch because we don't want to fail here
// if $wgObjectCaches is not configured properly for APC setup
try {
- // Don't use MediaWikiServices here to prevent instantiating it before extensions have
- // been loaded
+ // Avoid MediaWikiServices to prevent instantiating it before extensions have loaded
$cacheId = ObjectCache::detectLocalServerCache();
- $cache = ObjectCache::newFromId( $cacheId );
+ $cache = ObjectCache::newFromParams( $wgObjectCaches[$cacheId] );
} catch ( InvalidArgumentException $e ) {
$cache = new EmptyBagOStuff();
}
}
$dir = dirname( $path );
- if ( isset( $info['AutoloadClasses'] ) ) {
- $autoload = $this->processAutoLoader( $dir, $info['AutoloadClasses'] );
- $GLOBALS['wgAutoloadClasses'] += $autoload;
- $autoloadClasses += $autoload;
- }
- if ( isset( $info['AutoloadNamespaces'] ) ) {
- $autoloadNamespaces += $this->processAutoLoader( $dir, $info['AutoloadNamespaces'] );
- AutoLoader::$psr4Namespaces += $autoloadNamespaces;
- }
+ self::exportAutoloadClassesAndNamespaces(
+ $dir,
+ $info,
+ $autoloadClasses,
+ $autoloadNamespaces
+ );
// get all requirements/dependencies for this extension
$requires = $processor->getRequirements( $info, $this->checkDev );
return $data;
}
+ /**
+ * Export autoload classes and namespaces for a given directory and parsed JSON info file.
+ *
+ * @param string $dir
+ * @param array $info
+ * @param array &$autoloadClasses
+ * @param array &$autoloadNamespaces
+ */
+ public static function exportAutoloadClassesAndNamespaces(
+ $dir, $info, &$autoloadClasses = [], &$autoloadNamespaces = []
+ ) {
+ if ( isset( $info['AutoloadClasses'] ) ) {
+ $autoload = self::processAutoLoader( $dir, $info['AutoloadClasses'] );
+ $GLOBALS['wgAutoloadClasses'] += $autoload;
+ $autoloadClasses += $autoload;
+ }
+ if ( isset( $info['AutoloadNamespaces'] ) ) {
+ $autoloadNamespaces += self::processAutoLoader( $dir, $info['AutoloadNamespaces'] );
+ AutoLoader::$psr4Namespaces += $autoloadNamespaces;
+ }
+ }
+
protected function exportExtractedData( array $info ) {
foreach ( $info['globals'] as $key => $val ) {
// If a merge strategy is set, read it and remove it from the value
* @param array $files
* @return array
*/
- protected function processAutoLoader( $dir, array $files ) {
+ protected static function processAutoLoader( $dir, array $files ) {
// Make paths absolute, relative to the JSON file
foreach ( $files as &$file ) {
$file = "$dir/$file";