11 private const TYPES = [
'none',
'old',
'latest' ];
15 if ( !in_array( $value, self::TYPES,
true ) ) {
16 throw new \InvalidArgumentException(
17 "revisionType must be one of: none, old, latest"
24 public function evaluate( stdClass $row, $value ): bool {
25 if ( (int)$row->rc_this_oldid === 0 ) {
27 } elseif ( (
int)$row->rc_this_oldid === (
int)$row->page_latest ) {
32 return $value === $type;
38 $query->
fields( [
'rc_this_oldid',
'page_latest' ] );
43 $required = $this->getEnumValues( self::TYPES );
44 if ( $required ===
null ) {
46 } elseif ( !$required ) {
51 $req = $this->flip( $required );
52 if ( $req[
'latest'] xor $req[
'old'] ) {
53 $op = $req[
'latest'] ?
'=' :
'!=';
54 $orConds[] = $dbr->
expr(
'rc_this_oldid', $op,
new RawSQLValue(
'page_latest' ) );
57 $orConds[] = $dbr->
expr(
'rc_this_oldid',
'=', 0 );
70 private function flip( $values ) {
71 return array_fill_keys( $values,
true ) +
72 array_fill_keys( self::TYPES,
false );
if(!defined('MW_SETUP_CALLBACK'))