* @ingroup SpecialPage
*/
+use Wikimedia\Timestamp\TimestampException;
+
/**
* A special page that lists log entries
*
// Set date values
$dateString = $this->getRequest()->getVal( 'wpdate' );
if ( !empty( $dateString ) ) {
- $dateStamp = MWTimestamp::getInstance( $dateString . ' 00:00:00' );
- $opts->setValue( 'year', (int)$dateStamp->format( 'Y' ) );
- $opts->setValue( 'month', (int)$dateStamp->format( 'm' ) );
- $opts->setValue( 'day', (int)$dateStamp->format( 'd' ) );
+ try {
+ $dateStamp = MWTimestamp::getInstance( $dateString . ' 00:00:00' );
+ } catch ( TimestampException $e ) {
+ // If users provide an invalid date, silently ignore it
+ // instead of letting an exception bubble up (T201411)
+ $dateStamp = false;
+ }
+ if ( $dateStamp ) {
+ $opts->setValue( 'year', (int)$dateStamp->format( 'Y' ) );
+ $opts->setValue( 'month', (int)$dateStamp->format( 'm' ) );
+ $opts->setValue( 'day', (int)$dateStamp->format( 'd' ) );
+ }
}
# Don't let the user get stuck with a certain date
$offenderName = $opts->getValue( 'offender' );
$offender = empty( $offenderName ) ? null : User::newFromName( $offenderName, false );
if ( $offender ) {
- if ( $wgActorTableSchemaMigrationStage === MIGRATION_NEW ) {
+ if ( $wgActorTableSchemaMigrationStage & SCHEMA_COMPAT_READ_NEW ) {
$qc = [ 'ls_field' => 'target_author_actor', 'ls_value' => $offender->getActorId() ];
+ } elseif ( $offender->getId() > 0 ) {
+ $qc = [ 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() ];
} else {
- if ( $offender->getId() > 0 ) {
- $field = 'target_author_id';
- $value = $offender->getId();
- } else {
- $field = 'target_author_ip';
- $value = $offender->getName();
- }
- if ( !$offender->getActorId() ) {
- $qc = [ 'ls_field' => $field, 'ls_value' => $value ];
- } else {
- $db = wfGetDB( DB_REPLICA );
- $qc = [
- 'ls_field' => [ 'target_author_actor', $field ], // So LogPager::getQueryInfo() works right
- $db->makeList( [
- $db->makeList(
- [ 'ls_field' => 'target_author_actor', 'ls_value' => $offender->getActorId() ], LIST_AND
- ),
- $db->makeList( [ 'ls_field' => $field, 'ls_value' => $value ], LIST_AND ),
- ], LIST_OR ),
- ];
- }
+ $qc = [ 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ];
}
}
} else {