X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fuser%2FUser.php;h=a4dfb2bba8e87289d7dee83e571e22eb35ef47e9;hb=84b9564e507e23a817bb71b50d4bb8933c6c8bd2;hp=1c894a0f346687767264650763bb952ed20b0c87;hpb=911de590d5517d08ee00c33c980d35b9c6f501c0;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/user/User.php b/includes/user/User.php index 1c894a0f34..a4dfb2bba8 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -27,6 +27,7 @@ use MediaWiki\Session\Token; use MediaWiki\Auth\AuthManager; use MediaWiki\Auth\AuthenticationResponse; use MediaWiki\Auth\AuthenticationRequest; +use MediaWiki\User\UserIdentity; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\Database; use Wikimedia\Rdbms\DBExpectedError; @@ -48,7 +49,7 @@ define( 'EDIT_TOKEN_SUFFIX', Token::SUFFIX ); * for rendering normal pages are set in the cookie to minimize use * of the database. */ -class User implements IDBAccessObject { +class User implements IDBAccessObject, UserIdentity { /** * @const int Number of characters in user_token field. */ @@ -178,6 +179,7 @@ class User implements IDBAccessObject { 'reupload-shared', 'rollback', 'sendemail', + 'sendemail-new-users', 'siteadmin', 'suppressionlog', 'suppressredirect', @@ -688,20 +690,25 @@ class User implements IDBAccessObject { } $dbr = wfGetDB( DB_REPLICA ); + $userQuery = self::getQueryInfo(); $row = $dbr->selectRow( - 'user', - self::selectFields(), + $userQuery['tables'], + $userQuery['fields'], [ 'user_name' => $name ], - __METHOD__ + __METHOD__, + [], + $userQuery['joins'] ); if ( !$row ) { // Try the master database... $dbw = wfGetDB( DB_MASTER ); $row = $dbw->selectRow( - 'user', - self::selectFields(), + $userQuery['tables'], + $userQuery['fields'], [ 'user_name' => $name ], - __METHOD__ + __METHOD__, + [], + $userQuery['joins'] ); } @@ -1278,12 +1285,14 @@ class User implements IDBAccessObject { list( $index, $options ) = DBAccessObjectUtils::getDBOptions( $flags ); $db = wfGetDB( $index ); + $userQuery = self::getQueryInfo(); $s = $db->selectRow( - 'user', - self::selectFields(), + $userQuery['tables'], + $userQuery['fields'], [ 'user_id' => $this->mId ], __METHOD__, - $options + $options, + $userQuery['joins'] ); $this->queryFlagsUsed = $flags; @@ -5497,9 +5506,11 @@ class User implements IDBAccessObject { /** * Return the list of user fields that should be selected to create * a new user object. + * @deprecated since 1.31, use self::getQueryInfo() instead. * @return array */ public static function selectFields() { + wfDeprecated( __METHOD__, '1.31' ); return [ 'user_id', 'user_name', @@ -5515,6 +5526,35 @@ class User implements IDBAccessObject { ]; } + /** + * Return the tables, fields, and join conditions to be selected to create + * a new user object. + * @since 1.31 + * @return array With three keys: + * - tables: (string[]) to include in the `$table` to `IDatabase->select()` + * - fields: (string[]) to include in the `$vars` to `IDatabase->select()` + * - joins: (array) to include in the `$join_conds` to `IDatabase->select()` + */ + public static function getQueryInfo() { + return [ + 'tables' => [ 'user' ], + 'fields' => [ + 'user_id', + 'user_name', + 'user_real_name', + 'user_email', + 'user_touched', + 'user_token', + 'user_email_authenticated', + 'user_email_token', + 'user_email_token_expires', + 'user_registration', + 'user_editcount', + ], + 'joins' => [], + ]; + } + /** * Factory function for fatal permission-denied errors *