Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/84321


Change subject: Use EntityModificationHelper for EntityContent
......................................................................

Use EntityModificationHelper for EntityContent

Change-Id: I3d7faa3881b0389213a76baafbc7ff8fb964cbb5
---
M repo/includes/api/ApiWikibase.php
M repo/includes/api/CreateClaim.php
M repo/includes/api/EntityModificationHelper.php
M repo/includes/api/ModifyClaim.php
M repo/includes/api/ModifyEntity.php
M repo/includes/api/RemoveClaims.php
M repo/includes/api/RemoveQualifiers.php
M repo/includes/api/RemoveReferences.php
M repo/includes/api/SetClaimValue.php
M repo/includes/api/SetQualifier.php
M repo/includes/api/SetReference.php
M repo/includes/api/SetStatementRank.php
12 files changed, 57 insertions(+), 76 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/21/84321/1

diff --git a/repo/includes/api/ApiWikibase.php 
b/repo/includes/api/ApiWikibase.php
index 8e74fc5..20dbfe8 100644
--- a/repo/includes/api/ApiWikibase.php
+++ b/repo/includes/api/ApiWikibase.php
@@ -309,55 +309,6 @@
                return $sites;
        }
 
-
-       /**
-        * Load the entity content of the given revision.
-        *
-        * Will fail by calling dieUsage() if the revision can not be found or 
can not be loaded.
-        *
-        * @since 0.3
-        *
-        * @param \Title   $title   : the title of the page to load the 
revision for
-        * @param bool|int $revId   : the revision to load. If not given, the 
current revision will be loaded.
-        * @param int      $audience
-        * @param \User    $user
-        * @param int      $audience: the audience to load this for, see 
Revision::FOR_XXX constants and
-        *                          Revision::getContent().
-        * @param \User    $user    : the user to consider if $audience == 
Revision::FOR_THIS_USER
-        *
-        * @return \Wikibase\EntityContent the revision's content.
-        */
-       protected function loadEntityContent( \Title $title, $revId = false,
-               $audience = \Revision::FOR_PUBLIC,
-               \User $user = null
-       ) {
-               if ( $revId === null || $revId === false || $revId === 0 ) {
-                       $page = \WikiPage::factory( $title );
-                       $content = $page->getContent( $audience, $user );
-               } else {
-                       $revision = \Revision::newFromId( $revId );
-
-                       if ( !$revision ) {
-                               $this->dieUsage( "Revision not found: $revId", 
'nosuchrevid' );
-                       }
-
-                       if ( $revision->getPage() != $title->getArticleID() ) {
-                               $this->dieUsage( "Revision $revId does not 
belong to " .
-                                       $title->getPrefixedDBkey(), 
'nosuchrevid' );
-                       }
-
-                       $content = $revision->getContent( $audience, $user );
-               }
-
-               if ( is_null( $content ) ) {
-                       $this->dieUsage( "Can't access item content of " .
-                               $title->getPrefixedDBkey() .
-                               ", revision may have been deleted.", 
'cant-load-entity-content' );
-               }
-
-               return $content;
-       }
-
        /**
         * Signal errors and warnings from a save operation to the API call's 
output.
         * This is much like handleStatus(), but specialized for Status objects 
returned by
diff --git a/repo/includes/api/CreateClaim.php 
b/repo/includes/api/CreateClaim.php
index 16c111a..d6391b5 100644
--- a/repo/includes/api/CreateClaim.php
+++ b/repo/includes/api/CreateClaim.php
@@ -36,7 +36,7 @@
 
                $entityId = 
$this->entityModificationHelper->getEntityIdFromString( $params['entity'] );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
 
                $propertyId = 
$this->entityModificationHelper->getEntityIdFromString( $params['property'] );
diff --git a/repo/includes/api/EntityModificationHelper.php 
b/repo/includes/api/EntityModificationHelper.php
index b3c1664..516400c 100644
--- a/repo/includes/api/EntityModificationHelper.php
+++ b/repo/includes/api/EntityModificationHelper.php
@@ -5,6 +5,7 @@
 use Title;
 use ValueParsers\ParseException;
 use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\EntityContent;
 use Wikibase\EntityContentFactory;
 use Wikibase\Lib\EntityIdParser;
 use Wikibase\Repo\WikibaseRepo;
@@ -75,4 +76,50 @@
                return $entityTitle;
        }
 
+       /**
+        * Load the entity content of the given revision.
+        *
+        * Will fail by calling dieUsage() if the revision can not be found or 
can not be loaded.
+        *
+        * @param Title   $title   : the title of the page to load the revision 
for
+        * @param bool|int $revId   : the revision to load. If not given, the 
current revision will be loaded.
+        * @param int      $audience
+        * @param \User    $user
+        * @param int      $audience: the audience to load this for, see 
Revision::FOR_XXX constants and
+        *                          Revision::getContent().
+        * @param \User    $user    : the user to consider if $audience == 
Revision::FOR_THIS_USER
+        *
+        * @return \Wikibase\EntityContent the revision's content.
+        */
+       public function getEntityContent( Title $title, $revId = false,
+                                                                               
  $audience = \Revision::FOR_PUBLIC,
+                                                                               
  \User $user = null
+       ) {
+               if ( $revId === null || $revId === false || $revId === 0 ) {
+                       $page = \WikiPage::factory( $title );
+                       $content = $page->getContent( $audience, $user );
+               } else {
+                       $revision = \Revision::newFromId( $revId );
+
+                       if ( !$revision ) {
+                               $this->apiMain->dieUsage( "Revision not found: 
$revId", 'nosuchrevid' );
+                       }
+
+                       if ( $revision->getPage() != $title->getArticleID() ) {
+                               $this->apiMain->dieUsage( "Revision $revId does 
not belong to " .
+                               $title->getPrefixedDBkey(), 'nosuchrevid' );
+                       }
+
+                       $content = $revision->getContent( $audience, $user );
+               }
+
+               if ( is_null( $content ) ) {
+                       $this->apiMain->dieUsage( "Can't access item content of 
" .
+                       $title->getPrefixedDBkey() .
+                       ", revision may have been deleted.", 
'cant-load-entity-content' );
+               }
+
+               return $content;
+       }
+
 }
