Aude has uploaded a new change for review.

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

Change subject: Update Wikibase and ArticlePlaceholder
......................................................................

Update Wikibase and ArticlePlaceholder

* Fix problem with display of labels and descriptions after edit
* Fix undefined index in ArticlePlaceholder

Bug: T135714
Bug: T136093
Change-Id: Ie702530bf618f3394b0cb01f6f73f53e3a54eec7
---
M composer.json
M composer.lock
M extensions/ArticlePlaceholder/includes/SearchHookHandler.php
M extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php
M 
extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
M extensions/Wikibase/view/src/SimpleEntityTermsView.php
M vendor/composer/installed.json
8 files changed, 161 insertions(+), 100 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/48/293048/1

diff --git a/composer.json b/composer.json
index 9d47e45..b24a0e7 100644
--- a/composer.json
+++ b/composer.json
@@ -5,6 +5,10 @@
     "repositories": [
         {
             "type": "git",
+            "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder";
+        },
+        {
+            "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikidata.org";
         },
         {
@@ -30,7 +34,7 @@
     ],
     "require": {
         "php": ">=5.5.0",
-        "mediawiki/article-placeholder": "dev-master",
+        "mediawiki/article-placeholder": "dev-wmf/1.28.0-wmf.3",
         "propertysuggester/property-suggester": "~3.0.0",
         "wikibase/wikibase": "dev-wmf/1.28.0-wmf.3",
         "wikibase/wikimedia-badges": "dev-master",
@@ -65,4 +69,4 @@
             "merge-dev": false
         }
     }
-}
\ No newline at end of file
+}
diff --git a/composer.lock b/composer.lock
index 887217a..21ab3ff 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
         "Read more about it at 
https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file";,
         "This file is @generated automatically"
     ],
-    "hash": "439229d3171c6acf2b7a6bf40a10cc79",
-    "content-hash": "d9a4cd52d4a9623427971d1d71685d08",
+    "hash": "2b8fb9457eef9ee5e5a6fcb694f9b2c7",
+    "content-hash": "a9d3959d5c7849629f22b9fd8c1119c4",
     "packages": [
         {
             "name": "composer/installers",
@@ -776,17 +776,11 @@
         },
         {
             "name": "mediawiki/article-placeholder",
-            "version": "dev-master",
+            "version": "dev-wmf/1.28.0-wmf.3",
             "source": {
                 "type": "git",
-                "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
-                "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15"
-            },
-            "dist": {
-                "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/1ebcaecb9d8f75ff34dba1b112eace2868379c15";,
-                "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15",
-                "shasum": ""
+                "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder";,
+                "reference": "ac0c104182a1fc98b54dea2006eefe858d322cc9"
             },
             "require-dev": {
                 "jakub-onderka/php-parallel-lint": "0.9.2",
@@ -798,7 +792,15 @@
                     "ArticlePlaceholder\\": "includes/"
                 }
             },
-            "notification-url": "https://packagist.org/downloads/";,
+            "scripts": {
+                "test": [
+                    "parallel-lint . --exclude vendor",
+                    "phpcs -p -s"
+                ],
+                "fix": [
+                    "phpcbf"
+                ]
+            },
             "license": [
                 "GPL-2.0+"
             ],
@@ -809,7 +811,11 @@
             ],
             "description": "Provides a special page with Wikibase information 
about a certain topic, with invitation to create an article for the topic",
             "homepage": 
"https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder";,
-            "time": "2016-05-23 20:21:41"
+            "support": {
+                "issues": "https://phabricator.wikimedia.org/";,
+                "irc": "irc://irc.freenode.net/wikidata"
+            },
+            "time": "2016-06-06 22:29:54"
         },
         {
             "name": "propertysuggester/property-suggester",
@@ -1454,12 +1460,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "05d1154718ecc187c46d958bd8912cdae76075b2"
+                "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/05d1154718ecc187c46d958bd8912cdae76075b2";,
-                "reference": "05d1154718ecc187c46d958bd8912cdae76075b2",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/fc6e571ec0fef7acacd34e745909ca05ba7c60e0";,
+                "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0",
                 "shasum": ""
             },
             "require": {
@@ -1531,7 +1537,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2016-05-31 19:12:11"
+            "time": "2016-06-06 19:55:50"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/ArticlePlaceholder/includes/SearchHookHandler.php 
b/extensions/ArticlePlaceholder/includes/SearchHookHandler.php
index 453d70f..14cb36d 100644
--- a/extensions/ArticlePlaceholder/includes/SearchHookHandler.php
+++ b/extensions/ArticlePlaceholder/includes/SearchHookHandler.php
@@ -153,6 +153,10 @@
 
                $notableEntityIds = $this->getNotableEntityIds( array_keys( 
$entityIdSearchResult ) );
 
+               if ( $notableEntityIds === null ) {
+                       return '';
+               }
+
                foreach ( $notableEntityIds as $entityId ) {
                        $result = $this->createResult( $entityIdSearchResult[ 
$entityId ] );
 
@@ -239,7 +243,7 @@
                // $json will be false if the request fails, json_decode can 
handle that.
                $data = json_decode( $json, true );
 
-               if ( is_array( $data ) ) {
+               if ( is_array( $data ) && array_key_exists( 'entities', $data ) 
) {
                        return $data[ 'entities' ];
                } else {
                        return null;
diff --git 
a/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php
 
b/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php
index 7fcfcf1..aeda587 100644
--- 
a/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php
+++ 
b/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php
@@ -7,6 +7,8 @@
 use SpecialPage;
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\DataModel\Services\Lookup\EntityRetrievingTermLookup;
+use Wikibase\DataModel\Services\Lookup\InMemoryEntityLookup;
 use Wikibase\DataModel\Term\AliasesProvider;
 use Wikibase\DataModel\Term\LabelsProvider;
 use Wikibase\LanguageFallbackChain;
@@ -157,13 +159,11 @@
                $parserOutput->addJsConfigVars( $configVars );
                $parserOutput->setExtensionData( 'wikibase-titletext', 
$this->getTitleText( $entity ) );
 
-               $entityId = $entity->getId();
-
                if ( $generateHtml ) {
                        $this->addHtmlToParserOutput(
                                $parserOutput,
                                $entity,
-                               $this->getEntityInfo( $parserOutput, $entityId )
+                               $this->getEntityInfo( $parserOutput )
                        );
                } else {
                        // If we don't have HTML, the ParserOutput in question
@@ -184,6 +184,7 @@
                // Sometimes extensions like SpamBlacklist might call 
getParserOutput
                // before the id is assigned, during the process of creating a 
new entity.
                // in that case, no alternate links are added, which probably 
is no problem.
+               $entityId = $entity->getId();
                if ( $entityId !== null ) {
                        $this->addAlternateLinks( $parserOutput, $entityId );
                }
@@ -195,11 +196,10 @@
         * Fetches some basic entity information from a set of entity IDs.
         *
         * @param ParserOutput $parserOutput
-        * @param EntityId|null $entityId
         *
         * @return EntityInfo
         */
-       private function getEntityInfo( ParserOutput $parserOutput, EntityId 
$entityId = null ) {
+       private function getEntityInfo( ParserOutput $parserOutput ) {
                /**
                 * Set in ReferencedEntitiesDataUpdater.
                 *
@@ -212,10 +212,6 @@
                        wfLogWarning( '$entityIds from ParserOutput 
"referenced-entities" extension data'
                                . ' expected to be an array' );
                        $entityIds = [];
-               }
-
-               if ( $entityId !== null ) {
-                       $entityIds[] = $entityId;
                }
 
                $entityInfoBuilder = 
$this->entityInfoBuilderFactory->newEntityInfoBuilder( $entityIds );
@@ -272,8 +268,13 @@
                EntityDocument $entity,
                EntityInfo $entityInfo
        ) {
-               $labelDescriptionLookup = new 
LanguageFallbackLabelDescriptionLookup(
-                       new EntityInfoTermLookup( $entityInfo ),
+               $entityLookup = new InMemoryEntityLookup();
+               if ( $entity->getId() !== null ) {
+                       $entityLookup->addEntity( $entity );
+               }
+
+               $entityLabelDescriptionLookup = new 
LanguageFallbackLabelDescriptionLookup(
+                       new EntityRetrievingTermLookup( $entityLookup ),
                        $this->languageFallbackChain
                );
 
@@ -298,7 +299,7 @@
                                $languageDirectionalityLookup,
                                $languageNameLookup
                        ),
-                       $labelDescriptionLookup,
+                       $entityLabelDescriptionLookup,
                        $this->templateFactory,
                        $editSectionGenerator,
                        $this->textProvider,
@@ -306,10 +307,15 @@
                        $textInjector
                );
 
+               $referencedEntitiesLabelDescriptionLookup = new 
LanguageFallbackLabelDescriptionLookup(
+                       new EntityInfoTermLookup( $entityInfo ),
+                       $this->languageFallbackChain
+               );
+
                $entityView = $this->entityViewFactory->newEntityView(
                        $entity->getType(),
                        $this->languageCode,
-                       $labelDescriptionLookup,
+                       $referencedEntitiesLabelDescriptionLookup,
                        $this->languageFallbackChain,
                        $editSectionGenerator,
                        $entityTermsView
diff --git 
a/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
 
b/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
index 06c1355..a472ca6 100644
--- 
a/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
+++ 
b/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
@@ -40,9 +40,13 @@
        private $textInjector;
 
        /**
+        * @param HtmlTermRenderer $htmlTermRenderer
+        * @param LabelDescriptionLookup $labelDescriptionLookup
         * @param TemplateFactory $templateFactory
         * @param EditSectionGenerator $sectionEditLinkGenerator
         * @param LocalizedTextProvider $textProvider
+        * @param TermListView $termListView
+        * @param TextInjector $textInjector
         */
        public function __construct(
                HtmlTermRenderer $htmlTermRenderer,
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
index 3c871ad..725342a 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
@@ -7,6 +7,7 @@
 use SpecialPage;
 use Title;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
+use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
@@ -40,12 +41,43 @@
  */
 class EntityParserOutputGeneratorTest extends MediaWikiTestCase {
 
-       public function testGetParserOutput() {
+       public function provideTestGetParserOutput() {
+               return [
+                       [
+                               $this->newItem(),
+                               'kitten item' ,
+                               [ 'http://an.url.com', 
'https://another.url.org' ],
+                               [ 'File:This_is_a_file.pdf', 'File:Selfie.jpg' 
],
+                               [
+                                       new ItemId( 'Q42' ),
+                                       new ItemId( 'Q35' ),
+                                       new PropertyId( 'P42' ),
+                                       new PropertyId( 'P10' )
+                               ],
+                       ],
+                       [ new Item(), null, [], [], [] ]
+               ];
+       }
+
+       /**
+        * EntityDocument $entity
+        * string|null $titleText
+        * string[] $externalLinks
+        * string[] $images
+        * EntityId[] $referencedEntities
+        *
+        * @dataProvider provideTestGetParserOutput
+        */
+       public function testGetParserOutput(
+               EntityDocument $entity,
+               $titleText,
+               array $externalLinks,
+               array $images,
+               array $referencedEntities
+       ) {
                $entityParserOutputGenerator = 
$this->newEntityParserOutputGenerator();
 
-               $item = $this->newItem();
-
-               $parserOutput = $entityParserOutputGenerator->getParserOutput( 
$item );
+               $parserOutput = $entityParserOutputGenerator->getParserOutput( 
$entity );
 
                $this->assertSame( '<TITLE>', $parserOutput->getTitleText(), 
'title text' );
                $this->assertSame( '<HTML>', $parserOutput->getText(), 'html 
text' );
@@ -60,19 +92,19 @@
                $this->assertSame( array( '<JS>' ), 
$parserOutput->getJsConfigVars(), 'config vars' );
 
                $this->assertEquals(
-                       'kitten item',
+                       $titleText,
                        $parserOutput->getExtensionData( 'wikibase-titletext' ),
                        'title text'
                );
 
                $this->assertEquals(
-                       array( 'http://an.url.com', 'https://another.url.org' ),
+                       $externalLinks,
                        array_keys( $parserOutput->getExternalLinks() ),
                        'external links'
                );
 
                $this->assertEquals(
-                       array( 'File:This_is_a_file.pdf', 'File:Selfie.jpg' ),
+                       $images,
                        array_keys( $parserOutput->getImages() ),
                        'images'
                );
@@ -85,31 +117,30 @@
 //             );
 
                $this->assertArrayEquals(
-                       array(
-                               new ItemId( 'Q42' ),
-                               new ItemId( 'Q35' ),
-                               new PropertyId( 'P42' ),
-                               new PropertyId( 'P10' )
-                       ),
+                       $referencedEntities,
                        $parserOutput->getExtensionData( 'referenced-entities' )
                );
 
-               $jsonHref = SpecialPage::getTitleFor( 'EntityData', 
$item->getId()->getSerialization() . '.json' )->getCanonicalURL();
-               $ntHref = SpecialPage::getTitleFor( 'EntityData', 
$item->getId()->getSerialization() . '.nt' )->getCanonicalURL();
-
-               $this->assertEquals(
-                       array(
-                               array(
+               $alternateLinks = null;
+               if ( $entity->getId() ) {
+                       $jsonHref = SpecialPage::getTitleFor( 'EntityData', 
$entity->getId()->getSerialization() . '.json' )->getCanonicalURL();
+                       $ntHref = SpecialPage::getTitleFor( 'EntityData', 
$entity->getId()->getSerialization() . '.nt' )->getCanonicalURL();
+                       $alternateLinks = [
+                               [
                                        'rel' => 'alternate',
                                        'href' => $jsonHref,
                                        'type' => 'application/json'
-                               ),
-                               array(
+                               ],
+                               [
                                        'rel' => 'alternate',
                                        'href' => $ntHref,
                                        'type' => 'application/n-triples'
-                               )
-                       ),
+                               ]
+                       ];
+               }
+
+               $this->assertEquals(
+                       $alternateLinks,
                        $parserOutput->getExtensionData( 
'wikibase-alternate-links' ),
                        'alternate links (extension data)'
                );
diff --git a/extensions/Wikibase/view/src/SimpleEntityTermsView.php 
b/extensions/Wikibase/view/src/SimpleEntityTermsView.php
index eed0969..d80d42e 100644
--- a/extensions/Wikibase/view/src/SimpleEntityTermsView.php
+++ b/extensions/Wikibase/view/src/SimpleEntityTermsView.php
@@ -31,7 +31,7 @@
        private $htmlTermRenderer;
 
        /**
-        * @var LabelDescriptionLookup
+        * @var LabelDescriptionLookup For getting label/description of entity 
being rendered.
         */
        private $labelDescriptionLookup;
 
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index cd28d83..ab00201 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -102,45 +102,6 @@
         ]
     },
     {
-        "name": "mediawiki/article-placeholder",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
-            "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/1ebcaecb9d8f75ff34dba1b112eace2868379c15";,
-            "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15",
-            "shasum": ""
-        },
-        "require-dev": {
-            "jakub-onderka/php-parallel-lint": "0.9.2",
-            "mediawiki/mediawiki-codesniffer": "0.7.1"
-        },
-        "time": "2016-05-23 20:21:41",
-        "type": "mediawiki-extension",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "ArticlePlaceholder\\": "includes/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "GPL-2.0+"
-        ],
-        "authors": [
-            {
-                "name": "Lucie-Aimée Kaffee"
-            }
-        ],
-        "description": "Provides a special page with Wikibase information 
about a certain topic, with invitation to create an article for the topic",
-        "homepage": 
"https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder";
-    },
-    {
         "name": "wikimedia/purtle",
         "version": "v1.0.3",
         "version_normalized": "1.0.3.0",
@@ -1607,12 +1568,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "05d1154718ecc187c46d958bd8912cdae76075b2"
+            "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/05d1154718ecc187c46d958bd8912cdae76075b2";,
-            "reference": "05d1154718ecc187c46d958bd8912cdae76075b2",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/fc6e571ec0fef7acacd34e745909ca05ba7c60e0";,
+            "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0",
             "shasum": ""
         },
         "require": {
@@ -1645,7 +1606,7 @@
             "jakub-onderka/php-parallel-lint": "0.9.2",
             "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
         },
-        "time": "2016-05-31 19:12:11",
+        "time": "2016-06-06 19:55:50",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
@@ -1686,5 +1647,50 @@
             "wikibaserepo",
             "wikidata"
         ]
+    },
+    {
+        "name": "mediawiki/article-placeholder",
+        "version": "dev-wmf/1.28.0-wmf.3",
+        "version_normalized": "dev-wmf/1.28.0-wmf.3",
+        "source": {
+            "type": "git",
+            "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder";,
+            "reference": "ac0c104182a1fc98b54dea2006eefe858d322cc9"
+        },
+        "require-dev": {
+            "jakub-onderka/php-parallel-lint": "0.9.2",
+            "mediawiki/mediawiki-codesniffer": "0.7.1"
+        },
+        "time": "2016-05-24 15:15:06",
+        "type": "mediawiki-extension",
+        "installation-source": "source",
+        "autoload": {
+            "psr-4": {
+                "ArticlePlaceholder\\": "includes/"
+            }
+        },
+        "scripts": {
+            "test": [
+                "parallel-lint . --exclude vendor",
+                "phpcs -p -s"
+            ],
+            "fix": [
+                "phpcbf"
+            ]
+        },
+        "license": [
+            "GPL-2.0+"
+        ],
+        "authors": [
+            {
+                "name": "Lucie-Aimée Kaffee"
+            }
+        ],
+        "description": "Provides a special page with Wikibase information 
about a certain topic, with invitation to create an article for the topic",
+        "homepage": 
"https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder";,
+        "support": {
+            "issues": "https://phabricator.wikimedia.org/";,
+            "irc": "irc://irc.freenode.net/wikidata"
+        }
     }
 ]

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie702530bf618f3394b0cb01f6f73f53e3a54eec7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.28.0-wmf.3
Gerrit-Owner: Aude <aude.w...@gmail.com>

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

Reply via email to