Daniel Kinzler has uploaded a new change for review.

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


Change subject: Add snak validation to wbcreateclaim module.
......................................................................

Add snak validation to wbcreateclaim module.

Prevent invalid snaks to be created via the CreateClaim module.

Change-Id: I49216858fa1b077285a71e6fe206a773aa7c9de7
---
M repo/includes/api/CreateClaim.php
1 file changed, 27 insertions(+), 4 deletions(-)


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

diff --git a/repo/includes/api/CreateClaim.php 
b/repo/includes/api/CreateClaim.php
index 0beb963..9267bda 100644
--- a/repo/includes/api/CreateClaim.php
+++ b/repo/includes/api/CreateClaim.php
@@ -4,9 +4,9 @@
 
 use ApiBase, MWException;
 
+use ApiMain;
 use DataValues\IllegalValueException;
 use InvalidArgumentException;
-use UsageException;
 use ValueParsers\ParseException;
 use Wikibase\EntityId;
 use Wikibase\Entity;
@@ -14,13 +14,12 @@
 use Wikibase\EntityContentFactory;
 use Wikibase\Property;
 use Wikibase\Repo\WikibaseRepo;
-use Wikibase\SnakFactory;
 use Wikibase\LibRegistry;
 use Wikibase\Claim;
 use Wikibase\Autocomment;
-use Wikibase\Settings;
 use Wikibase\Summary;
 use Wikibase\Snak;
+use Wikibase\Validators\ValidatorErrorLocalizer;
 
 /**
  * API module for creating claims.
@@ -51,7 +50,29 @@
  */
 class CreateClaim extends ModifyClaim {
 
-       // TODO: rights
+
+       /**
+        * @var SnakValidationHelper
+        */
+       protected $snakValidation;
+
+       /**
+        * see ApiBase::__construct()
+        *
+        * @param ApiMain $mainModule
+        * @param string  $moduleName
+        * @param string  $modulePrefix
+        */
+       public function __construct( ApiMain $mainModule, $moduleName, 
$modulePrefix = '' ) {
+               parent::__construct( $mainModule, $moduleName, $modulePrefix );
+
+               $this->snakValidation = new SnakValidationHelper(
+                       $this,
+                       
WikibaseRepo::getDefaultInstance()->getPropertyDataTypeLookup(),
+                       
WikibaseRepo::getDefaultInstance()->getDataTypeFactory(),
+                       new ValidatorErrorLocalizer()
+               );
+       }
 
        /**
         * @see \ApiBase::execute
@@ -85,6 +106,8 @@
                        $this->dieUsage( $parseException->getMessage(), 
'claim-invalid-guid' );
                }
 
+               $this->snakValidation->validateSnak( $snak );
+
                $claim = $this->addClaim( $entityContent->getEntity(), $snak );
                $summary = $this->createSummary( $snak, 'create' );
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I49216858fa1b077285a71e6fe206a773aa7c9de7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>

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

Reply via email to