* contains anything not listed here, the cache mode will never be public for logged-in users.
* @var array
*/
- protected static $publicProps = array(
+ protected static $publicProps = [
// everything except 'blockinfo' which might show hidden records if the user
// making the request has the appropriate permissions
'groups',
'emailable',
'gender',
'centralids',
- );
+ 'cancreate',
+ ];
public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'us' );
// If we're in a mode that breaks the same-origin policy, no tokens can
// be obtained
if ( $this->lacksSameOriginSecurity() ) {
- return array();
+ return [];
}
- $this->tokenFunctions = array(
- 'userrights' => array( 'ApiQueryUsers', 'getUserrightsToken' ),
- );
- Hooks::run( 'APIQueryUsersTokens', array( &$this->tokenFunctions ) );
+ $this->tokenFunctions = [
+ 'userrights' => [ 'ApiQueryUsers', 'getUserrightsToken' ],
+ ];
+ Hooks::run( 'APIQueryUsersTokens', [ &$this->tokenFunctions ] );
return $this->tokenFunctions;
}
if ( !is_null( $params['prop'] ) ) {
$this->prop = array_flip( $params['prop'] );
} else {
- $this->prop = array();
+ $this->prop = [];
}
$users = (array)$params['users'];
- $goodNames = $done = array();
+ $goodNames = $done = [];
$result = $this->getResult();
// Canonicalize user names
foreach ( $users as $u ) {
$n = User::getCanonicalName( $u );
if ( $n === false || $n === '' ) {
- $vals = array( 'name' => $u, 'invalid' => true );
- $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+ $vals = [ 'name' => $u, 'invalid' => true ];
+ $fit = $result->addValue( [ 'query', $this->getModuleName() ],
null, $vals );
if ( !$fit ) {
$this->setContinueEnumParameter( 'users',
implode( '|', array_diff( $users, $done ) ) );
- $goodNames = array();
+ $goodNames = [];
break;
}
$done[] = $u;
$this->showHiddenUsersAddBlockInfo( isset( $this->prop['blockinfo'] ) );
- $data = array();
+ $data = [];
$res = $this->select( __METHOD__ );
$this->resetQueryParams();
// get user groups if needed
if ( isset( $this->prop['groups'] ) || isset( $this->prop['rights'] ) ) {
- $userGroups = array();
+ $userGroups = [];
$this->addTables( 'user' );
$this->addWhereFld( 'user_name', $goodNames );
$this->addTables( 'user_groups' );
- $this->addJoinConds( array( 'user_groups' => array( 'INNER JOIN', 'ug_user=user_id' ) ) );
- $this->addFields( array( 'user_name', 'ug_group' ) );
+ $this->addJoinConds( [ 'user_groups' => [ 'INNER JOIN', 'ug_user=user_id' ] ] );
+ $this->addFields( [ 'user_name', 'ug_group' ] );
$userGroupsRes = $this->select( __METHOD__ );
foreach ( $userGroupsRes as $row ) {
$user = User::newFromRow( $row );
} else {
if ( !isset( $userGroups[$row->user_name] ) || !is_array( $userGroups[$row->user_name] ) ) {
- $userGroups[$row->user_name] = array();
+ $userGroups[$row->user_name] = [];
}
- $user = User::newFromRow( $row, array( 'user_groups' => $userGroups[$row->user_name] ) );
+ $user = User::newFromRow( $row, [ 'user_groups' => $userGroups[$row->user_name] ] );
}
$name = $user->getName();
// Second pass: add result data to $retval
foreach ( $goodNames as $u ) {
if ( !isset( $data[$u] ) ) {
- $data[$u] = array( 'name' => $u );
+ $data[$u] = [ 'name' => $u ];
$urPage = new UserrightsPage;
$urPage->setContext( $context );
$iwUser = $urPage->fetchUser( $u );
}
} else {
$data[$u]['missing'] = true;
+ if ( isset( $this->prop['cancreate'] ) ) {
+ $status = MediaWiki\Auth\AuthManager::singleton()->canCreateAccount( $u );
+ $data[$u]['cancreate'] = $status->isGood();
+ if ( !$status->isGood() ) {
+ $data[$u]['cancreateerror'] = $this->getErrorFormatter()->arrayFromStatus( $status );
+ }
+ }
}
} else {
if ( isset( $this->prop['groups'] ) && isset( $data[$u]['groups'] ) ) {
}
}
- $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+ $fit = $result->addValue( [ 'query', $this->getModuleName() ],
null, $data[$u] );
if ( !$fit ) {
$this->setContinueEnumParameter( 'users',
}
$done[] = $u;
}
- $result->addIndexedTagName( array( 'query', $this->getModuleName() ), 'user' );
+ $result->addIndexedTagName( [ 'query', $this->getModuleName() ], 'user' );
}
public function getCacheMode( $params ) {
}
public function getAllowedParams() {
- return array(
- 'prop' => array(
+ return [
+ 'prop' => [
ApiBase::PARAM_ISMULTI => true,
- ApiBase::PARAM_TYPE => array(
+ ApiBase::PARAM_TYPE => [
'blockinfo',
'groups',
'implicitgroups',
'emailable',
'gender',
'centralids',
- ),
- ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
- ),
+ 'cancreate',
+ // When adding a prop, consider whether it should be added
+ // to self::$publicProps
+ ],
+ ApiBase::PARAM_HELP_MSG_PER_VALUE => [],
+ ],
'attachedwiki' => null,
- 'users' => array(
+ 'users' => [
ApiBase::PARAM_TYPE => 'user',
ApiBase::PARAM_ISMULTI => true
- ),
- 'token' => array(
+ ],
+ 'token' => [
ApiBase::PARAM_DEPRECATED => true,
ApiBase::PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
ApiBase::PARAM_ISMULTI => true
- ),
- );
+ ],
+ ];
}
protected function getExamplesMessages() {
- return array(
+ return [
'action=query&list=users&ususers=Example&usprop=groups|editcount|gender'
=> 'apihelp-query+users-example-simple',
- );
+ ];
}
public function getHelpUrls() {