Fix RevDel API output for formatversion=2
authorBrad Jorsch <bjorsch@wikimedia.org>
Mon, 19 Dec 2016 16:36:09 +0000 (11:36 -0500)
committerBrad Jorsch <bjorsch@wikimedia.org>
Mon, 19 Dec 2016 16:48:49 +0000 (11:48 -0500)
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

includes/revisiondelete/RevDelArchivedFileItem.php
includes/revisiondelete/RevDelFileItem.php
includes/revisiondelete/RevDelLogItem.php
includes/revisiondelete/RevDelRevisionItem.php
tests/phpunit/includes/api/ApiRevisionDeleteTest.php

index decabba..32d4891 100644 (file)
@@ -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(
index 06b596e..9beafc9 100644 (file)
@@ -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(),
index 9e76f4c..047d6cf 100644 (file)
@@ -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();
index 7fff366..a9753b4 100644 (file)
@@ -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 ),
index d8282be..a4ca8a1 100644 (file)
@@ -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 );
        }
 }