15 public function preQuery( &$tables, &$fields, &$conds, &$type, &$options, &$joins, $start, $end ) {
16 global $wgTranslateMessageNamespaces;
18 $db = wfGetDB( DB_REPLICA );
20 $tables = [
'logging' ];
21 $fields = [
'log_timestamp' ];
25 'log_namespace' => $wgTranslateMessageNamespaces,
26 'log_action' =>
'message',
29 $timeConds = self::makeTimeCondition(
'log_timestamp', $start, $end );
30 $conds = array_merge( $conds, $timeConds );
32 $options = [
'ORDER BY' =>
'log_timestamp' ];
34 $this->groups = $this->opts->getGroups();
37 if ( count( $namespaces ) ) {
38 $conds[
'log_namespace'] = $namespaces;
42 foreach ( $this->opts->getLanguages() as $code ) {
43 $languages[] =
'log_title ' . $db->buildLike( $db->anyString(),
"/$code" );
45 if ( count( $languages ) ) {
46 $conds[] = $db->makeList( $languages, LIST_OR );
49 $fields[] =
'log_title';
51 if ( $this->groups ) {
52 $fields[] =
'log_namespace';
55 if ( $this->opts->getValue(
'count' ) ===
'reviewers' ) {
56 $fields[] =
'log_actor';
63 if ( $this->opts->getValue(
'count' ) ===
'reviewers' ) {
66 if ( isset( $this->seenUsers[$date][$row->log_actor] ) ) {
70 $this->seenUsers[$date][$row->log_actor] = 1;
74 if ( strpos( $row->log_title,
'/' ) ===
false ) {
79 if ( !$this->groups && !$this->opts->getLanguages() ) {
84 list( $key, $code ) = Utilities::figureMessage( $row->log_title );
89 if ( $this->groups ) {
92 $groups = Utilities::messageKeyToGroups( (
int)$row->log_namespace, $key );
93 $groups = array_intersect( $this->groups, $groups );
96 if ( $this->opts->getLanguages() ) {