summaryrefslogtreecommitdiff
path: root/includes/api/ApiQueryLogEvents.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/api/ApiQueryLogEvents.php')
-rw-r--r--includes/api/ApiQueryLogEvents.php51
1 files changed, 33 insertions, 18 deletions
diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php
index 5d85c221..73dcea49 100644
--- a/includes/api/ApiQueryLogEvents.php
+++ b/includes/api/ApiQueryLogEvents.php
@@ -58,7 +58,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
$this->fld_details = isset( $prop['details'] );
$this->fld_tags = isset( $prop['tags'] );
- $hideLogs = LogEventsList::getExcludeClause( $db );
+ $hideLogs = LogEventsList::getExcludeClause( $db, 'user', $this->getUser() );
if ( $hideLogs !== false ) {
$this->addWhere( $hideLogs );
}
@@ -70,7 +70,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
'user' => array( 'JOIN',
'user_id=log_user' ),
'page' => array( 'LEFT JOIN',
- array( 'log_namespace=page_namespace',
+ array( 'log_namespace=page_namespace',
'log_title=page_title' ) ) ) );
$index = array( 'logging' => 'times' ); // default, may change
@@ -151,7 +151,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
if ( is_null( $title ) ) {
$this->dieUsage( "Bad title value '$prefix'", 'param_prefix' );
}
- $this->addWhereFld( 'log_namespace', $title->getNamespace() );
+ $this->addWhereFld( 'log_namespace', $title->getNamespace() );
$this->addWhere( 'log_title ' . $db->buildLike( $title->getDBkey(), $db->anyString() ) );
}
@@ -201,7 +201,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
public static function addLogParams( $result, &$vals, $params, $type, $action, $ts, $legacy = false ) {
switch ( $type ) {
case 'move':
- if ( $legacy ){
+ if ( $legacy ) {
$targetKey = 0;
$noredirKey = 1;
} else {
@@ -209,21 +209,21 @@ class ApiQueryLogEvents extends ApiQueryBase {
$noredirKey = '5::noredir';
}
- if ( isset( $params[ $targetKey ] ) ) {
- $title = Title::newFromText( $params[ $targetKey ] );
+ if ( isset( $params[$targetKey] ) ) {
+ $title = Title::newFromText( $params[$targetKey] );
if ( $title ) {
$vals2 = array();
ApiQueryBase::addTitleInfo( $vals2, $title, 'new_' );
$vals[$type] = $vals2;
}
}
- if ( isset( $params[ $noredirKey ] ) && $params[ $noredirKey ] ) {
+ if ( isset( $params[$noredirKey] ) && $params[$noredirKey] ) {
$vals[$type]['suppressedredirect'] = '';
}
$params = null;
break;
case 'patrol':
- if ( $legacy ){
+ if ( $legacy ) {
$cur = 0;
$prev = 1;
$auto = 2;
@@ -241,7 +241,12 @@ class ApiQueryLogEvents extends ApiQueryBase {
break;
case 'rights':
$vals2 = array();
- list( $vals2['old'], $vals2['new'] ) = $params;
+ if( $legacy ) {
+ list( $vals2['old'], $vals2['new'] ) = $params;
+ } else {
+ $vals2['new'] = implode( ', ', $params['5::newgroups'] );
+ $vals2['old'] = implode( ', ', $params['4::oldgroups'] );
+ }
$vals[$type] = $vals2;
$params = null;
break;
@@ -262,9 +267,19 @@ class ApiQueryLogEvents extends ApiQueryBase {
break;
}
if ( !is_null( $params ) ) {
- $result->setIndexedTagName( $params, 'param' );
- $result->setIndexedTagName_recursive( $params, 'param' );
- $vals = array_merge( $vals, $params );
+ $logParams = array();
+ // Keys like "4::paramname" can't be used for output so we change them to "paramname"
+ foreach ( $params as $key => $value ) {
+ if ( strpos( $key, ':' ) === false ) {
+ $logParams[$key] = $value;
+ continue;
+ }
+ $logParam = explode( ':', $key, 3 );
+ $logParams[$logParam[2]] = $value;
+ }
+ $result->setIndexedTagName( $logParams, 'param' );
+ $result->setIndexedTagName_recursive( $logParams, 'param' );
+ $vals = array_merge( $vals, $logParams );
}
return $vals;
}
@@ -362,8 +377,12 @@ class ApiQueryLogEvents extends ApiQueryBase {
if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
// formatComment() calls wfMessage() among other things
return 'anon-public-user-private';
- } else {
+ } elseif ( LogEventsList::getExcludeClause( $this->getDB(), 'user', $this->getUser() )
+ === LogEventsList::getExcludeClause( $this->getDB(), 'public' )
+ ) { // Output can only contain public data.
return 'public';
+ } else {
+ return 'anon-public-user-private';
}
}
@@ -432,7 +451,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
' timestamp - Adds the timestamp for the event',
' comment - Adds the comment of the event',
' parsedcomment - Adds the parsed comment of the event',
- ' details - Lists addtional details about the event',
+ ' details - Lists additional details about the event',
' tags - Lists tags for the event',
),
'type' => 'Filter log entries to only this type',
@@ -526,8 +545,4 @@ class ApiQueryLogEvents extends ApiQueryBase {
public function getHelpUrls() {
return 'https://www.mediawiki.org/wiki/API:Logevents';
}
-
- public function getVersion() {
- return __CLASS__ . ': $Id$';
- }
}