*
* @file
*/
+use MediaWiki\Linker\LinkTarget;
/**
* Some internal bits split of from Skin.php. These functions are used
/**
* 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;
}
}
/**
- * @param Title $title
- * @return Title
+ * @param LinkTarget $target
+ * @return LinkTarget|Title You will get back the same type you passed in, or a Title object
*/
- static function normaliseSpecialPage( Title $title ) {
- if ( $title->isSpecialPage() ) {
- list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+ static function normaliseSpecialPage( LinkTarget $target ) {
+ if ( $target->getNamespace() == NS_SPECIAL ) {
+ list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $target->getDBkey() );
if ( !$name ) {
- return $title;
+ return $target;
}
- $ret = SpecialPage::getTitleFor( $name, $subpage, $title->getFragment() );
+ $ret = SpecialPage::getTitleFor( $name, $subpage, $target->getFragment() );
return $ret;
} else {
- return $title;
+ return $target;
}
}
}
-/**
- * @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 );
- }
-}