\ No newline at end of file
diff --git a/repo/includes/api/ModifyClaim.php 
b/repo/includes/api/ModifyClaim.php
index dc79670..28d10a6 100644
--- a/repo/includes/api/ModifyClaim.php
+++ b/repo/includes/api/ModifyClaim.php
@@ -108,23 +108,6 @@
        }
 
        /**
-        * @since 0.4
-        *
-        * @param \Title $entityTitle
-        *
-        * @return EntityContent
-        *
-        * TODO: this could go into a ApiWikibaseHelper as it is useful for 
almost all API modules
-        */
-       protected function getEntityContent( \Title $entityTitle ) {
-               $params = $this->extractRequestParams();
-               $baseRevisionId = isset( $params['baserevid'] ) ? intval( 
$params['baserevid'] ) : null;
-               $entityContent = $this->loadEntityContent( $entityTitle, 
$baseRevisionId );
-
-               return $entityContent;
-       }
-
-       /**
         * @see  \Wikibase\Api\ApiWikibase::getRequiredPermissions()
         */
        protected function getRequiredPermissions( EntityContent 
$entityContent, array $params ) {
diff --git a/repo/includes/api/ModifyEntity.php 
b/repo/includes/api/ModifyEntity.php
index 5b31292..dedfb27 100644
--- a/repo/includes/api/ModifyEntity.php
+++ b/repo/includes/api/ModifyEntity.php
@@ -103,7 +103,7 @@
                }
 
                $baseRevisionId = isset( $params['baserevid'] ) ? intval( 
$params['baserevid'] ) : null;
-               $entityContent = $this->loadEntityContent( $entityTitle, 
$baseRevisionId );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle, 
$baseRevisionId );
 
                if ( is_null( $entityContent ) ) {
                        $this->dieUsage( "Can't access item content of " . 
$entityTitle->getPrefixedDBkey() . ", revision may have been deleted.", 
'no-such-entity' );
diff --git a/repo/includes/api/RemoveClaims.php 
b/repo/includes/api/RemoveClaims.php
index 9fcec0d..00e14a6 100644
--- a/repo/includes/api/RemoveClaims.php
+++ b/repo/includes/api/RemoveClaims.php
@@ -51,7 +51,7 @@
                $params = $this->extractRequestParams();
                $entityId = $this->getEntityId( $params );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
 
                $this->checkClaims( $entityContent->getEntity(), 
$params['claim'] );
                $summary = $this->claimModificationHelper->createSummary( 
$params, $this );
diff --git a/repo/includes/api/RemoveQualifiers.php 
b/repo/includes/api/RemoveQualifiers.php
index cf42230..cfebcd4 100644
--- a/repo/includes/api/RemoveQualifiers.php
+++ b/repo/includes/api/RemoveQualifiers.php
@@ -55,7 +55,7 @@
                        Entity::getIdFromClaimGuid( $claimGuid )
                );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
                $summary = $this->claimModificationHelper->createSummary( 
$params, $this );
 
diff --git a/repo/includes/api/RemoveReferences.php 
b/repo/includes/api/RemoveReferences.php
index 84b2710..ce3d4e2 100644
--- a/repo/includes/api/RemoveReferences.php
+++ b/repo/includes/api/RemoveReferences.php
@@ -55,7 +55,7 @@
                        Entity::getIdFromClaimGuid( $claimGuid )
                );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
                $summary = $this->claimModificationHelper->createSummary( 
$params, $this );
 
diff --git a/repo/includes/api/SetClaimValue.php 
b/repo/includes/api/SetClaimValue.php
index cd99487..c5e5327 100644
--- a/repo/includes/api/SetClaimValue.php
+++ b/repo/includes/api/SetClaimValue.php
@@ -52,7 +52,7 @@
                        Entity::getIdFromClaimGuid( $params['claim'] )
                );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
                $claimGuid = $params['claim'];
 
diff --git a/repo/includes/api/SetQualifier.php 
b/repo/includes/api/SetQualifier.php
index 9d41ae5..87a839b 100644
--- a/repo/includes/api/SetQualifier.php
+++ b/repo/includes/api/SetQualifier.php
@@ -39,7 +39,7 @@
                        Entity::getIdFromClaimGuid( $params['claim'] )
                );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
                $summary = $this->claimModificationHelper->createSummary( 
$params, $this );
 
@@ -74,7 +74,7 @@
                if ( !( $this->claimModificationHelper->validateClaimGuid( 
$params['claim'] ) ) ) {
                        $this->dieUsage( 'Invalid claim guid' , 'invalid-guid' 
);
                }
-               //@todo addshore all of these errors should be more general
+
                if ( !isset( $params['snakhash'] ) ) {
                        if ( !isset( $params['snaktype'] ) ) {
                                $this->dieUsage( 'When creating a new qualifier 
(ie when not providing a snakhash) a snaktype should be specified', 
'param-missing' );
diff --git a/repo/includes/api/SetReference.php 
b/repo/includes/api/SetReference.php
index a82e8ba..57b1cc6 100644
--- a/repo/includes/api/SetReference.php
+++ b/repo/includes/api/SetReference.php
@@ -55,7 +55,7 @@
                        Entity::getIdFromClaimGuid( $params['statement'] )
                );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
                $summary = $this->claimModificationHelper->createSummary( 
$params, $this );
 
diff --git a/repo/includes/api/SetStatementRank.php 
b/repo/includes/api/SetStatementRank.php
index 41a3634..210e6de 100644
--- a/repo/includes/api/SetStatementRank.php
+++ b/repo/includes/api/SetStatementRank.php
@@ -55,7 +55,7 @@
                        Entity::getIdFromClaimGuid( $params['statement'] )
                );
                $entityTitle = 
$this->entityModificationHelper->getEntityTitleFromEntityId( $entityId );
-               $entityContent = $this->getEntityContent( $entityTitle );
+               $entityContent = 
$this->entityModificationHelper->getEntityContent( $entityTitle );
                $entity = $entityContent->getEntity();
                $summary = $this->claimModificationHelper->createSummary( 
$params, $this );
 

-- 
To view, visit https://gerrit.wikimedia.org/r/84321
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3d7faa3881b0389213a76baafbc7ff8fb964cbb5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to