/**
* Returns the Url used to link to a Title
*
- * @param Title $target
+ * @param LinkTarget $target
* @param array $query Query parameters
* @param array $options
* @return string
*/
- private static function linkUrl( $target, $query, $options ) {
+ private static function linkUrl( LinkTarget $target, $query, $options ) {
# We don't want to include fragments for broken links, because they
# generally make no sense.
if ( in_array( 'broken', $options, true ) && $target->hasFragment() ) {
- $target = clone $target;
- $target->setFragment( '' );
+ $target = $target->createFragmentTarget( '' );
}
# If it's a broken link, add the appropriate query pieces, unless
# there's already an action specified, or unless 'edit' makes no sense
# (i.e., for a nonexistent special page).
if ( in_array( 'broken', $options, true ) && empty( $query['action'] )
- && !$target->isSpecialPage() ) {
+ && $target->getNamespace() !== NS_SPECIAL ) {
$query['action'] = 'edit';
$query['redlink'] = '1';
}
$proto = PROTO_RELATIVE;
}
- $ret = $target->getLinkURL( $query, false, $proto );
+ $title = Title::newFromLinkTarget( $target );
+ $ret = $title->getLinkURL( $query, false, $proto );
return $ret;
}
*/
public static function makeMediaLinkFile( Title $title, $file, $html = '' ) {
if ( $file && $file->exists() ) {
- $url = $file->getURL();
+ $url = $file->getUrl();
$class = 'internal';
} else {
$url = self::getUploadUrl( $title );
}
} else {
# Other kind of link
- if ( preg_match( $wgContLang->linkTrail(), $match[3], $submatch ) ) {
- $trail = $submatch[1];
- } else {
- $trail = "";
- }
- $linkRegexp = '/\[\[(.*?)\]\]' . preg_quote( $trail, '/' ) . '/';
+ # Make sure its target is non-empty
if ( isset( $match[1][0] ) && $match[1][0] == ':' ) {
$match[1] = substr( $match[1], 1 );
}
- list( $inside, $trail ) = Linker::splitTrail( $trail );
-
- $linkText = $text;
- $linkTarget = Linker::normalizeSubpageLink( $title, $match[1], $linkText );
-
- $target = Title::newFromText( $linkTarget );
- if ( $target ) {
- if ( $target->getText() == '' && !$target->isExternal()
- && !$local && $title
- ) {
- $newTarget = clone $title;
- $newTarget->setFragment( '#' . $target->getFragment() );
- $target = $newTarget;
+ if ( $match[1] !== false && $match[1] !== '' ) {
+ if ( preg_match( $wgContLang->linkTrail(), $match[3], $submatch ) ) {
+ $trail = $submatch[1];
+ } else {
+ $trail = "";
}
+ $linkRegexp = '/\[\[(.*?)\]\]' . preg_quote( $trail, '/' ) . '/';
+ list( $inside, $trail ) = Linker::splitTrail( $trail );
+
+ $linkText = $text;
+ $linkTarget = Linker::normalizeSubpageLink( $title, $match[1], $linkText );
+
+ $target = Title::newFromText( $linkTarget );
+ if ( $target ) {
+ if ( $target->getText() == '' && !$target->isExternal()
+ && !$local && $title
+ ) {
+ $newTarget = clone $title;
+ $newTarget->setFragment( '#' . $target->getFragment() );
+ $target = $newTarget;
+ }
- $thelink = Linker::makeCommentLink( $target, $linkText . $inside, $wikiId ) . $trail;
+ $thelink = Linker::makeCommentLink( $target, $linkText . $inside, $wikiId ) . $trail;
+ }
}
}
if ( $thelink ) {
}
-/**
- * @since 1.18
- */
-class DummyLinker {
-
- /**
- * Use PHP's magic __call handler to transform instance calls to a dummy instance
- * into static calls to the new Linker for backwards compatibility.
- *
- * @param string $fname Name of called method
- * @param array $args Arguments to the method
- * @return mixed
- */
- public function __call( $fname, $args ) {
- return call_user_func_array( [ 'Linker', $fname ], $args );
- }
-}