MediaWiki REL1_35
ExternalUserNames.php
Go to the documentation of this file.
1<?php
24
30
34 private $usernamePrefix = 'imported';
35
39 private $assignKnownUsers = false;
40
44 private $triedCreations = [];
45
50 public function __construct( $usernamePrefix, $assignKnownUsers ) {
51 $this->usernamePrefix = rtrim( (string)$usernamePrefix, ':>' );
52 $this->assignKnownUsers = (bool)$assignKnownUsers;
53 }
54
62 public static function getUserLinkTitle( $userName ) {
63 $pos = strpos( $userName, '>' );
64 if ( $pos !== false ) {
65 $iw = explode( ':', substr( $userName, 0, $pos ) );
66 $firstIw = array_shift( $iw );
67 $services = MediaWikiServices::getInstance();
68 $interwikiLookup = $services->getInterwikiLookup();
69 if ( $interwikiLookup->isValidInterwiki( $firstIw ) ) {
70 $title = $services->getNamespaceInfo()->getCanonicalName( NS_USER ) .
71 ':' . substr( $userName, $pos + 1 );
72 if ( $iw ) {
73 $title = implode( ':', $iw ) . ':' . $title;
74 }
75 return Title::makeTitle( NS_MAIN, $title, '', $firstIw );
76 }
77 return null;
78 } else {
79 return SpecialPage::getTitleFor( 'Contributions', $userName );
80 }
81 }
82
97 public function applyPrefix( $name ) {
98 if ( User::getCanonicalName( $name, 'usable' ) === false ) {
99 return $name;
100 }
101
102 if ( $this->assignKnownUsers ) {
103 if ( User::idFromName( $name ) ) {
104 return $name;
105 }
106
107 // See if any extension wants to create it.
108 if ( !isset( $this->triedCreations[$name] ) ) {
109 $this->triedCreations[$name] = true;
110 if ( !Hooks::runner()->onImportHandleUnknownUser( $name ) &&
111 User::idFromName( $name, User::READ_LATEST )
112 ) {
113 return $name;
114 }
115 }
116 }
117
118 return $this->addPrefix( $name );
119 }
120
127 public function addPrefix( $name ) {
128 return substr( $this->usernamePrefix . '>' . $name, 0, 255 );
129 }
130
137 public static function isExternal( $username ) {
138 return strpos( $username, '>' ) !== false;
139 }
140
147 public static function getLocal( $username ) {
148 if ( !self::isExternal( $username ) ) {
149 return $username;
150 }
151
152 return substr( $username, strpos( $username, '>' ) + 1 );
153 }
154
155}
Class to parse and build external user names.
static getUserLinkTitle( $userName)
Get a target Title to link a username.
addPrefix( $name)
Add an interwiki prefix to the username regardless of circumstances.
__construct( $usernamePrefix, $assignKnownUsers)
static isExternal( $username)
Tells whether the username is external or not.
static getLocal( $username)
Get local part of the user name.
applyPrefix( $name)
Add an interwiki prefix to the username, if appropriate.
MediaWikiServices is the service locator for the application scope of MediaWiki.
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don't need a full Title object,...
static getCanonicalName( $name, $validate='valid')
Given unvalidated user input, return a canonical username, or false if the username is invalid.
Definition User.php:1130
static idFromName( $name, $flags=self::READ_NORMAL)
Get database id given a user name.
Definition User.php:887
const NS_USER
Definition Defines.php:72
const NS_MAIN
Definition Defines.php:70