X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FLinker.php;h=4d684b5ea1aa1ac98016cf4e773e56a0ff731d9c;hb=f9f8dff40f0e2a50b617086c0a9915d8f8fbc2d7;hp=9cca0be9d3adf21bb02138810a7e5fb05be339b6;hpb=fbea1e9311a264d6fba6b923542739868847a664;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Linker.php b/includes/Linker.php index 9cca0be9d3..4d684b5ea1 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -191,7 +191,7 @@ class Linker { */ public static function getInvalidTitleDescription( IContextSource $context, $namespace, $title ) { // First we check whether the namespace exists or not. - if ( MWNamespace::exists( $namespace ) ) { + if ( MediaWikiServices::getInstance()->getNamespaceInfo()->exists( $namespace ) ) { if ( $namespace == NS_MAIN ) { $name = $context->msg( 'blanknamespace' )->text(); } else { @@ -894,6 +894,12 @@ class Linker { * @since 1.16.3. $altUserName was added in 1.19. */ public static function userLink( $userId, $userName, $altUserName = false ) { + if ( $userName === '' ) { + wfLogWarning( __METHOD__ . ' received an empty username. Are there database errors ' . + 'that need to be fixed?' ); + return wfMessage( 'empty-username' )->parse(); + } + $classes = 'mw-userlink'; $page = null; if ( $userId == 0 ) { @@ -936,6 +942,12 @@ class Linker { $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0, $edits = null, $useParentheses = true ) { + if ( $userText === '' ) { + wfLogWarning( __METHOD__ . ' received an empty username. Are there database errors ' . + 'that need to be fixed?' ); + return ' ' . wfMessage( 'empty-username' )->parse(); + } + global $wgUser, $wgDisableAnonTalk, $wgLang; $talkable = !( $wgDisableAnonTalk && $userId == 0 ); $blockable = !( $flags & self::TOOL_LINKS_NOBLOCK ); @@ -1018,6 +1030,12 @@ class Linker { * @return string HTML fragment with user talk link */ public static function userTalkLink( $userId, $userText ) { + if ( $userText === '' ) { + wfLogWarning( __METHOD__ . ' received an empty username. Are there database errors ' . + 'that need to be fixed?' ); + return wfMessage( 'empty-username' )->parse(); + } + $userTalkPage = new TitleValue( NS_USER_TALK, strtr( $userText, ' ', '_' ) ); $moreLinkAttribs['class'] = 'mw-usertoollinks-talk'; @@ -1034,6 +1052,12 @@ class Linker { * @return string HTML fragment with block link */ public static function blockLink( $userId, $userText ) { + if ( $userText === '' ) { + wfLogWarning( __METHOD__ . ' received an empty username. Are there database errors ' . + 'that need to be fixed?' ); + return wfMessage( 'empty-username' )->parse(); + } + $blockPage = SpecialPage::getTitleFor( 'Block', $userText ); $moreLinkAttribs['class'] = 'mw-usertoollinks-block'; @@ -1049,6 +1073,12 @@ class Linker { * @return string HTML fragment with e-mail user link */ public static function emailLink( $userId, $userText ) { + if ( $userText === '' ) { + wfLogWarning( __METHOD__ . ' received an empty username. Are there database errors ' . + 'that need to be fixed?' ); + return wfMessage( 'empty-username' )->parse(); + } + $emailPage = SpecialPage::getTitleFor( 'Emailuser', $userText ); $moreLinkAttribs['class'] = 'mw-usertoollinks-mail'; return self::link( $emailPage, @@ -1202,6 +1232,14 @@ class Linker { $sectionText = str_replace( '[[', '[[', $auto ); $section = substr( Parser::guessSectionNameFromStrippedText( $section ), 1 ); + // Support: HHVM (T222857) + // The guessSectionNameFromStrippedText method returns a non-empty string + // that starts with "#". Before PHP 7 (and still on HHVM) substr() would + // return false if the start offset is the end of the string. + // On PHP 7+, it gracefully returns empty string instead. + if ( $section === false ) { + $section = ''; + } if ( $local ) { $sectionTitle = new TitleValue( NS_MAIN, '', $section ); } else { @@ -1272,7 +1310,12 @@ class Linker { ([^[]*) # 3. link trail (the text up until the next link) /x', function ( $match ) use ( $title, $local, $wikiId ) { - $medians = '(?:' . preg_quote( MWNamespace::getCanonicalName( NS_MEDIA ), '/' ) . '|'; + $services = MediaWikiServices::getInstance(); + + $medians = '(?:'; + $medians .= preg_quote( + $services->getNamespaceInfo()->getCanonicalName( NS_MEDIA ), '/' ); + $medians .= '|'; $medians .= preg_quote( MediaWikiServices::getInstance()->getContentLanguage()->getNsText( NS_MEDIA ), '/' @@ -1380,8 +1423,9 @@ class Linker { $wikiId, $linkTarget->getNamespace() === 0 ? $linkTarget->getDBkey() - : MWNamespace::getCanonicalName( $linkTarget->getNamespace() ) . ':' - . $linkTarget->getDBkey(), + : MediaWikiServices::getInstance()->getNamespaceInfo()-> + getCanonicalName( $linkTarget->getNamespace() ) . + ':' . $linkTarget->getDBkey(), $linkTarget->getFragment() ), $text, @@ -1416,7 +1460,10 @@ class Linker { # Some namespaces don't allow subpages, # so only perform processing if subpages are allowed - if ( $contextTitle && MWNamespace::hasSubpages( $contextTitle->getNamespace() ) ) { + if ( + $contextTitle && MediaWikiServices::getInstance()->getNamespaceInfo()-> + hasSubpages( $contextTitle->getNamespace() ) + ) { $hash = strpos( $target, '#' ); if ( $hash !== false ) { $suffix = substr( $target, $hash );