Example #1
0
 /**
  * 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);
 }