$del = ''; // No one should be hiding from the oversight log
} else {
$target = SpecialPage::getTitleFor( 'Log', $row->log_type );
- $query = array( 'target' => $target->getPrefixedDBkey(), 'logid' => $row->log_id );
+ $page = Title::makeTitle( $row->log_namespace, $row->log_title );
+ $query = array( 'target' => $target->getPrefixedDBkey(),
+ 'logid' => $row->log_id, 'page' => $page->getPrefixedDBkey() );
$del = $this->skin->revDeleteLink( $query,
self::isDeleted( $row, LogPage::DELETED_RESTRICTED ) );
}
return;
}
$this->page = Title::newFromUrl( $this->target );
+ $this->contextPage = Title::newFromUrl( $wgRequest->getText( 'page' ) );
# If we have revisions, get the title from the first one
# since they should all be from the same page. This allows
# for more flexibility with page moves...
$safeIds[] = $m[0];
}
}
+ // Optimization for logs
+ if( $action == 'event' ) {
+ # If a context page is given, use title,time index
+ if( $this->contextPage ) {
+ $conds['log_namespace'] = $this->contextPage->getNamespace();
+ $conds['log_title'] = $this->contextPage->getDBKey();
+ } else {
+ $first = wfGetDB( DB_SLAVE )->selectField( 'logging',
+ 'MIN(log_timestamp)', array('log_id' => $safeIds) );
+ # The event was be hidden after it was made
+ $conds[] = "log_timestamp >= {$first}"; // use type,time index
+ }
+ }
// Format is <id1,id2,i3...>
if( count($safeIds) ) {
$conds[] = "log_params RLIKE '(^|\n|,)(".implode('|',$safeIds).")(,|$)'";
Xml::submitButton( wfMsg( 'revdelete-submit' ) ) );
$hidden = array(
Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
- Xml::hidden( 'target', $this->page->getPrefixedText() ),
+ Xml::hidden( 'target', $this->page->getPrefixedDBKey() ),
+ Xml::hidden( 'page', $this->contextPage ? $this->contextPage->getPrefixedDBKey() : '' ),
Xml::hidden( 'type', $this->deleteKey ),
Xml::hidden( 'logid', implode(',',$this->logids) )
);