From c2519cd89c1021fb9d1fd7d07fe0bc6b5819c796 Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Fri, 1 Aug 2008 13:03:34 +0000 Subject: [PATCH] Properly escape URL fragment in Linker::link (using Title::getFragementForURL), else it breaks in non-ASCII characters. Bug reported by Hebrew Wikipedia users. --- includes/Linker.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/includes/Linker.php b/includes/Linker.php index 278e97465d..2eee38ebee 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -221,19 +221,21 @@ class Linker { $query['action'] = 'edit'; $query['redlink'] = '1'; } + $fragment = $target->getFragmentForURL(); + $title = $target->getPrefixedText(); # A couple of things to be concerned about here. First of all, # getLocalURL() ignores fragments. Second of all, if the Title is # *only* a fragment, it returns something like "/". - if( $target->getFragment() === '' and $target->getPrefixedText() !== '' ) { + if( $fragment === '' and $title !== '' ) { return $target->getLocalURL( $query ); } - if( $target->getPrefixedText() === '' ) { + if( $title === '' ) { # Just a fragment. There had better be one, anyway, or this is a # pretty silly Title. - return '#'.$target->getFragment(); + return $fragment; } # Then we must have a fragment *and* some Title text. - return $target->getLocalURL( $query ).'#'.$target->getFragment(); + return $target->getLocalURL( $query ) . $fragment; } private function linkAttribs( $target, $attribs, $options ) { -- 2.20.1