} elseif ( substr( $url, 0, 1 ) == '/' ) {
// If $serverUrl is protocol-relative, prepend $defaultProtoWithoutSlashes,
// otherwise leave it alone.
- $url = ( $serverHasProto ? '' : $defaultProtoWithoutSlashes ) . $serverUrl . $url;
+ if ( $serverHasProto ) {
+ $url = $serverUrl . $url;
+ } else {
+ // If an HTTPS URL is synthesized from a protocol-relative $wgServer, allow the
+ // user to override the port number (T67184)
+ if ( $defaultProto === PROTO_HTTPS && $wgHttpsPort != 443 ) {
+ if ( isset( $bits['port'] ) ) {
+ throw new Exception( 'A protocol-relative $wgServer may not contain a port number' );
+ }
+ $url = $defaultProtoWithoutSlashes . $serverUrl . ':' . $wgHttpsPort . $url;
+ } else {
+ $url = $defaultProtoWithoutSlashes . $serverUrl . $url;
+ }
+ }
}
$bits = wfParseUrl( $url );
- // ensure proper port for HTTPS arrives in URL
- // https://phabricator.wikimedia.org/T67184
- if ( $defaultProto === PROTO_HTTPS && $wgHttpsPort != 443 ) {
- $bits['port'] = $wgHttpsPort;
- }
-
if ( $bits && isset( $bits['path'] ) ) {
$bits['path'] = wfRemoveDotSegments( $bits['path'] );
return wfAssembleUrl( $bits );
return false;
}
+/**
+ * Get the wiki's "server", i.e. the protocol and host part of the URL, with a
+ * protocol specified using a PROTO_* constant as in wfExpandUrl()
+ *
+ * @since 1.32
+ * @param string|int|null $proto One of the PROTO_* constants.
+ * @return string The URL
+ */
+function wfGetServerUrl( $proto ) {
+ $url = wfExpandUrl( '/', $proto );
+ return substr( $url, 0, -1 );
+}
+
/**
* This function will reassemble a URL parsed with wfParseURL. This is useful
* if you need to edit part of a URL and put it back together.
return $langcode;
}
- global $wgContLang, $wgLanguageCode;
+ global $wgLanguageCode;
if ( $langcode === true || $langcode === $wgLanguageCode ) {
# $langcode is the language code of the wikis content language object.
# or it is a boolean and value is true
- return $wgContLang;
+ return MediaWikiServices::getInstance()->getContentLanguage();
}
global $wgLang;
# $langcode is a string, but not a valid language code; use content language.
wfDebug( "Invalid language code passed to wfGetLangObj, falling back to content language.\n" );
- return $wgContLang;
+ return MediaWikiServices::getInstance()->getContentLanguage();
}
/**
function wfUseMW( $req_ver ) {
global $wgVersion;
+ wfDeprecated( __FUNCTION__, '1.26' );
+
if ( version_compare( $wgVersion, (string)$req_ver, '<' ) ) {
throw new MWException( "MediaWiki $req_ver required--this is only $wgVersion" );
}
return false;
}
-/**
- * @since 1.32
- * @param string[] $data Array with string keys/values to export
- * @param string $header
- * @return string PHP code
- */
-function wfMakeStaticArrayFile( array $data, $header = 'Automatically generated' ) {
- $format = "\t%s => %s,\n";
- $code = "<?php\n"
- . "// " . implode( "\n// ", explode( "\n", $header ) ) . "\n"
- . "return [\n";
- foreach ( $data as $key => $value ) {
- $code .= sprintf(
- $format,
- var_export( $key, true ),
- var_export( $value, true )
- );
- }
- $code .= "];\n";
- return $code;
-}
-
/**
* Make a cache key for the local wiki.
*
/**
* Get a specific cache object.
*
+ * @deprecated since 1.32, use ObjectCache::getInstance() instead
* @param int|string $cacheType A CACHE_* constants, or other key in $wgObjectCaches
* @return BagOStuff
*/
/**
* Get the main cache object
*
+ * @deprecated since 1.32, use ObjectCache::getLocalClusterInstance() instead
* @return BagOStuff
*/
function wfGetMainCache() {
- global $wgMainCacheType;
- return ObjectCache::getInstance( $wgMainCacheType );
+ return ObjectCache::getLocalClusterInstance();
}
/**