16 private const TYPES = [
'none',
'old',
'latest' ];
20 if ( !in_array( $value, self::TYPES,
true ) ) {
21 throw new \InvalidArgumentException(
22 "revisionType must be one of: none, old, latest"
29 public function evaluate( stdClass $row, $value ): bool {
30 if ( (int)$row->rc_this_oldid === 0 ) {
32 } elseif ( (
int)$row->rc_this_oldid === (
int)$row->page_latest ) {
37 return $value === $type;
43 $query->
fields( [
'rc_this_oldid',
'page_latest' ] );
48 $required = $this->getEnumValues( self::TYPES );
49 if ( $required ===
null ) {
51 } elseif ( !$required ) {
56 $req = $this->flip( $required );
57 if ( $req[
'latest'] xor $req[
'old'] ) {
58 $op = $req[
'latest'] ?
'=' :
'!=';
59 $orConds[] = $dbr->
expr(
'rc_this_oldid', $op,
new RawSQLValue(
'page_latest' ) );
62 $orConds[] = $dbr->
expr(
'rc_this_oldid',
'=', 0 );
75 private function flip( $values ) {
76 return array_fill_keys( $values,
true ) +
77 array_fill_keys( self::TYPES,
false );
if(!defined('MW_SETUP_CALLBACK'))