MediaWiki  master
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 
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::isUsableName( $name ) ) {
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::run( 'ImportHandleUnknownUser', [ $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 }
const NS_MAIN
Definition: Defines.php:60
addPrefix( $name)
Add an interwiki prefix to the username regardless of circumstances.
static idFromName( $name, $flags=self::READ_NORMAL)
Get database id given a user name.
Definition: User.php:829
__construct( $usernamePrefix, $assignKnownUsers)
static isUsableName( $name)
Usernames which fail to pass this function will be blocked from user login and new account registrati...
Definition: User.php:966
static getUserLinkTitle( $userName)
Get a target Title to link a username.
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don&#39;t need a full Title object...
Definition: SpecialPage.php:83
applyPrefix( $name)
Add an interwiki prefix to the username, if appropriate.
static makeTitle( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:586
Class to parse and build external user names.
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200
static getLocal( $username)
Get local part of the user name.
static isExternal( $username)
Tells whether the username is external or not.