X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FLinker.php;h=408538b7d241807317a9ee7cacba478a48da8549;hb=39142e28044c514fc2841ee78f811e63eaf3e636;hp=e5db232a5102bdacedcf623824a335b631aefb37;hpb=168afc0cebb5ca5671b9543e1ae7d74ca5170144;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Linker.php b/includes/Linker.php index e5db232a51..408538b7d2 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -1075,6 +1075,9 @@ class Linker { public static function userLink( $userId, $userName, $altUserName = false ) { if ( $userId == 0 ) { $page = SpecialPage::getTitleFor( 'Contributions', $userName ); + if ( $altUserName === false ) { + $altUserName = IP::prettifyIP( $userName ); + } } else { $page = Title::makeTitle( NS_USER, $userName ); } @@ -1373,7 +1376,18 @@ class Linker { self::$commentContextTitle = $title; self::$commentLocal = $local; $html = preg_replace_callback( - '/\[\[:?(.*?)(\|(.*?))*\]\]([^[]*)/', + '/ + \[\[ + :? # ignore optional leading colon + ([^\]|]+) # 1. link target; page names cannot include ] or | + (?:\| + # 2. a pipe-separated substring; only the last is captured + # Stop matching at | and ]] without relying on backtracking. + ((?:]?[^\]|])*+) + )* + \]\] + ([^[]*) # 3. link trail (the text up until the next link) + /x', array( 'Linker', 'formatLinksInCommentCallback' ), $comment ); self::$commentContextTitle = null; @@ -1399,8 +1413,8 @@ class Linker { } # Handle link renaming [[foo|text]] will show link as "text" - if ( $match[3] != "" ) { - $text = $match[3]; + if ( $match[2] != "" ) { + $text = $match[2]; } else { $text = $match[1]; } @@ -1415,7 +1429,7 @@ class Linker { } } else { # Other kind of link - if ( preg_match( $wgContLang->linkTrail(), $match[4], $submatch ) ) { + if ( preg_match( $wgContLang->linkTrail(), $match[3], $submatch ) ) { $trail = $submatch[1]; } else { $trail = "";