Addshore has uploaded a new change for review.

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


Change subject: Die if wbeditentity tries to clear from old revid
......................................................................

Die if wbeditentity tries to clear from old revid

Bug: 57754

Change-Id: Ia623feab098c820382c44b12f9b4b6eb35317692
---
M repo/includes/api/EditEntity.php
1 file changed, 19 insertions(+), 1 deletion(-)


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

diff --git a/repo/includes/api/EditEntity.php b/repo/includes/api/EditEntity.php
index 9e4153f..64f6941 100644
--- a/repo/includes/api/EditEntity.php
+++ b/repo/includes/api/EditEntity.php
@@ -8,7 +8,6 @@
 use MWException;
 use Revision;
 use SiteList;
-use SiteSQLStore;
 use Title;
 use Wikibase\ChangeOp\ChangeOp;
 use Wikibase\ChangeOp\ChangeOpAliases;
@@ -22,6 +21,7 @@
 use Wikibase\Claim;
 use Wikibase\Entity;
 use Wikibase\EntityContent;
+use Wikibase\EntityRevisionLookup;
 use Wikibase\Item;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\Lib\Serializers\SerializerFactory;
@@ -53,12 +53,20 @@
        protected $validLanguageCodes;
 
        /**
+        * @since 0.5
+        *
+        * @var EntityRevisionLookup
+        */
+       protected $entityRevisionLookup;
+
+       /**
         * @see ApiBase::_construct()
         */
        public function __construct( $mainModule, $moduleName ) {
                parent::__construct( $mainModule, $moduleName );
 
                $this->validLanguageCodes = array_flip( 
Utils::getLanguageCodes() );
+               $this->entityRevisionLookup = 
WikibaseRepo::getDefaultInstance()->getEntityRevisionLookup();
        }
 
        /**
@@ -125,13 +133,23 @@
                $data = json_decode( $params['data'], true );
                $this->validateDataProperties( $data, 
$entityContent->getWikiPage() );
 
+               $currentRevision = 
$this->entityRevisionLookup->getEntityRevision( $entity->getId() );
                if ( $params['clear'] ) {
+                       // If we are not clearing the current revision then die!
+                       if( !$entityContent->getEntityRevision()->getRevision() 
=== $currentRevision->getRevision() ) {
+                               wfProfileOut( __METHOD__ );
+                               $this->dieUsage(
+                                       'Tried to clear entity using baserevid 
not equal to that of latest revision',
+                                       'editconflict'
+                               );
+                       }
                        $entity->clear();
                }
 
                // if we create a new property, make sure we set the datatype
                if( !$entityContent->getTitle()->exists() && $entity instanceof 
Property ){
                        if ( !isset( $data['datatype'] ) ) {
+                               wfProfileOut( __METHOD__ );
                                $this->dieUsage( 'No datatype given', 
'param-illegal' );
                        } else {
                                $entity->setDataTypeId( $data['datatype'] );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia623feab098c820382c44b12f9b4b6eb35317692
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