WikidataBuilder has uploaded a new change for review.
https://gerrit.wikimedia.org/r/120358
Change subject: New Wikidata Build - 23/03/2014 10:00
......................................................................
New Wikidata Build - 23/03/2014 10:00
Change-Id: I8ebaf5a3b18cbf2cfd66003935cdf06f6010ba2b
---
M composer.lock
M extensions/Wikibase/client/WikibaseClient.i18n.php
M extensions/Wikibase/repo/Wikibase.i18n.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
M extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
M extensions/Wikibase/repo/includes/api/EditEntity.php
M extensions/Wikibase/repo/includes/api/SearchEntities.php
M extensions/Wikibase/repo/includes/api/SetClaim.php
M extensions/Wikibase/repo/includes/api/SetSiteLink.php
M extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
M extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
M vendor/autoload.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
15 files changed, 231 insertions(+), 104 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata
refs/changes/58/120358/1
diff --git a/composer.lock b/composer.lock
index 425fe02..2d3104d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -850,12 +850,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc"
+ "reference": "9296f5949fa834e33b4e38679e316334d49fda9f"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/a5c1b9e581d26fd422afd6e76472f7f399d40fbc",
- "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/9296f5949fa834e33b4e38679e316334d49fda9f",
+ "reference": "9296f5949fa834e33b4e38679e316334d49fda9f",
"shasum": ""
},
"require": {
@@ -914,7 +914,7 @@
"wikibaserepo",
"wikidata"
],
- "time": "2014-03-22 09:43:36"
+ "time": "2014-03-22 23:50:57"
}
],
"packages-dev": [
diff --git a/extensions/Wikibase/client/WikibaseClient.i18n.php
b/extensions/Wikibase/client/WikibaseClient.i18n.php
index 0cd4c8b..83a03ab 100644
--- a/extensions/Wikibase/client/WikibaseClient.i18n.php
+++ b/extensions/Wikibase/client/WikibaseClient.i18n.php
@@ -1525,7 +1525,7 @@
'specialpages-group-wikibaseclient' => 'سرویس گیرنده {{WBREPONAME}}',
'tooltip-t-wikibase' => 'پیوند به آیتم متصل به مخزن داده',
'wikibase-after-page-move' => 'شما ممکن است در عین حال بخواهید آیتم
وابستهٔ ویکیداده را نیز به [$1 روزرسانی] کنید، تا پیوند به صفحه منتقل شده باقی
بماند.', # Fuzzy
- 'wikibase-after-page-move-queued' => '[ $1 مورد {{WBREPONAME}}] مرتبط
با این صفحه را به طور خودکار به زودی به روز خواهد شد.',
+ 'wikibase-after-page-move-queued' => '[$1 آیتم {{WBREPONAME}}] مرتبط
با این صفحه را به طور خودکار بهزودی بهروز خواهد شد.',
'wikibase-comment-add' => 'یک مورد {{WBREPONAME}} ایجاد شدهاست.',
'wikibase-comment-remove' => 'مورد مرتبط {{WBREPONAME}} حذف شد.
لینکهای زبان حذف شد.',
'wikibase-comment-linked' => 'مورد {{WBREPONAME}} در این صفحه مرتبط
شدهاست.',
@@ -2522,6 +2522,7 @@
$messages['kk-cyrl'] = array(
'specialpages-group-wikibaseclient' => '{{WBREPONAME}} тұтынушы',
'tooltip-t-wikibase' => 'Сілтеме дерек қойма данасымен байланысқан',
+ 'wikibase-after-page-move' => 'Жылжытылған беттің тіл сілтемесін түзету
үшін {{WBREPONAME}}-ке байланысқан элементті [$1 жаңартсаңыз] болады.',
'wikibase-after-page-move-queued' => '[$1 {{WBREPONAME}} данасы] бұл
бетке байланысқан біраздан кейін автоматты жаңартылады.',
'wikibase-comment-add' => '{{WBREPONAME}} данасы құрылды.',
'wikibase-comment-remove' => 'Байланысқан {{WBREPONAME}} данасын жойды.
Тіл сілтемелерін алып тастады.',
@@ -3358,16 +3359,16 @@
*/
$messages['nl'] = array(
'wikibase-client-desc' => 'Client voor de uitbreiding Wikibase',
- 'specialpages-group-wikibaseclient' => 'Wikidataclient', # Fuzzy
+ 'specialpages-group-wikibaseclient' => 'Client voor {{WBREPONAME}}',
'tooltip-t-wikibase' => 'Koppeling naar item in verbonden
gegevensrepository',
- 'wikibase-after-page-move' => 'U kunt ook het gekoppelde Wikidataitem
[$1 bijwerken] om de taalkoppelingen op de hernoemde pagina te kunnen
beheren.', # Fuzzy
- 'wikibase-after-page-move-queued' => 'Het [$1 Wikidata-item] gekoppeld
aan deze pagina zal binnenkort automatisch worden bijgewerkt.', # Fuzzy
- 'wikibase-comment-add' => 'Wikidata item aangemaakt.', # Fuzzy
- 'wikibase-comment-remove' => 'Het gekoppelde Wikidataitem is
verwijderd. De taalkoppelingen zijn verwijderd.', # Fuzzy
- 'wikibase-comment-linked' => 'Er is een Wikidataitem gekoppeld aan deze
pagina.', # Fuzzy
- 'wikibase-comment-unlink' => 'Deze pagina is ontkoppeld van het
Wikidataitem. De taalkoppelingen zijn verwijderd.', # Fuzzy
- 'wikibase-comment-restore' => 'Het gekoppelde Wikidataitem is
teruggeplaatst. De taalkoppelingen zijn hersteld.', # Fuzzy
- 'wikibase-comment-update' => 'Wikidataitem bijgewerkt', # Fuzzy
+ 'wikibase-after-page-move' => 'U kunt ook het gekoppelde item van
{{WBREPONAME}} [$1 bijwerken] om de taalkoppelingen op de hernoemde pagina te
kunnen beheren.',
+ 'wikibase-after-page-move-queued' => 'Het aan deze pagina gekoppelde
[$1 item van {{WBREPONAME}}] wordt binnenkort automatisch bijgewerkt.',
+ 'wikibase-comment-add' => 'Item van {{WBREPONAME}} aangemaakt.',
+ 'wikibase-comment-remove' => 'Het gekoppelde item van {{WBREPONAME}} is
verwijderd. De taalkoppelingen zijn verwijderd.',
+ 'wikibase-comment-linked' => 'Er is een item van {{WBREPONAME}}
gekoppeld aan deze pagina.',
+ 'wikibase-comment-unlink' => 'Deze pagina is ontkoppeld van het item
van {{WBREPONAME}}. De taalkoppelingen zijn verwijderd.',
+ 'wikibase-comment-restore' => 'Het gekoppelde item van {{WBREPONAME}}
is teruggeplaatst. De taalkoppelingen zijn hersteld.',
+ 'wikibase-comment-update' => 'Item van {{WBREPONAME}} bijgewerkt',
'wikibase-comment-sitelink-add' => 'Taalkoppeling toegevoegd: $1',
'wikibase-comment-sitelink-change' => 'Taalkoppeling gewijzigd van $1
naar $2',
'wikibase-comment-sitelink-remove' => 'Taalkoppeling verwijderd: $1',
@@ -3391,13 +3392,13 @@
'wikibase-linkitem-success-link' => "De pagina's zijn gekoppeld. U kunt
het item met de koppelingen vinden in de [$1 centrale gegevensrepository].",
'wikibase-property-notfound' => 'Eigenschap $1 niet gevonden.',
'wikibase-property-notsupportedyet' => 'Wikibase ondersteunt het
eigenschapstype voor de eigenschap $1 nog niet.',
- 'wikibase-rc-hide-wikidata' => 'Wikidata $1', # Fuzzy
+ 'wikibase-rc-hide-wikidata' => '{{WBREPONAME}} $1',
'wikibase-rc-hide-wikidata-hide' => 'verbergen',
'wikibase-rc-hide-wikidata-show' => 'weergeven',
- 'wikibase-rc-show-wikidata-pref' => 'Wikidatabewerkingen weergeven in
recente wijzigingen', # Fuzzy
+ 'wikibase-rc-show-wikidata-pref' => 'Bewerkingen van {{WBREPONAME}}
weergeven in recente wijzigingen',
'wikibase-rc-wikibase-edit-letter' => 'D',
- 'wikibase-rc-wikibase-edit-title' => 'Wikidatabewerking', # Fuzzy
- 'wikibase-watchlist-show-changes-pref' => 'Wikidata bewerkingen
weergeven in uw volglijst', # Fuzzy
+ 'wikibase-rc-wikibase-edit-title' => 'Bewerking van {{WBREPONAME}}',
+ 'wikibase-watchlist-show-changes-pref' => 'Bewerkingen van
{{WBREPONAME}} weergeven in uw volglijst',
'wikibase-error-serialize-error' => 'De gegevens konden niet
geserialiseerd worden',
'wikibase-error-invalid-entity-id' => 'Het opgegeven ID is niet bekend
in het systeem. Gebruik een geldig entiteits-ID.',
'special-unconnectedpages' => "Pagina's die niet gekoppeld zijn aan
items",
@@ -3408,7 +3409,7 @@
'wikibase-unconnectedpages-page-warning' => 'De paginanaam kan niet
worden gebruikt voor de zoekopdracht en wordt genegeerd.',
'wikibase-unconnectedpages-iwdata-label' => "Alleen pagina's met
intertaalkoppelingen",
'wikibase-unconnectedpages-format-row' => '($1
intertaalkoppeling{{PLURAL:$1||en}} op de pagina)',
- 'wikibase-pageinfo-entity-id' => 'Wikidata Item-ID', # Fuzzy
+ 'wikibase-pageinfo-entity-id' => '{{WBREPONAME}} item-ID',
'wikibase-pageinfo-entity-id-none' => 'Geen',
'wikibase-property-render-error' => 'Het verwerken van de eigenschap $1
is mislukt: $2',
);
diff --git a/extensions/Wikibase/repo/Wikibase.i18n.php
b/extensions/Wikibase/repo/Wikibase.i18n.php
index a23dac6..78dafbd 100644
--- a/extensions/Wikibase/repo/Wikibase.i18n.php
+++ b/extensions/Wikibase/repo/Wikibase.i18n.php
@@ -283,8 +283,8 @@
'wikibase-api-no-such-site' => 'Could not find such a site', # Do not
translate
'wikibase-api-no-such-sitelink' => 'Could not find such a sitelink', #
Do not translate
'wikibase-api-no-such-statement' => 'Could not find such a statement',
# Do not translate
- 'wikibase-api-not-a-statement' => 'Not a statement', # Do not translate
- 'wikibase-api-not-an-item' => 'Not an item', # Do not translate
+ 'wikibase-api-not-statement' => 'Not a statement', # Do not translate
+ 'wikibase-api-not-item' => 'Not an item', # Do not translate
'wikibase-api-not-recognized-siteid' => 'The supplied site identifier
was not recognized', # Do not translate
'wikibase-api-not-recognized' => 'Something was not recognized', # Do
not translate
'wikibase-api-not-recognized-array' => 'An array was expected, but not
recognized', # Do not translate
@@ -305,6 +305,7 @@
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}
search the related logs]</span>
to find out where it went.',
'wikibase-noentity-createone' => 'You can also [[$1|create a new
one]].',
+ 'wikibase-special-mergeitems-error-prefix' => 'The items could not be
merged. The following error occurred:',
// item - summary and autocomment, see docs/summaries.txt
'wikibase-item-summary-wbsetitem' => 'Created a new item', // legacy
@@ -1068,8 +1069,8 @@
'wikibase-api-no-such-site' => '!!DO NOT TRANSLATE!! Could not find
such a site, this could be to the user entering the wrong data',
'wikibase-api-no-such-sitelink' => 'Could not find such a sitelink,
this could be to the user entering the wrong data',
'wikibase-api-no-such-statement' => '!!DO NOT TRANSLATE!! Could not
find such a statement, this could be to the user entering the wrong data',
- 'wikibase-api-not-a-statement' => '!!DO NOT TRANSLATE!! The passed
parameter is Not a statement when a statement is expected',
- 'wikibase-api-not-an-item' => '!!DO NOT TRANSLATE!! The passed
parameter is Not an item when an item is expected (the passed parameter may
infact be a property)',
+ 'wikibase-api-not-statement' => '!!DO NOT TRANSLATE!! The passed
parameter is Not a statement when a statement is expected',
+ 'wikibase-api-not-item' => '!!DO NOT TRANSLATE!! The passed parameter
is Not an item when an item is expected (the passed parameter may infact be a
property)',
'wikibase-api-not-recognized-siteid' => '!!DO NOT TRANSLATE!! The
supplied site identifier was not recognized',
'wikibase-api-not-recognized' => '!!DO NOT TRANSLATE!! Something was
not recognized (general message)',
'wikibase-api-not-recognized-array' => '!!DO NOT TRANSLATE!! An array
was expected, but not recognized. The user probably passed the API a malformed
parameter',
@@ -1278,6 +1279,7 @@
Right to alter the [[d:Wikidata:Glossary#Term|terms]] of
[[d:Wikidata:Glossary#Item|items]].',
'right-property-create' => '{{doc-right|property-create}}
Right to create new [[d:Wikidata:Glossary#Property|properties]].',
+ 'wikibase-special-mergeitems-error-prefix' => 'Prefix for making
Special:MergeItems error messages more informative.',
);
/** Achinese (Acèh)
@@ -7573,6 +7575,7 @@
* @author Pooja 1810
* @author Siddhartha Ghai
* @author Vivek Rai
+ * @author Wikiuser13
*/
$messages['hi'] = array(
'wikibase-edit' => 'संपादन',
@@ -7586,7 +7589,7 @@
'wikibase-sitelink-site-edit-placeholder' => 'साइट',
'wikibase-sitelink-page-edit-placeholder' => 'पृष्ठ',
'wikibase-remove' => 'ह्टाना',
- 'wikibase-propertyedittool-full' => 'दि ग७यी मूल्यो कि सुचि पुरई हे!',
+ 'wikibase-propertyedittool-full' => 'मानों की सूची पूर्ण है.',
'wikibase-entityselector-more' => 'ज़्यादा',
'wikibase-itembytitle-lookup-page' => 'प्ण्णा',
'wikibase-itembytitle-submit' => 'खोजे',
@@ -10020,10 +10023,12 @@
'wikibase-item-summary-wbeditentity' => 'Жаңа элемент құрылды',
'wikibase-item-summary-wbeditentity-create' => 'also',
'wikibase-item-summary-wbeditentity-update' => 'Элемент жаңартылды',
- 'wikibase-item-summary-wbsetlabel-set' => '[$2] деғгейі өзгертілді',
+ 'wikibase-item-summary-wbsetlabel-set' => '[$2] деңгейін өзгерті',
'wikibase-item-summary-wbsetlabel-remove' => '[$2] деңгейі алынып
тасталды',
'wikibase-item-summary-wbsetdescription-set' => '[$2] сипаттамасы
өзгертілді',
'wikibase-item-summary-wbsetdescription-remove' => '[$2] сипаттамасы
алынып тасталды',
+ 'wikibase-item-summary-wbsetsitelink-add' => '[$2] сайтынан сілтеме
қосты',
+ 'wikibase-item-summary-wbsetsitelink-remove' => '[$2] сайтынан
сілтемені аластады',
);
/** Korean (한국어)
@@ -12583,7 +12588,7 @@
'wikibase-undo-nocontent' => 'De inhoud van versie $2 van pagina $1 kan
niet geladen worden',
'wikibase-propertyedittool-full' => 'De lijst met waarden is compleet.',
'wikibase-propertyedittool-counter-pending-tooltip' => '{{PLURAL:$1|Eén
waarde|$1 waarden}} nog niet opgeslagen',
- 'wikibase-propertyedittool-counter-entrieslabel' =>
'{{PLURAL:$1|ingang|ingangen}}',
+ 'wikibase-propertyedittool-counter-entrieslabel' =>
'{{PLURAL:$1|item|items}}',
'wikibase-sitelinksedittool-full' => "Koppelingen naar pagina's zijn al
ingesteld voor alle bekende sites.",
'wikibase-disambiguation-title' => 'Disambiguatie voor "$1"',
'wb-special-newitem-new-item-notification' => 'Nieuw item $1 aangemaakt
en doorverwezen naar de pagina voor dat item. Terug naar $2.',
@@ -12610,7 +12615,7 @@
'wikibase-snakview-snaktypeselector-somevalue' => 'onbekende waarde',
'wikibase-snakview-snaktypeselector-novalue' => 'geen waarde',
'wikibase-shortcopyrightwarning' => 'Door te klikken op "$1" gaat u
akkoord met de [[$2|gebruiksvoorwaarden]] en gaat u onherroepelijk akkoord met
het vrijgeven van uw bijdrage onder de $3.',
- 'wikibase-copyrighttooltip-acknowledge' => 'Ik accepteer deze
voorwaarden voor mijn toekomstige bewerken. Geef dit bericht niet opnieuw
weer.',
+ 'wikibase-copyrighttooltip-acknowledge' => 'Ik accepteer deze
voorwaarden voor mijn toekomstige bewerkingen. Geef dit bericht niet opnieuw
weer.',
'wikibase-entityselector-more' => 'meer',
'wikibase-anonymouseditwarning' => 'Waarschuwing: u bent niet aangemeld.
Uw IP-adres wordt opgeslagen in bewerkingsgeschiedenis van deze entiteit.',
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
index 53b934f..eb8a234 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
@@ -6,10 +6,11 @@
use OutOfBoundsException;
use Wikibase\DataModel\ByPropertyIdArray;
use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
use Wikibase\DataModel\Claim\Claims;
use Wikibase\DataModel\Entity\Entity;
use Wikibase\Lib\ClaimGuidGenerator;
-use Wikibase\Repo\WikibaseRepo;
+use Wikibase\Lib\ClaimGuidValidator;
use Wikibase\Summary;
/**
@@ -23,48 +24,54 @@
class ChangeOpClaim extends ChangeOpBase {
/**
- * @since 0.4
- *
* @var Claim
*/
- protected $claim;
+ private $claim;
/**
- * @since 0.5
- *
* @var ClaimGuidGenerator
*/
- protected $guidGenerator;
+ private $guidGenerator;
/**
- * @since 0.5
- *
+ * @var ClaimGuidValidator
+ */
+ private $guidValidator;
+
+ /**
+ * @var ClaimGuidParser
+ */
+ private $guidParser;
+
+ /**
* @var int|null
*/
- protected $index;
+ private $index;
/**
* @param Claim $claim
* @param ClaimGuidGenerator $guidGenerator
+ * @param ClaimGuidValidator $guidValidator
+ * @param ClaimGuidParser $guidParser
* @param int|null $index
*
* @throws InvalidArgumentException
*/
- public function __construct( $claim, $guidGenerator, $index = null ) {
- if ( !$claim instanceof Claim ) {
- throw new InvalidArgumentException( '$claim needs to be
an instance of Claim' );
- }
-
- if( !$guidGenerator instanceof ClaimGuidGenerator ){
- throw new InvalidArgumentException( '$guidGenerator
needs to be an instance of ClaimGuidGenerator' );
- }
-
+ public function __construct(
+ Claim $claim,
+ ClaimGuidGenerator $guidGenerator,
+ ClaimGuidValidator $guidValidator,
+ ClaimGuidParser $guidParser,
+ $index = null
+ ) {
if( !is_null( $index ) && !is_integer( $index ) ) {
throw new InvalidArgumentException( '$index needs to be
null or an integer value' );
}
$this->claim = $claim;
$this->guidGenerator = $guidGenerator;
+ $this->guidValidator = $guidValidator;
+ $this->guidParser = $guidParser;
$this->index = $index;
}
@@ -73,16 +80,12 @@
*/
public function apply( Entity $entity, Summary $summary = null ) {
- //TODO: inject parser and validator
- $guidValidator =
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
- $guidParser =
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
-
if( $this->claim->getGuid() === null ){
$this->claim->setGuid( $this->guidGenerator->newGuid()
);
}
- $guid = $guidParser->parse( $this->claim->getGuid() );
+ $guid = $this->guidParser->parse( $this->claim->getGuid() );
- if ( $guidValidator->validate( $guid->getSerialization() ) ===
false ) {
+ if ( $this->guidValidator->validate( $guid->getSerialization()
) === false ) {
throw new ChangeOpException( "Claim does not have a
valid GUID" );
} else if ( !$entity->getId()->equals( $guid->getEntityId() ) ){
throw new ChangeOpException( "Claim GUID invalid for
given entity" );
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
index e5e9467..d304193 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
@@ -4,14 +4,17 @@
use InvalidArgumentException;
use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
use Wikibase\DataModel\Claim\Statement;
+use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Reference;
-use Wikibase\Item;
use Wikibase\LabelDescriptionDuplicateDetector;
use Wikibase\Lib\ClaimGuidGenerator;
use Wikibase\SiteLinkCache;
use Wikibase\Term;
+use Wikibase\Lib\ClaimGuidValidator;
+use Wikibase\Repo\WikibaseRepo;
/**
* @since 0.5
@@ -25,12 +28,30 @@
private $toItem;
private $fromChangeOps;
private $toChangeOps;
- /** @var array */
+
+ /**
+ * @var array
+ */
private $ignoreConflicts;
- /** @var LabelDescriptionDuplicateDetector */
+
+ /**
+ * @var LabelDescriptionDuplicateDetector
+ */
private $labelDescriptionDuplicateDetector;
- /** @var SitelinkCache */
+
+ /**
+ * @var SitelinkCache
+ */
private $sitelinkCache;
+
+ /**
+ * @var ClaimGuidValidator
+ */
+ private $claimGuidValidator;
+ /**
+ * @var ClaimGuidParser
+ */
+ private $claimGuidParser;
/**
* @param Item $fromItem
@@ -47,14 +68,19 @@
SitelinkCache $sitelinkCache,
$ignoreConflicts = array()
) {
+ $this->assertValidIgnoreConflictValues( $ignoreConflicts );
+
$this->fromItem = $fromItem;
$this->toItem = $toItem;
$this->fromChangeOps = new ChangeOps();
$this->toChangeOps = new ChangeOps();
- $this->assertValidIgnoreConflictValues( $ignoreConflicts );
$this->ignoreConflicts = $ignoreConflicts;
$this->labelDescriptionDuplicateDetector =
$labelDescriptionDuplicateDetector;
$this->sitelinkCache = $sitelinkCache;
+
+ //@todo inject me
+ $this->claimGuidValidator =
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
+ $this->claimGuidParser =
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
}
/**
@@ -152,9 +178,11 @@
if( $toMergeToClaim ) {
$this->generateReferencesChangeOps( $toClaim,
$toMergeToClaim->getGuid() );
} else {
- $this->toChangeOps->add( new ChangeOpClaim(
- $toClaim,
- new ClaimGuidGenerator(
$this->toItem->getId() )
+ $this->toChangeOps->add( new ChangeOpClaim(
+ $toClaim,
+ new ClaimGuidGenerator( $this->toItem->getId()
),
+ $this->claimGuidValidator,
+ $this->claimGuidParser
) );
}
}
diff --git a/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
b/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
index 2ab6f32..27fe321 100644
--- a/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
+++ b/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
@@ -94,17 +94,19 @@
* @param Entity $entity
* @param SerializationOptions $options
*
- * @throws RuntimeException
+ * @return array
*/
protected function getEntityVars( Entity $entity, SerializationOptions
$options ) {
$entityId = $entity->getId();
if ( !$entityId ) {
- throw new RuntimeException( '$entity has no entity id'
);
+ $entityId = ''; //XXX: should probably throw an
exception
+ } else {
+ $entityId = $entityId->getSerialization();
}
$configVars = array(
- 'wbEntityId' => $entityId->getSerialization(),
+ 'wbEntityId' => $entityId,
'wbUsedEntities' => FormatJson::encode(
$this->getBasicEntityInfo( $entity ) ),
'wbEntity' => FormatJson::encode(
$this->getSerializedEntity( $entity, $options ) )
);
diff --git a/extensions/Wikibase/repo/includes/api/EditEntity.php
b/extensions/Wikibase/repo/includes/api/EditEntity.php
index 77f5e8f..89569ab 100644
--- a/extensions/Wikibase/repo/includes/api/EditEntity.php
+++ b/extensions/Wikibase/repo/includes/api/EditEntity.php
@@ -20,13 +20,16 @@
use Wikibase\ChangeOp\ChangeOps;
use Wikibase\DataModel\Claim\Claim;
use Wikibase\DataModel\Entity\Entity;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\Property;
use Wikibase\EntityFactory;
use Wikibase\EntityRevisionLookup;
use Wikibase\Lib\ClaimGuidGenerator;
+use Wikibase\Lib\ClaimGuidValidator;
use Wikibase\Lib\Serializers\SerializerFactory;
+use Wikibase\Repo\WikibaseRepo;
use Wikibase\Summary;
use Wikibase\Utils;
@@ -59,12 +62,25 @@
protected $entityRevisionLookup;
/**
+ * @var ClaimGuidValidator
+ */
+ private $claimGuidValidator;
+
+ /**
+ * @var ClaimGuidParser
+ */
+ private $claimGuidParser;
+
+ /**
* @see ApiBase::_construct()
*/
public function __construct( $mainModule, $moduleName, $prefix = '' ) {
parent::__construct( $mainModule, $moduleName, $prefix );
$this->validLanguageCodes = array_flip(
Utils::getLanguageCodes() );
+
+ $this->claimGuidValidator =
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
+ $this->claimGuidParser =
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
}
/**
@@ -225,7 +241,9 @@
$changeOps->add(
$this->getClaimsChangeOps(
$data['claims'],
- new ClaimGuidGenerator(
$entity->getId() )
+ new ClaimGuidGenerator(
$entity->getId() ),
+ $this->claimGuidValidator,
+ $this->claimGuidParser
)
);
}
@@ -425,9 +443,11 @@
*
* @param array $claims
* @param ClaimGuidGenerator $guidGenerator
+ * @param ClaimGuidValidator $guidValidator
+ * @param ClaimGuidParser $guidParser
* @return ChangeOpClaim[]
*/
- protected function getClaimsChangeOps( $claims, $guidGenerator ) {
+ protected function getClaimsChangeOps( $claims, $guidGenerator,
$guidValidator, $guidParser ) {
if ( !is_array( $claims ) ) {
$this->dieUsage( "List of claims must be an array",
'not-recognized-array' );
}
@@ -438,12 +458,12 @@
foreach( $claims as $subClaims ){
$changeOps = array_merge( $changeOps,
$this->getRemoveClaimsChangeOps(
$subClaims ),
- $this->getModifyClaimsChangeOps(
$subClaims, $guidGenerator ) );
+ $this->getModifyClaimsChangeOps(
$subClaims, $guidGenerator , $guidValidator, $guidParser ) );
}
} else {
$changeOps = array_merge( $changeOps,
$this->getRemoveClaimsChangeOps( $claims ),
- $this->getModifyClaimsChangeOps( $claims,
$guidGenerator ) );
+ $this->getModifyClaimsChangeOps( $claims,
$guidGenerator , $guidValidator, $guidParser ) );
}
return $changeOps;
@@ -452,9 +472,12 @@
/**
* @param array $claims array of serialized claims
* @param ClaimGuidGenerator $guidGenerator
+ * @param ClaimGuidValidator $guidValidator
+ * @param ClaimGuidParser $guidParser
+ *
* @return ChangeOp[]
*/
- private function getModifyClaimsChangeOps( $claims, $guidGenerator ){
+ private function getModifyClaimsChangeOps( $claims, $guidGenerator,
$guidValidator, $guidParser ){
$opsToReturn = array();
$serializerFactory = new SerializerFactory();
@@ -476,7 +499,7 @@
if( array_key_exists( 'id', $claimArray ) ){
$opsToReturn[] = new
ChangeOpClaimRemove( $claim->getGuid() );
}
- $opsToReturn[] = new ChangeOpClaim( $claim,
$guidGenerator );
+ $opsToReturn[] = new ChangeOpClaim( $claim,
$guidGenerator, $guidValidator, $guidParser );
}
}
return $opsToReturn;
@@ -694,7 +717,7 @@
array( 'code' => 'no-such-site', 'info' => $this->msg(
'wikibase-api-no-such-site' )->text() ),
array( 'code' => 'no-external-page', 'info' =>
$this->msg( 'wikibase-api-no-external-page' )->text() ),
array( 'code' => 'not-item', 'info' => $this->msg(
'wikibase-api-not-item' )->text() ),
- array( 'code' => 'no-such-sitelink', 'info' =>
$this->msg( 'wikibase-api-no-sitelink' )->text() ),
+ array( 'code' => 'no-such-sitelink', 'info' =>
$this->msg( 'wikibase-api-no-such-sitelink' )->text() ),
array( 'code' => 'invalid-json', 'info' => $this->msg(
'wikibase-api-invalid-json' )->text() ),
array( 'code' => 'not-recognized-string', 'info' =>
$this->msg( 'wikibase-api-not-recognized-string' )->text() ),
array( 'code' => 'param-illegal', 'info' => $this->msg(
'wikibase-api-param-illegal' )->text() ),
diff --git a/extensions/Wikibase/repo/includes/api/SearchEntities.php
b/extensions/Wikibase/repo/includes/api/SearchEntities.php
index ee7e7bf..a687003 100644
--- a/extensions/Wikibase/repo/includes/api/SearchEntities.php
+++ b/extensions/Wikibase/repo/includes/api/SearchEntities.php
@@ -290,13 +290,11 @@
// Actual result set.
$entries = array_slice( $entries, $params['continue'],
$params['limit'] );
- $allowedParams = $this->getAllowedParams();
$nextContinuation = $params['continue'] + $params['limit'];
- $maxContinuation =
$allowedParams['continue'][ApiBase::PARAM_MAX];
// Only pass search-continue param if there are more results
and the maximum continuation
// limit is not exceeded.
- if ( $hits > $nextContinuation && $nextContinuation <=
$maxContinuation ) {
+ if ( $hits > $nextContinuation && $nextContinuation <=
ApiBase::LIMIT_SML1 ) {
$this->getResult()->addValue(
null,
'search-continue',
@@ -347,14 +345,7 @@
ApiBase::PARAM_MIN => 0,
ApiBase::PARAM_RANGE_ENFORCE => true,
),
- 'continue' => array(
- ApiBase::PARAM_TYPE => 'limit',
- ApiBase::PARAM_DFLT => 0,
- ApiBase::PARAM_MAX => ApiBase::LIMIT_SML1,
- ApiBase::PARAM_MAX2 => ApiBase::LIMIT_SML2,
- ApiBase::PARAM_MIN => 0,
- ApiBase::PARAM_RANGE_ENFORCE => true,
- ),
+ 'continue' => null,
);
}
diff --git a/extensions/Wikibase/repo/includes/api/SetClaim.php
b/extensions/Wikibase/repo/includes/api/SetClaim.php
index fa34a3a..6b78f89 100644
--- a/extensions/Wikibase/repo/includes/api/SetClaim.php
+++ b/extensions/Wikibase/repo/includes/api/SetClaim.php
@@ -3,6 +3,7 @@
namespace Wikibase\Api;
use ApiBase;
+use ApiMain;
use DataValues\IllegalValueException;
use InvalidArgumentException;
use OutOfBoundsException;
@@ -17,7 +18,9 @@
use Wikibase\DataModel\Claim\Claims;
use Wikibase\DataModel\Entity\Entity;
use Wikibase\Lib\ClaimGuidGenerator;
+use Wikibase\Lib\ClaimGuidValidator;
use Wikibase\Lib\Serializers\SerializerFactory;
+use Wikibase\Repo\WikibaseRepo;
use Wikibase\Summary;
/**
@@ -30,6 +33,25 @@
* @author Adam Shorland
*/
class SetClaim extends ModifyClaim {
+
+ /**
+ * @var ClaimGuidValidator
+ */
+ private $claimGuidValidator;
+
+ public function __construct( ApiMain $mainModule, $moduleName,
$modulePrefix = '' ) {
+ parent::__construct( $mainModule, $moduleName, $modulePrefix );
+ }
+
+ /**
+ * @return ClaimGuidValidator
+ */
+ private function getClaimGuidValidator() {
+ if( !isset( $this->claimGuidValidator ) ) {
+ $this->claimGuidValidator =
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
+ }
+ return $this->claimGuidValidator;
+ }
/**
* @see ApiBase::execute
@@ -57,6 +79,8 @@
$changeop = new ChangeOpClaim(
$claim,
new ClaimGuidGenerator( $guid->getEntityId() ),
+ $this->getClaimGuidValidator(),
+ $this->claimGuidParser,
( isset( $params['index'] ) ? $params['index'] : null )
);
try{
diff --git a/extensions/Wikibase/repo/includes/api/SetSiteLink.php
b/extensions/Wikibase/repo/includes/api/SetSiteLink.php
index db49d5f..f0d32a5 100644
--- a/extensions/Wikibase/repo/includes/api/SetSiteLink.php
+++ b/extensions/Wikibase/repo/includes/api/SetSiteLink.php
@@ -141,7 +141,7 @@
array( 'code' => 'not-item', 'info' => $this->msg(
'wikibase-api-not-item' )->text() ),
array( 'code' => 'not-recognized-siteid', 'info' =>
$this->msg( 'wikibase-api-not-recognized-siteid' )->text() ),
array( 'code' => 'no-external-page', 'info' =>
$this->msg( 'wikibase-api-no-external-page' )->text() ),
- array( 'code' => 'no-such-sitelink', 'info' =>
$this->msg( 'wikibase-api-no-sitelink' )->text() ),
+ array( 'code' => 'no-such-sitelink', 'info' =>
$this->msg( 'wikibase-api-no-such-sitelink' )->text() ),
) );
}
diff --git a/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
b/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
index a0441ff..c6dd96c 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
@@ -88,7 +88,7 @@
if ( $this->modifyEntity( $status ) ) {
if ( !$status->isGood() ) {
- $this->showErrorHTML( $status->getMessage() );
+ $this->showErrorHTML(
$this->msg('wikibase-special-mergeitems-error-prefix')->text() . ' ' .
$status->getMessage() );
} elseif ( $this->saveChanges() ) {
return true;
}
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
index fd0f3b9..8b880f1 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
@@ -4,6 +4,8 @@
use Wikibase\ChangeOp\ChangeOpClaim;
use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Claim\ClaimGuid;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
use Wikibase\DataModel\Claim\Claims;
use Wikibase\DataModel\Entity\Entity;
use Wikibase\DataModel\Entity\Item;
@@ -12,6 +14,8 @@
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
use Wikibase\Lib\ClaimGuidGenerator;
+use Wikibase\Lib\ClaimGuidValidator;
+use Wikibase\Repo\WikibaseRepo;
/**
* @covers Wikibase\ChangeOp\ChangeOpClaim
@@ -26,24 +30,68 @@
*/
class ChangeOpClaimTest extends \PHPUnit_Framework_TestCase {
- public function invalidConstructorProvider() {
- $validGuidGenerator = new ClaimGuidGenerator( new ItemId( 'q42'
) );
+ public function getValidClaim() {
+ return new Claim( new PropertyNoValueSnak( 7 ) );
+ }
- $args = array();
- $args[] = array( array(), $validGuidGenerator );
+ public function getValidGuidGenerator( ItemId $itemId ) {
+ return new ClaimGuidGenerator( $itemId );
+ }
- return $args;
+ private function getMockGuidValidator() {
+ $mock = $this->getMockBuilder(
'\Wikibase\Lib\ClaimGuidValidator' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $mock->expects( $this->any() )
+ ->method( 'validate' )
+ ->will( $this->returnValue( true ) );
+ $mock->expects( $this->any() )
+ ->method( 'validateFormat' )
+ ->will( $this->returnValue( true ) );
+ return $mock;
+ }
+
+ private function getMockGuidParser( ItemId $itemId ) {
+ $mockClaimGuid = $this->getMockBuilder(
'Wikibase\DataModel\Claim\ClaimGuid' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $mockClaimGuid->expects( $this->any() )
+ ->method( 'getSerialization' )
+ ->will( $this->returnValue( 'theValidatorIsMockedSoMeh!
:D' ) );
+ $mockClaimGuid->expects( $this->any() )
+ ->method( 'getEntityId' )
+ ->will( $this->returnValue( $itemId ) );
+
+ $mock = $this->getMockBuilder(
'Wikibase\DataModel\Claim\ClaimGuidParser' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $mock->expects( $this->any() )
+ ->method( 'parse' )
+ ->will( $this->returnValue( $mockClaimGuid ) );
+ return $mock;
+ }
+
+ public function invalidIndexProvider() {
+ return array(
+ array( 'foo' ),
+ array( array() ),
+ array( $this->getValidClaim() ),
+ );
}
/**
- * @dataProvider invalidConstructorProvider
+ * @dataProvider invalidIndexProvider
* @expectedException InvalidArgumentException
- *
- * @param Claim $claim
- * @param ClaimGuidGenerator $guidGenerator
*/
- public function testInvalidConstruct( $claim, $guidGenerator ) {
- new ChangeOpClaim( $claim, $guidGenerator );
+ public function testConstructionWithInvalidIndex( $invalidIndex ) {
+ $itemId = new ItemId( 'q42' );
+ new ChangeOpClaim(
+ $this->getValidClaim(),
+ $this->getValidGuidGenerator( $itemId),
+ $this->getMockGuidValidator(),
+ $this->getMockGuidParser( $itemId ),
+ $invalidIndex
+ );
}
public function provideTestApply() {
@@ -124,6 +172,8 @@
$changeOpClaim = new ChangeOpClaim(
$claim,
new ClaimGuidGenerator( $entity->getId() ),
+
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator(), //@todo mock me!
+
WikibaseRepo::getDefaultInstance()->getClaimGuidParser(), //@todo mock me!
$index
);
$changeOpClaim->apply( $entity );
diff --git a/vendor/autoload.php b/vendor/autoload.php
index be6f821..98ba56c 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
-return ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c::getLoader();
+return ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b::getLoader();
diff --git a/vendor/composer/autoload_real.php
b/vendor/composer/autoload_real.php
index 5cb3f0b..1a5d76a 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c
+class ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b
{
private static $loader;
@@ -19,9 +19,9 @@
return self::$loader;
}
-
spl_autoload_register(array('ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c',
'loadClassLoader'), true, true);
+
spl_autoload_register(array('ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b',
'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-
spl_autoload_unregister(array('ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c',
'loadClassLoader'));
+
spl_autoload_unregister(array('ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b',
'loadClassLoader'));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
@@ -45,14 +45,14 @@
$includeFiles = require __DIR__ . '/autoload_files.php';
foreach ($includeFiles as $file) {
- composerRequireabc19352de6a6ec10a4cdef700c1db2c($file);
+ composerRequire834601ca90ee05c029592186cbb7841b($file);
}
return $loader;
}
}
-function composerRequireabc19352de6a6ec10a4cdef700c1db2c($file)
+function composerRequire834601ca90ee05c029592186cbb7841b($file)
{
require $file;
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index ac424ca..bcf3d9e 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -877,12 +877,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc"
+ "reference": "9296f5949fa834e33b4e38679e316334d49fda9f"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/a5c1b9e581d26fd422afd6e76472f7f399d40fbc",
- "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/9296f5949fa834e33b4e38679e316334d49fda9f",
+ "reference": "9296f5949fa834e33b4e38679e316334d49fda9f",
"shasum": ""
},
"require": {
@@ -901,7 +901,7 @@
"wikibase/data-model": "~0.7.2",
"wikibase/easyrdf_lite": "~0.8.1"
},
- "time": "2014-03-22 09:43:36",
+ "time": "2014-03-22 23:50:57",
"type": "mediawiki-extension",
"installation-source": "dist",
"autoload": {
--
To view, visit https://gerrit.wikimedia.org/r/120358
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8ebaf5a3b18cbf2cfd66003935cdf06f6010ba2b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits