Merge "auth: Follow up on e907d4328dc3e"
[lhc/web/wiklou.git] / includes / user / UserArray.php
index 31bd601..66d9c7a 100644 (file)
  * @file
  */
 
+use Wikimedia\Rdbms\IResultWrapper;
+
 abstract class UserArray implements Iterator {
        /**
-        * @param ResultWrapper $res
+        * @param IResultWrapper $res
         * @return UserArrayFromResult
         */
        static function newFromResult( $res ) {
                $userArray = null;
-               if ( !Hooks::run( 'UserArrayFromResult', array( &$userArray, $res ) ) ) {
+               if ( !Hooks::run( 'UserArrayFromResult', [ &$userArray, $res ] ) ) {
                        return null;
                }
                if ( $userArray === null ) {
@@ -38,20 +40,23 @@ abstract class UserArray implements Iterator {
 
        /**
         * @param array $ids
-        * @return UserArrayFromResult
+        * @return UserArrayFromResult|ArrayIterator
         */
        static function newFromIDs( $ids ) {
                $ids = array_map( 'intval', (array)$ids ); // paranoia
                if ( !$ids ) {
                        // Database::select() doesn't like empty arrays
-                       return new ArrayIterator( array() );
+                       return new ArrayIterator( [] );
                }
-               $dbr = wfGetDB( DB_SLAVE );
+               $dbr = wfGetDB( DB_REPLICA );
+               $userQuery = User::getQueryInfo();
                $res = $dbr->select(
-                       'user',
-                       User::selectFields(),
-                       array( 'user_id' => array_unique( $ids ) ),
-                       __METHOD__
+                       $userQuery['tables'],
+                       $userQuery['fields'],
+                       [ 'user_id' => array_unique( $ids ) ],
+                       __METHOD__,
+                       [],
+                       $userQuery['joins']
                );
                return self::newFromResult( $res );
        }
@@ -59,26 +64,29 @@ abstract class UserArray implements Iterator {
        /**
         * @since 1.25
         * @param array $names
-        * @return UserArrayFromResult
+        * @return UserArrayFromResult|ArrayIterator
         */
        static function newFromNames( $names ) {
                $names = array_map( 'strval', (array)$names ); // paranoia
                if ( !$names ) {
                        // Database::select() doesn't like empty arrays
-                       return new ArrayIterator( array() );
+                       return new ArrayIterator( [] );
                }
-               $dbr = wfGetDB( DB_SLAVE );
+               $dbr = wfGetDB( DB_REPLICA );
+               $userQuery = User::getQueryInfo();
                $res = $dbr->select(
-                       'user',
-                       User::selectFields(),
-                       array( 'user_name' => array_unique( $names ) ),
-                       __METHOD__
+                       $userQuery['tables'],
+                       $userQuery['fields'],
+                       [ 'user_name' => array_unique( $names ) ],
+                       __METHOD__,
+                       [],
+                       $userQuery['joins']
                );
                return self::newFromResult( $res );
        }
 
        /**
-        * @param ResultWrapper $res
+        * @param IResultWrapper $res
         * @return UserArrayFromResult
         */
        protected static function newFromResult_internal( $res ) {