X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Frevisiondelete%2FRevisionDeleteUser.php;h=7f41eb2a1a93b83ab91aaa747d6f2002aef80779;hp=7b82b7b7b0d8aeb83938fa808bc3404f745982f1;hb=e3bd13db0c285f312e31bb1b7271af4628cca80c;hpb=82b8b578938bf75bc9fa924aa95b10955d49ec6f diff --git a/includes/revisiondelete/RevisionDeleteUser.php b/includes/revisiondelete/RevisionDeleteUser.php index 7b82b7b7b0..7f41eb2a1a 100644 --- a/includes/revisiondelete/RevisionDeleteUser.php +++ b/includes/revisiondelete/RevisionDeleteUser.php @@ -36,14 +36,14 @@ class RevisionDeleteUser { * @param string $name Username * @param int $userId User id * @param string $op Operator '|' or '&' - * @param null|DatabaseBase $dbw If you happen to have one lying around + * @param null|IDatabase $dbw If you happen to have one lying around * @return bool */ private static function setUsernameBitfields( $name, $userId, $op, $dbw ) { if ( !$userId || ( $op !== '|' && $op !== '&' ) ) { return false; // sanity check } - if ( !$dbw instanceof DatabaseBase ) { + if ( !$dbw instanceof IDatabase ) { $dbw = wfGetDB( DB_MASTER ); } @@ -55,8 +55,8 @@ class RevisionDeleteUser { $delUser = Revision::DELETED_USER | Revision::DELETED_RESTRICTED; $delAction = LogPage::DELETED_ACTION | Revision::DELETED_RESTRICTED; if ( $op == '&' ) { - $delUser = "~{$delUser}"; - $delAction = "~{$delAction}"; + $delUser = $dbw->bitNot( $delUser ); + $delAction = $dbw->bitNot( $delAction ); } # Normalize user name @@ -66,66 +66,72 @@ class RevisionDeleteUser { # Hide name from live edits $dbw->update( 'revision', - array( "rev_deleted = rev_deleted $op $delUser" ), - array( 'rev_user' => $userId ), + [ self::buildSetBitDeletedField( 'rev_deleted', $op, $delUser, $dbw ) ], + [ 'rev_user' => $userId ], __METHOD__ ); # Hide name from deleted edits $dbw->update( 'archive', - array( "ar_deleted = ar_deleted $op $delUser" ), - array( 'ar_user_text' => $name ), + [ self::buildSetBitDeletedField( 'ar_deleted', $op, $delUser, $dbw ) ], + [ 'ar_user_text' => $name ], __METHOD__ ); # Hide name from logs $dbw->update( 'logging', - array( "log_deleted = log_deleted $op $delUser" ), - array( 'log_user' => $userId, "log_type != 'suppress'" ), + [ self::buildSetBitDeletedField( 'log_deleted', $op, $delUser, $dbw ) ], + [ 'log_user' => $userId, 'log_type != ' . $dbw->addQuotes( 'suppress' ) ], __METHOD__ ); $dbw->update( 'logging', - array( "log_deleted = log_deleted $op $delAction" ), - array( 'log_namespace' => NS_USER, 'log_title' => $userDbKey, - "log_type != 'suppress'" ), + [ self::buildSetBitDeletedField( 'log_deleted', $op, $delAction, $dbw ) ], + [ 'log_namespace' => NS_USER, 'log_title' => $userDbKey, + 'log_type != ' . $dbw->addQuotes( 'suppress' ) ], __METHOD__ ); # Hide name from RC $dbw->update( 'recentchanges', - array( "rc_deleted = rc_deleted $op $delUser" ), - array( 'rc_user_text' => $name ), + [ self::buildSetBitDeletedField( 'rc_deleted', $op, $delUser, $dbw ) ], + [ 'rc_user_text' => $name ], __METHOD__ ); $dbw->update( 'recentchanges', - array( "rc_deleted = rc_deleted $op $delAction" ), - array( 'rc_namespace' => NS_USER, 'rc_title' => $userDbKey, 'rc_logid > 0' ), + [ self::buildSetBitDeletedField( 'rc_deleted', $op, $delAction, $dbw ) ], + [ 'rc_namespace' => NS_USER, 'rc_title' => $userDbKey, 'rc_logid > 0' ], __METHOD__ ); # Hide name from live images $dbw->update( 'oldimage', - array( "oi_deleted = oi_deleted $op $delUser" ), - array( 'oi_user_text' => $name ), + [ self::buildSetBitDeletedField( 'oi_deleted', $op, $delUser, $dbw ) ], + [ 'oi_user_text' => $name ], __METHOD__ ); # Hide name from deleted images $dbw->update( 'filearchive', - array( "fa_deleted = fa_deleted $op $delUser" ), - array( 'fa_user_text' => $name ), + [ self::buildSetBitDeletedField( 'fa_deleted', $op, $delUser, $dbw ) ], + [ 'fa_user_text' => $name ], __METHOD__ ); # Done! return true; } + private static function buildSetBitDeletedField( $field, $op, $value, $dbw ) { + return $field . ' = ' . ( $op === '&' + ? $dbw->bitAnd( $field, $value ) + : $dbw->bitOr( $field, $value ) ); + } + public static function suppressUserName( $name, $userId, $dbw = null ) { return self::setUsernameBitfields( $name, $userId, '|', $dbw ); }