* @var array
*/
protected $envPreps = array(
- 'envPrepExtension',
'envPrepServer',
'envPrepPath',
);
'wgGitBin',
'IP',
'wgScriptPath',
- 'wgScriptExtension',
'wgMetaNamespace',
'wgDeletedDirectory',
'wgEnableUploads',
// $wgLogo is probably wrong (bug 48084); set something that will work.
// Single quotes work fine here, as LocalSettingsGenerator outputs this unescaped.
- 'wgLogo' => '$wgScriptPath/resources/assets/wiki.png',
+ 'wgLogo' => '$wgResourceBasePath/resources/assets/wiki.png',
);
/**
public $licenses = array(
'cc-by' => array(
'url' => 'https://creativecommons.org/licenses/by/3.0/',
- 'icon' => '{$wgResourceBasePath}/resources/assets/licenses/cc-by.png',
+ 'icon' => '$wgResourceBasePath/resources/assets/licenses/cc-by.png',
),
'cc-by-sa' => array(
'url' => 'https://creativecommons.org/licenses/by-sa/3.0/',
- 'icon' => '{$wgResourceBasePath}/resources/assets/licenses/cc-by-sa.png',
+ 'icon' => '$wgResourceBasePath/resources/assets/licenses/cc-by-sa.png',
),
'cc-by-nc-sa' => array(
'url' => 'https://creativecommons.org/licenses/by-nc-sa/3.0/',
- 'icon' => '{$wgResourceBasePath}/resources/assets/licenses/cc-by-nc-sa.png',
+ 'icon' => '$wgResourceBasePath/resources/assets/licenses/cc-by-nc-sa.png',
),
'cc-0' => array(
'url' => 'https://creativecommons.org/publicdomain/zero/1.0/',
- 'icon' => '{$wgResourceBasePath}/resources/assets/licenses/cc-0.png',
+ 'icon' => '$wgResourceBasePath/resources/assets/licenses/cc-0.png',
),
'pd' => array(
'url' => '',
- 'icon' => '{$wgResourceBasePath}/resources/assets/licenses/public-domain.png',
+ 'icon' => '$wgResourceBasePath/resources/assets/licenses/public-domain.png',
),
'gfdl' => array(
'url' => 'https://www.gnu.org/copyleft/fdl.html',
- 'icon' => '{$wgResourceBasePath}/resources/assets/licenses/gnu-fdl.png',
+ 'icon' => '$wgResourceBasePath/resources/assets/licenses/gnu-fdl.png',
),
'none' => array(
'url' => '',
global $wgAutoloadClasses;
$wgAutoloadClasses = array();
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$_lsExists = file_exists( "$IP/LocalSettings.php" );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( !$_lsExists ) {
return false;
* @return bool
*/
protected function envCheckPCRE() {
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$regexd = preg_replace( '/[\x{0430}-\x{04FF}]/iu', '', '-АБВГД-' );
// Need to check for \p support too, as PCRE can be compiled
// with utf8 support, but not unicode property support.
// check that \p{Zs} (space separators) matches
// U+3000 (Ideographic space)
$regexprop = preg_replace( '/\p{Zs}/u', '', "-\xE3\x80\x80-" );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $regexd != '--' || $regexprop != '--' ) {
$this->showError( 'config-pcre-no-utf8' );
*/
abstract protected function envGetDefaultServer();
- /**
- * Environment prep for setting the preferred PHP file extension.
- */
- protected function envPrepExtension() {
- // @todo FIXME: Detect this properly
- if ( defined( 'MW_INSTALL_PHP5_EXT' ) ) {
- $ext = '.php5';
- } else {
- $ext = '.php';
- }
- $this->setVar( 'wgScriptExtension', $ext );
- }
-
/**
* Environment prep for setting $IP and $wgScriptPath.
*/
foreach ( $names as $name ) {
$command = $path . DIRECTORY_SEPARATOR . $name;
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$file_exists = file_exists( $command );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $file_exists ) {
if ( !$versionInfo ) {
// it would be good to check other popular languages here, but it'll be slow.
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
foreach ( $scriptTypes as $ext => $contents ) {
foreach ( $contents as $source ) {
unlink( $dir . $file );
if ( $text == 'exec' ) {
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
return $ext;
}
}
}
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
return false;
}
return array();
}
+ // extensions -> extension.json, skins -> skin.json
+ $jsonFile = substr( $directory, 0, strlen( $directory ) -1 ) . '.json';
+
$dh = opendir( $extDir );
$exts = array();
while ( ( $file = readdir( $dh ) ) !== false ) {
if ( !is_dir( "$extDir/$file" ) ) {
continue;
}
- if ( file_exists( "$extDir/$file/$file.php" ) ) {
+ if ( file_exists( "$extDir/$file/$jsonFile" ) || file_exists( "$extDir/$file/$file.php" ) ) {
$exts[] = $file;
}
}
*/
global $wgAutoloadClasses;
$wgAutoloadClasses = array();
+ $queue = array();
require "$IP/includes/DefaultSettings.php";
foreach ( $exts as $e ) {
- require_once "$IP/extensions/$e/$e.php";
+ if ( file_exists( "$IP/extensions/$e/extension.json" ) ) {
+ $queue["$IP/extensions/$e/extension.json"] = 1;
+ } else {
+ require_once "$IP/extensions/$e/$e.php";
+ }
}
+ $registry = new ExtensionRegistry();
+ $data = $registry->readFromQueue( $queue );
+ $wgAutoloadClasses += $data['autoload'];
+
$hooksWeWant = isset( $wgHooks['LoadExtensionSchemaUpdates'] ) ?
$wgHooks['LoadExtensionSchemaUpdates'] : array();
+ if ( isset( $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
+ $hooksWeWant = array_merge_recursive(
+ $hooksWeWant,
+ $data['globals']['wgHooks']['LoadExtensionSchemaUpdates']
+ );
+ }
// Unset everyone else's hooks. Lord knows what someone might be doing
// in ParserFirstCallInit (see bug 27171)
$GLOBALS['wgHooks'] = array( 'LoadExtensionSchemaUpdates' => $hooksWeWant );
* Some long-running pages (Install, Upgrade) will want to do this
*/
protected function disableTimeLimit() {
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
set_time_limit( 0 );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
}
}