From: Brad Jorsch Date: Mon, 19 Dec 2016 16:36:09 +0000 (-0500) Subject: Fix RevDel API output for formatversion=2 X-Git-Tag: 1.31.0-rc.0~4511^2 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=96b60ded7781080a47e7750a76b2d4a644751e21;p=lhc%2Fweb%2Fwiklou.git Fix RevDel API output for formatversion=2 Use booleans, not the old empty-string-or-undefined. This bugfix is a breaking change, but chances are it won't affect many clients. Bug: T153518 Change-Id: If5fa2cdcb973b186349307b29e4266daceef0a9d --- diff --git a/includes/revisiondelete/RevDelArchivedFileItem.php b/includes/revisiondelete/RevDelArchivedFileItem.php index decabbaafa..32d48918d2 100644 --- a/includes/revisiondelete/RevDelArchivedFileItem.php +++ b/includes/revisiondelete/RevDelArchivedFileItem.php @@ -102,10 +102,10 @@ class RevDelArchivedFileItem extends RevDelFileItem { 'width' => $file->getWidth(), 'height' => $file->getHeight(), 'size' => $file->getSize(), + 'userhidden' => (bool)$file->isDeleted( Revision::DELETED_USER ), + 'commenthidden' => (bool)$file->isDeleted( Revision::DELETED_COMMENT ), + 'contenthidden' => (bool)$this->isDeleted(), ]; - $ret += $file->isDeleted( Revision::DELETED_USER ) ? [ 'userhidden' => '' ] : []; - $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? [ 'commenthidden' => '' ] : []; - $ret += $this->isDeleted() ? [ 'contenthidden' => '' ] : []; if ( $this->canViewContent() ) { $ret += [ 'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL( diff --git a/includes/revisiondelete/RevDelFileItem.php b/includes/revisiondelete/RevDelFileItem.php index 06b596ea66..9beafc9893 100644 --- a/includes/revisiondelete/RevDelFileItem.php +++ b/includes/revisiondelete/RevDelFileItem.php @@ -202,10 +202,10 @@ class RevDelFileItem extends RevDelItem { 'width' => $file->getWidth(), 'height' => $file->getHeight(), 'size' => $file->getSize(), + 'userhidden' => (bool)$file->isDeleted( Revision::DELETED_USER ), + 'commenthidden' => (bool)$file->isDeleted( Revision::DELETED_COMMENT ), + 'contenthidden' => (bool)$this->isDeleted(), ]; - $ret += $file->isDeleted( Revision::DELETED_USER ) ? [ 'userhidden' => '' ] : []; - $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? [ 'commenthidden' => '' ] : []; - $ret += $this->isDeleted() ? [ 'contenthidden' => '' ] : []; if ( !$this->isDeleted() ) { $ret += [ 'url' => $file->getUrl(), diff --git a/includes/revisiondelete/RevDelLogItem.php b/includes/revisiondelete/RevDelLogItem.php index 9e76f4c62c..047d6cf10e 100644 --- a/includes/revisiondelete/RevDelLogItem.php +++ b/includes/revisiondelete/RevDelLogItem.php @@ -119,16 +119,10 @@ class RevDelLogItem extends RevDelItem { 'id' => $logEntry->getId(), 'type' => $logEntry->getType(), 'action' => $logEntry->getSubtype(), + 'userhidden' => (bool)$logEntry->isDeleted( LogPage::DELETED_USER ), + 'commenthidden' => (bool)$logEntry->isDeleted( LogPage::DELETED_COMMENT ), + 'actionhidden' => (bool)$logEntry->isDeleted( LogPage::DELETED_ACTION ), ]; - $ret += $logEntry->isDeleted( LogPage::DELETED_USER ) - ? [ 'userhidden' => '' ] - : []; - $ret += $logEntry->isDeleted( LogPage::DELETED_COMMENT ) - ? [ 'commenthidden' => '' ] - : []; - $ret += $logEntry->isDeleted( LogPage::DELETED_ACTION ) - ? [ 'actionhidden' => '' ] - : []; if ( LogEventsList::userCan( $this->row, LogPage::DELETED_ACTION, $user ) ) { $ret['params'] = LogFormatter::newFromEntry( $logEntry )->formatParametersForApi(); diff --git a/includes/revisiondelete/RevDelRevisionItem.php b/includes/revisiondelete/RevDelRevisionItem.php index 7fff3666ea..a9753b4485 100644 --- a/includes/revisiondelete/RevDelRevisionItem.php +++ b/includes/revisiondelete/RevDelRevisionItem.php @@ -188,10 +188,10 @@ class RevDelRevisionItem extends RevDelItem { $ret = [ 'id' => $rev->getId(), 'timestamp' => wfTimestamp( TS_ISO_8601, $rev->getTimestamp() ), + 'userhidden' => (bool)$rev->isDeleted( Revision::DELETED_USER ), + 'commenthidden' => (bool)$rev->isDeleted( Revision::DELETED_COMMENT ), + 'texthidden' => (bool)$rev->isDeleted( Revision::DELETED_TEXT ), ]; - $ret += $rev->isDeleted( Revision::DELETED_USER ) ? [ 'userhidden' => '' ] : []; - $ret += $rev->isDeleted( Revision::DELETED_COMMENT ) ? [ 'commenthidden' => '' ] : []; - $ret += $rev->isDeleted( Revision::DELETED_TEXT ) ? [ 'texthidden' => '' ] : []; if ( $rev->userCan( Revision::DELETED_USER, $user ) ) { $ret += [ 'userid' => $rev->getUser( Revision::FOR_THIS_USER ), diff --git a/tests/phpunit/includes/api/ApiRevisionDeleteTest.php b/tests/phpunit/includes/api/ApiRevisionDeleteTest.php index d8282be159..a4ca8a10a1 100644 --- a/tests/phpunit/includes/api/ApiRevisionDeleteTest.php +++ b/tests/phpunit/includes/api/ApiRevisionDeleteTest.php @@ -43,9 +43,9 @@ class ApiRevisionDeleteTest extends ApiTestCase { $this->assertEquals( $out['status'], 'Success' ); $this->assertArrayHasKey( 'items', $out ); $item = $out['items'][0]; - $this->assertArrayHasKey( 'userhidden', $item ); - $this->assertArrayHasKey( 'commenthidden', $item ); - $this->assertArrayHasKey( 'texthidden', $item ); + $this->assertTrue( $item['userhidden'], 'userhidden' ); + $this->assertTrue( $item['commenthidden'], 'commenthidden' ); + $this->assertTrue( $item['texthidden'], 'texthidden' ); $this->assertEquals( $item['id'], $revid ); // Now check that that revision was actually hidden @@ -70,9 +70,9 @@ class ApiRevisionDeleteTest extends ApiTestCase { $this->assertArrayHasKey( 'items', $out2 ); $item = $out2['items'][0]; - $this->assertArrayNotHasKey( 'userhidden', $item ); - $this->assertArrayNotHasKey( 'commenthidden', $item ); - $this->assertArrayNotHasKey( 'texthidden', $item ); + $this->assertFalse( $item['userhidden'], 'userhidden' ); + $this->assertFalse( $item['commenthidden'], 'commenthidden' ); + $this->assertFalse( $item['texthidden'], 'texthidden' ); $this->assertEquals( $item['id'], $revid ); @@ -107,11 +107,11 @@ class ApiRevisionDeleteTest extends ApiTestCase { $this->assertEquals( $out['status'], 'Success' ); $this->assertArrayHasKey( 'items', $out ); $item = $out['items'][0]; - // Check it has userhidden & texthidden keys - // but no commenthidden key - $this->assertArrayHasKey( 'userhidden', $item ); - $this->assertArrayNotHasKey( 'commenthidden', $item ); - $this->assertArrayHasKey( 'texthidden', $item ); + // Check it has userhidden & texthidden + // but not commenthidden + $this->assertTrue( $item['userhidden'], 'userhidden' ); + $this->assertFalse( $item['commenthidden'], 'commenthidden' ); + $this->assertTrue( $item['texthidden'], 'texthidden' ); $this->assertEquals( $item['id'], $revid ); } }