From 8089580c6267329f4e447ad0d448d410b185463e Mon Sep 17 00:00:00 2001 From: umherirrender Date: Wed, 6 Aug 2014 20:59:58 +0200 Subject: [PATCH] Use new log system when create log entry for revision delete The actions delete/event and delete/revision was not using the new LogEntry to create the log row, changed this. All params gets a number to avoid too many changes in DeleteLogFormatter to keep the old and new format working. Needs extra code for api to keep the output format unchanged. Change-Id: Ic149960f797d05fd088fa014390d791e3ae08687 --- includes/api/ApiQueryLogEvents.php | 30 +++++++++++++++++++++++ includes/logging/DeleteLogFormatter.php | 12 ++++++--- includes/revisiondelete/RevDelList.php | 26 ++++++++++++-------- includes/revisiondelete/RevDelLogList.php | 6 ++--- 4 files changed, 57 insertions(+), 17 deletions(-) diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php index 7d7968027b..d09a53d07b 100644 --- a/includes/api/ApiQueryLogEvents.php +++ b/includes/api/ApiQueryLogEvents.php @@ -337,6 +337,36 @@ class ApiQueryLogEvents extends ApiQueryBase { unset( $params['5::mergepoint'] ); } break; + case 'delete': + if ( $action === 'event' || $action === 'revision' ) { + // replace the named parameter with numbered for backward compatibility + if ( $action === 'event' ) { + $idsKey = '4::ids'; + $ofieldKey = '5::ofield'; + $nfieldKey = '6::nfield'; + } else { + if ( isset( $params['4::type'] ) ) { + $params[] = $params['4::type']; + unset( $params['4::type'] ); + } + $idsKey = '5::ids'; + $ofieldKey = '6::ofield'; + $nfieldKey = '7::nfield'; + } + if ( isset( $params[$idsKey] ) ) { + $params[] = implode( ',', $params[$idsKey] ); + unset( $params[$idsKey] ); + } + if ( isset( $params[$ofieldKey] ) ) { + $params[] = $params[$ofieldKey]; + unset( $params[$ofieldKey] ); + } + if ( isset( $params[$nfieldKey] ) ) { + $params[] = $params[$nfieldKey]; + unset( $params[$nfieldKey] ); + } + } + break; } if ( !is_null( $params ) ) { $logParams = array(); diff --git a/includes/logging/DeleteLogFormatter.php b/includes/logging/DeleteLogFormatter.php index 8b30e9ba94..4f13d37de6 100644 --- a/includes/logging/DeleteLogFormatter.php +++ b/includes/logging/DeleteLogFormatter.php @@ -79,8 +79,10 @@ class DeleteLogFormatter extends LogFormatter { $newParams = array_slice( $params, 0, 3 ); $newParams[3] = $changeText; - $count = count( explode( ',', $params[$paramStart] ) ); - $newParams[4] = $this->context->getLanguage()->formatNum( $count ); + $ids = is_array( $params[$paramStart] ) + ? $params[$paramStart] + : explode( ',', $params[$paramStart] ); + $newParams[4] = $this->context->getLanguage()->formatNum( count( $ids ) ); $this->parsedParametersDeleteLog = $newParams; return $this->parsedParametersDeleteLog; @@ -137,8 +139,10 @@ class DeleteLogFormatter extends LogFormatter { // Different revision types use different URL params... $key = $params[3]; - // This is a CSV of the IDs - $ids = explode( ',', $params[4] ); + // This is a array or CSV of the IDs + $ids = is_array( $params[4] ) + ? $params[4] + : explode( ',', $params[4] ); $links = array(); diff --git a/includes/revisiondelete/RevDelList.php b/includes/revisiondelete/RevDelList.php index b4ac62883f..840fd77259 100644 --- a/includes/revisiondelete/RevDelList.php +++ b/includes/revisiondelete/RevDelList.php @@ -250,13 +250,19 @@ abstract class RevDelList extends RevisionListBase { // Add params for affected page and ids $logParams = $this->getLogParams( $params ); // Actually add the deletion log entry - $log = new LogPage( $logType ); - $logid = $log->addEntry( $this->getLogAction(), $params['title'], - $params['comment'], $logParams, $this->getUser() ); + $logEntry = new ManualLogEntry( $logType, $this->getLogAction() ); + $logEntry->setTarget( $params['title'] ); + $logEntry->setComment( $params['comment'] ); + $logEntry->setParameters( $logParams ); + $logEntry->setPerformer( $this->getUser() ); // Allow for easy searching of deletion log items for revision/log items - $log->addRelations( $field, $params['ids'], $logid ); - $log->addRelations( 'target_author_id', $params['authorIds'], $logid ); - $log->addRelations( 'target_author_ip', $params['authorIPs'], $logid ); + $logEntry->setRelations( array( + $field => $params['ids'], + 'target_author_id' => $params['authorIds'], + 'target_author_ip' => $params['authorIPs'], + ) ); + $logId = $logEntry->insert(); + $logEntry->publish( $logId ); } /** @@ -274,10 +280,10 @@ abstract class RevDelList extends RevisionListBase { */ public function getLogParams( $params ) { return array( - $this->getType(), - implode( ',', $params['ids'] ), - "ofield={$params['oldBits']}", - "nfield={$params['newBits']}" + '4::type' => $this->getType(), + '5::ids' => $params['ids'], + '6::ofield' => $params['oldBits'], + '7::nfield' => $params['newBits'], ); } diff --git a/includes/revisiondelete/RevDelLogList.php b/includes/revisiondelete/RevDelLogList.php index 86c5af3751..d8bd2f7e45 100644 --- a/includes/revisiondelete/RevDelLogList.php +++ b/includes/revisiondelete/RevDelLogList.php @@ -95,9 +95,9 @@ class RevDelLogList extends RevDelList { public function getLogParams( $params ) { return array( - implode( ',', $params['ids'] ), - "ofield={$params['oldBits']}", - "nfield={$params['newBits']}" + '4::ids' => $params['ids'], + '5::ofield' => $params['oldBits'], + '6::nfield' => $params['newBits'], ); } } -- 2.20.1