/** * Normalize the input username, which may be local or remote, and * return a user (or proxy) object for manipulating it. * * Side effects: error output for invalid access * @return mixed User, UserRightsProxy, or null */ function fetchUser($username) { global $wgOut, $wgUser; $parts = explode('@', $username); if (count($parts) < 2) { $name = trim($username); $database = ''; } else { list($name, $database) = array_map('trim', $parts); if (!$wgUser->isAllowed('userrights-interwiki')) { $wgOut->addWikiMsg('userrights-no-interwiki'); return null; } if (!UserRightsProxy::validDatabase($database)) { $wgOut->addWikiMsg('userrights-nodatabase', $database); return null; } } if ($name == '') { $wgOut->addWikiMsg('nouserspecified'); return false; } if ($name[0] == '#') { // Numeric ID can be specified... // We'll do a lookup for the name internally. $id = intval(substr($name, 1)); if ($database == '') { $name = User::whoIs($id); } else { $name = UserRightsProxy::whoIs($database, $id); } if (!$name) { $wgOut->addWikiMsg('noname'); return null; } } if ($database == '') { $user = User::newFromName($name); } else { $user = UserRightsProxy::newFromName($database, $name); } if (!$user || $user->isAnon()) { $wgOut->addWikiMsg('nosuchusershort', $username); return null; } return $user; }
/** * Normalize the input username, which may be local or remote, and * return a user (or proxy) object for manipulating it. * * Side effects: error output for invalid access * @param string $username * @return Status */ public function fetchUser($username) { $parts = explode($this->getConfig()->get('UserrightsInterwikiDelimiter'), $username); if (count($parts) < 2) { $name = trim($username); $database = ''; } else { list($name, $database) = array_map('trim', $parts); if ($database == wfWikiID()) { $database = ''; } else { if (!$this->getUser()->isAllowed('userrights-interwiki')) { return Status::newFatal('userrights-no-interwiki'); } if (!UserRightsProxy::validDatabase($database)) { return Status::newFatal('userrights-nodatabase', $database); } } } if ($name === '') { return Status::newFatal('nouserspecified'); } if ($name[0] == '#') { // Numeric ID can be specified... // We'll do a lookup for the name internally. $id = intval(substr($name, 1)); if ($database == '') { $name = User::whoIs($id); } else { $name = UserRightsProxy::whoIs($database, $id); } if (!$name) { return Status::newFatal('noname'); } } else { $name = User::getCanonicalName($name); if ($name === false) { // invalid name return Status::newFatal('nosuchusershort', $username); } } if ($database == '') { $user = User::newFromName($name); } else { $user = UserRightsProxy::newFromName($database, $name); } if (!$user || $user->isAnon()) { return Status::newFatal('nosuchusershort', $username); } return Status::newGood($user); }