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