jenkins-bot has submitted this change and it was merged.
Change subject: New Wikidata Build - 2015-04-15T10:00:02+0000
......................................................................
New Wikidata Build - 2015-04-15T10:00:02+0000
Change-Id: Icca83444d98c19b3b9f5388aeb8faae0f5abdb0e
---
M composer.lock
M extensions/Wikibase/client/i18n/azb.json
M extensions/Wikibase/client/includes/UpdateRepo/UpdateRepo.php
M extensions/Wikibase/client/includes/store/ClientStore.php
M extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
M extensions/Wikibase/client/tests/phpunit/MockClientStore.php
M
extensions/Wikibase/client/tests/phpunit/includes/store/sql/DirectSqlStoreTest.php
M extensions/Wikibase/lib/i18n/azb.json
M extensions/Wikibase/lib/includes/ChangeNotificationJob.php
A extensions/Wikibase/lib/includes/store/NullEntityPrefetcher.php
M extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
M extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
M extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
M extensions/Wikibase/repo/Wikibase.hooks.php
M extensions/Wikibase/repo/i18n/de.json
M extensions/Wikibase/repo/i18n/en.json
M extensions/Wikibase/repo/i18n/hi.json
M extensions/Wikibase/repo/i18n/khw.json
M extensions/Wikibase/repo/i18n/nb.json
M extensions/Wikibase/repo/i18n/ru.json
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaimRemove.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpMainSnak.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
M extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
M extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php
M extensions/Wikibase/repo/includes/Dumpers/JsonDumpGenerator.php
M extensions/Wikibase/repo/includes/Dumpers/RdfDumpGenerator.php
M extensions/Wikibase/repo/includes/api/ClaimModificationHelper.php
M extensions/Wikibase/repo/includes/api/GetClaims.php
M extensions/Wikibase/repo/includes/api/GetEntities.php
M extensions/Wikibase/repo/includes/specials/SpecialModifyTerm.php
M extensions/Wikibase/repo/includes/store/Store.php
M extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
M extensions/Wikibase/repo/includes/store/sql/SqlStore.php
M extensions/Wikibase/repo/maintenance/dumpJson.php
M extensions/Wikibase/repo/maintenance/dumpRdf.php
M extensions/Wikibase/repo/maintenance/rebuildItemsPerSite.php
M
extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
M
extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimValueTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/SetQualifierTest.php
M
extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialModifyTermTestCase.php
M
extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ItemsPerSiteBuilderTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php
M vendor/composer/autoload_classmap.php
M vendor/composer/installed.json
50 files changed, 325 insertions(+), 116 deletions(-)
Approvals:
JanZerebecki: Looks good to me, approved
jenkins-bot: Verified
diff --git a/composer.lock b/composer.lock
index 96b82b4..37967d5 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1209,12 +1209,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "43ad0d2c5bc348c04e25c4fc1797f3dbb113ce70"
+ "reference": "74ed9964b5ce079264ef79496551a48364f41e84"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/43ad0d2c5bc348c04e25c4fc1797f3dbb113ce70",
- "reference": "43ad0d2c5bc348c04e25c4fc1797f3dbb113ce70",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/74ed9964b5ce079264ef79496551a48364f41e84",
+ "reference": "74ed9964b5ce079264ef79496551a48364f41e84",
"shasum": ""
},
"require": {
@@ -1282,7 +1282,7 @@
"wikibaserepo",
"wikidata"
],
- "time": "2015-04-14 15:26:12"
+ "time": "2015-04-15 09:53:00"
},
{
"name": "wikibase/wikimedia-badges",
diff --git a/extensions/Wikibase/client/i18n/azb.json
b/extensions/Wikibase/client/i18n/azb.json
index d684810..e1ae257 100644
--- a/extensions/Wikibase/client/i18n/azb.json
+++ b/extensions/Wikibase/client/i18n/azb.json
@@ -1,17 +1,18 @@
{
"@metadata": {
"authors": [
- "Amir a57"
+ "Amir a57",
+ "Koroğlu"
]
},
- "tooltip-t-wikibase": "آیتمه باغلانتی داده مخزنی ایله ایلگی سی وار",
+ "tooltip-t-wikibase": "آیتمه باغلانتی وئری مخزنی ایله ایلگی سی وار",
"wikibase-comment-update": "{{WBREPONAME}} آیتمی دَییشیلدی",
"wikibase-dataitem": "آیتم {{WBREPONAME}}",
- "wikibase-editlinks": "باغلانتیلاری دَییشدیر",
- "wikibase-editlinkstitle": "داها دیل لردکی باغلانتی لاری دَییشدیر",
+ "wikibase-editlinks": "باغلانتیلاری دَییشدیر",
+ "wikibase-editlinkstitle": "داها دیللردکی باغلانتیلاری دَییشدیر",
"wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}",
"wikibase-rc-hide-wikidata-hide": "گیزلت",
- "wikibase-rc-hide-wikidata-show": "گؤستر",
+ "wikibase-rc-hide-wikidata-show": "گؤرست",
"wikibase-rc-wikibase-edit-letter": "د",
"wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} دَییشیکلیغی",
"wikibase-otherprojects": "آیری پروژهلر"
diff --git a/extensions/Wikibase/client/includes/UpdateRepo/UpdateRepo.php
b/extensions/Wikibase/client/includes/UpdateRepo/UpdateRepo.php
index ea21694..8f9f36a 100644
--- a/extensions/Wikibase/client/includes/UpdateRepo/UpdateRepo.php
+++ b/extensions/Wikibase/client/includes/UpdateRepo/UpdateRepo.php
@@ -155,10 +155,7 @@
*/
public function injectJob( JobQueueGroup $jobQueueGroup ) {
$job = $this->createJob( $jobQueueGroup );
-
- wfProfileIn( __METHOD__ . '#push' );
$jobQueueGroup->push( $job );
- wfProfileOut( __METHOD__ . '#push' );
}
/**
diff --git a/extensions/Wikibase/client/includes/store/ClientStore.php
b/extensions/Wikibase/client/includes/store/ClientStore.php
index 5ab3f1c..bf63616 100644
--- a/extensions/Wikibase/client/includes/store/ClientStore.php
+++ b/extensions/Wikibase/client/includes/store/ClientStore.php
@@ -113,4 +113,14 @@
* @since 0.2
*/
public function rebuild();
+
+ /**
+ * Returns an EntityPrefetcher which can be used to prefetch a list of
entity
+ * ids in case we need to for example load a batch of entity ids.
+ *
+ * @since 0.5
+ *
+ * @return EntityPrefetcher
+ */
+ public function getEntityPrefetcher();
}
diff --git a/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
b/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
index ac7d5c5..dbbf3f4 100644
--- a/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
+++ b/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
@@ -144,6 +144,11 @@
private $subscriptionManager = null;
/**
+ * @var PrefetchingWikiPageEntityMetaDataAccessor|null
+ */
+ private $entityPrefetcher = null;
+
+ /**
* @var string
*/
private $siteId;
@@ -315,10 +320,7 @@
// NOTE: Keep cache key in sync with
SqlStore::newEntityRevisionLookup in WikibaseRepo
$cacheKeyPrefix = $this->cacheKeyPrefix .
':WikiPageEntityRevisionLookup';
- $metaDataFetcher = new
PrefetchingWikiPageEntityMetaDataAccessor(
- new WikiPageEntityMetaDataLookup(
$this->entityIdParser, $this->repoWiki )
- );
-
+ $metaDataFetcher = $this->getEntityPrefetcher();
$rawLookup = new WikiPageEntityRevisionLookup(
$this->contentCodec,
$metaDataFetcher,
@@ -451,4 +453,16 @@
return $this->propertyInfoTable;
}
+ /**
+ * @return PrefetchingWikiPageEntityMetaDataAccessor
+ */
+ public function getEntityPrefetcher() {
+ if ( $this->entityPrefetcher === null ) {
+ $this->entityPrefetcher = new
PrefetchingWikiPageEntityMetaDataAccessor(
+ new WikiPageEntityMetaDataLookup(
$this->entityIdParser )
+ );
+ }
+
+ return $this->entityPrefetcher;
+ }
}
diff --git a/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
b/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
index 6705537..a6aaa73 100644
--- a/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
+++ b/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
@@ -11,6 +11,7 @@
use Wikibase\ClientStore;
use Wikibase\Lib\Store\EntityLookup;
use Wikibase\Lib\Store\EntityRevisionLookup;
+use Wikibase\Lib\Store\NullEntityPrefetcher;
use Wikibase\Lib\Store\SiteLinkLookup;
use Wikibase\PropertyInfoStore;
use Wikibase\PropertyLabelResolver;
@@ -177,4 +178,13 @@
return self::$propertyInfoStore;
}
+ /**
+ * @see ClientStore::getEntityPrefetcher
+ *
+ * @return EntityPrefetcher
+ */
+ public function getEntityPrefetcher() {
+ return new NullEntityPrefetcher();
+ }
+
}
diff --git
a/extensions/Wikibase/client/tests/phpunit/includes/store/sql/DirectSqlStoreTest.php
b/extensions/Wikibase/client/tests/phpunit/includes/store/sql/DirectSqlStoreTest.php
index 7fa41fa..fc54f4f 100644
---
a/extensions/Wikibase/client/tests/phpunit/includes/store/sql/DirectSqlStoreTest.php
+++
b/extensions/Wikibase/client/tests/phpunit/includes/store/sql/DirectSqlStoreTest.php
@@ -54,6 +54,7 @@
array( 'getUsageLookup',
'Wikibase\Client\Usage\UsageLookup' ),
array( 'getSubscriptionManager',
'Wikibase\Client\Usage\SubscriptionManager' ),
array( 'getEntityIdLookup',
'Wikibase\Store\EntityIdLookup' ),
+ array( 'getEntityPrefetcher',
'Wikibase\Lib\Store\EntityPrefetcher' ),
);
}
diff --git a/extensions/Wikibase/lib/i18n/azb.json
b/extensions/Wikibase/lib/i18n/azb.json
index d066905..7954313 100644
--- a/extensions/Wikibase/lib/i18n/azb.json
+++ b/extensions/Wikibase/lib/i18n/azb.json
@@ -1,8 +1,9 @@
{
"@metadata": {
"authors": [
- "Amir a57"
+ "Amir a57",
+ "Koroğlu"
]
},
- "wikibase-sitelinks-wikipedia": "ویکیپئدیا"
+ "wikibase-sitelinks-wikipedia": "ویکیپدیا"
}
diff --git a/extensions/Wikibase/lib/includes/ChangeNotificationJob.php
b/extensions/Wikibase/lib/includes/ChangeNotificationJob.php
index af61c08..0397d36 100644
--- a/extensions/Wikibase/lib/includes/ChangeNotificationJob.php
+++ b/extensions/Wikibase/lib/includes/ChangeNotificationJob.php
@@ -90,8 +90,6 @@
*/
public function getChanges() {
if ( $this->changes === null ) {
- wfProfileIn( __METHOD__ . '#load' );
-
$params = $this->getParams();
$ids = $params['changeIds'];
@@ -112,8 +110,6 @@
. " Some changes were lost, possibly
due to premature pruning.",
E_USER_WARNING );
}
-
- wfProfileOut( __METHOD__ . '#load' );
}
return $this->changes;
diff --git a/extensions/Wikibase/lib/includes/store/NullEntityPrefetcher.php
b/extensions/Wikibase/lib/includes/store/NullEntityPrefetcher.php
new file mode 100644
index 0000000..dc45d57
--- /dev/null
+++ b/extensions/Wikibase/lib/includes/store/NullEntityPrefetcher.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Wikibase\Lib\Store;
+
+use Wikibase\DataModel\Entity\EntityId;
+
+/**
+ * No-op EntityPrefetcher
+ *
+ * @since 0.5
+ *
+ * @license GNU GPL v2+
+ * @author Marius Hoch < [email protected] >
+ */
+class NullEntityPrefetcher implements EntityPrefetcher {
+
+ /**
+ * Prefetches data for a list of entity ids.
+ *
+ * @param EntityId[] $entityIds
+ */
+ public function prefetch( array $entityIds ) {}
+
+ /**
+ * Purges prefetched data about a given entity.
+ *
+ * @param EntityId $entityId
+ */
+ public function purge( EntityId $entityId ) {}
+
+ /**
+ * Purges all prefetched data.
+ */
+ public function purgeAll() {}
+
+}
diff --git a/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
b/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
index 0556849..12bfc4b 100644
--- a/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
+++ b/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
@@ -310,7 +310,6 @@
//TODO: $anyOfTheLinks might get very large and hit some size
limit imposed by the database.
// We could chop it up of we know that size limit. For
MySQL, it's select @@max_allowed_packet.
- wfProfileIn( __METHOD__ . '#select' );
$conflictingLinks = $dbr->select(
$this->table,
array(
@@ -321,7 +320,6 @@
"($anyOfTheLinks) AND ips_item_id != " . intval(
$item->getId()->getNumericId() ),
__METHOD__
);
- wfProfileOut( __METHOD__ . '#select' );
$conflicts = array();
diff --git a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
index 345742a..0d54f05 100644
--- a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
+++ b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
@@ -295,8 +295,7 @@
/**
* Calculate a weight the given entity to be used for ranking. Should
be normalized
* between 0 and 1, but that's not a strong constraint.
- * This implementation relies on sitelinks, and simply takes the number
of sitelinks
- * as the weight.
+ * This implementation uses the max of the number of labels and the
number of sitelinks.
*
* TODO Should be moved to its own object and be added via dependency
injection
*
@@ -307,11 +306,17 @@
private function getWeight( EntityDocument $entity ) {
// FIXME: OCP violation. No support for new types of entities
can be registered
- if ( $entity instanceof Item ) {
- return $entity->getSiteLinkList()->count() / 1000.0;
+ $weight = 0.0;
+
+ if ( $entity instanceof FingerprintProvider ) {
+ $weight = max( $weight,
$entity->getFingerprint()->getLabels()->count() / 1000.0 );
}
- return 0.0;
+ if ( $entity instanceof Item ) {
+ $weight = max( $weight,
$entity->getSiteLinkList()->count() / 1000.0 );
+ }
+
+ return $weight;
}
/**
@@ -828,6 +833,7 @@
$entityType,
array(
'LIMIT' => $this->maxConflicts,
+ 'caseSensitive' => false
)
);
@@ -886,8 +892,8 @@
$matchConditions = array(
'L.term_language' => $lang,
- 'L.term_text' => $label,
- 'D.term_text' => $description,
+ 'L.term_search_key' => $this->getSearchKey(
$label, $lang ),
+ 'D.term_search_key' => $this->getSearchKey(
$description, $lang )
);
$termConditions[] = $dbr->makeList( $matchConditions,
LIST_AND );
diff --git a/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
b/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
index 0155d1d..4090b3b 100644
--- a/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php
@@ -389,6 +389,12 @@
array( 'de' => 'Foo' ),
array( 'P6' ),
),
+ 'by label, different case' => array(
+ $entities,
+ Property::ENTITY_TYPE,
+ array( 'de' => 'fOO' ),
+ array( 'P6' ),
+ ),
'by label mismatch' => array(
$entities,
Item::ENTITY_TYPE,
@@ -446,6 +452,20 @@
array( 'de' => 'Bar' ),
array( 'Q1' ),
),
+ 'by label and description, different label
capitalization' => array(
+ $entities,
+ Item::ENTITY_TYPE,
+ array( 'de' => 'fOO' ),
+ array( 'de' => 'Bar' ),
+ array( 'Q1' ),
+ ),
+ 'by label and description, different description
capitalization' => array(
+ $entities,
+ Item::ENTITY_TYPE,
+ array( 'de' => 'Foo' ),
+ array( 'de' => 'bAR' ),
+ array( 'Q1' ),
+ ),
'two languages for label and description' => array(
$entities,
Item::ENTITY_TYPE,
diff --git a/extensions/Wikibase/repo/Wikibase.hooks.php
b/extensions/Wikibase/repo/Wikibase.hooks.php
index 97060e7..cbec186 100644
--- a/extensions/Wikibase/repo/Wikibase.hooks.php
+++ b/extensions/Wikibase/repo/Wikibase.hooks.php
@@ -964,10 +964,12 @@
$out->addJsConfigVars(
'wbUserSpecifiedLanguages',
// All user-specified languages, that are valid
term languages
- array_intersect(
+ // Reindex the keys so that javascript still
works if an unknown
+ // language code in the babel box causes an
index to miss
+ array_values( array_intersect(
$userLanguageLookup->getUserSpecifiedLanguages( $out->getUser() ),
$termsLanguages->getLanguages()
- )
+ ) )
);
}
diff --git a/extensions/Wikibase/repo/i18n/de.json
b/extensions/Wikibase/repo/i18n/de.json
index 1085db9..bb53913 100644
--- a/extensions/Wikibase/repo/i18n/de.json
+++ b/extensions/Wikibase/repo/i18n/de.json
@@ -414,6 +414,7 @@
"apihelp-wbgetclaims-example-1": "Ruft Behauptungen für das Objekt mit
der Kennung Q42 ab",
"apihelp-wbgetentities-description": "Ruft die Daten für mehrere
Wikibase-Objekte ab.",
"apihelp-wbgetentities-param-ids": "Die Kennungen der Objekte, von
denen die Daten abgerufen werden sollen",
+ "apihelp-wbmergeitems-example-1": "Führt Daten von Q42 in Q222
zusammen",
"apihelp-wbparsevalue-param-parser": "Kennung des zu verwendenden
Werteparsers",
"apihelp-wbparsevalue-param-values": "Die zu parsenden Werte",
"apihelp-wbparsevalue-example-1": "Keine Änderung am Format der
Zeichenfolge.",
diff --git a/extensions/Wikibase/repo/i18n/en.json
b/extensions/Wikibase/repo/i18n/en.json
index 71e8bd6..8ca930e 100644
--- a/extensions/Wikibase/repo/i18n/en.json
+++ b/extensions/Wikibase/repo/i18n/en.json
@@ -169,19 +169,16 @@
"wikibase-setlabel-intro": "This form allows you to set the label of an
entity. You need to provide the id of the entity (e.g. Q23), a language code
(e.g. \"en\") and the label to set to.",
"wikibase-setlabel-label": "Label:",
"wikibase-setlabel-submit": "Set label",
- "wikibase-setlabel-warning-remove": "Do you really want to remove the
label of [[$1]]?",
"special-setdescription": "Set a description",
"wikibase-setdescription-introfull": "You are setting the description
in $2 for [[$1]].",
"wikibase-setdescription-intro": "This form allows you to set the
description of an entity. You need to provide the id of the entity (e.g. Q23),
a language code (e.g. \"en\") and the description to set to.",
"wikibase-setdescription-label": "Description:",
"wikibase-setdescription-submit": "Set description",
- "wikibase-setdescription-warning-remove": "Do you really want to remove
the description of [[$1]]?",
"special-setaliases": "Set aliases",
"wikibase-setaliases-introfull": "You are setting the aliases in $2 for
[[$1]]. Several aliases are separated by a pipe (<code>|</code>) character.",
"wikibase-setaliases-intro": "This form allows you to set the aliases
of an entity. You need to provide the id of the entity (e.g. Q23), a language
code (e.g. \"en\") and the aliases to set to. Several aliases are separated by
a pipe (<code>|</code>) character.",
"wikibase-setaliases-label": "Aliases:",
"wikibase-setaliases-submit": "Set aliases",
- "wikibase-setaliases-warning-remove": "Do you really want to remove all
aliases of [[$1]]?",
"special-setlabeldescriptionaliases": "Set label, description and
aliases",
"wikibase-setlabeldescriptionaliases-introfull": "You are setting
label, description and aliases in $2 for [[$1]]. Several aliases are separated
by a pipe (<code>|</code>) character.",
"wikibase-setlabeldescriptionaliases-intro": "This form allows you to
set label, description and aliases of an entity. You need to first provide the
id of the entity (e.g. Q23) and a language code (e.g. \"en\").",
diff --git a/extensions/Wikibase/repo/i18n/hi.json
b/extensions/Wikibase/repo/i18n/hi.json
index 644ffa0..6542cf7 100644
--- a/extensions/Wikibase/repo/i18n/hi.json
+++ b/extensions/Wikibase/repo/i18n/hi.json
@@ -5,7 +5,8 @@
"Pooja 1810",
"Siddhartha Ghai",
"Vivek Rai",
- "Wikiuser13"
+ "Wikiuser13",
+ "రహ్మానుద్దీన్"
]
},
"wikibase-edit": "संपादन",
@@ -15,14 +16,16 @@
"wikibase-addreference": "स्रोत जोड़ें",
"wikibase-save-inprogress": "सहेजा जा रहा है…",
"wikibase-remove-inprogress": "हटाया जा रहा है…",
- "wikibase-label-empty": "कोई लेबल परिभाषित नहीं",
- "wikibase-description-empty": "कोई विवरण परिभाषित नहीं",
+ "wikibase-label-empty": "कोई नामपत्र परिभाषित नहीं",
+ "wikibase-description-empty": "कोई विवरण परिभाषित नहीं।",
"wikibase-description-edit-placeholder": "विवरण दर्ज करें",
"wikibase-sitelink-site-edit-placeholder": "साइट",
"wikibase-sitelink-page-edit-placeholder": "पृष्ठ",
"wikibase-statements": "कथन",
"wikibase-sitelinks-special": "अन्य वेबसाइट",
"wikibase-remove": "ह्टाना",
+ "wikibase-aliases-empty": "कोई उर्फ परिभाषित नही।",
+ "wikibase-statementview-rank-normal": "साधारण पद",
"wikibase-statementview-referencesheading-pendingcountersubject":
"{{PLURAL:$1|स्रोत}}",
"wikibase-entityselector-more": "ज़्यादा",
"wikibase-itembytitle-lookup-page": "पृष्ठ:",
diff --git a/extensions/Wikibase/repo/i18n/khw.json
b/extensions/Wikibase/repo/i18n/khw.json
index 5605475..ea909a5 100644
--- a/extensions/Wikibase/repo/i18n/khw.json
+++ b/extensions/Wikibase/repo/i18n/khw.json
@@ -7,8 +7,10 @@
"wikibase-edit": "ترمیم",
"wikibase-add": "شامل کورے",
"wikibase-label-empty": "کیہ لیبل ڈیفائن کورونو نو بیتی شیر",
+ "wikibase-description-empty": "ھیچ کیہ عنوان نیکی",
"wikibase-statements": "بیانات",
"wikibase-sitelinks-special": "دیگر ویب سائٹ",
+ "wikibase-aliases-empty": "ھیچ کیہ مثال موجود نیکی",
"wikibase-statementview-rank-normal": "عام درجہ بندی",
"wikibase-statementview-referencesheading-pendingcountersubject":
"{{PLURAL:$1|reference|references}}"
}
diff --git a/extensions/Wikibase/repo/i18n/nb.json
b/extensions/Wikibase/repo/i18n/nb.json
index 66875b3..6fc01cc 100644
--- a/extensions/Wikibase/repo/i18n/nb.json
+++ b/extensions/Wikibase/repo/i18n/nb.json
@@ -132,7 +132,7 @@
"wikibase-newproperty-invalid-datatype": "En ugyldig datatype er
angitt.",
"special-newitem": "Lag et nytt element",
"wikibase-newitem-summary": "Sjekk først at
[[Special:ItemByTitle|elementet ikke allerede finnes]]!<br>For alle nye
elementer bør du fylle inn en [[Help:Label|etikett]] og en kort
[[Help:Description|beskrivelse]].",
- "wikibase-newitem-fieldset": "Opprettt et nytt element",
+ "wikibase-newitem-fieldset": "Opprettet et nytt element",
"wikibase-newitem-site": "Nettsted for første nettstedlenke",
"wikibase-newitem-page": "Tittel for første nettstedlenke",
"wikibase-newitem-no-external-page": "Den oppgitte tittel ble ikke
funnet på nettstedet",
@@ -236,12 +236,12 @@
"wikibase-noentity-createone": "Du kan også [[$1|opprette en ny en]].",
"wikibase-special-mergeitems-error-prefix": "Elementene kunne ikke slås
sammen. Følgende feil oppstod:",
"wikibase-item-summary-wbsetitem": "Opprettet et nytt element",
- "wikibase-item-summary-wbcreate-new": "Lag et nytt element",
+ "wikibase-item-summary-wbcreate-new": "Opprettet et nytt element",
"wikibase-item-summary-wbcreateredirect": "Omdirigert til $4",
"wikibase-item-summary-wbeditentity": "Opprettet et nytt element",
"wikibase-item-summary-wbeditentity-create": "Opprettet et nytt
element",
"wikibase-item-summary-wbeditentity-update": "Endret et element",
- "wikibase-item-summary-wbeditentity-override": "Overstyre et element",
+ "wikibase-item-summary-wbeditentity-override": "Overstyrte et element",
"wikibase-item-summary-wbsetreference": "Lagre en referanse",
"wikibase-item-summary-wbsetreference-add": "La til referanse til
påstand",
"wikibase-item-summary-wbsetreference-set": "Endret referanse for
påstand",
diff --git a/extensions/Wikibase/repo/i18n/ru.json
b/extensions/Wikibase/repo/i18n/ru.json
index dd172cd..d1b4788 100644
--- a/extensions/Wikibase/repo/i18n/ru.json
+++ b/extensions/Wikibase/repo/i18n/ru.json
@@ -358,7 +358,7 @@
"wikibase-listdatatypes-string-head": "Строка",
"wikibase-listdatatypes-string-body": "Символьное поле данных для
строки символов. Обычное применение — идентификаторы, письменные формы которых
не зависят от языка. Такие строки могут в некоторых случаях транслитерироваться
в другие системы записи.\n* value — явно задаваемое значение для строки на
определенном языке",
"wikibase-listdatatypes-time-head": "Время",
- "wikibase-listdatatypes-time-body": "Символьное поле данных для
значения времени. Задаётся как время с некоторой точностью и границами.
Внутренний формат хранения значений времени — всегда [[:w:ru:Пролептический
григорианский календарь|«предваряющий григорианский календарь»]], но во время
синтаксического анализа и форматирования могут использоваться другие
форматы.\n* time — явно задаваемое значение для точки во времени,
представленное по ISO8601 (год всегда состоит из 11 цифр, даты всегда должны
быть указаны), в формате +00000002013-01-01T00:00:00Z\n* timezone — явно
задаваемое значение в виде целого числа. Информация о часовом поясе задаётся
как смещение от UTC в минутах.\n* before — явно задаваемое целочисленное
значение для указания, на сколько единиц ранее(?) указанного времени это может
быть. Единицы задается точностью.\n* after — явно задаваемое целочисленное
значение для указания, на сколько единиц позднее(?) указанного времени это
может быть. Единицы задается точностью.\n* precision — явно задаваемое
значение, закодированное в виде короткого числа (shortint). Номера имеют
следующие значения: 0 — миллиард лет, 1 — сто миллионов лет,..., 6 —
тысячелетие, 7 — век, 8 — десятилетие, 9 — год, 10 — месяц, 11 — день, 12 —
час, 13 — минута, 14 — секунда.\n* calendarmodel — явно задаваемое значение в
виде URI. Определит модель календаря, который должен использоваться для
отображения этого значения времени.",
+ "wikibase-listdatatypes-time-body": "Символьное поле данных для
значения времени. Задаётся как время с некоторой точностью и границами.
Внутренний формат хранения значений времени — всегда [[:w:ru:Пролептический
григорианский календарь|«предваряющий григорианский календарь»]], но во время
синтаксического анализа и форматирования могут использоваться другие
форматы.\n* time — явно задаваемое значение для точки во времени,
представленное как отметка времени, соответствующей ISO 8601 (например,
+2013-01-01T00:00:00Z) Год всегда должен быть указан и при необходимости
дополнен в начале нулями, чтобы содержать от 1 до 16 цифр.\n* timezone — явно
задаваемое значение в виде целого числа. Информация о часовом поясе задаётся
как смещение от UTC в минутах.\n* before — явно задаваемое целочисленное
значение для указания, на сколько единиц ранее(?) указанного времени это может
быть. Единицы задается точностью.\n* after — явно задаваемое целочисленное
значение для указания, на сколько единиц позднее(?) указанного времени это
может быть. Единицы задается точностью.\n* precision — явно задаваемое
значение, закодированное в виде короткого числа (shortint). Номера имеют
следующие значения: 0 — миллиард лет, 1 — сто миллионов лет,..., 6 —
тысячелетие, 7 — век, 8 — десятилетие, 9 — год, 10 — месяц, 11 — день, 12 —
час, 13 — минута, 14 — секунда.\n* calendarmodel — явно задаваемое значение в
виде URI. Определит модель календаря, который должен использоваться для
отображения этого значения времени.",
"wikibase-listdatatypes-url-head": "URL",
"wikibase-listdatatypes-url-body": "Символьное поле данных для
URL-адреса. URL-адреса имеют ограничения, относящиеся к различным протоколам,
также используемым в качестве внешних ссылок в викитексте.",
"wikibase-concept-uri": "URI концепта",
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaimRemove.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaimRemove.php
index 0e6c727..7bff58f 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaimRemove.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaimRemove.php
@@ -77,10 +77,13 @@
* @throws ChangeOpException
*/
protected function removeClaim( Claims $claims, Summary $summary = null
) {
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
+
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID $this->claimGuid" );
}
- $removedSnak = $claims->getClaimWithGuid( $this->claimGuid
)->getMainSnak();
+
+ $removedSnak = $claim->getMainSnak();
$claims->removeClaimWithGuid( $this->claimGuid );
$this->updateSummary( $summary, 'remove', '',
$this->getClaimSummaryArgs( $removedSnak ) );
}
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpMainSnak.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpMainSnak.php
index e240ff1..a8d78f7 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpMainSnak.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpMainSnak.php
@@ -119,11 +119,12 @@
* @throws ChangeOpException
*/
private function setClaim( Claims $claims, Summary $summary = null ) {
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
+
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID " . $this->claimGuid );
}
- $claim = $claims->getClaimWithGuid( $this->claimGuid );
$propertyId = $claim->getMainSnak()->getPropertyId();
if ( !$propertyId->equals( $this->snak->getPropertyId() ) ) {
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
index 31c663f..587a931 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifier.php
@@ -81,12 +81,12 @@
*/
public function apply( Entity $entity, Summary $summary = null ) {
$claims = new Claims( $entity->getClaims() );
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID $this->claimGuid" );
}
- $claim = $claims->getClaimWithGuid( $this->claimGuid );
$qualifiers = $claim->getQualifiers();
if ( $this->snakHash === '' ) {
diff --git
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
index e359331..f7d1386 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpQualifierRemove.php
@@ -61,12 +61,12 @@
*/
public function apply( Entity $entity, Summary $summary = null ) {
$claims = new Claims( $entity->getClaims() );
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID $this->claimGuid" );
}
- $claim = $claims->getClaimWithGuid( $this->claimGuid );
$qualifiers = $claim->getQualifiers();
$this->removeQualifier( $qualifiers, $summary );
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
index 2830423..b8a0a41 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReference.php
@@ -100,14 +100,13 @@
*/
public function apply( Entity $entity, Summary $summary = null ) {
$claims = new Claims( $entity->getClaims() );
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID $this->claimGuid" );
}
- $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
- if ( ! ( $claim instanceof Statement ) ) {
+ if ( !( $claim instanceof Statement ) ) {
throw new ChangeOpException( 'The referenced claim is
not a statement and thus cannot have references' );
}
diff --git
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
index 7f38ced..812729d 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpReferenceRemove.php
@@ -62,12 +62,13 @@
*/
public function apply( Entity $entity, Summary $summary = null ) {
$claims = new Claims( $entity->getClaims() );
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
+
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID $this->claimGuid" );
}
- $claim = $claims->getClaimWithGuid( $this->claimGuid );
- if ( ! ( $claim instanceof Statement ) ) {
+ if ( !( $claim instanceof Statement ) ) {
throw new ChangeOpException( 'The referenced claim is
not a statement and thus cannot have references' );
}
diff --git
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
index b180f41..5ee7fd8 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpStatementRank.php
@@ -62,14 +62,13 @@
*/
public function apply( Entity $entity, Summary $summary = null ) {
$claims = new Claims( $entity->getClaims() );
+ $claim = $claims->getClaimWithGuid( $this->claimGuid );
- if( !$claims->hasClaimWithGuid( $this->claimGuid ) ) {
+ if ( $claim === null ) {
throw new ChangeOpException( "Entity does not have
claim with GUID $this->claimGuid" );
}
- $claim = $claims->getClaimWithGuid( $this->claimGuid );
-
- if ( ! ( $claim instanceof Statement ) ) {
+ if ( !( $claim instanceof Statement ) ) {
throw new ChangeOpException( 'The referenced claim is
not a statement and thus cannot have a rank' );
}
diff --git a/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
b/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
index cd5bfd6..162a801 100644
--- a/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
+++ b/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
@@ -58,18 +58,19 @@
* @return Summary
*/
public function buildClaimSummary( Claims $existingClaims, Claim
$newClaim ) {
- $summary = new Summary( $this->apiModuleName );
+ $guid = $newClaim->getGuid();
+ $oldClaim = $existingClaims->getClaimWithGuid( $guid );
+ $summary = new Summary( $this->apiModuleName );
$summary->addAutoCommentArgs( 1 ); // only one claim touched,
so we're always having singular here
$summaryArgs = $this->buildSummaryArgs(
new Claims( array( $newClaim ) ),
- array($newClaim->getGuid())
+ array( $guid )
);
$summary->addAutoSummaryArgs( $summaryArgs );
- if ( $existingClaims->hasClaimWithGuid( $newClaim->getGuid() )
) {
+ if ( $oldClaim !== null ) {
//claim is changed
- $oldClaim = $existingClaims->getClaimWithGuid(
$newClaim->getGuid() );
$claimDifference = $this->claimDiffer->diffClaims(
$oldClaim, $newClaim );
if ( $claimDifference->isAtomic() ) {
@@ -112,9 +113,11 @@
private function buildSummaryArgs( Claims $claims, array $guids ) {
$pairs = array();
- foreach( $guids as $guid ) {
- if ( $claims->hasClaimWithGuid( $guid ) ) {
- $snak = $claims->getClaimWithGuid( $guid
)->getMainSnak();
+ foreach ( $guids as $guid ) {
+ $claim = $claims->getClaimWithGuid( $guid );
+
+ if ( $claim !== null ) {
+ $snak = $claim->getMainSnak();
$key =
$snak->getPropertyId()->getSerialization();
if ( !array_key_exists( $key, $pairs ) ) {
diff --git a/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php
b/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php
index 771f58b..1a27798 100644
--- a/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php
+++ b/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php
@@ -8,6 +8,7 @@
use Wikibase\Lib\Reporting\MessageReporter;
use Wikibase\Lib\Reporting\NullMessageReporter;
use Wikibase\Lib\Reporting\RethrowingExceptionHandler;
+use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\StorageException;
use Wikibase\Repo\Store\EntityIdPager;
@@ -53,6 +54,11 @@
protected $exceptionHandler;
/**
+ * @var EntityPrefetcher
+ */
+ protected $entityPrefetcher;
+
+ /**
* @var string
*/
protected $entityType;
@@ -66,16 +72,18 @@
/**
* @param resource $out
+ * @param EntityPrefetcher $entityPrefetcher
*
* @throws InvalidArgumentException
*/
- public function __construct( $out ) {
+ public function __construct( $out, EntityPrefetcher $entityPrefetcher )
{
if ( !is_resource( $out ) ) {
throw new InvalidArgumentException( '$out must be a
file handle!' );
}
$this->out = $out;
+ $this->entityPrefetcher = $entityPrefetcher;
$this->progressReporter = new NullMessageReporter();
$this->exceptionHandler = new RethrowingExceptionHandler();
}
@@ -276,11 +284,15 @@
* @param int &$dumpCount The number of entities already dumped (will
be updated).
*/
private function dumpEntities( array $entityIds, &$dumpCount ) {
+ $toLoad = array();
foreach ( $entityIds as $entityId ) {
- if ( !$this->idMatchesFilters( $entityId ) ) {
- continue;
+ if ( $this->idMatchesFilters( $entityId ) ) {
+ $toLoad[] = $entityId;
}
+ }
+ $this->entityPrefetcher->prefetch( $entityIds );
+ foreach ( $toLoad as $entityId ) {
try {
$data = $this->generateDumpForEntityId(
$entityId );
if ( !$data ) {
diff --git a/extensions/Wikibase/repo/includes/Dumpers/JsonDumpGenerator.php
b/extensions/Wikibase/repo/includes/Dumpers/JsonDumpGenerator.php
index 2a35aa7..ffdfd62 100644
--- a/extensions/Wikibase/repo/includes/Dumpers/JsonDumpGenerator.php
+++ b/extensions/Wikibase/repo/includes/Dumpers/JsonDumpGenerator.php
@@ -8,6 +8,7 @@
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\Lib\Serializers\Serializer;
use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\RedirectResolvingEntityLookup;
use Wikibase\Lib\Store\StorageException;
use Wikibase\Lib\Store\UnresolvedRedirectException;
@@ -47,11 +48,12 @@
* @param resource $out
* @param EntityLookup $lookup Must not resolve redirects
* @param Serializer $entitySerializer
+ * @param EntityPrefetcher $entityPrefetcher
*
* @throws InvalidArgumentException
*/
- public function __construct( $out, EntityLookup $lookup, Serializer
$entitySerializer ) {
- parent::__construct( $out );
+ public function __construct( $out, EntityLookup $lookup, Serializer
$entitySerializer, EntityPrefetcher $entityPrefetcher ) {
+ parent::__construct( $out, $entityPrefetcher );
if ( $lookup instanceof RedirectResolvingEntityLookup ) {
throw new InvalidArgumentException( '$lookup must not
resolve redirects!' );
}
diff --git a/extensions/Wikibase/repo/includes/Dumpers/RdfDumpGenerator.php
b/extensions/Wikibase/repo/includes/Dumpers/RdfDumpGenerator.php
index d71ea15..847f0b1 100644
--- a/extensions/Wikibase/repo/includes/Dumpers/RdfDumpGenerator.php
+++ b/extensions/Wikibase/repo/includes/Dumpers/RdfDumpGenerator.php
@@ -10,6 +10,7 @@
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\PropertyDataTypeLookup;
use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Lib\Store\RedirectResolvingEntityLookup;
use Wikibase\Lib\Store\StorageException;
@@ -53,11 +54,12 @@
* @param resource $out
* @param EntityRevisionLookup $lookup Must not resolve redirects
* @param RdfSerializer $entitySerializer
+ * @param EntityPrefetcher $entityPrefetcher
*
* @throws InvalidArgumentException
*/
- public function __construct( $out, EntityRevisionLookup $lookup,
RdfSerializer $entitySerializer ) {
- parent::__construct( $out );
+ public function __construct( $out, EntityRevisionLookup $lookup,
RdfSerializer $entitySerializer, EntityPrefetcher $entityPrefetcher ) {
+ parent::__construct( $out, $entityPrefetcher );
if ( $lookup instanceof RedirectResolvingEntityLookup ) {
throw new InvalidArgumentException( '$lookup must not
resolve redirects!' );
}
@@ -136,7 +138,8 @@
SiteList $sites,
EntityLookup $entityLookup,
EntityRevisionLookup $entityRevisionLookup,
- PropertyDataTypeLookup $propertyLookup
+ PropertyDataTypeLookup $propertyLookup,
+ EntityPrefetcher $entityPrefetcher
) {
$rdfFormat = RdfSerializer::getRdfWriter( $format );
if( !$rdfFormat ) {
@@ -153,7 +156,7 @@
RdfProducer::PRODUCE_SITELINKS |
RdfProducer::PRODUCE_FULL_VALUES,
new HashBagOStuff()
);
- return new RdfDumpGenerator( $output, $entityRevisionLookup,
$entitySerializer );
+ return new RdfDumpGenerator( $output, $entityRevisionLookup,
$entitySerializer, $entityPrefetcher );
}
}
diff --git a/extensions/Wikibase/repo/includes/api/ClaimModificationHelper.php
b/extensions/Wikibase/repo/includes/api/ClaimModificationHelper.php
index 6ed4c16..fe12cd8 100644
--- a/extensions/Wikibase/repo/includes/api/ClaimModificationHelper.php
+++ b/extensions/Wikibase/repo/includes/api/ClaimModificationHelper.php
@@ -97,12 +97,13 @@
*/
public function getClaimFromEntity( $claimGuid, Entity $entity ) {
$claims = new Claims( $entity->getClaims() );
+ $claim = $claims->getClaimWithGuid( $claimGuid );
- if ( !$claims->hasClaimWithGuid( $claimGuid ) ) {
+ if ( $claim === null ) {
$this->errorReporter->dieError( 'Could not find the
claim' , 'no-such-claim' );
}
- return $claims->getClaimWithGuid( $claimGuid );
+ return $claim;
}
/**
diff --git a/extensions/Wikibase/repo/includes/api/GetClaims.php
b/extensions/Wikibase/repo/includes/api/GetClaims.php
index c1ff7d1..8a8afa0 100644
--- a/extensions/Wikibase/repo/includes/api/GetClaims.php
+++ b/extensions/Wikibase/repo/includes/api/GetClaims.php
@@ -100,8 +100,8 @@
$claimsList = new Claims( $entity->getClaims() );
if ( $claimGuid !== null ) {
- return $claimsList->hasClaimWithGuid( $claimGuid ) ?
- array( $claimsList->getClaimWithGuid(
$claimGuid ) ) : array();
+ $claim = $claimsList->getClaimWithGuid( $claimGuid );
+ return $claim !== null ? array( $claim ) : array();
}
$claims = array();
diff --git a/extensions/Wikibase/repo/includes/api/GetEntities.php
b/extensions/Wikibase/repo/includes/api/GetEntities.php
index 2e6bd5f..2380ad9 100644
--- a/extensions/Wikibase/repo/includes/api/GetEntities.php
+++ b/extensions/Wikibase/repo/includes/api/GetEntities.php
@@ -44,6 +44,11 @@
private $siteLinkTargetProvider;
/**
+ * @var EntityPrefetcher
+ */
+ private $entityPrefetcher;
+
+ /**
* @var string[]
*/
private $siteLinkGroups;
@@ -68,6 +73,7 @@
);
$this->siteLinkGroups =
$wikibaseRepo->getSettings()->getSetting( 'siteLinkGroups' );
+ $this->entityPrefetcher =
$wikibaseRepo->getStore()->getEntityPrefetcher();
}
/**
@@ -193,6 +199,8 @@
private function getEntityRevisionsFromEntityIds( $entityIds,
$resolveRedirects = false ) {
$revisionArray = array();
+ $this->entityPrefetcher->prefetch( $entityIds );
+
foreach ( $entityIds as $entityId ) {
$key = $entityId->getSerialization();
$entityRevision = $this->getEntityRevision( $entityId,
$resolveRedirects );
diff --git a/extensions/Wikibase/repo/includes/specials/SpecialModifyTerm.php
b/extensions/Wikibase/repo/includes/specials/SpecialModifyTerm.php
index bf304c5..4914573 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialModifyTerm.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialModifyTerm.php
@@ -125,19 +125,11 @@
return false;
}
- // to provide removing after posting the full form
+ // If the user just enters an item id and a language, dont
remove the term.
+ // The user can remove the term in the second form where it has
to be
+ // actually removed. This prevents users from removing terms
accidentally.
if ( $request->getVal( 'remove' ) === null && $this->value ===
'' ) {
- $id = $this->entityRevision->getEntity()->getId();
-
- $this->showErrorHTML(
- // Messages: wikibase-setlabel-warning-remove,
wikibase-setdescription-warning-remove,
- // wikibase-setaliases-warning-remove
- $this->msg(
- 'wikibase-' . strtolower(
$this->getName() ) . '-warning-remove',
- $this->getEntityTitle( $id )->getText()
- )->parse(),
- 'warning'
- );
+ $this->value = null;
return false;
}
diff --git a/extensions/Wikibase/repo/includes/store/Store.php
b/extensions/Wikibase/repo/includes/store/Store.php
index 2daa2ba..b549d54 100644
--- a/extensions/Wikibase/repo/includes/store/Store.php
+++ b/extensions/Wikibase/repo/includes/store/Store.php
@@ -4,6 +4,7 @@
use Wikibase\Lib\Store\EntityInfoBuilderFactory;
use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Lib\Store\EntityStore;
use Wikibase\Lib\Store\EntityStoreWatcher;
@@ -138,4 +139,14 @@
*/
public function getSiteLinkConflictLookup();
+ /**
+ * Returns an EntityPrefetcher which can be used to prefetch a list of
entity
+ * ids in case we need to for example load a batch of entity ids.
+ *
+ * @since 0.5
+ *
+ * @return EntityPrefetcher
+ */
+ public function getEntityPrefetcher();
+
}
diff --git
a/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
b/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
index 6fa57f8..2bb79c8 100644
--- a/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
@@ -5,6 +5,7 @@
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\Lib\Reporting\MessageReporter;
use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\SiteLinkTable;
use Wikibase\Repo\Store\EntityIdPager;
@@ -29,6 +30,11 @@
private $entityLookup;
/**
+ * @var EntityPrefetcher
+ */
+ private $entityPrefetcher;
+
+ /**
* @var MessageReporter|null
*/
private $reporter = null;
@@ -39,9 +45,15 @@
*/
private $batchSize = 100;
- public function __construct( SiteLinkTable $siteLinkTable, EntityLookup
$entityLookup ) {
+ /**
+ * @param SiteLinkTable $siteLinkTable
+ * @param EntityLookup $entityLookup
+ * @param EntityPrefetcher $entityPrefetcher
+ */
+ public function __construct( SiteLinkTable $siteLinkTable, EntityLookup
$entityLookup, EntityPrefetcher $entityPrefetcher ) {
$this->siteLinkTable = $siteLinkTable;
$this->entityLookup = $entityLookup;
+ $this->entityPrefetcher = $entityPrefetcher;
}
/**
@@ -88,6 +100,8 @@
* @return int
*/
private function rebuildSiteLinks( array $itemIds ) {
+ $this->entityPrefetcher->prefetch( $itemIds );
+
$c = 0;
foreach ( $itemIds as $itemId ) {
if ( !( $itemId instanceof ItemId ) ) {
diff --git a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
index c18871c..8f2cadf 100644
--- a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
+++ b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
@@ -101,6 +101,11 @@
private $termIndex = null;
/**
+ * @var PrefetchingWikiPageEntityMetaDataAccessor|null
+ */
+ private $entityPrefetcher = null;
+
+ /**
* @var string
*/
private $cacheKeyPrefix;
@@ -591,9 +596,7 @@
/** @var WikiPageEntityStore $dispatcher */
$dispatcher = $this->getEntityStoreWatcher();
- $metaDataFetcher = new
PrefetchingWikiPageEntityMetaDataAccessor(
- new WikiPageEntityMetaDataLookup( $this->entityIdParser
)
- );
+ $metaDataFetcher = $this->getEntityPrefetcher();
$dispatcher->registerWatcher( $metaDataFetcher );
$rawLookup = new WikiPageEntityRevisionLookup(
@@ -711,4 +714,17 @@
return new SiteLinkTable( 'wb_items_per_site', false );
}
+ /**
+ * @return PrefetchingWikiPageEntityMetaDataAccessor
+ */
+ public function getEntityPrefetcher() {
+ if ( $this->entityPrefetcher === null ) {
+ $this->entityPrefetcher = new
PrefetchingWikiPageEntityMetaDataAccessor(
+ new WikiPageEntityMetaDataLookup(
$this->entityIdParser )
+ );
+ }
+
+ return $this->entityPrefetcher;
+ }
+
}
diff --git a/extensions/Wikibase/repo/maintenance/dumpJson.php
b/extensions/Wikibase/repo/maintenance/dumpJson.php
index 96e24b5..10b123b 100644
--- a/extensions/Wikibase/repo/maintenance/dumpJson.php
+++ b/extensions/Wikibase/repo/maintenance/dumpJson.php
@@ -30,8 +30,15 @@
);
$entitySerializer = new DispatchingEntitySerializer(
$serializerFactory, $serializerOptions );
+ $entityPrefetcher =
$this->wikibaseRepo->getStore()->getEntityPrefetcher();
- $dumper = new JsonDumpGenerator( $output, $this->entityLookup,
$entitySerializer );
+ $dumper = new JsonDumpGenerator(
+ $output,
+ $this->entityLookup,
+ $entitySerializer,
+ $entityPrefetcher
+ );
+
$dumper->setUseSnippets( (bool)$this->getOption( 'snippet',
false ) );
return $dumper;
}
diff --git a/extensions/Wikibase/repo/maintenance/dumpRdf.php
b/extensions/Wikibase/repo/maintenance/dumpRdf.php
index 61f56c7..82e4ca7 100644
--- a/extensions/Wikibase/repo/maintenance/dumpRdf.php
+++ b/extensions/Wikibase/repo/maintenance/dumpRdf.php
@@ -32,7 +32,8 @@
$entityDataTitle->getCanonicalURL() . '/',
$this->wikibaseRepo->getSiteStore()->getSites(),
$this->entityLookup, $this->revisionLookup,
- $this->wikibaseRepo->getPropertyDataTypeLookup() );
+ $this->wikibaseRepo->getPropertyDataTypeLookup(),
+ $this->wikibaseRepo->getStore()->getEntityPrefetcher()
);
}
}
diff --git a/extensions/Wikibase/repo/maintenance/rebuildItemsPerSite.php
b/extensions/Wikibase/repo/maintenance/rebuildItemsPerSite.php
index 9af7e7c..c26f8b9 100644
--- a/extensions/Wikibase/repo/maintenance/rebuildItemsPerSite.php
+++ b/extensions/Wikibase/repo/maintenance/rebuildItemsPerSite.php
@@ -50,9 +50,11 @@
$siteLinkTable = new SiteLinkTable( 'wb_items_per_site', false
);
// Use an uncached EntityLookup here to avoid memory leaks
$entityLookup =
WikibaseRepo::getDefaultInstance()->getEntityLookup( 'uncached' );
+ $entityPrefetcher =
WikibaseRepo::getDefaultInstance()->getStore()->getEntityPrefetcher();
$builder = new ItemsPerSiteBuilder(
$siteLinkTable,
- $entityLookup
+ $entityLookup,
+ $entityPrefetcher
);
$builder->setReporter( $reporter );
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
index 2d352c3..315e436 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
@@ -15,6 +15,7 @@
use Wikibase\Lib\Serializers\DispatchingEntitySerializer;
use Wikibase\Lib\Serializers\SerializationOptions;
use Wikibase\Lib\Serializers\SerializerFactory;
+use Wikibase\Lib\Store\NullEntityPrefetcher;
use Wikibase\Lib\Store\UnresolvedRedirectException;
use Wikibase\Repo\Store\EntityIdPager;
@@ -115,7 +116,12 @@
return $entities[$key];
} ) );
- return new JsonDumpGenerator( $out, $entityLookup, $serializer
);
+ return new JsonDumpGenerator(
+ $out,
+ $entityLookup,
+ $serializer,
+ new NullEntityPrefetcher()
+ );
}
/**
@@ -193,7 +199,12 @@
$out = fopen( 'php://output', 'w' );
$serializer = new DispatchingEntitySerializer(
$this->serializerFactory );
- $jsonDumper = new JsonDumpGenerator( $out, $entityLookup,
$serializer );
+ $jsonDumper = new JsonDumpGenerator(
+ $out,
+ $entityLookup,
+ $serializer,
+ new NullEntityPrefetcher()
+ );
$exceptionHandler = $this->getMock(
'Wikibase\Lib\Reporting\ExceptionHandler' );
$exceptionHandler->expects( $this->exactly( count( $ids ) ) )
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
index a6d575b..dcbb772 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
@@ -9,6 +9,7 @@
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\Lib\Store\NullEntityPrefetcher;
use Wikibase\Dumpers\RdfDumpGenerator;
use Wikibase\EntityRevision;
use Wikibase\Test\RdfBuilderTest;
@@ -91,7 +92,8 @@
$this->getSiteList(),
$entityLookup,
$entityRevisionLookup,
- $propertyLookup
+ $propertyLookup,
+ new NullEntityPrefetcher()
);
}
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimValueTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimValueTest.php
index 206ca1a..c42daa4 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimValueTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimValueTest.php
@@ -158,11 +158,13 @@
$this->assertEquals( $claimCount, $claims->count(), 'Claim
count should not change after doing a setclaimvalue request' );
- $this->assertTrue( $claims->hasClaimWithGuid( $claimGuid ) );
+ $obtainedClaim = $claims->getClaimWithGuid( $claimGuid );
+
+ $this->assertNotNull( $obtainedClaim );
$dataValue = DataValueFactory::singleton()->newFromArray(
$claim['mainsnak']['datavalue'] );
- $this->assertTrue( $claims->getClaimWithGuid( $claimGuid
)->getMainSnak()->getDataValue()->equals( $dataValue ) );
+ $this->assertTrue(
$obtainedClaim->getMainSnak()->getDataValue()->equals( $dataValue ) );
}
/**
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetQualifierTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetQualifierTest.php
index e8e0bdf..12e5e31 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetQualifierTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetQualifierTest.php
@@ -177,10 +177,9 @@
$claims = new Claims( $entity->getClaims() );
- $this->assertTrue( $claims->hasClaimWithGuid( $params['claim']
) );
-
$claim = $claims->getClaimWithGuid( $params['claim'] );
+ $this->assertNotNull( $claim );
$this->assertTrue(
$claim->getQualifiers()->hasSnak( $qualifier ),
'The qualifier should exist in the qualifier list after
making the request'
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialModifyTermTestCase.php
b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialModifyTermTestCase.php
index a09e589..068015f 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialModifyTermTestCase.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialModifyTermTestCase.php
@@ -2,6 +2,7 @@
namespace Wikibase\Test;
+use FauxRequest;
use Wikibase\DataModel\Entity\Item;
use Wikibase\EntityContent;
use Wikibase\Repo\WikibaseRepo;
@@ -39,7 +40,7 @@
public function testExecute() {
$id = $this->createNewItem();
- $this->setMwGlobals( 'wgGroupPermissions', array( '*' => array(
'edit' => true ) ) );
+ $this->setMwGlobals( 'wgGroupPermissions', array( '*' => array(
'edit' => true, 'item-term' => true ) ) );
$page = $this->newSpecialPage();
@@ -114,4 +115,24 @@
}
}
+ public function testValuePreservesWhenNothingEntered() {
+ $id = $this->createNewItem();
+
+ $this->setMwGlobals( 'wgGroupPermissions', array( '*' => array(
'edit' => true, 'item-term' => true ) ) );
+
+ $request = new FauxRequest( array( 'id' => $id, 'language' =>
'de', 'value' => '' ), true );
+
+ list( $output, ) = $this->executeSpecialPage( '', $request );
+
+ $this->assertTag( array(
+ 'tag' => 'input',
+ 'attributes' => array(
+ 'id' => 'wb-modifyterm-value',
+ 'class' => 'wb-input',
+ 'name' => 'value',
+ 'value' => 'foo',
+ )
+ ), $output, 'Value still preserves when no value was entered in
the big form' );
+ }
+
}
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ItemsPerSiteBuilderTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ItemsPerSiteBuilderTest.php
index f20736c..9fe9600 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ItemsPerSiteBuilderTest.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ItemsPerSiteBuilderTest.php
@@ -5,6 +5,7 @@
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Lib\Store\NullEntityPrefetcher;
use Wikibase\Lib\Store\SiteLinkTable;
use Wikibase\Repo\Store\EntityIdPager;
use Wikibase\Repo\Store\SQL\ItemsPerSiteBuilder;
@@ -78,7 +79,8 @@
private function getItemsPerSiteBuilder() {
return new ItemsPerSiteBuilder(
$this->getSiteLinkTable(),
- $this->getEntityLookup()
+ $this->getEntityLookup(),
+ new NullEntityPrefetcher()
);
}
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php
index d1ecaf0..29803cf 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php
@@ -197,10 +197,11 @@
$termIndex->saveTermsOfEntity( $item2 );
+ // The number of labels counts too
$item3 = new Item( new ItemId( 'Q108' ) );
$item3->setLabel( $languageCode, $termText );
- $item3->getSiteLinkList()->addNewSiteLink( 'hrwiki', 'C' );
- $item3->getSiteLinkList()->addNewSiteLink( 'uzwiki', 'C' );
+ $item3->setLabel( 'qxy', $termText );
+ $item3->setLabel( 'qxz', $termText );
$termIndex->saveTermsOfEntity( $item3 );
diff --git a/vendor/composer/autoload_classmap.php
b/vendor/composer/autoload_classmap.php
index 4e92366..398e196 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -700,6 +700,7 @@
'Wikibase\\Lib\\Store\\LabelDescriptionLookup' => $baseDir .
'/extensions/Wikibase/lib/includes/store/LabelDescriptionLookup.php',
'Wikibase\\Lib\\Store\\LanguageFallbackLabelDescriptionLookup' => $baseDir
.
'/extensions/Wikibase/lib/includes/store/LanguageFallbackLabelDescriptionLookup.php',
'Wikibase\\Lib\\Store\\LanguageLabelDescriptionLookup' => $baseDir .
'/extensions/Wikibase/lib/includes/store/LanguageLabelDescriptionLookup.php',
+ 'Wikibase\\Lib\\Store\\NullEntityPrefetcher' => $baseDir .
'/extensions/Wikibase/lib/includes/store/NullEntityPrefetcher.php',
'Wikibase\\Lib\\Store\\RedirectResolvingEntityLookup' => $baseDir .
'/extensions/Wikibase/lib/includes/store/RedirectResolvingEntityLookup.php',
'Wikibase\\Lib\\Store\\RevisionBasedEntityLookup' => $baseDir .
'/extensions/Wikibase/lib/includes/store/RevisionBasedEntityLookup.php',
'Wikibase\\Lib\\Store\\SiteLinkCache' => $baseDir .
'/extensions/Wikibase/lib/includes/store/SiteLinkCache.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 9c12721..f4071da 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1199,12 +1199,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "43ad0d2c5bc348c04e25c4fc1797f3dbb113ce70"
+ "reference": "74ed9964b5ce079264ef79496551a48364f41e84"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/43ad0d2c5bc348c04e25c4fc1797f3dbb113ce70",
- "reference": "43ad0d2c5bc348c04e25c4fc1797f3dbb113ce70",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/74ed9964b5ce079264ef79496551a48364f41e84",
+ "reference": "74ed9964b5ce079264ef79496551a48364f41e84",
"shasum": ""
},
"require": {
@@ -1231,7 +1231,7 @@
"conflict": {
"mediawiki/mediawiki": "<1.23"
},
- "time": "2015-04-14 15:26:12",
+ "time": "2015-04-15 09:53:00",
"type": "mediawiki-extension",
"installation-source": "dist",
"autoload": {
--
To view, visit https://gerrit.wikimedia.org/r/204238
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Icca83444d98c19b3b9f5388aeb8faae0f5abdb0e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits