WikidataBuilder has uploaded a new change for review.

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

Change subject: New Wikidata Build - 16/08/2014 10:00
......................................................................

New Wikidata Build - 16/08/2014 10:00

Change-Id: Ic91e1c83baffb7f261ad77b131f57d6c511b6f8d
---
M composer.lock
M extensions/PropertySuggester/README.md
M extensions/PropertySuggester/build/travis/script.sh
M extensions/PropertySuggester/i18n/en.json
M extensions/PropertySuggester/modules/ext.PropertySuggester.EntitySelector.js
M extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
M extensions/PropertySuggester/src/PropertySuggester/SuggesterParams.php
M extensions/PropertySuggester/src/PropertySuggester/SuggesterParamsParser.php
M 
extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
M 
extensions/PropertySuggester/src/PropertySuggester/Suggesters/SuggesterEngine.php
M extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
M extensions/PropertySuggester/tests/bootstrap.php
M 
extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
M 
extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggesterParamsParserTest.php
M 
extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
M 
extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
M extensions/Wikibase/client/WikibaseClient.hooks.php
M 
extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/SnaksFinder.php
A extensions/Wikibase/client/includes/hooks/ChangesPageWikibaseFilterHandler.php
M extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
M extensions/Wikibase/client/tests/phpunit/includes/ChangeHandlerTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
A 
extensions/Wikibase/client/tests/phpunit/includes/hooks/ChangesPageWikibaseFilterHandlerTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
M extensions/Wikibase/lib/WikibaseLib.php
M extensions/Wikibase/lib/includes/parsers/DateTimeParser.php
M extensions/Wikibase/lib/includes/parsers/MonolingualTextParser.php
M extensions/Wikibase/lib/includes/parsers/MonthNameUnlocalizer.php
M extensions/Wikibase/lib/includes/store/GenericEntityInfoBuilder.php
M extensions/Wikibase/lib/includes/store/TermIndex.php
M extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php
M extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilderFactory.php
M extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
M extensions/Wikibase/lib/tests/phpunit/parsers/MonolingualTextParserTest.php
M extensions/Wikibase/lib/tests/phpunit/parsers/MonthNameUnlocalizerTest.php
M extensions/Wikibase/repo/includes/EntityView.php
M extensions/Wikibase/repo/includes/LinkedData/EntityDataRequestHandler.php
M extensions/Wikibase/repo/includes/PropertyView.php
D extensions/Wikibase/repo/includes/View/FingerprintView.php
M extensions/Wikibase/repo/includes/View/TermBoxView.php
M extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
M extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
M extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
M extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
M extensions/Wikibase/repo/includes/store/sql/SqlStore.php
M extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
M extensions/Wikibase/repo/tests/phpunit/includes/EntityViewTest.php
D extensions/Wikibase/repo/tests/phpunit/includes/View/FingerprintViewTest.php
M vendor/autoload.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
52 files changed, 891 insertions(+), 584 deletions(-)


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

diff --git a/composer.lock b/composer.lock
index 02ec9fb..d7a41e1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -723,16 +723,16 @@
         },
         {
             "name": "propertysuggester/property-suggester",
-            "version": "v1.0",
+            "version": "v1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Wikidata-lib/PropertySuggester.git";,
-                "reference": "2fb712f58c368a1151b3e8aeb09876ffa1f66913"
+                "reference": "fe77e3d6db4582d2b4cefbe51a1f74e8838f79d1"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/2fb712f58c368a1151b3e8aeb09876ffa1f66913";,
-                "reference": "2fb712f58c368a1151b3e8aeb09876ffa1f66913",
+                "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/fe77e3d6db4582d2b4cefbe51a1f74e8838f79d1";,
+                "reference": "fe77e3d6db4582d2b4cefbe51a1f74e8838f79d1",
                 "shasum": ""
             },
             "require": {
@@ -766,7 +766,7 @@
                 "wikibase",
                 "wikidata"
             ],
-            "time": "2014-06-23 17:01:20"
+            "time": "2014-07-25 01:45:14"
         },
         {
             "name": "serialization/serialization",
@@ -1142,12 +1142,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "c2f07302fa28695afda71b1981987c6573b02afc"
+                "reference": "3ed131f4e4f24800f51fd635eacc67bbcb8b2e23"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c2f07302fa28695afda71b1981987c6573b02afc";,
-                "reference": "c2f07302fa28695afda71b1981987c6573b02afc",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3ed131f4e4f24800f51fd635eacc67bbcb8b2e23";,
+                "reference": "3ed131f4e4f24800f51fd635eacc67bbcb8b2e23",
                 "shasum": ""
             },
             "require": {
@@ -1216,7 +1216,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2014-08-15 01:15:18"
+            "time": "2014-08-15 23:04:34"
         }
     ],
     "packages-dev": [
diff --git a/extensions/PropertySuggester/README.md 
b/extensions/PropertySuggester/README.md
index f639bc3..9a3ae2a 100644
--- a/extensions/PropertySuggester/README.md
+++ b/extensions/PropertySuggester/README.md
@@ -17,12 +17,12 @@
 ### Composer
 
 To add this package as a local, per-project dependency to your project, simply 
add a
-dependency on `propertysuggester/propertysuggester` to your project's 
`composer.json` file.
+dependency on `propertysuggester/property-suggester` to your project's 
`composer.json` file.
 Here is a minimal example of a `composer.json` file:
 
     {
         "require": {
-            "propertysuggester/propertysuggester": "*"
+            "propertysuggester/property-suggester": "*"
         }
     }
 
@@ -34,5 +34,19 @@
 
 * run ```composer dump-autoload``` in the extension folder (if installed 
without composer)
 * add ```require_once 
"$IP/extensions/PropertySuggester/PropertySuggester.php";``` to your 
localsettings
-* run ```maintenance/update.php``` to create the neccessary table
+* run ```maintenance/update.php``` to create the necessary table
 * follow the readme of PropertySuggester-Python to generate and load 
suggestion data
+
+### Configuration
+
+* $wgPropertySuggesterMinProbability - a float that sets a minimum threshold 
for suggestions (default 0.05)
+* $wgPropertySuggesterDeprecatedIds - a list of ints that blacklist suggestions
+
+## Release notes
+
+### 1.1 (soon)
+* Suggest properties for qualifiers and references based on the property of 
the mainsnak
+
+### 1.0 (2014-07-01)
+
+* Provide Property-Suggestions based on correlations to other properties in 
the item
diff --git a/extensions/PropertySuggester/build/travis/script.sh 
b/extensions/PropertySuggester/build/travis/script.sh
index 2f4f104..d487611 100644
--- a/extensions/PropertySuggester/build/travis/script.sh
+++ b/extensions/PropertySuggester/build/travis/script.sh
@@ -2,8 +2,8 @@
 
 set -x
 
-# cd ../wiki/tests/phpunit
-# php phpunit.php -c ../../extensions/PropertySuggester/phpunit.xml.dist 
--debug
+cd ../wiki/tests/phpunit
+php phpunit.php -c ../../extensions/PropertySuggester/phpunit.xml.dist
 
-cd ../wiki/extensions/PropertySuggester
-php vendor/bin/phpunit -c phpunit.xml.dist
+# cd ../wiki/extensions/PropertySuggester
+# php vendor/bin/phpunit -c phpunit.xml.dist
diff --git a/extensions/PropertySuggester/i18n/en.json 
b/extensions/PropertySuggester/i18n/en.json
index 0bdc18c..8d0ea9e 100644
--- a/extensions/PropertySuggester/i18n/en.json
+++ b/extensions/PropertySuggester/i18n/en.json
@@ -2,7 +2,7 @@
     "@metadata": {
         "authors": []
     },
-    "propertysuggester-desc": "Shows suggested properties for items.",
+    "propertysuggester-desc": "Shows suggested properties for wikibase items.",
     "propertysuggester": "Property Suggester",
     "propertysuggester-intro": "This is the PropertySuggester."
 }
diff --git 
a/extensions/PropertySuggester/modules/ext.PropertySuggester.EntitySelector.js 
b/extensions/PropertySuggester/modules/ext.PropertySuggester.EntitySelector.js
index dd5a2b2..09d72ad 100644
--- 
a/extensions/PropertySuggester/modules/ext.PropertySuggester.EntitySelector.js
+++ 
b/extensions/PropertySuggester/modules/ext.PropertySuggester.EntitySelector.js
@@ -10,6 +10,10 @@
 
        var Item = $.wikibase.entityselector.Item;
 
+       /**
+        * This widget overrides the wikibase.entityselector and extends it 
with functionality to
+        * suggest matching properties instead of just searching for them.
+        */
        $.widget( 'wikibase.entityselector', $.wikibase.entityselector, {
 
                _oldCreate: $.wikibase.entityselector.prototype._create,
@@ -17,50 +21,67 @@
                _create: function() {
                        var self = this;
 
-                       self._oldCreate.apply(self, arguments);
+                       self._oldCreate.apply( self, arguments );
 
                        var focusHandler = function( event ) {
-                               if ( self.__useSuggester() && 
self.element.val() === ''
-                                        && !self.options.menu.element.is( 
":visible" ) ) {
+                               if( self._useSuggester() && self.element.val() 
=== ''
+                                       && !self.options.menu.element.is( 
":visible" ) ) {
                                        self._minTermLength = 0;
                                        self._cache = {}; // is done in the 
entityselector on eachchange too
                                        self.search( event );
-                       }
+                               }
                        };
                        self.element.on( 'focus', focusHandler );
-
                },
 
                _oldGetData: $.wikibase.entityselector.prototype._getData,
 
+               /**
+                *
+                * @param {string} term
+                * @return {Object}
+                */
                _getData: function( term ) {
                        var self = this;
 
-                       if ( !self.__useSuggester() ) {
+                       if( !self._useSuggester() ) {
                                return self._oldGetData( term )
                        } else {
-                               return {
+                               var data = {
                                        action: 'wbsgetsuggestions',
                                        search: term,
-                                       entity: self.__getEntity().getId(),
+                                       context: this._getPropertyContext(),
                                        format: 'json',
                                        language: self.options.language,
                                        type: self.options.type,
                                        'continue': self._cache[term] && 
self._cache[term].nextSuggestionOffset
-                                               ? 
self._cache[term].nextSuggestionOffset: 0
+                                               ? 
self._cache[term].nextSuggestionOffset : 0
                                };
+                               if( data.context == 'item' ) {
+                                       data.entity = self._getEntity().getId();
+                               } else {
+                                       data.properties = self._getPropertyId();
+                               }
+                               return data;
                        }
                },
 
-               __useSuggester: function() {
-                       var entity = this.__getEntity();
-                       return this.options.type === 'property' && entity && 
entity.getType() === 'item' && this.__isInNewStatementView();
+               /**
+                * @return {boolean}
+                */
+               _useSuggester: function() {
+                       var entity = this._getEntity();
+                       return this.options.type === 'property' && entity !== 
null && entity.getType() === 'item';
                },
 
-               __getEntity: function() {
+               /**
+                * Get the entity from the surrounding entityview or return null
+                * @return {wikibase.Entity|null}
+                */
+               _getEntity: function() {
                        try {
                                var $entityView = this.element.closest( 
':wikibase-entityview' );
-                       } catch (e) {
+                       } catch( e ) {
                                return null;
                        }
                        var entity = $entityView.length > 0 ? $entityView.data( 
'entityview' ).option( 'value' ) : null;
@@ -72,17 +93,74 @@
                },
 
                /**
-                * only entityselectors in statements describing the item 
should get suggestions.
-                * this is hopefully exactly the case if the statement has no 
value.
-                * other entityselectors like source and quantifier should not 
get suggestions since
-                * they already have a statementview with a value.
+                * Returns the property id for the enclosing statementview or 
null if no property is selected yet.
+                *
+                * @return {string|null}
                 */
-               __isInNewStatementView: function() {
-                       var $statementView =  this.element.closest( 
':wikibase-statementview' );
-                       var value = $statementView.length > 0 ? 
$statementView.data( 'statementview' ).option( 'value' ) : null;
+               _getPropertyId: function() {
+                       try {
+                               var $statementView = this.element.closest( 
':wikibase-statementview' );
+                       } catch( e ) {
+                               return null;
+                       }
+                       var statement = $statementView.length > 0 ? 
$statementView.data( 'statementview' ).option( 'value' ) : null;
+                       if( statement ) {
+                               return statement.getMainSnak().getPropertyId();
+                       } else {
+                               return null;
+                       }
+               },
+
+               /**
+                * Returns either 'item', 'qualifier', 'reference' or null 
depending on the context of the entityselector.
+                * 'item' is returned in case that the selector is for a new 
property in an item.
+                *
+                * @return {string}
+                */
+               _getPropertyContext: function() {
+                       if( this._isInNewStatementView() ) {
+                               return 'item';
+                       } else if( this._isQualifier() ) {
+                               return 'qualifier';
+                       } else if( this._isReference() ) {
+                               return 'reference'
+                       } else {
+                               return null;
+                       }
+               },
+
+               /**
+                * @return {boolean}
+                */
+               _isQualifier: function() {
+                       var $claimview = this.element.closest( 
':wikibase-claimview, :wikibase-statementview' );
+                       var claimview = $claimview.data( 'claimview' ) || 
$claimview.data( 'statementview' );
+                       if( !claimview ) {
+                               return false;
+                       }
+                       return this.element.closest( claimview.$qualifiers 
).length > 0;
+               },
+
+               /**
+                * @return {boolean}
+                */
+               _isReference: function() {
+                       var $referenceview = this.element.closest( 
':wikibase-referenceview' );
+                       return $referenceview.length > 0;
+               },
+
+               /**
+                * detect if this is a new statement view.
+                * @return {boolean}
+                */
+               _isInNewStatementView: function() {
+                       var $statementView = this.element.closest( 
':wikibase-statementview' );
+                       var value = ( $statementView.length > 0 )
+                               ? $statementView.data( 'statementview' 
).option( 'value' )
+                               : null;
                        return value === null;
                }
-        });
+       } );
 
        $.extend( $.wikibase.entityselector, {
                Item: Item
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php 
b/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
index 243a86b..55f36c5 100644
--- a/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
+++ b/extensions/PropertySuggester/src/PropertySuggester/GetSuggestions.php
@@ -74,9 +74,9 @@
                $suggestionGenerator = new SuggestionGenerator( 
$this->entityLookup, $this->termIndex, $this->suggester );
 
                if ( $params->entity !== null ) {
-                       $suggestions = 
$suggestionGenerator->generateSuggestionsByItem( $params->entity, 
$params->suggesterLimit, $params->minProbability );
+                       $suggestions = 
$suggestionGenerator->generateSuggestionsByItem( $params->entity, 
$params->suggesterLimit, $params->minProbability, $params->context );
                } else {
-                       $suggestions = 
$suggestionGenerator->generateSuggestionsByPropertyList( $params->properties, 
$params->suggesterLimit, $params->minProbability );
+                       $suggestions = 
$suggestionGenerator->generateSuggestionsByPropertyList( $params->properties, 
$params->suggesterLimit, $params->minProbability, $params->context );
                }
                $suggestions = $suggestionGenerator->filterSuggestions( 
$suggestions, $params->search, $params->language, $params->resultSize );
 
@@ -154,6 +154,10 @@
                                ApiBase::PARAM_TYPE => 
Utils::getLanguageCodes(),
                                ApiBase::PARAM_DFLT => 
$this->getContext()->getLanguage()->getCode(),
                        ),
+                       'context' => array(
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_DFLT => 'item',
+                       ),
                        'search' => array(
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_DFLT => '',
@@ -171,6 +175,7 @@
                        'size' => 'Specify number of suggestions to be 
returned',
                        'language' => 'language for result',
                        'limit' => 'Maximal number of results',
+                       'context' => 'Either item, reference or qualifier',
                        'continue' => 'Offset where to continue a search'
                );
        }
@@ -194,7 +199,11 @@
                        
'api.php?action=wbsgetsuggestions&entity=Q4&continue=10&limit=5'
                        => 'Get suggestions for entity 4 from rank 10 to 15',
                        'api.php?action=wbsgetsuggestions&properties=P31|P21'
-                       => 'Get suggestions for the property combination P21 
and P31'
+                       => 'Get suggestions for the property combination P21 
and P31',
+                       
'api.php?action=wbsgetsuggestions&properties=P21&context=qualifier'
+                       => 'Get suggestions for the qualifier that are used 
with P21',
+                       
'api.php?action=wbsgetsuggestions&properties=P21&context=reference'
+                       => 'Get suggestions for the references that are used 
with P21'
                );
        }
 
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/SuggesterParams.php 
b/extensions/PropertySuggester/src/PropertySuggester/SuggesterParams.php
index 18b4e9a..919d98d 100644
--- a/extensions/PropertySuggester/src/PropertySuggester/SuggesterParams.php
+++ b/extensions/PropertySuggester/src/PropertySuggester/SuggesterParams.php
@@ -49,6 +49,11 @@
        public $continue;
 
        /**
+        * @var string
+        */
+       public $context;
+
+       /**
         * @var int
         */
        public $resultSize;
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/SuggesterParamsParser.php 
b/extensions/PropertySuggester/src/PropertySuggester/SuggesterParamsParser.php
index 9dc8760..b1522e9 100644
--- 
a/extensions/PropertySuggester/src/PropertySuggester/SuggesterParamsParser.php
+++ 
b/extensions/PropertySuggester/src/PropertySuggester/SuggesterParamsParser.php
@@ -65,6 +65,7 @@
                }
 
                $result->language = $params['language'];
