jenkins-bot has submitted this change and it was merged. Change subject: New Wikidata Build - 2015-05-06T10:00:01+0000 ......................................................................
New Wikidata Build - 2015-05-06T10:00:01+0000 Change-Id: If8761ebc2a1e3fd7beb3fc55beb5e5a75453a2aa --- M composer.lock M extensions/Wikibase/client/i18n/an.json M extensions/Wikibase/client/i18n/os.json M extensions/Wikibase/client/i18n/scn.json M extensions/Wikibase/client/i18n/ta.json M extensions/Wikibase/client/i18n/tr.json M extensions/Wikibase/client/includes/Usage/Sql/UsageTableUpdater.php M extensions/Wikibase/client/resources/Resources.php M extensions/Wikibase/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php M extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php M extensions/Wikibase/client/tests/phpunit/includes/SiteLinkCommentCreatorTest.php M extensions/Wikibase/docs/options.wiki A extensions/Wikibase/lib/i18n/os.json M extensions/Wikibase/lib/i18n/scn.json M extensions/Wikibase/lib/includes/parsers/DispatchingValueParser.php A extensions/Wikibase/lib/includes/store/EntityRedirectLookup.php M extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php M extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php M extensions/Wikibase/lib/includes/store/sql/WikiPageEntityMetaDataLookup.php M extensions/Wikibase/lib/maintenance/populateSitesTable.php M extensions/Wikibase/lib/tests/phpunit/store/PrefetchingWikiPageEntityMetaDataAccessorTest.php M extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php M extensions/Wikibase/repo/config/Wikibase.default.php M extensions/Wikibase/repo/i18n/be-tarask.json M extensions/Wikibase/repo/i18n/et.json M extensions/Wikibase/repo/i18n/os.json M extensions/Wikibase/repo/i18n/scn.json M extensions/Wikibase/repo/includes/api/ApiErrorReporter.php M extensions/Wikibase/repo/includes/specials/SpecialGoToLinkedPage.php M extensions/Wikibase/repo/includes/store/EntityPerPage.php M extensions/Wikibase/repo/includes/store/Store.php M extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php M extensions/Wikibase/repo/includes/store/sql/SqlStore.php M extensions/Wikibase/repo/resources/Resources.php M extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php M extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialGoToLinkedPageTest.php M extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialSetSiteLinkTest.php M extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php M extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSearchKeyBuilderTest.php M extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php M extensions/Wikibase/view/resources/jquery/wikibase/resources.php M extensions/Wikibase/view/resources/jquery/wikibase/toolbar/resources.php M extensions/Wikibase/view/resources/templates.php M extensions/Wikibase/view/resources/wikibase/resources.php M vendor/composer/autoload_classmap.php M vendor/composer/installed.json 46 files changed, 275 insertions(+), 102 deletions(-) Approvals: JanZerebecki: Looks good to me, approved jenkins-bot: Verified diff --git a/composer.lock b/composer.lock index 65784aa..51bf0a0 100644 --- a/composer.lock +++ b/composer.lock @@ -1213,12 +1213,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "59fe3a6237e25b2236bc4975ac8d56017a61ebc1" + "reference": "867a1dd3615c4af24fe992ffea8460268e64c22b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/59fe3a6237e25b2236bc4975ac8d56017a61ebc1", - "reference": "59fe3a6237e25b2236bc4975ac8d56017a61ebc1", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/867a1dd3615c4af24fe992ffea8460268e64c22b", + "reference": "867a1dd3615c4af24fe992ffea8460268e64c22b", "shasum": "" }, "require": { @@ -1286,7 +1286,7 @@ "wikibaserepo", "wikidata" ], - "time": "2015-05-04 22:05:18" + "time": "2015-05-06 02:22:58" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/client/i18n/an.json b/extensions/Wikibase/client/i18n/an.json index 8ae59e2..0631f52 100644 --- a/extensions/Wikibase/client/i18n/an.json +++ b/extensions/Wikibase/client/i18n/an.json @@ -4,5 +4,6 @@ "Carlos Cristia" ] }, + "wikibase-rc-hide-wikidata-show": "Amostrar", "wikibase-rc-wikibase-edit-letter": "D" } diff --git a/extensions/Wikibase/client/i18n/os.json b/extensions/Wikibase/client/i18n/os.json index 1aa1191..a1149ed 100644 --- a/extensions/Wikibase/client/i18n/os.json +++ b/extensions/Wikibase/client/i18n/os.json @@ -4,5 +4,10 @@ "Amikeco" ] }, + "wikibase-editlinks": "Æрвитæнтæ ивын", + "wikibase-rc-hide-wikidata-hide": "Бамбæхс", + "wikibase-rc-hide-wikidata-show": "Равдис", + "wikibase-rc-wikibase-edit-letter": "Р", + "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} ууылты конд ивд", "wikibase-otherprojects": "Æндæр проекттæ" } diff --git a/extensions/Wikibase/client/i18n/scn.json b/extensions/Wikibase/client/i18n/scn.json index ef6f679..a36843a 100644 --- a/extensions/Wikibase/client/i18n/scn.json +++ b/extensions/Wikibase/client/i18n/scn.json @@ -10,7 +10,10 @@ "apihelp-query+pageterms-description": "Pigghia li tèrmini assuciati a na pàggina pi' menzu dûn suggettu di dati assuciatu.", "apihelp-query+pageterms-example-simple": "Pigghia tutti li tèrmini assuciati â pàggina 'London', ntâ lingua di l'utenti.", "apihelp-query+pageterms-example-label-en": "Pigghia l'etichetti e l'alias assuciati â pàggina 'London', in ngrisi.", - "apihelp-query+pageterms-param-terms": "Chi' sorta di tèrmini pigghiari, ad esempiu 'label', 'description', o 'alias'.", + "apihelp-query+pageterms-param-terms": "Chi' sorta di tèrmini pigghiari, ad esempiu 'description'. Si' nun si spicifica, sunnu turnati tutti li sorti.", + "apihelp-query+wikibase-description": "Otteni nfurmazzioni a' prupòsitu dû dipositu Wikibase assuciatu.", + "apihelp-query+wikibase-example": "Otteni nfurmazzioni supra l'URL e autru a' prupositu dû dipositu Wikibase.", + "apihelp-query+wikibase-param-prop": "Quali prupietà pigghiari:\n;<kbd>url</kbd>: URL basi, pircorsi dî script e di l'artìculi.", "wikibase-after-page-move": "Poi puru [$1 aggiurnari] lu suggettu assuciatu supra a' {{WBREPONAME}} pi' mantèniri li culligamenti di lingua supra â pàggina spustata.", "wikibase-after-page-move-queued": "Lu [$1 suggettu supra a' {{WBREPONAME}}] assuciatu a' sta pàggina sarravi aggiurnatu autumaticamenti prestu.", "wikibase-after-page-delete": "Poi puru cancillari li culligamenti a' sta pàggina dû [$1 suggettu assuciatu supra a' {{WBREPONAME}}] pi' mantèniri li culligamenti di lingua.", diff --git a/extensions/Wikibase/client/i18n/ta.json b/extensions/Wikibase/client/i18n/ta.json index 381d7ae..711d54d 100644 --- a/extensions/Wikibase/client/i18n/ta.json +++ b/extensions/Wikibase/client/i18n/ta.json @@ -3,9 +3,11 @@ "authors": [ "Shanmugamp7", "மதனாஹரன்", - "Jayarathina" + "Jayarathina", + "கலைவாணன்" ] }, + "wikibase-dataitem": "{{WBREPONAME}}உருப்படி", "wikibase-editlinks": "இணைப்புக்களைத் தொகு", "wikibase-editlinkstitle": "பிற மொழி விக்கி இணைப்புகளைத் தொகு", "wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}", diff --git a/extensions/Wikibase/client/i18n/tr.json b/extensions/Wikibase/client/i18n/tr.json index d317fb1..d5d36e4 100644 --- a/extensions/Wikibase/client/i18n/tr.json +++ b/extensions/Wikibase/client/i18n/tr.json @@ -5,7 +5,8 @@ "Rapsar", "Sadrettin", "Sayginer", - "Ömer Berkay" + "Ömer Berkay", + "Stultiwikia" ] }, "tooltip-t-wikibase": "Veri havuzundaki ilgili ögeye bağlantı", @@ -16,7 +17,7 @@ "wikibase-comment-multi": "$1 {{PLURAL:$1|değişiklik|değişiklik}}", "wikibase-dataitem": "{{WBREPONAME}} öğesi", "wikibase-editlinks": "Bağlantıları düzenle", - "wikibase-editlinkstitle": "Diğer dillerdeki bağlantıları düzenle", + "wikibase-editlinkstitle": "Dillerarası bağlantıları düzenle", "wikibase-linkitem-addlinks": "Bağlantı ekle", "wikibase-linkitem-title": "Sayfaya bağlantı", "wikibase-linkitem-linkpage": "Sayfaya bağlantı", diff --git a/extensions/Wikibase/client/includes/Usage/Sql/UsageTableUpdater.php b/extensions/Wikibase/client/includes/Usage/Sql/UsageTableUpdater.php index 7325491..fab22b2 100644 --- a/extensions/Wikibase/client/includes/Usage/Sql/UsageTableUpdater.php +++ b/extensions/Wikibase/client/includes/Usage/Sql/UsageTableUpdater.php @@ -52,7 +52,7 @@ } /** - * Re-indexes the given list of EntityUsagess so that each EntityUsage can be found by using its + * Re-indexes the given list of EntityUsages so that each EntityUsage can be found by using its * string representation as a key. * * @param EntityUsage[] $usages diff --git a/extensions/Wikibase/client/resources/Resources.php b/extensions/Wikibase/client/resources/Resources.php index 2f695e2..6930b12 100644 --- a/extensions/Wikibase/client/resources/Resources.php +++ b/extensions/Wikibase/client/resources/Resources.php @@ -38,6 +38,7 @@ 'styles' => 'wikibase.client.page-move.css' ), 'wikibase.client.changeslist.css' => $moduleTemplate + array( + 'position' => 'top', 'styles' => 'wikibase.client.changeslist.css' ), 'wikibase.client.linkitem.init' => $moduleTemplate + array( diff --git a/extensions/Wikibase/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php b/extensions/Wikibase/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php index 0f135c5..bc1cc3b 100644 --- a/extensions/Wikibase/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php +++ b/extensions/Wikibase/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php @@ -437,7 +437,7 @@ $usages = $affectedPagesFinder->getAffectedUsagesByPage( $change ); - $this->assertEquals( 0, $usages->count() ); + $this->assertCount( 0, $usages ); } private function getSiteLinkUsageLookup( $pageTitle ) { diff --git a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php index ac27c64..cb6360a 100644 --- a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php +++ b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php @@ -109,8 +109,7 @@ $entityLookup = new MockRepository(); $entityLookup->putEntity( $item ); - $item2 = $item->newEmpty(); - $item2->setId( new ItemId( 'Q9999' ) ); + $item2 = new Item( new ItemId( 'Q9999' ) ); return array( array( array( 'id', 'type', 'descriptions', 'labels', 'sitelinks', 'schemaVersion' ), $item, $entityLookup ), diff --git a/extensions/Wikibase/client/tests/phpunit/includes/SiteLinkCommentCreatorTest.php b/extensions/Wikibase/client/tests/phpunit/includes/SiteLinkCommentCreatorTest.php index f23a968..d98c42d 100644 --- a/extensions/Wikibase/client/tests/phpunit/includes/SiteLinkCommentCreatorTest.php +++ b/extensions/Wikibase/client/tests/phpunit/includes/SiteLinkCommentCreatorTest.php @@ -118,7 +118,7 @@ $item->getSiteLinkList()->addNewSiteLink( 'enwiki', 'Japan' ); $item2 = $this->getNewItem(); - $item2->addSiteLink( new SiteLink( 'enwiki', 'Japan', array( new ItemId( 'Q17' ) ) ) ); + $item2->getSiteLinkList()->addNewSiteLink( 'enwiki', 'Japan', array( new ItemId( 'Q17' ) ) ); $changeFactory = TestChanges::getEntityChangeFactory(); $change = $changeFactory->newFromUpdate( ItemChange::UPDATE, $item, $item2 ); diff --git a/extensions/Wikibase/docs/options.wiki b/extensions/Wikibase/docs/options.wiki index c849409..731a8dc 100644 --- a/extensions/Wikibase/docs/options.wiki +++ b/extensions/Wikibase/docs/options.wiki @@ -53,7 +53,6 @@ === Expert Settings === ;idBlacklist: A list of IDs to reserve and skip for new entities. IDs are given as integers, the blacklist applies to all types of entities. '''Note:''' this may change in the future to allow separate blacklists for different kinds of entities. -;withoutTermSearchKey: Allow the terms table to work without the term_search_key field, for sites that can not easily roll out schema changes on large tables. This means that all searches will use exact matching (depending on the database's collation). Default: <code>false</code>. This is only needed for compatibility with old database layouts. ;withoutTermWeight: Allow the terms table to work without the term_weight field, for sites that can not easily roll out schema changes on large tables. This means that all searches will return the results in an undefined order (depending on how the database works). Default: <code>false</code>. This is only needed for compatibility with old database layouts. ;multilang-limits: Limits to impose on multilanguage strings like labels, descriptions and such. Supported limits: :;length: the maximum length of the string, in characters. diff --git a/extensions/Wikibase/lib/i18n/os.json b/extensions/Wikibase/lib/i18n/os.json new file mode 100644 index 0000000..397a4ae --- /dev/null +++ b/extensions/Wikibase/lib/i18n/os.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Amikeco" + ] + }, + "wikibase-sitelinks-wikipedia": "Википеди" +} diff --git a/extensions/Wikibase/lib/i18n/scn.json b/extensions/Wikibase/lib/i18n/scn.json index c1eba77..112cf1f 100644 --- a/extensions/Wikibase/lib/i18n/scn.json +++ b/extensions/Wikibase/lib/i18n/scn.json @@ -72,6 +72,18 @@ "datatypes-type-wikibase-property": "Prupietà", "datatypes-type-commonsMedia": "File multimidiali supra a' Commons", "version-wikibase": "Wikibase", + "wikibase-time-precision-Gannum": "$1 {{PLURAL:$1|miliardu|miliardi}} di anni d.C.", + "wikibase-time-precision-Mannum": "$1 {{PLURAL:$1|miliuni|miliuna}} di anni d.C.", + "wikibase-time-precision-annum": "$1 {{PLURAL:$1|annu|anni}} d.C.", + "wikibase-time-precision-millennium": "$1. millenniu", + "wikibase-time-precision-century": "$1. sèculu", + "wikibase-time-precision-10annum": "anni $1", + "wikibase-time-precision-BCE-Gannum": "$1 {{PLURAL:$1|miliardu|miliardi}} di anni a.C.", + "wikibase-time-precision-BCE-Mannum": "$1 {{PLURAL:$1|miliuni|miliuna}} di anni a.C.", + "wikibase-time-precision-BCE-annum": "$1 {{PLURAL:$1|annu|anni}} a.C.", + "wikibase-time-precision-BCE-millennium": "$1. millenniu a.C.", + "wikibase-time-precision-BCE-century": "$1. sèculu a.C.", + "wikibase-time-precision-BCE-10annum": "anni $1 a.C.", "wikibase-snakformatter-valuetype-mismatch": "Lu tipu dû valuri \"$1\" nun cumbacia cû chiddu dâ prupietà \"$2\".", "wikibase-snakformatter-property-not-found": "Prupietà $1 nun truvata, nun si po' ditirminari lu tipu di dati di adupirari" } diff --git a/extensions/Wikibase/lib/includes/parsers/DispatchingValueParser.php b/extensions/Wikibase/lib/includes/parsers/DispatchingValueParser.php index 10c3ca0..abf0faa 100644 --- a/extensions/Wikibase/lib/includes/parsers/DispatchingValueParser.php +++ b/extensions/Wikibase/lib/includes/parsers/DispatchingValueParser.php @@ -64,7 +64,7 @@ } throw new ParseException( - 'The value is not recognitzed by the configured parsers', + 'The value is not recognized by the configured parsers', $value, $this->format ); diff --git a/extensions/Wikibase/lib/includes/store/EntityRedirectLookup.php b/extensions/Wikibase/lib/includes/store/EntityRedirectLookup.php new file mode 100644 index 0000000..8bf2aff --- /dev/null +++ b/extensions/Wikibase/lib/includes/store/EntityRedirectLookup.php @@ -0,0 +1,40 @@ +<?php + +namespace Wikibase\Lib\Store; + +use Wikibase\DataModel\Entity\EntityId; + +/** + * Service interface for retrieving information about entity redirects. + * + * @since 0.5 + * + * @licence GNU GPL v2+ + * @author Daniel Kinzler + */ +interface EntityRedirectLookup { + + /** + * Returns the IDs that redirect to (are aliases of) the given target entity. + * + * @since 0.5 + * + * @param EntityId $targetId + * + * @return EntityId[] + */ + public function getRedirectIds( EntityId $targetId ); + + /** + * Returns the redirect target associated with the given redirect ID. + * + * @since 0.5 + * + * @param EntityId $entityId + * + * @return EntityId|null|false The ID of the redirect target, or null if $entityId + * does not refer to a redirect, or false if $entityId is not known. + */ + public function getRedirectForEntityId( EntityId $entityId ); + +} diff --git a/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php b/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php index a811ca7..2964662 100644 --- a/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php +++ b/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php @@ -275,6 +275,7 @@ $this->entityIds[$key] = $id; $this->entityInfo[$key]['id'] = $key; + // FIXME: this will fail for IDs that do not have a numeric form $this->numericIdsByType[$type][$key] = $id->getNumericId(); } diff --git a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php index 38fa5d2..8ca553f 100644 --- a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php +++ b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php @@ -261,6 +261,7 @@ // That would allow us to do the deletion in a single query, based on a set of ids. $entityIdentifiers = array( + // FIXME: this will fail for IDs that do not have a numeric form 'term_entity_id' => $entityId->getNumericId(), 'term_entity_type' => $entityId->getEntityType() ); @@ -331,11 +332,8 @@ 'term_language' => $term->getLanguage(), 'term_type' => $term->getType(), 'term_text' => $term->getText(), + 'term_search_key' => $this->getSearchKey( $term->getText(), $term->getLanguage() ) ); - - if ( $this->supportsSearchKeys() ) { - $fields['term_search_key'] = $this->getSearchKey( $term->getText(), $term->getLanguage() ); - } return $fields; } @@ -355,6 +353,7 @@ $success = $dbw->delete( $this->tableName, array( + // FIXME: this will fail for IDs that do not have a numeric form 'term_entity_id' => $entityId->getNumericId(), 'term_entity_type' => $entityId->getEntityType() ), @@ -443,6 +442,7 @@ throw new MWException( "ID $id does not refer to an entity of type $entityType" ); } + // FIXME: this will fail for IDs that do not have a numeric form $numericIds[] = $id->getNumericId(); } @@ -722,7 +722,7 @@ // used in the database. $textField = 'term_text'; - if ( !$options['caseSensitive'] && $this->supportsSearchKeys() ) { + if ( !$options['caseSensitive'] ) { $textField = 'term_search_key'; $text = $this->getSearchKey( $term->getText(), $term->getLanguage() ); } @@ -998,13 +998,6 @@ } return $normalized; - } - - /** - * @return bool - */ - public function supportsSearchKeys() { - return !Settings::get( 'withoutTermSearchKey' ); } /** diff --git a/extensions/Wikibase/lib/includes/store/sql/WikiPageEntityMetaDataLookup.php b/extensions/Wikibase/lib/includes/store/sql/WikiPageEntityMetaDataLookup.php index 29e5e55..1841a24 100644 --- a/extensions/Wikibase/lib/includes/store/sql/WikiPageEntityMetaDataLookup.php +++ b/extensions/Wikibase/lib/includes/store/sql/WikiPageEntityMetaDataLookup.php @@ -204,6 +204,7 @@ foreach ( $entityIds as $entityId ) { $result[$entityId->getSerialization()] = false; + // FIXME: this will fail for IDs that do not have a numeric form $key = $entityId->getEntityType() . $entityId->getNumericId(); if ( isset( $rows[$key] ) ) { $result[$entityId->getSerialization()] = $rows[$key]; @@ -224,6 +225,7 @@ foreach ( $entityIds as &$entityId ) { $where[] = $db->makeList( array( + // FIXME: this will fail for IDs that do not have a numeric form 'epp_entity_id' => $entityId->getNumericId(), 'epp_entity_type' => $entityId->getEntityType() ), LIST_AND ); diff --git a/extensions/Wikibase/lib/maintenance/populateSitesTable.php b/extensions/Wikibase/lib/maintenance/populateSitesTable.php index f0424a0..2ef3d3b 100644 --- a/extensions/Wikibase/lib/maintenance/populateSitesTable.php +++ b/extensions/Wikibase/lib/maintenance/populateSitesTable.php @@ -99,8 +99,7 @@ protected function getSiteMatrixData( $url ) { $url .= '?action=sitematrix&format=json'; - //NOTE: the raiseException option needs change Iad3995a6 to be merged, otherwise it is ignored. - $json = Http::get( $url, 'default', array( 'raiseException' => true ) ); + $json = Http::get( $url ); if ( !$json ) { throw new MWException( "Got no data from $url\n" ); diff --git a/extensions/Wikibase/lib/tests/phpunit/store/PrefetchingWikiPageEntityMetaDataAccessorTest.php b/extensions/Wikibase/lib/tests/phpunit/store/PrefetchingWikiPageEntityMetaDataAccessorTest.php index b25eda0..8d83cd6 100644 --- a/extensions/Wikibase/lib/tests/phpunit/store/PrefetchingWikiPageEntityMetaDataAccessorTest.php +++ b/extensions/Wikibase/lib/tests/phpunit/store/PrefetchingWikiPageEntityMetaDataAccessorTest.php @@ -3,6 +3,7 @@ namespace Wikibase\Lib\Test\Store; use PHPUnit_Framework_TestCase; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\Entity\ItemId; use Wikibase\EntityRevision; @@ -141,6 +142,10 @@ ->method( 'loadRevisionInformation' ) ->will( $this->returnCallback( function( array $entityIds, $mode ) { $ret = array(); + + /** + * @var EntityId $entityId + */ foreach ( $entityIds as $entityId ) { $ret[$entityId->getSerialization()] = $mode . ':' . $entityId->getSerialization(); } diff --git a/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php b/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php index 4090b3b..ce31541 100644 --- a/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php +++ b/extensions/Wikibase/lib/tests/phpunit/store/TermIndexTest.php @@ -146,23 +146,18 @@ ); /** @var Term[] $expectedTerms */ - $expectedTerms = array(); - - if ( ! Settings::get( 'withoutTermSearchKey' ) ) { - // case insensitive match is (probably) only found if SearchKey can be used. - // See comment in TermSqlIndex::termsToConditions - $expectedTerms[$id0] = new Term( array( + $expectedTerms = array( + $id0 => new Term( array( 'termLanguage' => 'en', 'termText' => 'prefix', - ) ); - } - - $expectedTerms[$id1] = new Term( array( - 'termText' => 'postfix', - ) ); + ) ), + $id1 => new Term( array( + 'termText' => 'postfix', + ) ) + ); $options = array( - 'caseSensitive' => Settings::get( 'withoutTermSearchKey' ), + 'caseSensitive' => false, 'prefixSearch' => true, ); diff --git a/extensions/Wikibase/repo/config/Wikibase.default.php b/extensions/Wikibase/repo/config/Wikibase.default.php index 5722fd3..d07876c 100644 --- a/extensions/Wikibase/repo/config/Wikibase.default.php +++ b/extensions/Wikibase/repo/config/Wikibase.default.php @@ -27,12 +27,6 @@ 720101010, ), - // Allow the TermIndex table to work without the term_search_key field, - // for sites that can not easily roll out schema changes on large tables. - // This means that all searches will use exact matching - // (depending on the database's collation). - 'withoutTermSearchKey' => false, - 'entityNamespaces' => array(), // Define constraints for multilingual terms (such as labels, descriptions and aliases). diff --git a/extensions/Wikibase/repo/i18n/be-tarask.json b/extensions/Wikibase/repo/i18n/be-tarask.json index b85ccb8..5dcc090 100644 --- a/extensions/Wikibase/repo/i18n/be-tarask.json +++ b/extensions/Wikibase/repo/i18n/be-tarask.json @@ -27,6 +27,7 @@ "wikibase-entitytermsforlanguagelistview-language": "Мова", "wikibase-label-empty": "Метка ня вызначаная", "wikibase-label-edit-placeholder": "увядзіце метку", + "wikibase-label-edit-placeholder-language-aware": "увядзіце метку мовай: $1", "wikibase-description-empty": "Апісаньне ня вызначанае", "wikibase-description-edit-placeholder": "увядзіце апісаньне", "wikibase-diffview-reference": "крыніца", diff --git a/extensions/Wikibase/repo/i18n/et.json b/extensions/Wikibase/repo/i18n/et.json index c3883cd..c38712e 100644 --- a/extensions/Wikibase/repo/i18n/et.json +++ b/extensions/Wikibase/repo/i18n/et.json @@ -252,6 +252,7 @@ "wikibase-entitydata-unsupported-format": "See liides ei toeta andmevormingut $1.", "wikibase-entitydata-storage-error": "Olemi $1 laadimine ebaõnnestus.", "wikibase-entitydata-title": "Olemi andmed", + "wikibase-entitydata-text": "See lehekülg võimaldab linkida olemi väärtusi sisaldava andmeliidese juurde. Palun kasuta alamlehekülje süntaksit, et tuua internetiaadressis ära olemi identifikaator.\n* Sisu poole pöördumine kooskõlastatakse sinu kliendi Accept-päisega. Teisisõnu väljastatakse olemi andmed vormingus, mida sinu klient eelistab. Veebilehitsejas on see HTML ja seetõttu suunab veebilehitseja sind harilikule olemileheküljele.\n* Saad pärida kindlas vormingus andmeid, kui lisad olemi identifikaatorile vastava faililaiendi: Q23.json tagastab andmed JSON-vormingus, Q23.ttl tagastab vormingu RDF/Turtle jne.", "special-redirectentity": "Olemi ümbersuunamine", "wikibase-redirectentity-success": "$1 on edukalt ümber suunatud olemi $2 juurde.", "wikibase-redirectentity-fromid": "Olem, kust suunata (identifikaator)", diff --git a/extensions/Wikibase/repo/i18n/os.json b/extensions/Wikibase/repo/i18n/os.json index fb70b9e..f407fab 100644 --- a/extensions/Wikibase/repo/i18n/os.json +++ b/extensions/Wikibase/repo/i18n/os.json @@ -5,5 +5,6 @@ ] }, "wikibase-edit": "ивын", + "wikibase-add": "бафтау", "wikibase-sitelinks-special": "Æндæр сайттæ" } diff --git a/extensions/Wikibase/repo/i18n/scn.json b/extensions/Wikibase/repo/i18n/scn.json index 618e0bc..9ee629e 100644 --- a/extensions/Wikibase/repo/i18n/scn.json +++ b/extensions/Wikibase/repo/i18n/scn.json @@ -7,6 +7,7 @@ ] }, "wikibase-desc": "Dipòsitu di dati strutturati", + "wikibase-entity": "entità", "wikibase-entity-item": "suggettu", "wikibase-entity-property": "prupietà", "wikibase-entity-query": "ntirrugazzioni", @@ -26,10 +27,10 @@ "wikibase-entitytermsforlanguagelistview-description": "Discrizzioni", "wikibase-entitytermsforlanguagelistview-label": "Etichetta", "wikibase-entitytermsforlanguagelistview-language": "Lingua", - "wikibase-label-empty": "Nudda etichetta difinuta ancora", + "wikibase-label-empty": "Nudda etichetta difinuta", "wikibase-label-edit-placeholder": "scrivi n'etichetta", "wikibase-label-edit-placeholder-language-aware": "scrivi n'etichetta in $1", - "wikibase-description-empty": "Nudda discrizzioni difinuta ancora", + "wikibase-description-empty": "Nudda discrizzioni difinuta", "wikibase-description-edit-placeholder": "scrivi na discrizzioni", "wikibase-description-edit-placeholder-language-aware": "scrivi na discrizzioni in $1", "wikibase-diffview-reference": "rifirimentu", @@ -52,7 +53,7 @@ "wikibase-statements": "Dichiarazzioni", "wikibase-terms": "Nta l'autri lingui", "wikibase-sitelinkgroupview-input-help-message": "Agghiunci nu culligamentu ôn situ spicificannu lu situ e na so pàggina, o puru cancia o cancella li culligamenti esistenti.", - "wikibase-sitelinks-empty": "Ancora nudda pàggina è culligata a' stu suggettu.", + "wikibase-sitelinks-empty": "Nudda pàggina è culligata a' stu suggettu.", "wikibase-sitelinks-input-help-message": "Mposta un culligamentu a' na pàggina assuciata a' stu suggettu.", "wikibase-sitelinks-special": "Autri siti", "wikibase-badgeselector-badge-placeholder-title": "Clicca p'assignari un distintivu.", @@ -165,7 +166,7 @@ "wikibase-setaliases-submit": "Mposta l'alias", "special-setlabeldescriptionaliases": "Mposta l'etichetta, la discrizzioni e l'alias", "wikibase-setlabeldescriptionaliases-introfull": "Stai mpustannu l'etichetta, la discrizzioni e l'alias in $2 di [[$1]]. Cchiu' alias si ponnu spàrtiri l'unu di l'autru cu na sbarra virticali (<code>|</code>).", - "wikibase-setlabeldescriptionaliases-intro": "Stu mòdulu cunsenti di mpustari l'etichetta, la discrizzioni e l'alias di n'entità. S'havi a' spicificari l'ID di l'entità (ad esempiu Q23), un còdici di lingua (ad esempiu \"scn\"), e l'etichetta, la discrizzioni e l'alias di mpustari. Cchiu' alias si ponnu spàrtiri l'unu di l'autru cu na sbarra virticali (<code>|</code>).", + "wikibase-setlabeldescriptionaliases-intro": "Stu mòdulu cunsenti di mpustari l'etichetta, la discrizzioni e l'alias di n'entità. Pi' prima cosa s'havi a' spicificari l'ID di l'entità (ad esempiu Q23) e un còdici di lingua (ad esempiu \"scn\").", "wikibase-setlabeldescriptionaliases-label-label": "Etichetta:", "wikibase-setlabeldescriptionaliases-description-label": "Discrizzioni:", "wikibase-setlabeldescriptionaliases-aliases-label": "Alias:", @@ -184,7 +185,7 @@ "wikibase-setsitelink-add-failed": "Nun si potti sarvari lu culligamentu ô situ.", "wikibase-setsitelink-remove-failed": "Nun si potti livari lu culligamentu ô situ.", "wikibase-modifyentity-id": "ID:", - "wikibase-modifyterm-language": "Codici dâ lingua:", + "wikibase-modifyterm-language": "Còdici dâ lingua:", "special-mergeitems": "Junci du suggetti", "wikibase-mergeitems-intro": "Si' junci du suggetti, tutti l'etichetti, li discrizzioni, l'alias, li culligamenti ê siti e li dichiarazzioni si spòstunu dûn suggettu a' l'autru.", "wikibase-mergeitems-fromid": "L'ID chi' s'havi a' jùnciri", @@ -223,8 +224,15 @@ "wikibase-dispatchstats-average": "Media", "special-listdatatypes": "Elencu di tutti li tipi di datu dispunìbbili", "wikibase-listdatatypes-intro": "Chista è na lista di tutti li tipi di datu dispunìbbili nta st'istallazzioni:", + "wikibase-listdatatypes-listproperties": "Lista dî prupietà cu' stu tipu di datu", "wikibase-history-title-with-label": "Crunuluggìa dî canciamenti di \"$2\" ($1)", "wikibase-history-title-without-label": "Crunuluggìa dî canciamenti di ($1)", + "special-listproperties": "Lista dî prupietà", + "wikibase-listproperties-legend": "Ammustra na lista dî prupietà ricittati pi' tipu di datu", + "wikibase-listproperties-datatype": "Tipu di datu:", + "wikibase-listproperties-all": "Tutti li tipi di datu", + "wikibase-listproperties-submit": "Trova", + "wikibase-listproperties-invalid-datatype": "\"$1\" nun è nu tipu di datu bonu.", "special-entitieswithoutdescription": "Entità senza discrizzioni", "wikibase-entitieswithoutdescription-legend": "Duna na lista di l'entità chi' nun hannu discrizzioni", "special-entitieswithoutlabel": "Entità senza etichetta", @@ -244,7 +252,12 @@ "wikibase-entitydata-unsupported-format": "Lu furmatu di dati $1 nun è suppurtatu di st'intirfaccia.", "wikibase-entitydata-storage-error": "Nun si riniscìu a' carricari l'entità $1.", "wikibase-entitydata-title": "Dati dû suggettu", - "wikibase-entitydata-text": "Sta pàggina furnisci n'intirfaccia a' dati culligati pi' valuri di n'entità. Pi' favuri furnisci l'ID di l'entità nta l'URL, adupirannu la sintassi dî suttàpaggini.", + "wikibase-entitydata-text": "Sta pàggina custituisci n'intirfaccia a' dati culligati versu li valuri di n'entità. S'havi a' spicificari l'ID di l'entità nta l'URL, adupirannu la sintassi dî suttapàggini.\n* Veni applicata la niguzziazzioni dû cuntinutu a' secunna dâ ntistazzioni Accept spicificata dû to client. Voli diri chi' li dati di l'entità sarrannu furnuti ntô furmatu prifirutu dû to client. Ntô casu dûn browser web, stu furmatu sarravi l'HTML, dunca lu to browser sarravi rimannatu versu la pàggina nurmali di l'entità.\n* Poi addumannari esplicitamenti nu furmatu di dati spicìficu agghiuncennu n'estinsioni apprupriata a' l'ID di l'entità: Q23.json torniravi dati ntô furmatu JSON, Q23.ttl li torniravi ntô furmatu RDF/Turtle, e accussi' via.", + "special-redirectentity": "Rimanna n'entità", + "wikibase-redirectentity-success": "$1 fu' rimannatu bonu a' $2.", + "wikibase-redirectentity-fromid": "L'ID d'unni rimannari", + "wikibase-redirectentity-toid": "L'ID unni rimannari", + "wikibase-redirectentity-submit": "Rimanna", "special-mylanguagefallbackchain": "La me catina di ripiegu dî lingui", "wikibase-mylanguagefallbackchain-text": "Ccassutta è ammustrata la catina di ripiegu dî lingui chi' vènunu adupirati pi' fàriti a' vìdiri l'etichetti di l'entità.", "wikibase-mylanguagefallbackchain-babel": "La poi canciari mittennu <nowiki>{{#babel: }}</nowiki> supra â {{GENDER:$1|to}} [[Special:MyPage|pàggina di l'utenti]].", @@ -283,6 +296,7 @@ "wikibase-item-summary-wbsetaliases-add-remove": "{{PLURAL:$1|Agghiunciutu e livatu n'|Agghiunciuti e livati }}alias [$2]", "wikibase-item-summary-wbsetaliases-add": "{{PLURAL:$1|Agghiunciutu n'|Agghiunciuti }}alias [$2]", "wikibase-item-summary-wbsetaliases-remove": "{{PLURAL:$1|Livatu n'|Livati }}alias [$2]", + "wikibase-item-summary-wbsetlabeldescriptionaliases": "Canciati l'etichetta, la discrizzioni e l'alias [$2]", "wikibase-item-summary-wbsetsitelink-add": "Agghiunciutu un culligamentu a' [$2]", "wikibase-item-summary-wbsetsitelink-add-both": "Agghiunciutu un culligamentu cu' distintivi a' [$2]", "wikibase-item-summary-wbsetsitelink-set": "Canciatu lu culligamentu a' [$2]", @@ -335,6 +349,7 @@ "wikibase-property-summary-wbsetaliases-add-remove": "{{PLURAL:$1|Agghiunciutu e livatu n'|Agghiunciuti e livati }}alias [$2]", "wikibase-property-summary-wbsetaliases-add": "{{PLURAL:$1|Agghiunciutu n'|Agghiunciuti }}alias [$2]", "wikibase-property-summary-wbsetaliases-remove": "{{PLURAL:$1|Livatu n'|Livati }}alias [$2]", + "wikibase-property-summary-wbsetlabeldescriptionaliases": "Canciati l'etichetta, la discrizzioni e l'alias [$2]", "wikibase-property-summary-wbsetclaim-update": "{{PLURAL:$3|Canciata n'affirmazzioni|Canciati affirmazzioni}}", "wikibase-property-summary-wbsetclaim-create": "{{PLURAL:$3|Criata n'affirmazzioni|Criati affirmazzioni}}", "wikibase-property-summary-wbsetclaim-update-qualifiers": "{{PLURAL:$4|Canciatu un qualificaturi|Canciati $4 qualificatura}} di {{PLURAL:$3|n'affirmazzioni|affirmazioni}}", @@ -362,7 +377,7 @@ "wikibase-listdatatypes-string-head": "Stringa", "wikibase-listdatatypes-string-body": "Valuri custanti di na stringa di caràttiri. L'applicazzioni tìpica sunnu l'idintificaturi chi' nun dipènnunu dâ lingua di cu leggi.\n* value – valuri esplicitu dâ stringa", "wikibase-listdatatypes-time-head": "Tempu", - "wikibase-listdatatypes-time-body": "Valuri custanti di n'istanti di tempu. Spicificatu comu nu valuri di tempu chi' havi pricisioni e lìmiti. Lu tempu veni sarvatu nternamenti sempri ntô calinnariu grigurianu pruletticu, ma po' assùmiri autri furmati quannu veni immisu o stampatu. (?)\n* time – valuri esplìcitu di n'istanti di tempu, rapprisintatu sicunnu lu standard ISO8601, l'annu sempri di 11 cifri e la data sempri cû signu, ntô furmatu +00000002013-01-01T00:00:00Z\n* timezone – valuri esplicitu interu cû signu. Spicificazzioni dû fusu urariu comu scugnamentu in minuti rispettu a' l'UTC.\n* before – valuri esplìcitu interu chi' spicìfica l'istanti riali di quanti unità di tempu po' èssiri avanti rispettu a' l'istanti spicificatu. L'unità è data dâ pricisioni.\n* after – valuri esplìcitu interu chi' spicìfica l'istanti rïali di quanti unità di tempu po' èssiri appressu rispettu a' l'istanti spicificatu. L'unità è data dâ pricisioni.\n* precision – valuri esplìcitu dâ pricisioni, cudificatu comu shortint. Li nùmmiri hannu lu siguenti significatu: 0 - miliardi di anni, 1 - cintinara di miliuna di anni, ..., 6 - millennî, 7 - secula, 8 - dicennî, 9 - anni, 10 - misi, 11 - jorna, 12 - uri, 13 - minuti, 14 - sicunni.\n* calendarmodel – valuri esplìcitu spicificatu comu URI. Spicifichiravi lu mudellu di calinnariu chi' s'avissi a' adupirari p'ammustrari stu valuri di tempu.", + "wikibase-listdatatypes-time-body": "Valuri custanti di n'istanti di tempu. Spicificatu comu nu valuri di tempu chi' havi pricisioni e lìmiti. Lu tempu veni sarvatu nternamenti sempri ntô calinnariu grigurianu pruletticu, però po' assùmiri autri furmati quannu veni immisu o stampatu.\n* time – valuri esplìcitu di n'istanti di tempu, rapprisintatu sicunnu nu standard chi' assimigghia a' l'ISO 8601, comu nta st'esempiu: +2013-01-01T00:00:00Z. L'annu havi sempri lu signu e havi a' jèssiri jincutu a' manera d'aviri tra 1 e 16 cifri.\n* timezone – valuri esplicitu interu cû signu. Spicificazzioni dû fusu urariu comu scugnamentu in minuti rispettu a' l'UTC.\n* before – valuri esplìcitu interu chi' spicìfica l'istanti riali di quanti unità di tempu po' èssiri avanti rispettu a' l'istanti spicificatu. L'unità è data dâ pricisioni.\n* after – valuri esplìcitu interu chi' spicìfica l'istanti rïali di quanti unità di tempu po' èssiri appressu rispettu a' l'istanti spicificatu. L'unità è data dâ pricisioni.\n* precision – valuri esplìcitu dâ pricisioni, cudificatu comu shortint. Li nùmmiri hannu lu siguenti significatu: 0 - miliardi di anni, 1 - cintinara di miliuna di anni, ..., 6 - millennî, 7 - secula, 8 - dicennî, 9 - anni, 10 - misi, 11 - jorna, 12 - uri, 13 - minuti, 14 - secunni.\n* calendarmodel – valuri esplìcitu spicificatu comu URI. Spicifichiravi lu mudellu di calinnariu chi' s'avissi a' adupirari p'ammustrari stu valuri di tempu.", "wikibase-listdatatypes-url-head": "URL", "wikibase-listdatatypes-url-body": "Valuri custanti di n'URL. L'URL sunnu limitati ê prutucolli suppurtati pî culligamenti esterni ntô wikitestu.", "wikibase-concept-uri": "URI dû cuncettu", @@ -379,6 +394,8 @@ "right-property-create": "Criari pruprietà", "wikibase-entity-not-viewable-title": "Nun currispunni lu tipu dû cuntinutu: Nun si po' ammustrari lu cuntinutu", "wikibase-entity-not-viewable": "Lu cuntinutu spicificatu di tipu \"$1\" nun è n'Entità e nun si po' ammustrari nta Wikibase.", + "action-item-merge": "jùnciri suggetti", + "action-property-create": "criari pruprietà", "apihelp-wbavailablebadges-description": "Ntèrruga l'elimenti distintivu dispunìbbili.", "apihelp-wbavailablebadges-example-1": "Ntèrruga tutti l'elimenti distintivu dispunìbbili", "apihelp-wbcreateclaim-description": "Crea affirmazzioni di Wikibase", diff --git a/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php b/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php index 9ad77b5..002503e 100644 --- a/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php +++ b/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php @@ -440,7 +440,7 @@ ApiResult::setIndexedTagName( $row['parameters'], 'parameter' ); $html = $this->forceMessageLanguage( $message, $this->language )->useDatabase( true )->parse(); - ApiResult::setContentValue( $row, 'html', $html ); + ApiResult::setValue( $row, 'html', $html ); $row[ApiResult::META_BC_SUBELEMENTS][] = 'html'; return $row; diff --git a/extensions/Wikibase/repo/includes/specials/SpecialGoToLinkedPage.php b/extensions/Wikibase/repo/includes/specials/SpecialGoToLinkedPage.php index 895849e..ecf8851 100644 --- a/extensions/Wikibase/repo/includes/specials/SpecialGoToLinkedPage.php +++ b/extensions/Wikibase/repo/includes/specials/SpecialGoToLinkedPage.php @@ -6,7 +6,7 @@ use InvalidArgumentException; use SiteStore; use Wikibase\DataModel\Entity\ItemId; -use Wikibase\Repo\Store\EntityPerPage; +use Wikibase\Lib\Store\EntityRedirectLookup; use Wikibase\Lib\Store\SiteLinkLookup; use Wikibase\Repo\WikibaseRepo; @@ -30,9 +30,9 @@ private $siteLinkLookup; /** - * @var EntityPerPage + * @var EntityRedirectLookup */ - private $entityPerPage; + private $redirectLookup; /** * @see SpecialWikibasePage::__construct @@ -45,7 +45,7 @@ $this->initServices( $wikibaseRepo->getSiteStore(), $wikibaseRepo->getStore()->newSiteLinkStore(), - $wikibaseRepo->getStore()->newEntityPerPage() + $wikibaseRepo->getStore()->getEntityRedirectLookup() ); } @@ -55,16 +55,16 @@ * * @param SiteStore $siteStore * @param SiteLinkLookup $siteLinkLookup - * @param EntityPerPage $entityPerPage + * @param EntityRedirectLookup $redirectLookup */ public function initServices( SiteStore $siteStore, SiteLinkLookup $siteLinkLookup, - EntityPerPage $entityPerPage + EntityRedirectLookup $redirectLookup ) { $this->siteStore = $siteStore; $this->siteLinkLookup = $siteLinkLookup; - $this->entityPerPage = $entityPerPage; + $this->redirectLookup = $redirectLookup; } /** @@ -135,7 +135,7 @@ // Maybe the item is a redirect: Try to resolve the redirect and load // the links from there. - $redirectTarget = $this->entityPerPage->getRedirectForEntityId( $itemId ); + $redirectTarget = $this->redirectLookup->getRedirectForEntityId( $itemId ); if ( $redirectTarget instanceof ItemId ) { return $this->siteLinkLookup->getLinks( array( $redirectTarget->getNumericId() ), array( $site ) ); diff --git a/extensions/Wikibase/repo/includes/store/EntityPerPage.php b/extensions/Wikibase/repo/includes/store/EntityPerPage.php index 294a46a..96fc86a 100644 --- a/extensions/Wikibase/repo/includes/store/EntityPerPage.php +++ b/extensions/Wikibase/repo/includes/store/EntityPerPage.php @@ -136,13 +136,4 @@ */ public function getItemsWithoutSitelinks( $siteId = null, $limit = 50, $offset = 0 ); - /** - * @since 0.5 - * - * @param EntityId $entityId - * - * @return EntityId|null|false The ID of the redirect target, or null if $entityId - * does not refer to a redirect, or false if $entityId is not known. - */ - public function getRedirectForEntityId( EntityId $entityId ); } diff --git a/extensions/Wikibase/repo/includes/store/Store.php b/extensions/Wikibase/repo/includes/store/Store.php index d598f34..8cadc8b 100644 --- a/extensions/Wikibase/repo/includes/store/Store.php +++ b/extensions/Wikibase/repo/includes/store/Store.php @@ -5,6 +5,7 @@ use Wikibase\Lib\Store\EntityInfoBuilderFactory; use Wikibase\Lib\Store\EntityLookup; use Wikibase\Lib\Store\EntityPrefetcher; +use Wikibase\Lib\Store\EntityRedirectLookup; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\EntityStore; use Wikibase\Lib\Store\EntityStoreWatcher; @@ -77,6 +78,13 @@ public function newEntityPerPage(); /** + * @since 0.5 + * + * @return EntityRedirectLookup + */ + public function getEntityRedirectLookup(); + + /** * @since 0.4 * * @param string $uncached Flag string, set to 'uncached' to get an uncached direct lookup service. diff --git a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php index ea73069..8de0214 100644 --- a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php +++ b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php @@ -10,6 +10,7 @@ use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\Entity\ItemId; use Wikibase\DataModel\LegacyIdInterpreter; +use Wikibase\Lib\Store\EntityRedirectLookup; use Wikibase\Repo\Store\EntityPerPage; /** @@ -22,7 +23,7 @@ * @author Thomas Pellissier Tanon * @author Daniel Kinzler */ -class EntityPerPageTable implements EntityPerPage { +class EntityPerPageTable implements EntityPerPage, EntityRedirectLookup { /** * @var EntityIdParser @@ -409,6 +410,43 @@ } /** + * Returns the IDs that redirect to (are aliases of) the given target entity. + * + * @note If $this->useRedirectTargetColumn, this returns the empty array. + * + * @since 0.5 + * + * @param EntityId $targetId + * + * @return EntityId[] + */ + public function getRedirectIds( EntityId $targetId ) { + if ( !$this->useRedirectTargetColumn ) { + return array(); + } + + $where = array( + 'epp_entity_type' => $targetId->getEntityType(), + 'epp_redirect_target' => $targetId->getSerialization(), + ); + + $dbr = wfGetDB( DB_SLAVE ); + + $rows = $dbr->select( + 'wb_entity_per_page', + array( 'entity_type' => 'epp_entity_type', 'entity_id' => 'epp_entity_id' ), + $where, + __METHOD__, + array( + 'LIMIT' => 1000 // everything should have a hard limit + ) + ); + + $ids = $this->getEntityIdsFromRows( $rows ); + return $ids; + } + + /** * @since 0.5 * * @param EntityId $entityId diff --git a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php index 2aa6fa1..29a8d3d 100644 --- a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php +++ b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php @@ -15,6 +15,7 @@ use Wikibase\Lib\Store\EntityContentDataCodec; use Wikibase\Lib\Store\EntityInfoBuilderFactory; use Wikibase\Lib\Store\EntityLookup; +use Wikibase\Lib\Store\EntityRedirectLookup; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\EntityStore; use Wikibase\Lib\Store\EntityStoreWatcher; @@ -413,11 +414,8 @@ * @param DatabaseBase $db */ private function updateTermsTable( DatabaseUpdater $updater, DatabaseBase $db ) { - $withoutTermSearchKey = WikibaseRepo::getDefaultInstance()-> - getSettings()->getSetting( 'withoutTermSearchKey' ); - // ---- Update from 0.1 or 0.2. ---- - if ( !$db->fieldExists( 'wb_terms', 'term_search_key' ) && !$withoutTermSearchKey ) { + if ( !$db->fieldExists( 'wb_terms', 'term_search_key' ) ) { $updater->addExtensionField( 'wb_terms', @@ -500,6 +498,15 @@ } /** + * @since 0.5 + * + * @return EntityRedirectLookup + */ + public function getEntityRedirectLookup() { + return $this->newEntityPerPage(); + } + + /** * @see Store::getEntityLookup * @see SqlStore::getEntityRevisionLookup * diff --git a/extensions/Wikibase/repo/resources/Resources.php b/extensions/Wikibase/repo/resources/Resources.php index 8408ee0..205a3ca 100644 --- a/extensions/Wikibase/repo/resources/Resources.php +++ b/extensions/Wikibase/repo/resources/Resources.php @@ -140,6 +140,7 @@ /* Wikibase special pages */ 'wikibase.special' => $moduleTemplate + array( + 'position' => 'top', 'styles' => array( 'wikibase.special/wikibase.special.css' ), diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php index ae3b47b..f7fb45f 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php @@ -7,7 +7,7 @@ use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\ItemId; use Wikibase\Repo\Hooks\OutputPageJsConfigHookHandler; -use Wikibase\Settings; +use Wikibase\SettingsArray; /** * @covers Wikibase\Repo\Hooks\OutputPageJsConfigHookHandler @@ -26,7 +26,7 @@ /** * @dataProvider handleProvider */ - public function testHandle( array $expected, Title $title, Settings $settings, $experimental, + public function testHandle( array $expected, Title $title, SettingsArray $settings, $experimental, $message ) { $hookHandler = new OutputPageJsConfigHookHandler( $settings ); @@ -64,10 +64,10 @@ } /** - * @return Settings + * @return SettingsArray */ private function getSettings() { - $settings = new Settings(); + $settings = new SettingsArray(); $settings->setSetting( 'dataRightsUrl', 'https://creativecommons.org' ); $settings->setSetting( 'dataRightsText', 'CC-0' ); $settings->setSetting( 'badgeItems', array() ); diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialGoToLinkedPageTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialGoToLinkedPageTest.php index cb39da5..e8eabc2 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialGoToLinkedPageTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialGoToLinkedPageTest.php @@ -6,9 +6,9 @@ use Site; use SiteStore; use Wikibase\DataModel\Entity\ItemId; +use Wikibase\Lib\Store\EntityRedirectLookup; use Wikibase\Lib\Store\SiteLinkLookup; use Wikibase\Repo\Specials\SpecialGoToLinkedPage; -use Wikibase\Repo\Store\EntityPerPage; /** * @covers Wikibase\Repo\Specials\SpecialGoToLinkedPage @@ -66,10 +66,10 @@ } /** - * @return EntityPerPage + * @return EntityRedirectLookup */ - private function getEntityPerPage() { - $mock = $this->getMock( 'Wikibase\Repo\Store\EntityPerPage' ); + private function getEntityRedirectLookup() { + $mock = $this->getMock( 'Wikibase\Lib\Store\EntityRedirectLookup' ); $mock->expects( $this->any() ) ->method( 'getRedirectForEntityId' ) ->will( $this->returnCallback( function( ItemId $itemId ) { @@ -92,7 +92,7 @@ $page->initServices( $this->getMockSiteStore(), $this->getMockSiteLinkLookup(), - $this->getEntityPerPage() + $this->getEntityRedirectLookup() ); return $page; diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialSetSiteLinkTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialSetSiteLinkTest.php index 81d4396..79adbdf 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialSetSiteLinkTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialSetSiteLinkTest.php @@ -244,7 +244,11 @@ /** @var Item $item */ $item = $lookup->getEntity( new ItemId( self::$itemId) ); - $this->assertEquals( 'Wikipedia', $item->getSitelink( 'dewiki' )->getPageName(), "Should contain new site link" ); + $this->assertEquals( + 'Wikipedia', + $item->getSiteLinkList()->getBySiteId( 'dewiki' )->getPageName(), + "Should contain new site link" + ); } public function testExecutePostRemoveSiteLink() { diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php index 3faa374..aeaa203 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php @@ -5,6 +5,7 @@ use Wikibase\DataModel\Entity\BasicEntityIdParser; use Wikibase\DataModel\Entity\Entity; use Wikibase\DataModel\Entity\EntityDocument; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\Entity\ItemId; use Wikibase\DataModel\Entity\Property; @@ -209,6 +210,54 @@ ); } + /** + * @dataProvider getRedirectIdsProvider + */ + public function testGetRedirectIds( array $entities, array $redirects, EntityId $targetId, array $expected ) { + $table = $this->newEntityPerPageTable( $entities, $redirects ); + $actual = $table->getRedirectIds( $targetId ); + + $this->assertEqualIds( $expected, $actual ); + } + + public function getRedirectIdsProvider() { + $property = new Property( new PropertyId( 'P5' ), null, 'string' ); + $item = new Item( new ItemId( 'Q5' ) ); + $redirect = new EntityRedirect( new ItemId( 'Q55' ), new ItemId( 'Q5' ) ); + + $q1 = new ItemId( 'Q1' ); + $q5 = new ItemId( 'Q5' ); + $p5 = new PropertyId( 'P5' ); + $q55 = new ItemId( 'Q55' ); + + return array( + 'empty' => array( + array(), + array(), + $q55, + array() + ), + 'none' => array( + array( $item, $property ), + array( $redirect ), + $q1, + array(), + ), + 'redirects' => array( + array( $item, $property ), + array( $redirect ), + $q5, + array( $q55 ), + ), + 'wrong type' => array( + array( $item, $property ), + array( $redirect ), + $p5, + array(), + ), + ); + } + public function testGetPageIdForEntityId() { $entity = new Item( new ItemId( 'Q5' ) ); diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSearchKeyBuilderTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSearchKeyBuilderTest.php index 629b437..5aaeadb 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSearchKeyBuilderTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSearchKeyBuilderTest.php @@ -47,10 +47,6 @@ /* @var TermSqlIndex $termCache */ $termCache = WikibaseRepo::getDefaultInstance()->getStore()->getTermIndex(); - if ( !$termCache->supportsSearchKeys() ) { - $this->markTestSkipped( "can't test search key if withoutTermSearchKey option is set." ); - } - // make term in item $item = new Item( new ItemId( 'Q42' ) ); $item->setLabel( $languageCode, $termText ); 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 29803cf..81c767d 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/TermSqlIndexTest.php @@ -58,11 +58,6 @@ */ public function testGetMatchingTerms2( $languageCode, $termText, $searchText, $matches ) { $termIndex = $this->getTermIndex(); - - if ( !$termIndex->supportsSearchKeys() ) { - $this->markTestSkipped( "can't test search key if withoutTermSearchKey option is set." ); - } - $termIndex->clear(); $item = new Item( new ItemId( 'Q42' ) ); diff --git a/extensions/Wikibase/view/resources/jquery/wikibase/resources.php b/extensions/Wikibase/view/resources/jquery/wikibase/resources.php index a2785c0..4b39988 100644 --- a/extensions/Wikibase/view/resources/jquery/wikibase/resources.php +++ b/extensions/Wikibase/view/resources/jquery/wikibase/resources.php @@ -431,6 +431,7 @@ ), 'jquery.wikibase.statementview' => $moduleTemplate + array( + 'position' => 'top', 'scripts' => array( 'jquery.wikibase.statementview.js', 'jquery.wikibase.statementview.RankSelector.js', diff --git a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/resources.php b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/resources.php index 9be1c67..2dce035 100644 --- a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/resources.php +++ b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/resources.php @@ -91,6 +91,7 @@ ), 'jquery.wikibase.toolbar' => $moduleTemplate + array( + 'position' => 'top', 'scripts' => array( 'jquery.wikibase.toolbar.js', ), diff --git a/extensions/Wikibase/view/resources/templates.php b/extensions/Wikibase/view/resources/templates.php index 627acb5..0633a43 100644 --- a/extensions/Wikibase/view/resources/templates.php +++ b/extensions/Wikibase/view/resources/templates.php @@ -70,7 +70,7 @@ </div> <div class="wikibase-snakview-value-container" dir="auto"> <div class="wikibase-snakview-typeselector"></div> - <div class="wikibase-snakview-value $2">$3</div> + <div class="wikibase-snakview-value $2">$3<span class="wb-indicator"></span></div> </div> </div> HTML; diff --git a/extensions/Wikibase/view/resources/wikibase/resources.php b/extensions/Wikibase/view/resources/wikibase/resources.php index fd389f6..3359133 100644 --- a/extensions/Wikibase/view/resources/wikibase/resources.php +++ b/extensions/Wikibase/view/resources/wikibase/resources.php @@ -18,6 +18,7 @@ // common styles independent from JavaScript being enabled or disabled 'wikibase.common' => $moduleTemplate + array( + 'position' => 'top', 'styles' => array( // Order must be hierarchical, do not order alphabetically 'wikibase.css', diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index f1cde6a..09682cd 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -684,6 +684,7 @@ 'Wikibase\\Lib\\Store\\EntityLookup' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityLookup.php', 'Wikibase\\Lib\\Store\\EntityPrefetcher' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityPrefetcher.php', 'Wikibase\\Lib\\Store\\EntityRedirect' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityRedirect.php', + 'Wikibase\\Lib\\Store\\EntityRedirectLookup' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityRedirectLookup.php', 'Wikibase\\Lib\\Store\\EntityRedirectResolvingDecorator' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityRedirectResolvingDecorator.php', 'Wikibase\\Lib\\Store\\EntityRetrievingTermLookup' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityRetrievingTermLookup.php', 'Wikibase\\Lib\\Store\\EntityRevisionLookup' => $baseDir . '/extensions/Wikibase/lib/includes/store/EntityRevisionLookup.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 32d7a62..05d78fd 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1203,12 +1203,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "59fe3a6237e25b2236bc4975ac8d56017a61ebc1" + "reference": "867a1dd3615c4af24fe992ffea8460268e64c22b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/59fe3a6237e25b2236bc4975ac8d56017a61ebc1", - "reference": "59fe3a6237e25b2236bc4975ac8d56017a61ebc1", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/867a1dd3615c4af24fe992ffea8460268e64c22b", + "reference": "867a1dd3615c4af24fe992ffea8460268e64c22b", "shasum": "" }, "require": { @@ -1235,7 +1235,7 @@ "conflict": { "mediawiki/mediawiki": "<1.23" }, - "time": "2015-05-04 22:05:18", + "time": "2015-05-06 02:22:58", "type": "mediawiki-extension", "installation-source": "dist", "autoload": { -- To view, visit https://gerrit.wikimedia.org/r/209193 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: If8761ebc2a1e3fd7beb3fc55beb5e5a75453a2aa Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: master Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Aude <aude.w...@gmail.com> Gerrit-Reviewer: JanZerebecki <jan.wikime...@zerebecki.de> Gerrit-Reviewer: Siebrand <siebr...@kitano.nl> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits