51 private $sharedTables;
54 private $localDatabases;
69 $this->dbProvider = $dbProvider;
70 $this->hideUserUtils = $hideUserUtils;
75 if ( !$user->isRegistered() ) {
79 return $this->isWikiSharingOurUsers( $wikiId );
88 private function isWikiSharingOurUsers( $wikiId ) {
90 if ( !$wikiId || WikiMap::isCurrentWikiId( $wikiId ) ) {
96 return $this->sharedDB !==
null &&
97 in_array(
'user', $this->sharedTables,
true ) &&
98 in_array( $wikiId, $this->localDatabases,
true );
102 array $idToName, $audience = self::AUDIENCE_PUBLIC, $flags = IDBAccessObject::READ_NORMAL
107 $audience = $this->checkAudience( $audience );
108 $db = DBAccessObjectUtils::getDBFromRecency( $this->dbProvider, $flags );
109 $queryBuilder = $db->newSelectQueryBuilder();
111 ->select( [
'user_id',
'user_name' ] )
113 ->where( [
'user_id' => array_map(
'intval', array_keys( $idToName ) ) ] )
116 if ( $audience && !$audience->isAllowed(
'hideuser' ) ) {
117 $this->hideUserUtils->addFieldToBuilder( $queryBuilder );
120 $res = $queryBuilder->caller( __METHOD__ )->fetchResultSet();
121 foreach ( $res as $row ) {
122 $idToName[$row->user_id] = empty( $row->hu_deleted ) ? $row->user_name :
'';
129 array $nameToId, $filter, $audience = self::AUDIENCE_PUBLIC,
130 $flags = IDBAccessObject::READ_NORMAL,
131 $wikiId = UserIdentity::LOCAL
136 if ( ( $filter === self::FILTER_ATTACHED || $filter === self::FILTER_OWNED )
137 && !$this->isWikiSharingOurUsers( $wikiId )
143 $audience = $this->checkAudience( $audience );
144 $db = DBAccessObjectUtils::getDBFromRecency( $this->dbProvider, $flags );
145 $queryBuilder = $db->newSelectQueryBuilder();
147 ->select( [
'user_id',
'user_name' ] )
149 ->where( [
'user_name' => array_map(
'strval', array_keys( $nameToId ) ) ] )
152 if ( $audience && !$audience->isAllowed(
'hideuser' ) ) {
153 $queryBuilder->andWhere( $this->hideUserUtils->getExpression( $db ) );
156 $res = $queryBuilder->caller( __METHOD__ )->fetchResultSet();
157 foreach ( $res as $row ) {
158 $nameToId[$row->user_name] = (int)$row->user_id;
166class_alias( LocalIdLookup::class,
'LocalIdLookup' );
if(!defined('MW_SETUP_CALLBACK'))
A class containing constants representing the names of configuration variables.
const SharedDB
Name constant for the SharedDB setting, for use with Config::get()
const LocalDatabases
Name constant for the LocalDatabases setting, for use with Config::get()
const SharedTables
Name constant for the SharedTables setting, for use with Config::get()