Sumit has uploaded a new change for review.
https://gerrit.wikimedia.org/r/227176
Change subject: WikidataPageBanner check for invalid Property name
......................................................................
WikidataPageBanner check for invalid Property name
Add a try-catch block to getWikidataBanner to catch InvalidArgumentExceptions in
case the property name is invalid.
Bug: T107001
Change-Id: Iade85972f384c2644a4b27e6bce76079c6a2697d
---
M includes/WikidataPageBanner.hooks.php
1 file changed, 29 insertions(+), 23 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikidataPageBanner
refs/changes/76/227176/1
diff --git a/includes/WikidataPageBanner.hooks.php
b/includes/WikidataPageBanner.hooks.php
index dea3058..be3b43f 100644
--- a/includes/WikidataPageBanner.hooks.php
+++ b/includes/WikidataPageBanner.hooks.php
@@ -260,32 +260,38 @@
public static function getWikidataBanner( $title ) {
global $wgBannerProperty;
$banner = null;
- // Ensure Wikibase client is installed
- if ( class_exists( 'Wikibase\Client\WikibaseClient' ) ) {
- $entityIdLookup =
Wikibase\Client\WikibaseClient::getDefaultInstance()
- ->getStore()
- ->getEntityIdLookup();
- $itemId = $entityIdLookup->getEntityIdForTitle( $title
);
- // check if this page has an associated item page
- $entityLookup =
Wikibase\Client\WikibaseClient::getDefaultInstance()
- ->getStore()
- ->getEntityLookup();
- /** @var Wikibase\DataModel\Entity\Item $item */
- if ( $itemId != null ) {
- $item = $entityLookup->getEntity( $itemId );
- $statements =
$item->getStatements()->getByPropertyId(
- new
Wikibase\DataModel\Entity\PropertyId(
- $wgBannerProperty
- )
- )->getBestStatements();
- if ( !$statements->isEmpty() ) {
- $statements = $statements->toArray();
- $snak = $statements[0]->getMainSnak();
- if ( $snak instanceof
Wikibase\DataModel\Snak\PropertyValueSnak ) {
- $banner =
$snak->getDataValue()->getValue();
+ // Invalid Property name will throw an exception therefore use
a try-catch block
+ try {
+ // Ensure Wikibase client is installed
+ if ( class_exists( 'Wikibase\Client\WikibaseClient' ) )
{
+ $entityIdLookup =
Wikibase\Client\WikibaseClient::getDefaultInstance()
+ ->getStore()
+ ->getEntityIdLookup();
+ $itemId = $entityIdLookup->getEntityIdForTitle(
$title );
+ // check if this page has an associated item
page
+ $entityLookup =
Wikibase\Client\WikibaseClient::getDefaultInstance()
+ ->getStore()
+ ->getEntityLookup();
+ /** @var Wikibase\DataModel\Entity\Item $item */
+ if ( $itemId != null ) {
+ $item = $entityLookup->getEntity(
$itemId );
+ $statements =
$item->getStatements()->getWithPropertyId(
+ new
Wikibase\DataModel\Entity\PropertyId(
+
$wgBannerProperty
+ )
+ )->getBestStatements();
+ if ( !$statements->isEmpty() ) {
+ $statements =
$statements->toArray();
+ $snak =
$statements[0]->getMainSnak();
+ if ( $snak instanceof
Wikibase\DataModel\Snak\PropertyValueSnak ) {
+ $banner =
$snak->getDataValue()->getValue();
+ }
}
}
}
+ } catch ( InvalidArgumentException $e ) {
+ // return null to safely avoid adding any Wikidata
Banner
+ return null;
}
return $banner;
}
--
To view, visit https://gerrit.wikimedia.org/r/227176
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iade85972f384c2644a4b27e6bce76079c6a2697d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikidataPageBanner
Gerrit-Branch: master
Gerrit-Owner: Sumit <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits