From: umherirrender Date: Sun, 22 Feb 2015 20:41:37 +0000 (+0100) Subject: Fix parameter order for block logs X-Git-Tag: 1.31.0-rc.0~12278^2 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/banques/?a=commitdiff_plain;h=ce4af8b873746054b5dbe753496da844e61d402e;p=lhc%2Fweb%2Fwiklou.git Fix parameter order for block logs The new block log params does not known the message number 4 (which is index 3), therefore LogFormatter::getMessageParameters adds empty index to keep the sequence in strong order. But the loop was starting at index 4, not 3, which skips the needed empty index 3 for the order. Due to the missing $4 the legacy log params returning index 3 and 4, therefore move them one up to match the new numbers. Also fixed undefined index warnings for api's list=logevents Follow-Up: Ibc7fcaa5a952ff90d42a6477da4baa429f3de64b Change-Id: Ie23be129ee2bd1d2bf753c3b5cba293d64b8e0e8 --- diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php index c4eb7a835f..adf96fd569 100644 --- a/includes/api/ApiQueryLogEvents.php +++ b/includes/api/ApiQueryLogEvents.php @@ -310,14 +310,21 @@ class ApiQueryLogEvents extends ApiQueryBase { if ( $action == 'unblock' ) { break; } + if ( $legacy ) { + $durationKey = 0; + $flagsKey = 1; + } else { + $durationKey = '5::duration'; + $flagsKey = '6::flags'; + } $vals2 = array(); - $vals2['duration'] = $params[0]; - $vals2['flags'] = isset( $params[1] ) ? $params[1] : ''; + $vals2['duration'] = $params[$durationKey]; + $vals2['flags'] = isset( $params[$flagsKey] ) ? $params[$flagsKey] : ''; // Indefinite blocks have no expiry time - if ( SpecialBlock::parseExpiryInput( $params[0] ) !== wfGetDB( DB_SLAVE )->getInfinity() ) { + if ( SpecialBlock::parseExpiryInput( $params[$durationKey] ) !== wfGetDB( DB_SLAVE )->getInfinity() ) { $vals2['expiry'] = wfTimestamp( TS_ISO_8601, - strtotime( $params[0], wfTimestamp( TS_UNIX, $ts ) ) ); + strtotime( $params[$durationKey], wfTimestamp( TS_UNIX, $ts ) ) ); } $vals[$type] = $vals2; $params = null; diff --git a/includes/logging/BlockLogFormatter.php b/includes/logging/BlockLogFormatter.php index 13d218362c..995b8091e5 100644 --- a/includes/logging/BlockLogFormatter.php +++ b/includes/logging/BlockLogFormatter.php @@ -62,6 +62,19 @@ class BlockLogFormatter extends LogFormatter { return $params; } + protected function extractParameters() { + $params = parent::extractParameters(); + // Legacy log params returning the params in index 3 and 4, moved to 4 and 5 + if ( $this->entry->isLegacy() && isset( $params[3] ) ) { + if ( isset( $params[4] ) ) { + $params[5] = $params[4]; + } + $params[4] = $params[3]; + $params[3] = ''; + } + return $params; + } + public function getPreloadTitles() { $title = $this->entry->getTarget(); // Preload user page for non-autoblocks diff --git a/includes/logging/LogFormatter.php b/includes/logging/LogFormatter.php index b69ccb2cfc..16cf5a1530 100644 --- a/includes/logging/LogFormatter.php +++ b/includes/logging/LogFormatter.php @@ -456,7 +456,8 @@ class LogFormatter { */ if ( count( $params ) ) { $max = max( array_keys( $params ) ); - for ( $i = 4; $i < $max; $i++ ) { + // index 0 to 2 are added in getMessageParameters + for ( $i = 3; $i < $max; $i++ ) { if ( !isset( $params[$i] ) ) { $params[$i] = ''; }