+               $result->context = $params['context'];
 
                if ( $result->search ) {
                        // the results matching '$search' can be at the bottom 
of the list
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
 
b/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
index c1348e2..afbe9c1 100644
--- 
a/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
+++ 
b/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SimpleSuggester.php
@@ -47,10 +47,11 @@
         * @param int[] $propertyIds
         * @param int $limit
         * @param float $minProbability
+        * @param string $context
         * @throws InvalidArgumentException
         * @return Suggestion[]
         */
-       protected function getSuggestions( array $propertyIds, $limit, 
$minProbability ) {
+       protected function getSuggestions( array $propertyIds, $limit, 
$minProbability, $context ) {
                $profiler = new ProfileSection( __METHOD__ );
                if ( !is_int( $limit ) ) {
                        throw new InvalidArgumentException( '$limit must be 
int!' );
@@ -64,7 +65,6 @@
 
                $excludedIds = array_merge( $propertyIds, 
$this->deprecatedPropertyIds );
                $count = count( $propertyIds );
-               $context = 'item'; // only 'item' is supported at the moment
 
                $dbr = $this->lb->getConnection( DB_SLAVE );
                $res = $dbr->select(
@@ -92,13 +92,14 @@
         *
         * @param PropertyId[] $propertyIds
         * @param int $limit
-        * @param float $minProbability
+        * @param float $minProbability
+        * @param string $context
         * @return Suggestion[]
         */
-       public function suggestByPropertyIds( array $propertyIds, $limit, 
$minProbability ) {
+       public function suggestByPropertyIds( array $propertyIds, $limit, 
$minProbability, $context ) {
                $numericIds = array_map( array( $this, 
'getNumericIdFromPropertyId' ), $propertyIds );
 
-               return $this->getSuggestions( $numericIds, $limit, 
$minProbability );
+               return $this->getSuggestions( $numericIds, $limit, 
$minProbability, $context );
        }
 
        /**
@@ -106,13 +107,14 @@
         *
         * @param Item $item
         * @param int $limit
-        * @param float $minProbability
+        * @param float $minProbability
+        * @param string $context
         * @return Suggestion[]
         */
-       public function suggestByItem( Item $item, $limit, $minProbability ) {
+       public function suggestByItem( Item $item, $limit, $minProbability, 
$context ) {
                $claims = $item->getClaims();
                $numericIds = array_unique( array_map( array( $this, 
'getNumericIdFromClaim' ), $claims ) );
-               return $this->getSuggestions( $numericIds, $limit, 
$minProbability );
+               return $this->getSuggestions( $numericIds, $limit, 
$minProbability, $context );
        }
 
        /**
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SuggesterEngine.php
 
b/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SuggesterEngine.php
index 714c7c4..327890e 100644
--- 
a/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SuggesterEngine.php
+++ 
b/extensions/PropertySuggester/src/PropertySuggester/Suggesters/SuggesterEngine.php
@@ -18,9 +18,10 @@
         * @param PropertyId[] $propertyIds
         * @param int $limit
         * @param float $minProbability
+        * @param string $context
         * @return Suggestion[]
         */
-       public function suggestByPropertyIds( array $propertyIds, $limit, 
$minProbability );
+       public function suggestByPropertyIds( array $propertyIds, $limit, 
$minProbability, $context );
 
        /**
         * Returns suggested attributes
@@ -28,9 +29,10 @@
         * @param Item $item
         * @param int $limit
         * @param float $minProbability
+        * @param string $context
         * @return Suggestion[]
         */
-       public function suggestByItem( Item $item, $limit, $minProbability );
+       public function suggestByItem( Item $item, $limit, $minProbability, 
$context );
 
        /**
         * @param int[] $numericIds - blacklist used to filter suggestions
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php 
b/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
index 04791c1..c3a413c 100644
--- a/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
+++ b/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
@@ -42,19 +42,21 @@
        }
 
        /**
-        * @param string $item - An item id
+        * @param string $itemIdString - An item id
         * @param int $limit
         * @param float $minProbability
-        * @throws InvalidArgumentException
+        * @param string $context
+        * @throws \InvalidArgumentException
         * @return array
         */
-       public function generateSuggestionsByItem( $item, $limit, 
$minProbability ) {
-               $id = new ItemId( $item );
+
+       public function generateSuggestionsByItem( $itemIdString, $limit, 
$minProbability, $context ) {
+               $id = new  ItemId( $itemIdString );
                $item = $this->entityLookup->getEntity( $id );
                if( $item == null ){
                        throw new InvalidArgumentException( 'Item ' . $id . ' 
could not be found' );
                }
-               $suggestions = $this->suggester->suggestByItem( $item, $limit, 
$minProbability );
+               $suggestions = $this->suggester->suggestByItem( $item, $limit, 
$minProbability, $context );
                return $suggestions;
        }
 
@@ -62,14 +64,16 @@
         * @param string[] $propertyIdList - A list of property-id-strings
         * @param int $limit
         * @param float $minProbability
+        * @param string $context
         * @return Suggestion[]
         */
-       public function generateSuggestionsByPropertyList( array 
$propertyIdList, $limit, $minProbability ) {
+       public function generateSuggestionsByPropertyList( array 
$propertyIdList, $limit, $minProbability, $context ) {
                $propertyIds = array();
                foreach ( $propertyIdList as $stringId ) {
                        $propertyIds[] = new PropertyId( $stringId );
                }
-               $suggestions = $this->suggester->suggestByPropertyIds( 
$propertyIds, $limit, $minProbability );
+
+               $suggestions = $this->suggester->suggestByPropertyIds( 
$propertyIds, $limit, $minProbability, $context );
                return $suggestions;
        }
 
diff --git a/extensions/PropertySuggester/tests/bootstrap.php 
b/extensions/PropertySuggester/tests/bootstrap.php
index f28925d..077594a 100644
--- a/extensions/PropertySuggester/tests/bootstrap.php
+++ b/extensions/PropertySuggester/tests/bootstrap.php
@@ -1,4 +1,3 @@
 <?php
 
-require_once __DIR__ . "/evilMediaWikiBootstrap.php";
 require_once __DIR__ . "/../PropertySuggester.php";
diff --git 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
index 3d16d05..6939756 100644
--- 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
+++ 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/GetSuggestionsTest.php
@@ -92,7 +92,7 @@
                $p56 = self::$idMap['%P56%'];
                $p72 = self::$idMap['%P72%'];
 
-               $params = array( 'action' => 'wbsgetsuggestions', 'properties' 
=> $p56, 'search' => '*' );
+               $params = array( 'action' => 'wbsgetsuggestions', 'properties' 
=> $p56, 'search' => '*', 'context' => 'item' );
                $res = $this->doApiRequest( $params );
                $result = $res[0];
 
@@ -106,8 +106,7 @@
        public function testExecutionWithSearch() {
                $p56 = self::$idMap['%P56%'];
 
-               // TODO add terms to do a useful search!
-               $params = array( 'action' => 'wbsgetsuggestions', 'properties' 
=> $p56, 'search' => 'IdontExist', 'continue' => 0);
+               $params = array( 'action' => 'wbsgetsuggestions', 'properties' 
=> $p56, 'search' => 'IdontExist', 'continue' => 0, 'context' => 'item');
                $res = $this->doApiRequest( $params );
                $result = $res[0];
 
diff --git 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggesterParamsParserTest.php
 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggesterParamsParserTest.php
index 6021102..399ce83 100644
--- 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggesterParamsParserTest.php
+++ 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggesterParamsParserTest.php
@@ -22,7 +22,7 @@
        protected $defaultSuggesterResultSize = 100;
        protected $defaultMinProbability = 0.01;
     protected $defaultParams = array( 'entity' => null, 'properties' => null, 
'continue' => 10, 'limit' => 5,
-                                                                         
'language' => 'en', 'search' => '' );
+                                                                         
'language' => 'en', 'search' => '', 'context' => 'item' );
     
        public function setUp() {
                parent::setUp();
@@ -42,6 +42,7 @@
                $this->assertEquals( 5+10, $params->suggesterLimit );
                $this->assertEquals( $this->defaultMinProbability, 
$params->minProbability );
                $this->assertEquals( '', $params->search );
+               $this->assertEquals( 'item', $params->context );
        }
 
        public function testSuggesterWithSearchParameters() {
@@ -57,6 +58,7 @@
                $this->assertEquals( $this->defaultSuggesterResultSize, 
$params->suggesterLimit );
                $this->assertEquals( 0, $params->minProbability );
                $this->assertEquals( 'asd', $params->search );
+               $this->assertEquals( 'item', $params->context );
        }
 
        /**
diff --git 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
index 9a33803..4797451 100644
--- 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
+++ 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/Suggesters/SimpleSuggesterTest.php
@@ -57,7 +57,7 @@
        public function testSuggestByPropertyIds() {
                $ids = array( new PropertyId( 'p1' ) );
 
-               $res = $this->suggester->suggestByPropertyIds( $ids, 100, 0.0 );
+               $res = $this->suggester->suggestByPropertyIds( $ids, 100, 0.0, 
'item' );
 
                $this->assertEquals( new PropertyId( 'p2' ), 
$res[0]->getPropertyId() );
                $this->assertEquals( 0.1, $res[0]->getProbability(), '', 0.0001 
);
@@ -71,7 +71,7 @@
                $statement->setGuid( 'claim0' );
                $item->addClaim( $statement );
 
-               $res = $this->suggester->suggestByItem( $item, 100, 0.0 );
+               $res = $this->suggester->suggestByItem( $item, 100, 0.0, 'item' 
);
 
                $this->assertEquals( new PropertyId( 'p2' ), 
$res[0]->getPropertyId() );
                $this->assertEquals( new PropertyId( 'p3' ), 
$res[1]->getPropertyId() );
@@ -82,7 +82,7 @@
 
                $this->suggester->setDeprecatedPropertyIds( array( 2 ) );
 
-               $res = $this->suggester->suggestByPropertyIds( $ids, 100, 0.0 );
+               $res = $this->suggester->suggestByPropertyIds( $ids, 100, 0.0, 
'item' );
 
                $resultIds = array_map( function ( Suggestion $r ) { return 
$r->getPropertyId()->getNumericId(); }, $res );
                $this->assertNotContains( 2 , $resultIds );
@@ -90,21 +90,21 @@
        }
 
        public function testEmptyResult() {
-               $this->assertEmpty( $this->suggester->suggestByPropertyIds( 
array(), 10, 0.01 ) );
+               $this->assertEmpty( $this->suggester->suggestByPropertyIds( 
array(), 10, 0.01, 'item' ) );
        }
 
        /**
         * @expectedException InvalidArgumentException
         */
        public function testInvalidLimit() {
-               $this->suggester->suggestByPropertyIds( array(), '10', 0.01 );
+               $this->suggester->suggestByPropertyIds( array(), '10', 0.01, 
'item' );
        }
 
        /**
         * @expectedException InvalidArgumentException
         */
        public function testInvalidMinProbability() {
-               $this->suggester->suggestByPropertyIds( array(), 10, '0.01' );
+               $this->suggester->suggestByPropertyIds( array(), 10, '0.01', 
'item' );
        }
 
 }
diff --git 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
index 289dbc5..4edf2f7 100644
--- 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
+++ 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
@@ -96,7 +96,7 @@
                        ->with( $this->equalTo( $properties ) )
                        ->will( $this->returnValue( array( 'foo' ) ) );
 
-               $result1 = 
$this->suggestionGenerator->generateSuggestionsByPropertyList( array( 'P12', 
'p13', 'P14' ) , 100, 0.0 );
+               $result1 = 
$this->suggestionGenerator->generateSuggestionsByPropertyList( array( 'P12', 
'p13', 'P14' ) , 100, 0.0, 'item' );
                $this->assertEquals( $result1, array( 'foo' ) );
 
        }
@@ -119,7 +119,7 @@
                        ->with( $this->equalTo( $item ) )
                        ->will( $this->returnValue( array( 'foo' ) ) );
 
-               $result3 = 
$this->suggestionGenerator->generateSuggestionsByItem( 'Q42', 100, 0.0 );
+               $result3 = 
$this->suggestionGenerator->generateSuggestionsByItem( 'Q42', 100, 0.0, 'item' 
);
                $this->assertEquals( $result3, array( 'foo' ) );
        }
 
@@ -134,7 +134,7 @@
                        ->with( $this->equalTo( $itemId ) )
                        ->will( $this->returnValue( null ) );
 
-               $this->suggestionGenerator->generateSuggestionsByItem( 'Q41', 
100, 0.0 );
+               $this->suggestionGenerator->generateSuggestionsByItem( 'Q41', 
100, 0.0, 'item' );
        }
 
 }
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php 
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index fa7101d..e7a5075 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -30,6 +30,7 @@
 use User;
 use Wikibase\Client\Hooks\BaseTemplateAfterPortletHandler;
 use Wikibase\Client\Hooks\BeforePageDisplayHandler;
+use Wikibase\Client\Hooks\ChangesPageWikibaseFilterHandler;
 use Wikibase\Client\Hooks\InfoActionHookHandler;
 use Wikibase\Client\Hooks\LanguageLinkBadgeDisplay;
 use Wikibase\Client\Hooks\SpecialWatchlistQueryHandler;
@@ -317,7 +318,10 @@
                array &$join_conds, array &$fields, $opts
        ) {
                $db = wfGetDB( DB_SLAVE );
-               $handler = new SpecialWatchlistQueryHandler( 
$GLOBALS['wgUser'], $db );
+               $settings = WikibaseClient::getDefaultInstance()->getSettings();
+               $showExternalChanges = $settings->getSetting( 
'showExternalRecentChanges' );
+
+               $handler = new SpecialWatchlistQueryHandler( 
$GLOBALS['wgUser'], $db, $showExternalChanges );
 
                $conds = $handler->addWikibaseConditions( 
$GLOBALS['wgRequest'], $conds, $opts );
 
@@ -704,15 +708,41 @@
         * @return bool
         */
        public static function onSpecialRecentChangesFilters( 
SpecialRecentChanges $special, array &$filters ) {
-               $context = $special->getContext();
+               $hookHandler = new ChangesPageWikibaseFilterHandler(
+                       $special->getContext(),
+                       
WikibaseClient::getDefaultInstance()->getSettings()->getSetting( 
'showExternalRecentChanges' ),
+                       'hidewikidata',
+                       'rcshowwikidata',
+                       'wikibase-rc-hide-wikidata'
+               );
 
-               if ( $context->getRequest()->getBool( 'enhanced', 
$context->getUser()->getOption( 'usenewrc' ) ) === false ) {
-                       $showWikidata = $special->getUser()->getOption( 
'rcshowwikidata' );
-                       $default = $showWikidata ? false : true;
-                       if ( $context->getUser()->getOption( 'usenewrc' ) === 0 
) {
-                               $filters['hidewikidata'] = array( 'msg' => 
'wikibase-rc-hide-wikidata', 'default' => $default );
-                       }
-               }
+               // @fixme remove wikidata-specific stuff!
+               $filters = $hookHandler->addFilterIfEnabled( $filters );
+
+               return true;
+       }
+
+       /**
+        * Modifies watchlist options to show a toggle for Wikibase changes
+        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/SpecialWatchlistFilters
+        *
+        * @since 0.4
+        *
+        * @param SpecialWatchlist $special
+        * @param array $filters
+        *
+        * @return bool
+        */
+       public static function onSpecialWatchlistFilters( $special, &$filters ) 
{
+               $hookHandler = new ChangesPageWikibaseFilterHandler(
+                       $special->getContext(),
+                       
WikibaseClient::getDefaultInstance()->getSettings()->getSetting( 
'showExternalRecentChanges' ),
+                       'hideWikibase',
+                       'wlshowwikibase',
+                       'wikibase-rc-hide-wikidata'
+               );
+
+               $filters = $hookHandler->addFilterIfEnabled( $filters );
 
                return true;
        }
@@ -792,31 +822,6 @@
                        }
                }
 
-               return true;
-       }
-
-       /**
-        * Modifies watchlist options to show a toggle for Wikibase changes
-        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/SpecialWatchlistFilters
-        *
-        * @since 0.4
-        *
-        * @param SpecialWatchlist $special
-        * @param array $filters
-        *
-        * @return bool
-        */
-       public static function onSpecialWatchlistFilters( $special, &$filters ) 
{
-               $user = $special->getContext()->getUser();
-
-               if ( $special->getContext()->getRequest()->getBool( 'enhanced',
-                       $user->getOption( 'usenewrc' ) ) === false ) {
-                       // Allow toggling wikibase changes in case the enhanced 
watchlist is disabled
-                       $filters['hideWikibase'] = array(
-                               'msg' => 'wikibase-rc-hide-wikidata',
-                               'default' => !$user->getBoolOption( 
'wlshowwikibase' )
-                       );
-               }
                return true;
        }
 
diff --git 
a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/SnaksFinder.php
 
b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/SnaksFinder.php
index 28d5dbc..bf28fb5 100644
--- 
a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/SnaksFinder.php
+++ 
b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/SnaksFinder.php
@@ -9,6 +9,7 @@
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\EntityIdParsingException;
 use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\Snak\Snak;
 use Wikibase\Lib\PropertyLabelNotResolvedException;
 use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\PropertyLabelResolver;
@@ -16,7 +17,7 @@
 /**
  * Find Snaks for claims in an entity, with EntityId, based on property label 
or property id.
  *
- * @fixme see what code can be shared with Lua handling code.
+ * TODO: see what code can be shared with Lua handling code.
  *
  * @since 0.5
  *
@@ -42,8 +43,9 @@
        /**
         * @param EntityId $entityId
         * @param string $propertyLabel
+        * @param string $languageCode
         *
-        * @fixme use SnakList instead of array of Snaks
+        * TODO: use SnakList instead of array of Snaks
         *
         * @return Snak[]
         */
diff --git 
a/extensions/Wikibase/client/includes/hooks/ChangesPageWikibaseFilterHandler.php
 
b/extensions/Wikibase/client/includes/hooks/ChangesPageWikibaseFilterHandler.php
new file mode 100644
index 0000000..8b8053b
--- /dev/null
+++ 
b/extensions/Wikibase/client/includes/hooks/ChangesPageWikibaseFilterHandler.php
@@ -0,0 +1,129 @@
+<?php
+
+namespace Wikibase\Client\Hooks;
+
+use ChangesListSpecialPage;
+use IContextSource;
+use User;
+
+/**
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < aude.w...@gmail.com >
+ */
+class ChangesPageWikibaseFilterHandler {
+
+       /**
+        * @var IContextSource
+        */
+       private $context;
+
+       /**
+        * @var boolean
+        */
+       private $showExternalChanges;
+
+       /**
+        * @var string
+        */
+       private $filterName;
+
+       /**
+        * @var string
+        */
+       private $optionName;
+
+       /**
+        * @var string
+        */
+       private $toggleMessageKey;
+
+       /**
+        * @param IContextSource $context
+        * @param boolean $showExternalChanges
+        * @param string $filterName - name for Wikibase toggle in FormOptions
+        * @param string $optionName - user option name for showing Wikibase 
edits by default
+        * @param string $toggleMessageKey
+        */
+       public function __construct(
+               IContextSource $context,
+               $showExternalChanges,
+               $filterName,
+               $optionName,
+               $toggleMessageKey
+       ) {
+               $this->context = $context;
+               $this->showExternalChanges = $showExternalChanges;
+               $this->filterName = $filterName;
+               $this->optionName = $optionName;
+               $this->toggleMessageKey = $toggleMessageKey;
+       }
+
+       /**
+        * @param array $filters
+        *
+        * @return array
+        */
+       public function addFilterIfEnabled( array $filters ) {
+               $user = $this->context->getUser();
+
+               if ( !$this->shouldAddFilter( $user ) ) {
+                       return $filters;
+               }
+
+               $toggleDefault = $this->showWikibaseEditsByDefault( $user, 
$this->optionName );
+               $filters = $this->addFilter( $filters, $toggleDefault );
+
+               return $filters;
+       }
+
+       /**
+        * @param User $user
+        *
+        * @return boolean
+        */
+       private function shouldAddFilter( User $user ) {
+               if ( $this->showExternalChanges && 
!$this->isEnhancedChangesEnabled( $user ) ) {
+                       return true;
+               }
+
+               return false;
+       }
+
+       /**
+        * @param array $filters
+        * @param boolean $toggleDefault
+        *
+        * @return array
+        */
+       private function addFilter( array $filters, $toggleDefault ) {
+               $filters["{$this->filterName}"] = array(
+                       'msg' => $this->toggleMessageKey,
+                       'default' => $toggleDefault
+               );
+
+               return $filters;
+       }
+
+       /**
+        * @param User $user
+        *
+        * @return boolean
+        */
+       private function showWikibaseEditsByDefault( User $user ) {
+               return !$user->getOption( $this->optionName );
+       }
+
+       /**
+        * @return boolean
+        */
+       private function isEnhancedChangesEnabled( User $user ) {
+               $enhancedChangesUserOption = $user->getOption( 'usenewrc' );
+
+               $isEnabled = $this->context->getRequest()->getBool( 'enhanced', 
$enhancedChangesUserOption );
+
+               return $isEnabled;
+       }
+
+}
diff --git 
a/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php 
b/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
index 5084641..734f672 100644
--- a/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
+++ b/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
@@ -26,6 +26,11 @@
        private $db;
 
        /**
+        * @var boolean
+        */
+       private $showExternalChanges;
+
+       /**
         * @var string
         */
        private $rcTypeLogCondition;
@@ -33,10 +38,12 @@
        /**
         * @param User $user
         * @param DatabaseBase $db
+        * @param boolean $showExternalChanges
         */
-       public function __construct( User $user, DatabaseBase $db ) {
+       public function __construct( User $user, DatabaseBase $db, 
$showExternalChanges ) {
                $this->user = $user;
                $this->db = $db;
+               $this->showExternalChanges = $showExternalChanges;
        }
 
        /**
@@ -49,17 +56,31 @@
        public function addWikibaseConditions( WebRequest $request, array 
$conds, $opts ) {
                // do not include wikibase changes for activated enhanced 
watchlist
                // since we do not support that format yet
-               if (
-                       $this->isEnhancedChangesEnabled( $request ) === true ||
-                       !$opts ||
-                       $opts->getValue( 'hideWikibase' ) === true
-               ) {
+               if ( $this->shouldHideWikibaseChanges( $request, $opts ) ) {
                        $newConds = $this->makeHideWikibaseConds( $conds );
                } else {
                        $newConds = $this->makeShowWikibaseConds( $conds );
                }
 
                return $newConds;
+       }
+
+       /**
+        * @param WebRequest $request
+        * @param FormOptions|null $opts
+        *
+        * @return boolean
+        */
+       private function shouldHideWikibaseChanges( WebRequest $request, $opts 
) {
+               if ( !$this->showExternalChanges || 
$this->isEnhancedChangesEnabled( $request ) === true ) {
+                       return true;
+               }
+
+               if ( !$opts || $opts->getValue( 'hideWikibase' ) === true ) {
+                       return true;
+               }
+
+               return false;
        }
 
        /**
@@ -78,7 +99,7 @@
         *
         * @return array
         */
-        private function makeShowWikibaseConds( array $conds ) {
+       private function makeShowWikibaseConds( array $conds ) {
                $newConds = array();
 
                foreach( $conds as $key => $cond ) {
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/ChangeHandlerTest.php 
b/extensions/Wikibase/client/tests/phpunit/includes/ChangeHandlerTest.php
index 1698a9e..8b601fa 100644
--- a/extensions/Wikibase/client/tests/phpunit/includes/ChangeHandlerTest.php
+++ b/extensions/Wikibase/client/tests/phpunit/includes/ChangeHandlerTest.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Test;
 
+use Diff\Differ\MapDiffer;
 use Site;
 use Title;
 use Wikibase\Change;
@@ -127,10 +128,10 @@
        }
 
        /**
-        * @param array                $values
-        * @param \Wikibase\EntityDiff $diff
+        * @param array $values
+        * @param EntityDiff|null $diff
         *
-        * @return \Wikibase\EntityChange
+        * @return EntityChange
         */
        public static function makeChange( array $values, EntityDiff $diff = 
null ) {
                if ( !isset( $values['info'] ) ) {
@@ -171,7 +172,7 @@
        }
 
        public static function makeDiff( $type, $before, $after ) {
-               $differ = new \Diff\MapDiffer( true );
+               $differ = new MapDiffer( true );
 
                $diffOps = $differ->doDiff( $before, $after );
                $diff = EntityDiff::newForType( $type, $diffOps );
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
index 991774e..a9c7774 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
@@ -27,6 +27,8 @@
        /**
         * @param SnaksFinder $snaksFinder
         * @param string $languageCode
+        *
+        * @return LanguageAwareRenderer
         */
        private function getRenderer( SnaksFinder $snaksFinder, $languageCode ) 
{
                $targetLanguage = Language::factory( $languageCode );
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/hooks/ChangesPageWikibaseFilterHandlerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/hooks/ChangesPageWikibaseFilterHandlerTest.php
new file mode 100644
index 0000000..99d0c12
--- /dev/null
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/hooks/ChangesPageWikibaseFilterHandlerTest.php
@@ -0,0 +1,120 @@
+<?php
+
+namespace Wikibase\Client\Tests\Hooks;
+
+use DerivativeContext;
+use FauxRequest;
+use FormOptions;
+use IContextSource;
+use RequestContext;
+use Wikibase\Client\Hooks\ChangesPageWikibaseFilterHandler;
+
+/**
+ * @covers Wikibase\Client\Hooks\ChangesPageWikibaseFilterHandler
+ *
+ * @group WikibaseClientHooks
+ * @group WikibaseClient
+ * @group Wikibase
+ */
+class ChangesPageWikibaseFilterHandlerTest extends \PHPUnit_Framework_TestCase 
{
+
+       /**
+        * @dataProvider filterNotAddedWhenUsingEnhancedChangesProvider
+        */
+       public function testFilterNotAddedWhenUsingEnhancedChanges(
+               $enhancedChangesDefault,
+               $useEnhancedChanges
+       ) {
+               $context = $this->getContext( $enhancedChangesDefault, 
$useEnhancedChanges, false );
+               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
true, 'foo', 'bar', 'foobar' );
+
+               $filters = array();
+               $filters = $hookHandler->addFilterIfEnabled( $filters );
+
+               $this->assertEquals( array(), $filters );
+       }
+
+       public function filterNotAddedWhenUsingEnhancedChangesProvider() {
+               return array(
+                       array( true, true, 'enhanced changes default preference 
and using' ),
+                       array( false, true, 'enhanced changes not default but 
using' )
+               );
+       }
+
+       public function testFilterAddedWhenNotUsingEnhancedChanges() {
+               $context = $this->getContext( false, false, true );
+               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
true, 'foo', 'bar', 'foobar' );
+
+               $filters = array();
+               $filters = $hookHandler->addFilterIfEnabled( $filters );
+
+               $expected = array(
+                       'foo' => array(
+                               'msg' => 'foobar',
+                               'default' => false
+                       )
+               );
+
+               $this->assertEquals( $expected, $filters );
+       }
+
+       public function 
testFilterAddedAndEnabledByDefault_WhenNotUsingEnhancedChanges() {
+               $context = $this->getContext( false, false, false );
+               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
true, 'foo', 'bar', 'foobar' );
+
+               $filters = array();
+               $filters = $hookHandler->addFilterIfEnabled( $filters );
+
+               $expected = array(
+                       'foo' => array(
+                               'msg' => 'foobar',
+                               'default' => true
+                       )
+               );
+
+               $this->assertEquals( $expected, $filters );
+       }
+
+       public function testFilterNotAddedWhenExternalRecentChangesDisabled() {
+               $context = $this->getContext( false, false, false );
+               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
false, 'foo', 'bar', 'foobar' );
+
+               $filters = array();
+               $filters = $hookHandler->addFilterIfEnabled( $filters );
+
+               $this->assertEquals( array(), $filters );
+       }
+
+       private function getContext( $enhancedChangesPref, $useEnhanced, 
$hideWikibaseEditsByDefault ) {
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $context->setUser( $this->getUser( $enhancedChangesPref, 
$hideWikibaseEditsByDefault ) );
+
+               $request = new FauxRequest( array( 'enhanced' => $useEnhanced ) 
);
+               $context->setRequest( $request );
+
+               return $context;
+       }
+
+       private function getUser( $enhancedChangesPref, 
$hideWikibaseEditsByDefault ) {
+               $user = $this->getMockBuilder( 'User' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $user->expects( $this->any() )
+                       ->method( 'getOption' )
+                       ->will( $this->returnCallback( function( $optionName ) 
use(
+                                       $enhancedChangesPref,
+                                       $hideWikibaseEditsByDefault
+                               ) {
+                                       if ( $optionName === 'usenewrc' ) {
+                                               return $enhancedChangesPref;
+                                       } else {
+                                               return 
$hideWikibaseEditsByDefault;
+                                       }
+                               }
+                       ) );
+
+               return $user;
+       }
+
+}
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
index 4e12df1..ea390a4 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
@@ -25,6 +25,7 @@
        public function testAddWikibaseConditions(
                array $expected,
                array $conds,
+               $showExternalChanges,
                $enhanced,
                $hideWikibase,
                $message
@@ -32,7 +33,7 @@
                $user = $this->getUser( $enhanced );
 
                $database = $this->getDatabase();
-               $hookHandler = new SpecialWatchlistQueryHandler( $user, 
$database );
+               $hookHandler = new SpecialWatchlistQueryHandler( $user, 
$database, $showExternalChanges );
 
                $opts = new FormOptions();
                $opts->add( 'hideWikibase', $hideWikibase );
@@ -49,10 +50,11 @@
                $expectedShowConds = array( "(rc_this_oldid=page_latest) OR 
rc_type IN (3,5)" );
 
                return array(
-                       array( $expectedHideConds, $conds, true, true, 
'enhanced, hide wikibase opt' ),
-                       array( $expectedHideConds, $conds, true, false, 
'enhanced, no hide wikibase opt' ),
-                       array( $expectedHideConds, $conds, false, true, 'not 
enhanced, hide wikibase opt' ),
-                       array( $expectedShowConds, $conds, false, false, 'not 
enhanced, show wikibase opt' )
+                       array( $expectedHideConds, $conds, true, true, true, 
'enhanced, hide wikibase opt' ),
+                       array( $expectedHideConds, $conds, true, true, false, 
'enhanced, no hide wikibase opt' ),
+                       array( $expectedHideConds, $conds, true, false, true, 
'not enhanced, hide wikibase opt' ),
+                       array( $expectedShowConds, $conds, true, false, false, 
'not enhanced, show wikibase opt' ),
+                       array( $expectedHideConds, $conds, false, false, false, 
'changes integration not enabled' )
                );
        }
 
diff --git a/extensions/Wikibase/lib/WikibaseLib.php 
b/extensions/Wikibase/lib/WikibaseLib.php
index afe7ad9..e969d61 100644
--- a/extensions/Wikibase/lib/WikibaseLib.php
+++ b/extensions/Wikibase/lib/WikibaseLib.php
@@ -52,6 +52,22 @@
        include_once( __DIR__ . '/../vendor/autoload.php' );
 }
 
+// TODO: Needed for deserializing Snaks in DataModel 0.x. Remove with 
DataModel 1.x!
+if( !array_key_exists( 'evilDataValueMap', $GLOBALS ) ) {
+       $GLOBALS['evilDataValueMap'] = array();
+}
+$GLOBALS['evilDataValueMap'] = array_merge(
+       $GLOBALS['evilDataValueMap'],
+        array(
+               'globecoordinate' => 'DataValues\GlobeCoordinateValue',
+               'monolingualtext' => 'DataValues\MonolingualTextValue',
+               'multilingualtext' => 'DataValues\MultilingualTextValue',
+               'quantity' => 'DataValues\QuantityValue',
+               'time' => 'DataValues\TimeValue',
+               'wikibase-entityid' => 
'Wikibase\DataModel\Entity\EntityIdValue',
+        )
+);
+
 call_user_func( function() {
        global $wgExtensionCredits, $wgJobClasses, $wgHooks, 
$wgResourceModules, $wgMessagesDirs;
 
diff --git a/extensions/Wikibase/lib/includes/parsers/DateTimeParser.php 
b/extensions/Wikibase/lib/includes/parsers/DateTimeParser.php
index bdcfb4d..faacb6a 100644
--- a/extensions/Wikibase/lib/includes/parsers/DateTimeParser.php
+++ b/extensions/Wikibase/lib/includes/parsers/DateTimeParser.php
@@ -37,7 +37,9 @@
 
        public function __construct( EraParser $eraParser, ParserOptions 
$options = null ) {
                parent::__construct( $options );
-               $this->monthUnlocalizer = new MonthNameUnlocalizer();
+
+               $languageCode = $options->getOption( ValueParser::OPT_LANG );
+               $this->monthUnlocalizer = new MonthNameUnlocalizer( 
$languageCode );
                $this->eraParser = $eraParser;
        }
 
@@ -64,10 +66,7 @@
 
                        $value = $this->getValueWithFixedYearLengths(
                                $this->getValueWithFixedSeparators(
-                                       $this->monthUnlocalizer->unlocalize(
-                                               trim( $value ),
-                                               $options->getOption( 
ValueParser::OPT_LANG )
-                                       )
+                                       $this->monthUnlocalizer->unlocalize( 
trim( $value ) )
                                )
                        );
 
diff --git a/extensions/Wikibase/lib/includes/parsers/MonolingualTextParser.php 
b/extensions/Wikibase/lib/includes/parsers/MonolingualTextParser.php
index 7f74188..22a1ab4 100644
--- a/extensions/Wikibase/lib/includes/parsers/MonolingualTextParser.php
+++ b/extensions/Wikibase/lib/includes/parsers/MonolingualTextParser.php
@@ -4,6 +4,7 @@
 
 use DataValues\IllegalValueException;
 use DataValues\MonolingualTextValue;
+use ValueParsers\ParseException;
 use ValueParsers\StringValueParser;
 
 /**
@@ -26,17 +27,21 @@
         *
         * @param string $value
         *
-        * @throws IllegalValueException if the "valuelang" option is missing 
or empty
+        * @throws ParseException if the "valuelang" option is missing or empty
         * @return MonolingualTextValue
         */
        protected function stringParse( $value ) {
                if ( !$this->getOptions()->hasOption( 'valuelang' ) ) {
-                       throw new IllegalValueException( 'Can not construct a 
MonolingualTextValue without a language code.' );
+                       throw new ParseException( 'Cannot construct a 
MonolingualTextValue without a language code.' );
                }
 
                $lang = $this->getOptions()->getOption( 'valuelang' );
 
-               return new MonolingualTextValue( trim( $lang ), trim( $value ) 
);
+               try {
+                       return new MonolingualTextValue( trim( $lang ), trim( 
$value ) );
+               } catch ( IllegalValueException $ex ) {
+                       throw new ParseException( $ex->getMessage() );
+               }
        }
 
 }
diff --git a/extensions/Wikibase/lib/includes/parsers/MonthNameUnlocalizer.php 
b/extensions/Wikibase/lib/includes/parsers/MonthNameUnlocalizer.php
index 6c0e216..962635b 100644
--- a/extensions/Wikibase/lib/includes/parsers/MonthNameUnlocalizer.php
+++ b/extensions/Wikibase/lib/includes/parsers/MonthNameUnlocalizer.php
@@ -11,30 +11,29 @@
  *
  * @licence GNU GPL v2+
  * @author Adam Shorland
+ * @author Thiemo Mättig
  *
  * @todo move me to DataValues-time
  */
 class MonthNameUnlocalizer {
 
+       const BASE_LANGUAGE_CODE = 'en';
+
        /**
-        * @see NumberUnlocalizer::unlocalizeNumber
-        *
-        * @param string $date Localized date string.
-        * @param string $languageCode
-        *
-        * @return string
+        * @var string|null Language code of the source strings or null if it's 
the base language.
         */
-       public function unlocalize( $date, $languageCode ) {
-               if ( $languageCode === 'en' ) {
-                       return $date;
+       private $languageCode = null;
+
+       private $baseLanguage = null;
+       private $language = null;
+
+       /**
+        * @param string $languageCode
+        */
+       public function __construct( $languageCode ) {
+               if ( $languageCode !== self::BASE_LANGUAGE_CODE ) {
+                       $this->languageCode = $languageCode;
                }
-
-               $language = Language::factory( $languageCode );
-               $en = Language::factory( 'en' );
-
-               $date = $this->unlocalizeMonthName( $language, $en, $date );
-
-               return $date;
        }
 
        /**
@@ -42,29 +41,14 @@
         * Tries to avoid doing multiple replacements and returns the localized 
original if in doubt.
         * Takes full month names, genitive names and abbreviations into 
account.
         *
-        * @param Language $from
-        * @param Language $to
+        * @see NumberUnlocalizer::unlocalizeNumber
+        *
         * @param string $date Localized date string.
         *
-        * @return string
+        * @return string Unlocalized date string.
         */
-       private function unlocalizeMonthName( Language $from, Language $to, 
$date ) {
-               $replacements = array();
-
-               for ( $i = 1; $i <= 12; $i++ ) {
-                       $replace = $to->getMonthName( $i );
-
-                       $replacements[$from->getMonthName( $i )] = $replace;
-                       $replacements[$from->getMonthNameGen( $i )] = $replace;
-                       $replacements[$from->getMonthAbbreviation( $i )] = 
$replace;
-               }
-
-               // Order search strings from longest to shortest
-               uksort( $replacements, function( $a, $b ) {
-                       return strlen( $b ) - strlen( $a );
-               } );
-
-               foreach ( $replacements as $search => $replace ) {
+       public function unlocalize( $date ) {
+               foreach ( $this->getReplacements() as $search => $replace ) {
                        $unlocalized = str_replace( $search, $replace, $date, 
$count );
 
                        // Nothing happened, try the next.
@@ -77,8 +61,8 @@
                                break;
                        }
 
-                       // Do not mess with already unlocalized month names, 
e.g. "Juli" should not become
-                       // "Julyi" when replacing "Jul" with "July". But 
shortening "Julyus" to "July" is ok.
+                       // Do not mess with already unlocalized month names, 
e.g. "July" should not become
+                       // "Julyy" when replacing "Jul" with "July". But 
shortening "Julyus" to "July" is ok.
                        if ( strpos( $date, $replace ) !== false && strlen( 
$replace ) >= strlen( $search ) ) {
                                break;
                        }
@@ -89,4 +73,47 @@
                return $date;
        }
 
+       private function getReplacements() {
+               $replacements = array();
+               $language = $this->getLanguage();
+
+               if ( $language !== null ) {
+                       $baseLanguage = $this->getBaseLanguage();
+
+                       for ( $i = 1; $i <= 12; $i++ ) {
+                               $replace = $baseLanguage->getMonthName( $i );
+
+                               $replacements[$language->getMonthName( $i )] = 
$replace;
+                               $replacements[$language->getMonthNameGen( $i )] 
= $replace;
+                               $replacements[$language->getMonthAbbreviation( 
$i )] = $replace;
+                       }
+
+                       // Order search strings from longest to shortest
+                       uksort( $replacements, function( $a, $b ) {
+                               return strlen( $b ) - strlen( $a );
+                       } );
+               }
+
+               return $replacements;
+       }
+
+       private function getBaseLanguage() {
+               if ( $this->baseLanguage === null ) {
+                       $this->baseLanguage = Language::factory( 
self::BASE_LANGUAGE_CODE );
+               }
+
+               return $this->baseLanguage;
+       }
+
+       /**
+        * @return Language|null
+        */
+       private function getLanguage() {
+               if ( $this->language === null && $this->languageCode !== null ) 
{
+                       $this->language = Language::factory( 
$this->languageCode );
+               }
+
+               return $this->language;
+       }
+
 }
diff --git 
a/extensions/Wikibase/lib/includes/store/GenericEntityInfoBuilder.php 
b/extensions/Wikibase/lib/includes/store/GenericEntityInfoBuilder.php
index 76ad792..76d67cb 100644
--- a/extensions/Wikibase/lib/includes/store/GenericEntityInfoBuilder.php
+++ b/extensions/Wikibase/lib/includes/store/GenericEntityInfoBuilder.php
@@ -133,7 +133,6 @@
         */
        private function applyRedirect( $idString, EntityId $targetId) {
                $redirectedId = $this->parseId( $idString );
-               $type = $redirectedId->getEntityType();
 
                $targetKey = $targetId->getSerialization();
 
diff --git a/extensions/Wikibase/lib/includes/store/TermIndex.php 
b/extensions/Wikibase/lib/includes/store/TermIndex.php
index 3b838c2..7f4ea0d 100644
--- a/extensions/Wikibase/lib/includes/store/TermIndex.php
+++ b/extensions/Wikibase/lib/includes/store/TermIndex.php
@@ -9,8 +9,6 @@
  *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroended...@gmail.com >
- *
- * @todo: rename to TermIndex
  */
 interface TermIndex extends TermCombinationMatchFinder {
 
diff --git 
a/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php 
b/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php
index 98ef85d..bfad64f 100644
--- a/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php
+++ b/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilder.php
@@ -87,7 +87,7 @@
         * @var array[] map of entity types to maps of id-strings to numeric 
ids:
         *      type => id-string => id-int
         */
-       private $numericIdsByType = null;
+       private $numericIdsByType = array();
 
        /**
         * Maps of id strings to page info records, grouped by entity type.
@@ -560,7 +560,6 @@
                                ? 'epp_redirect_target'
                                : 'NULL AS epp_redirect_target'
                );
-
 
                $res = $dbw->select(
                        $this->entityPerPageTable,
diff --git 
a/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilderFactory.php 
b/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilderFactory.php
index c04fa7a..c052469 100644
--- a/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilderFactory.php
+++ b/extensions/Wikibase/lib/includes/store/sql/SqlEntityInfoBuilderFactory.php
@@ -6,7 +6,6 @@
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\Lib\Store\EntityInfoBuilder;
 use Wikibase\Lib\Store\EntityInfoBuilderFactory;
-use Wikibase\Lib\Store\EntityRevisionLookup;
 
 /**
  * A factory for SqlEntityInfoBuilder instances.
@@ -21,9 +20,9 @@
 class SqlEntityInfoBuilderFactory implements EntityInfoBuilderFactory {
 
        /**
-        * @var EntityRevisionLookup
+        * @var bool
         */
-       private $entityRevisionLookup;
+       private $useRedirectTargetColumn;
 
        /**
         * @var bool
@@ -31,18 +30,18 @@
        private $wiki;
 
        /**
-        * @param EntityRevisionLookup $entityRevisionLookup
+        * @param bool $useRedirectTargetColumn
         * @param string|bool $wiki The wiki's database to connect to.
         *        Must be a value LBFactory understands. Defaults to false, 
which is the local wiki.
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( EntityRevisionLookup 
$entityRevisionLookup, $wiki = false ) {
+       public function __construct( $useRedirectTargetColumn = true, $wiki = 
false ) {
                if ( !is_string( $wiki ) && $wiki !== false ) {
                        throw new InvalidArgumentException( '$wiki must be a 
string or false.' );
                }
 
-               $this->entityRevisionLookup = $entityRevisionLookup;
+               $this->useRedirectTargetColumn = $useRedirectTargetColumn;
                $this->wiki = $wiki;
        }
 
@@ -54,6 +53,7 @@
         * @return EntityInfoBuilder
         */
        public function newEntityInfoBuilder( array $ids ) {
-               return new SqlEntityInfoBuilder( $ids, 
$this->entityRevisionLookup, $this->wiki );
+               return new SqlEntityInfoBuilder( $ids, 
$this->useRedirectTargetColumn, $this->wiki );
        }
+
 }
diff --git a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php 
b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
index 7f0bf78..7973bd3 100644
--- a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
+++ b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
@@ -76,7 +76,7 @@
        }
 
        /**
-        * @see TermCache::saveTermsOfEntity
+        * @see TermIndex::saveTermsOfEntity
         *
         * @since 0.1
         *
@@ -317,7 +317,7 @@
        }
 
        /**
-        * @see TermCache::deleteTermsOfEntity
+        * @see TermIndex::deleteTermsOfEntity
         *
         * @since 0.5
         *
@@ -349,7 +349,7 @@
 
        /**
         * Returns the terms stored for the given entity.
-        * @see TermCache::getTermsOfEntity
+        * @see TermIndex::getTermsOfEntity
         *
         * @param EntityId $id
         *
@@ -390,7 +390,7 @@
        /**
         * Returns the terms stored for the given entities.
         *
-        * @see TermCache::getTermsOfEntities
+        * @see TermIndex::getTermsOfEntities
         *
         * @param EntityId[] $ids
         * @param string $entityType
@@ -475,7 +475,7 @@
        }
 
        /**
-        * @see TermCache::termExists
+        * @see TermIndex::termExists
         *
         * @since 0.1
         *
@@ -524,7 +524,7 @@
        }
 
        /**
-        * @see TermCache::getEntityIdsForLabel
+        * @see TermIndex::getEntityIdsForLabel
         *
         * @since 0.1
         *
@@ -585,7 +585,7 @@
        }
 
        /**
-        * @see TermCache::getMatchingTerms
+        * @see TermIndex::getMatchingTerms
         *
         * @since 0.2
         *
@@ -634,7 +634,7 @@
        }
 
        /**
-        * @see TermCache::getMatchingIDs
+        * @see TermIndex::getMatchingIDs
         *
         * @since 0.4
         *
@@ -866,7 +866,7 @@
        }
 
        /**
-        * @see TermCache::clear
+        * @see TermIndex::clear
         *
         * @since 0.2
         *
@@ -880,7 +880,7 @@
        }
 
        /**
-        * @see TermCache::getMatchingTermCombination
+        * @see TermIndex::getMatchingTermCombination
         *
         * Note: the interface specifies capability for only a single join, 
which in this implementation
         * is enforced by the $joinCount var. The code itself however could 
handle multiple joins.
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/parsers/MonolingualTextParserTest.php 
b/extensions/Wikibase/lib/tests/phpunit/parsers/MonolingualTextParserTest.php
index 151f65c..30d4310 100644
--- 
a/extensions/Wikibase/lib/tests/phpunit/parsers/MonolingualTextParserTest.php
+++ 
b/extensions/Wikibase/lib/tests/phpunit/parsers/MonolingualTextParserTest.php
@@ -43,7 +43,7 @@
        }
 
        /**
-        * @expectedException \DataValues\IllegalValueException
+        * @expectedException \ValueParsers\ParseException
         */
        public function testParse_missingLanguageOption() {
                $parser = new MonolingualTextParser();
@@ -59,7 +59,7 @@
 
        /**
         * @dataProvider invalidLanguageCodeProvider
-        * @expectedException \DataValues\IllegalValueException
+        * @expectedException \ValueParsers\ParseException
         */
        public function testParse_invalidLanguageOption( $languageCode ) {
                $options = new ParserOptions( array( 'valuelang' => 
$languageCode ) );
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/parsers/MonthNameUnlocalizerTest.php 
b/extensions/Wikibase/lib/tests/phpunit/parsers/MonthNameUnlocalizerTest.php
index 058696a..9e6286d 100644
--- a/extensions/Wikibase/lib/tests/phpunit/parsers/MonthNameUnlocalizerTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/parsers/MonthNameUnlocalizerTest.php
@@ -102,8 +102,8 @@
         * @param string $expected
         */
        public function testUnlocalize( $date, $languageCode, $expected ) {
-               $unlocalizer = new MonthNameUnlocalizer();
-               $actual = $unlocalizer->unlocalize( $date, $languageCode );
+               $unlocalizer = new MonthNameUnlocalizer( $languageCode );
+               $actual = $unlocalizer->unlocalize( $date );
 
                $this->assertEquals( $expected, $actual );
        }
@@ -131,10 +131,9 @@
         * @param string $expected
         */
        public function testUnlocalize_withLanguageChains( $date, array 
$languageCodes, $expected ) {
-               $unlocalizer = new MonthNameUnlocalizer();
-
                foreach ( $languageCodes as $languageCode ) {
-                       $date = $unlocalizer->unlocalize( $date, $languageCode 
);
+                       $unlocalizer = new MonthNameUnlocalizer( $languageCode 
);
+                       $date = $unlocalizer->unlocalize( $date );
                }
 
                $this->assertEquals( $expected, $date );
diff --git a/extensions/Wikibase/repo/includes/EntityView.php 
b/extensions/Wikibase/repo/includes/EntityView.php
index 14509a4..d048b95 100644
--- a/extensions/Wikibase/repo/includes/EntityView.php
+++ b/extensions/Wikibase/repo/includes/EntityView.php
@@ -12,7 +12,6 @@
 use Wikibase\Lib\Serializers\SerializationOptions;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Lib\Store\EntityInfoBuilderFactory;
-use Wikibase\Repo\View\FingerprintView;
 use Wikibase\Repo\View\SectionEditLinkGenerator;
 use Wikibase\Repo\View\SnakHtmlGenerator;
 use Wikibase\Repo\View\TextInjector;
@@ -30,7 +29,6 @@
  * @author H. Snater < mediawiki at snater.com >
  * @author Daniel Werner
  * @author Daniel Kinzler
- * @author Bene* < benestar.wikime...@gmail.com >
  */
 abstract class EntityView extends ContextSource {
 
@@ -232,7 +230,12 @@
 
                $html = '';
 
-               $html .= $this->getHtmlForFingerprint( $entity, $editable );
+               $html .= $this->getHtmlForLabel( $entity, $editable );
+               $html .= $this->getHtmlForDescription( $entity, $editable );
+
+               $html .= wfTemplate( 'wb-entity-header-separator' );
+
+               $html .= $this->getHtmlForAliases( $entity, $editable );
                $html .= $this->getHtmlForToc();
                $html .= $this->getHtmlForTermBox( $entityRevision, $editable );
                $html .= $this->getHtmlForClaims( $entity, $editable );
@@ -242,19 +245,7 @@
        }
 
        /**
-        * Builds and returns the HTML for the entity's fingerprint.
-        *
-        * @param Entity $entity
-        * @param bool $editable
-        * @return string
-        */
-       protected function getHtmlForFingerprint( Entity $entity, $editable = 
true ) {
-               $fingerprintView = new FingerprintView( 
$this->sectionEditLinkGenerator, $this->getLanguage()->getCode() );
-               return $fingerprintView->getHtml( $entity->getFingerprint(), 
$entity->getId(), $editable );
-       }
-
-       /**
-        * Builds and returns the HTML for the toc.
+        * Builds and returns the html for the toc.
         *
         * @return string
         */
@@ -395,6 +386,128 @@
        }
 
        /**
+        * Builds and returns the HTML representing a WikibaseEntity's label.
+        *
+        * @since 0.1
+        *
+        * @param Entity $entity the entity to render
+        * @param bool $editable whether editing is allowed (enabled edit links)
+        * @return string
+        */
+       public function getHtmlForLabel( Entity $entity, $editable = true ) {
+               wfProfileIn( __METHOD__ );
+
+               $languageCode = $this->getLanguage()->getCode();
+               $label = $entity->getLabel( $languageCode );
+               $entityId = $entity->getId();
+               $idString = 'new';
+               $supplement = '';
+
+               if ( $entityId !== null ) {
+                       $idString = $entityId->getSerialization();
+                       $supplement .= wfTemplate( 
'wb-property-value-supplement', wfMessage( 'parentheses', $idString ) );
+                       if ( $editable ) {
+                               $supplement .= $this->getHtmlForEditSection( 
'SetLabel', array( $idString, $languageCode ) );
+                       }
+               }
+
+               $html = wfTemplate( 'wb-label',
+                       $idString,
+                       wfTemplate( 'wb-property',
+                               $label === false ? 'wb-value-empty' : '',
+                               htmlspecialchars( $label === false ? wfMessage( 
'wikibase-label-empty' )->text() : $label ),
+                               $supplement
+                       )
+               );
+
+               wfProfileOut( __METHOD__ );
+               return $html;
+       }
+
+       /**
+        * Builds and returns the HTML representing a WikibaseEntity's 
description.
+        *
+        * @since 0.1
+        *
+        * @param Entity $entity the entity to render
+        * @param bool $editable whether editing is allowed (enabled edit links)
+        * @return string
+        */
+       public function getHtmlForDescription( Entity $entity, $editable = true 
) {
+               wfProfileIn( __METHOD__ );
+
+               $languageCode = $this->getLanguage()->getCode();
+               $description = $entity->getDescription( $languageCode );
+               $entityId = $entity->getId();
+               $editSection = '';
+
+               if ( $entityId !== null && $editable ) {
+                       $idString = $entityId->getSerialization();
+                       $editSection .= $this->getHtmlForEditSection( 
'SetDescription', array( $idString, $languageCode ) );
+               }
+
+               $html = wfTemplate( 'wb-description',
+                       wfTemplate( 'wb-property',
+                               $description === false ? 'wb-value-empty' : '',
+                               htmlspecialchars( $description === false ? 
wfMessage( 'wikibase-description-empty' )->text() : $description ),
+                               $editSection
+                       )
+               );
+
+               wfProfileOut( __METHOD__ );
+               return $html;
+       }
+
+       /**
+        * Builds and returns the HTML representing a WikibaseEntity's aliases.
+        *
+        * @since 0.1
+        *
+        * @param Entity $entity the entity to render
+        * @param bool $editable whether editing is allowed (enabled edit links)
+        * @return string
+        */
+       public function getHtmlForAliases( Entity $entity, $editable = true ) {
+               wfProfileIn( __METHOD__ );
+
+               $languageCode = $this->getLanguage()->getCode();
+               $aliases = $entity->getAliases( $languageCode );
+               $entityId = $entity->getId();
+               $editSection = '';
+
+               if ( $entityId !== null && $editable ) {
+                       $idString = $entityId->getSerialization();
+                       $action = empty( $aliases ) ? 'add' : 'edit';
+                       $editSection = $this->getHtmlForEditSection( 
'SetAliases', array( $idString, $languageCode ), $action );
+               }
+
+               if ( empty( $aliases ) ) {
+                       $html = wfTemplate( 'wb-aliases-wrapper',
+                               'wb-aliases-empty',
+                               'wb-value-empty',
+                               wfMessage( 'wikibase-aliases-empty' )->text(),
+                               $editSection
+                       );
+               } else {
+                       $aliasesHtml = '';
+                       foreach ( $aliases as $alias ) {
+                               $aliasesHtml .= wfTemplate( 'wb-alias', 
htmlspecialchars( $alias ) );
+                       }
+                       $aliasList = wfTemplate( 'wb-aliases', $aliasesHtml );
+
+                       $html = wfTemplate( 'wb-aliases-wrapper',
+                               '',
+                               '',
+                               wfMessage( 'wikibase-aliases-label' )->text(),
+                               $aliasList . $editSection
+                       );
+               }
+
+               wfProfileOut( __METHOD__ );
+               return $html;
+       }
+
+       /**
         * Returns the HTML for the heading of the claims section
         *
         * @since 0.5
diff --git 
a/extensions/Wikibase/repo/includes/LinkedData/EntityDataRequestHandler.php 
b/extensions/Wikibase/repo/includes/LinkedData/EntityDataRequestHandler.php
index a3812d9..e443d5f 100644
--- a/extensions/Wikibase/repo/includes/LinkedData/EntityDataRequestHandler.php
+++ b/extensions/Wikibase/repo/includes/LinkedData/EntityDataRequestHandler.php
@@ -7,11 +7,11 @@
 use SquidUpdate;
 use WebRequest;
 use WebResponse;
-use Wikibase\BadRevisionException;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\EntityIdParser;
 use Wikibase\DataModel\Entity\EntityIdParsingException;
 use Wikibase\EntityRevision;
+use Wikibase\Lib\Store\BadRevisionException;
 use Wikibase\Lib\Store\EntityRedirectResolvingDecorator;
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\EntityTitleLookup;
diff --git a/extensions/Wikibase/repo/includes/PropertyView.php 
b/extensions/Wikibase/repo/includes/PropertyView.php
index 8ceb012..1060bed 100644
--- a/extensions/Wikibase/repo/includes/PropertyView.php
+++ b/extensions/Wikibase/repo/includes/PropertyView.php
@@ -39,7 +39,12 @@
 
                $html = '';
 
-               $html .= $this->getHtmlForFingerprint( $property, $editable );
+               $html .= $this->getHtmlForLabel( $property, $editable );
+               $html .= $this->getHtmlForDescription( $property, $editable );
+
+               $html .= wfTemplate( 'wb-entity-header-separator' );
+
+               $html .= $this->getHtmlForAliases( $property, $editable );
                $html .= $this->getHtmlForToc();
                $html .= $this->getHtmlForTermBox( $entityRevision, $editable );
 
diff --git a/extensions/Wikibase/repo/includes/View/FingerprintView.php 
b/extensions/Wikibase/repo/includes/View/FingerprintView.php
deleted file mode 100644
index 446e002..0000000
--- a/extensions/Wikibase/repo/includes/View/FingerprintView.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-namespace Wikibase\Repo\View;
-
-use Message;
-use Wikibase\DataModel\Entity\EntityId;
-use Wikibase\DataModel\Term\Fingerprint;
-use Wikibase\DataModel\Term\AliasGroupList;
-use Wikibase\DataModel\Term\TermList;
-
-/**
- * Generates HTML to display the fingerprint of an entity
- * in the user's current language.
- *
- * @since 0.5
- * @licence GNU GPL v2+
- *
- * @author Bene* < benestar.wikime...@gmail.com >
- */
-class FingerprintView {
-
-       /**
-        * @var SectionEditLinkGenerator
-        */
-       private $sectionEditLinkGenerator;
-
-       /**
-        * @var string
-        */
-       private $languageCode;
-
-       /**
-        * @param SectionEditLinkGenerator $sectionEditLinkGenerator
-        * @param string $languageCode
-        */
-       public function __construct( SectionEditLinkGenerator 
$sectionEditLinkGenerator, $languageCode ) {
-               $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
-               $this->languageCode = $languageCode;
-       }
-
-       /**
-        * Builds and returns the HTML representing a fingerprint.
-        *
-        * @since 0.5
-        *
-        * @param Fingerprint $fingerprint the fingerprint to render
-        * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
-        * @return string
-        */
-       public function getHtml( Fingerprint $fingerprint, EntityId $entityId = 
null, $editable = true ) {
-               $labels = $fingerprint->getLabels();
-               $descriptions = $fingerprint->getDescriptions();
-               $aliasGroups = $fingerprint->getAliasGroups();
-
-               $html = '';
-
-               if ( $entityId !== null ) {
-                       $serializedId = $entityId->getSerialization();
-                       $html .= wfTemplate( 'wb-property-value-supplement', 
wfMessage( 'parentheses', $serializedId ) );
-               }
-
-               $html .= $this->getHtmlForLabel( $labels, $entityId, $editable 
);
-               $html .= $this->getHtmlForDescription( $descriptions, 
$entityId, $editable );
-               $html .= wfTemplate( 'wb-entity-header-separator' );
-               $html .= $this->getHtmlForAliases( $aliasGroups, $entityId, 
$editable );
-
-               return $html;
-       }
-
-       /**
-        * Builds and returns the HTML for the edit section.
-        *
-        * @param Message $message
-        * @param string $specialPageName
-        * @param EntityId|null $entityId
-        * @param bool $editable
-        * @return string
-        */
-       private function getHtmlForEditSection( Message $message, 
$specialPageName, EntityId $entityId = null, $editable = true ) {
-               if ( $entityId !== null && $editable ) {
-                       return 
$this->sectionEditLinkGenerator->getHtmlForEditSection(
-                               $specialPageName,
-                               array( $entityId->getSerialization(), 
$this->languageCode ),
-                               $message
-                       );
-               } else {
-                       return '';
-               }
-       }
-
-       /**
-        * Builds and returns the HTML representing a label.
-        *
-        * @param TermList $labels the list of labels to render
-        * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
-        * @return string
-        */
-       private function getHtmlForLabel( TermList $labels, EntityId $entityId 
= null, $editable = true ) {
-               $labelExists = $labels->hasTermForLanguage( $this->languageCode 
);
-               $editSection = $this->getHtmlForEditSection( wfMessage( 
'wikibase-edit' ), 'SetLabel', $entityId, $editable );
-               $idString = $entityId === null ? 'new' : 
$entityId->getSerialization();
-
-               if ( $labelExists ) {
-                       return $this->getLabelWrapperHTML(
-                               $idString,
-                               $labels->getByLanguage( $this->languageCode 
)->getText(),
-                               $editSection
-                       );
-               } else {
-                       return $this->getLabelWrapperHTML(
-                               $idString,
-                               wfMessage( 'wikibase-label-empty' )->text(),
-                               $editSection
-                       );
-               }
-       }
-
-       private function getLabelWrapperHTML( $idString, $content, $editSection 
) {
-               return wfTemplate( 'wb-label',
-                       $idString,
-                       wfTemplate( 'wb-property',
-                               '',
-                               htmlspecialchars( $content ),
-                               $editSection
-                       )
-               );
-       }
-
-       /**
-        * Builds and returns the HTML representing a description.
-        *
-        * @param TermList $descriptions the list of descriptions to render
-        * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
-        * @return string
-        */
-       private function getHtmlForDescription( TermList $descriptions, 
EntityId $entityId = null, $editable = true ) {
-               $descriptionExists = $descriptions->hasTermForLanguage( 
$this->languageCode );
-               $editSection = $this->getHtmlForEditSection( wfMessage( 
'wikibase-edit' ), 'SetDescription', $entityId, $editable );
-
-               if ( $descriptionExists ) {
-                       return $this->getDescriptionWrapperHTML(
-                               $descriptions->getByLanguage( 
$this->languageCode )->getText(),
-                               $editSection
-                       );
-               } else {
-                       return $this->getDescriptionWrapperHTML(
-                               wfMessage( 'wikibase-label-empty' )->text(),
-                               $editSection
-                       );
-               }
-       }
-
-       private function getDescriptionWrapperHTML( $content, $editSection ) {
-               return wfTemplate( 'wb-description',
-                       wfTemplate( 'wb-property',
-                               'wb-value-empty',
-                               htmlspecialchars( $content ),
-                               $editSection
-                       )
-               );
-       }
-
-       /**
-        * Builds and returns the HTML representing aliases.
-        *
-        * @param AliasGroupList $aliasGroups the list of alias groups to render
-        * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
-        * @return string
-        */
-       private function getHtmlForAliases( AliasGroupList $aliasGroups, 
EntityId $entityId = null, $editable = true ) {
-               $aliasesExist = $aliasGroups->hasGroupForLanguage( 
$this->languageCode );
-               $message = wfMessage( 'wikibase-' . $aliasesExist ? 'edit' : 
'add' );
-               $editSection = $this->getHtmlForEditSection( $message, 
'SetAliases', $entityId, $editable );
-
-               if ( $aliasesExist ) {
-                       $aliasList = $this->getAliasListHTML( 
$aliasGroups->getByLanguage( $this->languageCode )->getAliases() );
-
-                       return wfTemplate( 'wb-aliases-wrapper',
-                               '',
-                               '',
-                               wfMessage( 'wikibase-aliases-label' )->text(),
-                               $aliasList . $editSection
-                       );
-               } else {
-                       return wfTemplate( 'wb-aliases-wrapper',
-                               'wb-aliases-empty',
-                               'wb-value-empty',
-                               wfMessage( 'wikibase-aliases-empty' )->text(),
-                               $editSection
-                       );
-               }
-       }
-
-       private function getAliasListHTML( array $aliases ) {
-               $aliasesHtml = '';
-               foreach ( $aliases as $alias ) {
-                       $aliasesHtml .= wfTemplate( 'wb-alias', 
htmlspecialchars( $alias ) );
-               }
-               return wfTemplate( 'wb-aliases', $aliasesHtml );
-       }
-
-}
diff --git a/extensions/Wikibase/repo/includes/View/TermBoxView.php 
b/extensions/Wikibase/repo/includes/View/TermBoxView.php
index 1f30162..bd3f1d4 100644
--- a/extensions/Wikibase/repo/includes/View/TermBoxView.php
+++ b/extensions/Wikibase/repo/includes/View/TermBoxView.php
@@ -4,6 +4,7 @@
 
 use Language;
 use Message;
+use SpecialPage;
 use Title;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\Utils;
diff --git a/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php 
b/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
index 6d2e0a1..bbace38 100644
--- a/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
+++ b/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
@@ -134,7 +134,7 @@
                $this->addStatusToResult( $status, $extradata );
 
                //XXX: when to prefer $statusCode over $errorCode?
-               list( $statusCode, $description ) = 
$this->apiModule->getErrorFromStatus( $status );
+               list( , $description ) = $this->apiModule->getErrorFromStatus( 
$status );
 
                $this->throwUsageException( $description, $errorCode, 
$httpRespCode, $extradata );
 
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
index 48a5ac5..2c9183f 100644
--- a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
@@ -247,7 +247,7 @@
                $lb = wfGetLB(); //TODO: allow foreign DB, get from $this->table
 
                while ( true ) {
-                       list( $host, $maxLag ) = $lb->getMaxLag();
+                       list( , $maxLag ) = $lb->getMaxLag();
                        if ( $maxLag < 2 ) {
                                break;
                        }
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
index 62d1bc4..faab184 100644
--- a/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
@@ -119,7 +119,7 @@
                $lb = wfGetLB(); //TODO: allow foreign DB, get from $this->table
 
                while ( true ) {
-                       list( $host, $maxLag ) = $lb->getMaxLag();
+                       list( , $maxLag ) = $lb->getMaxLag();
                        if ( $maxLag < 2 ) {
                                break;
                        }
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
index 092e9c8..d5825e7 100644
--- a/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
@@ -234,7 +234,7 @@
                $lb = wfGetLB(); //TODO: allow foreign DB, get from 
$this->propertyInfoTable
 
                while ( true ) {
-                       list( $host, $maxLag ) = $lb->getMaxLag();
+                       list( , $maxLag ) = $lb->getMaxLag();
                        if ( $maxLag < 2 ) {
                                break;
                        }
diff --git a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php 
b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
index 8536947..41d4b77 100644
--- a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
+++ b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
@@ -10,7 +10,6 @@
 use ObjectCache;
 use Revision;
 use Wikibase\Lib\Reporting\ObservableMessageReporter;
-use Wikibase\DataModel\Entity\BasicEntityIdParser;
 use Wikibase\Lib\Store\CachingEntityRevisionLookup;
 use Wikibase\Lib\Store\EntityContentDataCodec;
 use Wikibase\Lib\Store\EntityInfoBuilderFactory;
@@ -18,13 +17,12 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\EntityStore;
 use Wikibase\Lib\Store\EntityStoreWatcher;
-use Wikibase\Lib\Store\RevisionBasedEntityLookup;
 use Wikibase\Lib\Store\RedirectResolvingEntityLookup;
+use Wikibase\Lib\Store\RevisionBasedEntityLookup;
 use Wikibase\Lib\Store\SiteLinkCache;
 use Wikibase\Lib\Store\SiteLinkTable;
 use Wikibase\Lib\Store\Sql\SqlEntityInfoBuilderFactory;
 use Wikibase\Lib\Store\WikiPageEntityRevisionLookup;
-use Wikibase\Lib\Test\Store\RedirectResolvingEntityLookupTest;
 use Wikibase\Repo\Store\DispatchingEntityStoreWatcher;
 use Wikibase\Repo\Store\WikiPageEntityStore;
 use Wikibase\Repo\WikibaseRepo;
@@ -606,7 +604,7 @@
         * @return EntityInfoBuilderFactory
         */
        protected function newEntityInfoBuilderFactory() {
-               return new SqlEntityInfoBuilderFactory( 
$this->getEntityRevisionLookup() );
+               return new SqlEntityInfoBuilderFactory( 
$this->useRedirectTargetColumn );
        }
 
        /**
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
index 8b98168..7ba2899 100644
--- a/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
@@ -198,7 +198,7 @@
                $lb = wfGetLB(); //TODO: allow foreign DB, get from $this->table
 
                while ( true ) {
-                       list( $host, $maxLag ) = $lb->getMaxLag();
+                       list( , $maxLag ) = $lb->getMaxLag();
                        if ( $maxLag < 2 ) {
                                break;
                        }
diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/EntityViewTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityViewTest.php
index f275039..a3ef4d2 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/EntityViewTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/EntityViewTest.php
@@ -506,6 +506,54 @@
                return $argLists;
        }
 
+       public function testGetHtmlForLabel_editable() {
+               $entity = $this->makeEntity( $this->makeEntityId( 1 ) );
+               $entityView = $this->newEntityView( $entity->getType() );
+               $html = $entityView->getHtmlForLabel( $entity );
+
+               $this->assertRegExp( '@<a 
href="[^"]*\bSpecial:SetLabel/\w1/en"[^>]*>\S+</a>@', $html );
+       }
+
+       public function testGetHtmlForLabel_notEditable() {
+               $entity = $this->makeEntity( $this->makeEntityId( 1 ) );
+               $entityView = $this->newEntityView( $entity->getType() );
+               $html = $entityView->getHtmlForLabel( $entity, false );
+
+               $this->assertNotContains( '<a ', $html );
+       }
+
+       public function testGetHtmlForDescription_editable() {
+               $entity = $this->makeEntity( $this->makeEntityId( 1 ) );
+               $entityView = $this->newEntityView( $entity->getType() );
+               $html = $entityView->getHtmlForDescription( $entity );
+
+               $this->assertRegExp( '@<a 
href="[^"]*\bSpecial:SetDescription/\w1/en"[^>]*>\S+</a>@', $html );
+       }
+
+       public function testGetHtmlForDescription_notEditable() {
+               $entity = $this->makeEntity( $this->makeEntityId( 1 ) );
+               $entityView = $this->newEntityView( $entity->getType() );
+               $html = $entityView->getHtmlForDescription( $entity, false );
+
+               $this->assertNotContains( '<a ', $html );
+       }
+
+       public function testGetHtmlForAliases_editable() {
+               $entity = $this->makeEntity( $this->makeEntityId( 1 ) );
+               $entityView = $this->newEntityView( $entity->getType() );
+               $html = $entityView->getHtmlForAliases( $entity );
+
+               $this->assertRegExp( '@<a 
href="[^"]*\bSpecial:SetAliases/\w1/en"[^>]*>\S+</a>@', $html );
+       }
+
+       public function testGetHtmlForAliases_notEditable() {
+               $entity = $this->makeEntity( $this->makeEntityId( 1 ) );
+               $entityView = $this->newEntityView( $entity->getType() );
+               $html = $entityView->getHtmlForAliases( $entity, false );
+
+               $this->assertNotContains( '<a ', $html );
+       }
+
        /**
         * @return Entity
         */
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/View/FingerprintViewTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/View/FingerprintViewTest.php
deleted file mode 100644
index 44d93e3..0000000
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/View/FingerprintViewTest.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-namespace Wikibase\Test;
-
-use Wikibase\DataModel\Entity\EntityId;
-use Wikibase\DataModel\Entity\ItemId;
-use Wikibase\DataModel\Term\AliasGroup;
-use Wikibase\DataModel\Term\Fingerprint;
-use Wikibase\DataModel\Term\Term;
-use Wikibase\Repo\View\FingerprintView;
-use Wikibase\Repo\View\SectionEditLinkGenerator;
-
-/**
- * @covers Wikibase\Repo\View\FingerprintView
- *
- * @group Wikibase
- * @group WikibaseRepo
- *
- * @licence GNU GPL v2+
- * @author Bene* < benestar.wikime...@gmail.com >
- */
-class FingerprintViewTest extends \MediaWikiLangTestCase {
-
-       public function provideTestGetHtml() {
-               $cases = array();
-
-               $fingerprint = Fingerprint::newEmpty();
-
-               $cases['empty fingerprint'] = array(
-                       $fingerprint,
-                       new ItemId( 'Q42' ),
-                       'en'
-               );
-
-               $fingerprint->setLabel( new Term( 'en', 'Foobar' ) );
-               $fingerprint->setDescription( new Term( 'en', 'This is a foo 
bar.' ) );
-               $fingerprint->setAliasGroup( new AliasGroup( 'en', array( 
'foo', 'bar' ) ) );
-
-               $cases['empty fingerprint'] = array(
-                       $fingerprint,
-                       new ItemId( 'Q42' ),
-                       'en'
-               );
-
-               $cases['other language'] = array(
-                       $fingerprint,
-                       new ItemId( 'Q42' ),
-                       'de'
-               );
-
-               $cases['other item id'] = array(
-                       $fingerprint,
-                       new ItemId( 'Q12' ),
-                       'en'
-               );
-
-               return $cases;
-       }
-
-       /**
-        * @dataProvider provideTestGetHtml
-        */
-       public function testGetHtmlEditable( Fingerprint $fingerprint, EntityId 
$entityId, $languageCode ) {
-               $fingerprintView = new FingerprintView( new 
SectionEditLinkGenerator(), $languageCode );
-               $html = $fingerprintView->getHtml( $fingerprint, $entityId, 
true );
-               $serializedId = $entityId->getSerialization();
-
-               $this->assertRegExp( '@<a href="[^"]*\bSpecial:SetLabel/' . 
$serializedId . '/' . $languageCode . '"[^>]*>\S+</a>@', $html );
-               $this->assertRegExp( '@<a href="[^"]*\bSpecial:SetDescription/' 
. $serializedId . '/' . $languageCode . '"[^>]*>\S+</a>@', $html );
-               $this->assertRegExp( '@<a href="[^"]*\bSpecial:SetAliases/' . 
$serializedId . '/' . $languageCode . '"[^>]*>\S+</a>@', $html );
-       }
-
-       /**
-        * @dataProvider provideTestGetHtml
-        */
-       public function testGetHtmlNotEditable( Fingerprint $fingerprint, 
EntityId $entityId, $languageCode ) {
-               $fingerprintView = new FingerprintView( new 
SectionEditLinkGenerator(), $languageCode );
-               $html = $fingerprintView->getHtml( $fingerprint, $entityId, 
false );
-
-               $this->assertNotContains( '<a ', $html );
-       }
-
-       public function testGetHtmlNoEntityId() {
-               $fingerprintView = new FingerprintView( new 
SectionEditLinkGenerator(), 'en' );
-               $html = $fingerprintView->getHtml( Fingerprint::newEmpty(), 
null, true );
-
-               $this->assertNotContains( '<a ', $html );
-       }
-
-}
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 9767eae..e536588 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInit8d6b272f203b91572bb965fe69ceaba7::getLoader();
+return ComposerAutoloaderInit12174d1429cc42b68eef815f96b7eaa7::getLoader();
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index 2c01d92..ae3ffcf 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -303,6 +303,7 @@
     'Wikibase\\Client\\ClientSiteLinkLookup' => $baseDir . 
'/extensions/Wikibase/client/includes/ClientSiteLinkLookup.php',
     'Wikibase\\Client\\Hooks\\BaseTemplateAfterPortletHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/hooks/BaseTemplateAfterPortletHandler.php',
     'Wikibase\\Client\\Hooks\\BeforePageDisplayHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/hooks/BeforePageDisplayHandler.php',
+    'Wikibase\\Client\\Hooks\\ChangesPageWikibaseFilterHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/hooks/ChangesPageWikibaseFilterHandler.php',
     'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/hooks/InfoActionHookHandler.php',
     'Wikibase\\Client\\Hooks\\LanguageLinkBadgeDisplay' => $baseDir . 
'/extensions/Wikibase/client/includes/hooks/LanguageLinkBadgeDisplay.php',
     'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGenerator' => $baseDir . 
'/extensions/Wikibase/client/includes/hooks/OtherProjectsSidebarGenerator.php',
@@ -700,7 +701,6 @@
     'Wikibase\\Repo\\Store\\WikiPageEntityStore' => $baseDir . 
'/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php',
     'Wikibase\\Repo\\Tests\\DefaultRepoSettingsTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DefaultRepoSettingsTest.php',
     'Wikibase\\Repo\\ValueParserFactory' => $baseDir . 
'/extensions/Wikibase/repo/includes/ValueParserFactory.php',
-    'Wikibase\\Repo\\View\\FingerprintView' => $baseDir . 
'/extensions/Wikibase/repo/includes/View/FingerprintView.php',
     'Wikibase\\Repo\\View\\SectionEditLinkGenerator' => $baseDir . 
'/extensions/Wikibase/repo/includes/View/SectionEditLinkGenerator.php',
     'Wikibase\\Repo\\View\\SiteLinksView' => $baseDir . 
'/extensions/Wikibase/repo/includes/View/SiteLinksView.php',
     'Wikibase\\Repo\\View\\SnakHtmlGenerator' => $baseDir . 
'/extensions/Wikibase/repo/includes/View/SnakHtmlGenerator.php',
@@ -848,7 +848,6 @@
     'Wikibase\\Test\\EntityViewPlaceholderExpanderTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/EntityViewPlaceholderExpanderTest.php',
     'Wikibase\\Test\\EntityViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/EntityViewTest.php',
     'Wikibase\\Test\\FingerprintChangeOpFactoryTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/FingerprintChangeOpFactoryTest.php',
-    'Wikibase\\Test\\FingerprintViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/View/FingerprintViewTest.php',
     'Wikibase\\Test\\GenericExceptionLocalizerTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/Localizer/GenericExceptionLocalizerTest.php',
     'Wikibase\\Test\\HttpAcceptNegotiatorTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/HttpAcceptNegotiatorTest.php',
     'Wikibase\\Test\\HttpAcceptParserTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/HttpAcceptParserTest.php',
diff --git a/vendor/composer/autoload_real.php 
b/vendor/composer/autoload_real.php
index 6665fd8..e7d51ff 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit8d6b272f203b91572bb965fe69ceaba7
+class ComposerAutoloaderInit12174d1429cc42b68eef815f96b7eaa7
 {
     private static $loader;
 
@@ -19,9 +19,9 @@
             return self::$loader;
         }
 
-        
spl_autoload_register(array('ComposerAutoloaderInit8d6b272f203b91572bb965fe69ceaba7',
 'loadClassLoader'), true, true);
+        
spl_autoload_register(array('ComposerAutoloaderInit12174d1429cc42b68eef815f96b7eaa7',
 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        
spl_autoload_unregister(array('ComposerAutoloaderInit8d6b272f203b91572bb965fe69ceaba7',
 'loadClassLoader'));
+        
spl_autoload_unregister(array('ComposerAutoloaderInit12174d1429cc42b68eef815f96b7eaa7',
 'loadClassLoader'));
 
         $map = require __DIR__ . '/autoload_namespaces.php';
         foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@
 
         $includeFiles = require __DIR__ . '/autoload_files.php';
         foreach ($includeFiles as $file) {
-            composerRequire8d6b272f203b91572bb965fe69ceaba7($file);
+            composerRequire12174d1429cc42b68eef815f96b7eaa7($file);
         }
 
         return $loader;
     }
 }
 
-function composerRequire8d6b272f203b91572bb965fe69ceaba7($file)
+function composerRequire12174d1429cc42b68eef815f96b7eaa7($file)
 {
     require $file;
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 168fd29..240da6b 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -91,55 +91,6 @@
         ]
     },
     {
-        "name": "propertysuggester/property-suggester",
-        "version": "v1.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/Wikidata-lib/PropertySuggester.git";,
-            "reference": "2fb712f58c368a1151b3e8aeb09876ffa1f66913"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/2fb712f58c368a1151b3e8aeb09876ffa1f66913";,
-            "reference": "2fb712f58c368a1151b3e8aeb09876ffa1f66913",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "3.7.*",
-            "satooshi/php-coveralls": "dev-master"
-        },
-        "time": "2014-06-23 17:01:20",
-        "type": "mediawiki-extension",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "PropertySuggester\\": "src/PropertySuggester/"
-            },
-            "files": [
-
-    ],
-            "classmap": [
-                "PropertySuggesterHooks.php",
-                "maintenance/UpdateTable.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "GPL-2.0+"
-        ],
-        "description": "Extension for Wikibase to provide usefull suggestions 
for new properties",
-        "homepage": "https://github.com/Wikidata-lib/PropertySuggester";,
-        "keywords": [
-            "propertysuggester",
-            "wikibase",
-            "wikidata"
-        ]
-    },
-    {
         "name": "serialization/serialization",
         "version": "3.2",
         "version_normalized": "3.2.0.0",
@@ -1178,12 +1129,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "c2f07302fa28695afda71b1981987c6573b02afc"
+            "reference": "3ed131f4e4f24800f51fd635eacc67bbcb8b2e23"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c2f07302fa28695afda71b1981987c6573b02afc";,
-            "reference": "c2f07302fa28695afda71b1981987c6573b02afc",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3ed131f4e4f24800f51fd635eacc67bbcb8b2e23";,
+            "reference": "3ed131f4e4f24800f51fd635eacc67bbcb8b2e23",
             "shasum": ""
         },
         "require": {
@@ -1210,7 +1161,7 @@
         "conflict": {
             "mediawiki/mediawiki": "<1.23"
         },
-        "time": "2014-08-15 01:15:18",
+        "time": "2014-08-15 23:04:34",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
@@ -1254,5 +1205,54 @@
             "wikibaserepo",
             "wikidata"
         ]
+    },
+    {
+        "name": "propertysuggester/property-suggester",
+        "version": "v1.1",
+        "version_normalized": "1.1.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/Wikidata-lib/PropertySuggester.git";,
+            "reference": "fe77e3d6db4582d2b4cefbe51a1f74e8838f79d1"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/fe77e3d6db4582d2b4cefbe51a1f74e8838f79d1";,
+            "reference": "fe77e3d6db4582d2b4cefbe51a1f74e8838f79d1",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.0"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "3.7.*",
+            "satooshi/php-coveralls": "dev-master"
+        },
+        "time": "2014-07-25 01:45:14",
+        "type": "mediawiki-extension",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "PropertySuggester\\": "src/PropertySuggester/"
+            },
+            "files": [
+
+    ],
+            "classmap": [
+                "PropertySuggesterHooks.php",
+                "maintenance/UpdateTable.php"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/";,
+        "license": [
+            "GPL-2.0+"
+        ],
+        "description": "Extension for Wikibase to provide usefull suggestions 
for new properties",
+        "homepage": "https://github.com/Wikidata-lib/PropertySuggester";,
+        "keywords": [
+            "propertysuggester",
+            "wikibase",
+            "wikidata"
+        ]
     }
 ]

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic91e1c83baffb7f261ad77b131f57d6c511b6f8d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de>

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

Reply via email to