X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=includes%2FGlobalFunctions.php;h=d215e9f56ec704cee75dc48b811e2983fb631212;hb=709b4156823721040bd782e4ad1ac7a7d8c0dc6e;hp=543978b56ec36d775b751550968d2c2ad753b196;hpb=c07b08b36c73e1f09d19ba384a0fe1e5b77852ba;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 543978b56e..d215e9f56e 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -141,7 +141,7 @@ function wfArrayDiff2_cmp( $a, $b ) { } /** - * Like array_filter with ARRAY_FILTER_USE_BOTH, but works pre-5.6. + * @deprecated since 1.32, use array_filter() with ARRAY_FILTER_USE_BOTH directly * * @param array $arr * @param callable $callback Will be called with the array value and key (in that order) and @@ -149,17 +149,11 @@ function wfArrayDiff2_cmp( $a, $b ) { * @return array */ function wfArrayFilter( array $arr, callable $callback ) { - if ( defined( 'ARRAY_FILTER_USE_BOTH' ) ) { - return array_filter( $arr, $callback, ARRAY_FILTER_USE_BOTH ); - } - $filteredKeys = array_filter( array_keys( $arr ), function ( $key ) use ( $arr, $callback ) { - return call_user_func( $callback, $arr[$key], $key ); - } ); - return array_intersect_key( $arr, array_fill_keys( $filteredKeys, true ) ); + return array_filter( $arr, $callback, ARRAY_FILTER_USE_BOTH ); } /** - * Like array_filter with ARRAY_FILTER_USE_KEY, but works pre-5.6. + * @deprecated since 1.32, use array_filter() with ARRAY_FILTER_USE_KEY directly * * @param array $arr * @param callable $callback Will be called with the array key and should return a bool which @@ -167,9 +161,7 @@ function wfArrayFilter( array $arr, callable $callback ) { * @return array */ function wfArrayFilterByKey( array $arr, callable $callback ) { - return wfArrayFilter( $arr, function ( $val, $key ) use ( $callback ) { - return call_user_func( $callback, $key ); - } ); + return array_filter( $arr, $callback, ARRAY_FILTER_USE_KEY ); } /** @@ -556,17 +548,24 @@ function wfExpandUrl( $url, $defaultProto = PROTO_CURRENT ) { } 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 ); @@ -582,6 +581,19 @@ function wfExpandUrl( $url, $defaultProto = PROTO_CURRENT ) { 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. @@ -874,20 +886,13 @@ function wfParseUrl( $url ) { function wfExpandIRI( $url ) { return preg_replace_callback( '/((?:%[89A-F][0-9A-F])+)/i', - 'wfExpandIRI_callback', + function ( array $matches ) { + return urldecode( $matches[1] ); + }, wfExpandUrl( $url ) ); } -/** - * Private callback for wfExpandIRI - * @param array $matches - * @return string - */ -function wfExpandIRI_callback( $matches ) { - return urldecode( $matches[1] ); -} - /** * Make URL indexes, appropriate for the el_index field of externallinks. * @@ -1303,11 +1308,11 @@ function wfGetLangObj( $langcode = false ) { 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; @@ -1325,7 +1330,7 @@ function wfGetLangObj( $langcode = false ) { # $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(); } /** @@ -1628,6 +1633,7 @@ function wfClientAcceptsGzip( $force = false ) { * As required by the callers, "" is not used. * * @param string $text Text to be escaped + * @param-taint $text escapes_html * @return string */ function wfEscapeWikiText( $text ) { @@ -2523,6 +2529,8 @@ function wfUsePHP( $req_ver ) { 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" ); } @@ -2666,28 +2674,6 @@ function wfGetPrecompiledData( $name ) { 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 = " $value ) { - $code .= sprintf( - $format, - var_export( $key, true ), - var_export( $value, true ) - ); - } - $code .= "];\n"; - return $code; -} - /** * Make a cache key for the local wiki. * @@ -3111,6 +3097,7 @@ function wfBCP47( $code ) { /** * 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 */ @@ -3121,11 +3108,11 @@ function wfGetCache( $cacheType ) { /** * 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(); } /**