jenkins-bot has submitted this change and it was merged.
Change subject: Fix fatal error in OutputPageBeforeHTMLHookHandler
......................................................................
Fix fatal error in OutputPageBeforeHTMLHookHandler
Check that we have valid EntityId and EntityRevision objects
before trying to load an Entity from EntityRevision.
There are cases (e.g. an admin viewing a revision of a deleted item)
where the EntityId is not available or an EntityRevision is not found.
(my patch on master was not a clean cherry pick so I have
made this patch against the branch)
Bug: T132645
Change-Id: I513c64648f46600e6f0b1a2e565f47775853b9bb
---
M repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
1 file changed, 27 insertions(+), 6 deletions(-)
Approvals:
Hoo man: Looks good to me, but someone else must approve
Aude: Looks good to me, approved
Thiemo Mättig (WMDE): Looks good to me, but someone else must approve
jenkins-bot: Verified
diff --git a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
index 1e282c1..85ee46e 100644
--- a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
+++ b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
@@ -3,7 +3,9 @@
namespace Wikibase\Repo\Hooks;
use OutputPage;
+use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Term\AliasesProvider;
+use Wikibase\EntityRevision;
use Wikibase\Lib\ContentLanguages;
use Wikibase\Lib\LanguageNameLookup;
use Wikibase\Lib\Store\EntityRevisionLookup;
@@ -126,9 +128,26 @@
if ( !empty( $placeholders ) ) {
$injector = new TextInjector( $placeholders );
- $expander = $this->getEntityViewPlaceholderExpander(
$out );
+ $callback = function() {
+ return '';
+ };
- $html = $injector->inject( $html, array( $expander,
'getHtmlForPlaceholder' ) );
+ $entityId =
$this->outputPageEntityIdReader->getEntityIdFromOutputPage( $out );
+
+ if ( $entityId instanceof EntityId ) {
+ $revisionId = $out->getRevisionId();
+ $entityRevision =
$this->entityRevisionLookup->getEntityRevision(
+ $entityId,
+ $revisionId
+ );
+
+ if ( $entityRevision instanceof EntityRevision
) {
+ $expander =
$this->getEntityViewPlaceholderExpander( $out, $entityRevision );
+ $callback = [ $expander,
'getHtmlForPlaceholder' ];
+ }
+ }
+
+ $html = $injector->inject( $html, $callback );
$out->addJsConfigVars(
'wbUserSpecifiedLanguages',
@@ -145,14 +164,16 @@
/**
* @param OutputPage $out
+ * @param EntityRevision $entityRev
*
* @return EntityViewPlaceholderExpander
*/
- private function getEntityViewPlaceholderExpander( OutputPage $out ) {
+ private function getEntityViewPlaceholderExpander(
+ OutputPage $out,
+ EntityRevision $entityRevision
+ ) {
+ $entity = $entityRevision->getEntity();
- $entityId =
$this->outputPageEntityIdReader->getEntityIdFromOutputPage( $out );
- $revisionId = $out->getRevisionId();
- $entity = $this->entityRevisionLookup->getEntityRevision(
$entityId, $revisionId )->getEntity();
$labelsProvider = $entity;
$descriptionsProvider = $entity;
$aliasesProvider = $entity instanceof AliasesProvider ? $entity
: null;
--
To view, visit https://gerrit.wikimedia.org/r/285557
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I513c64648f46600e6f0b1a2e565f47775853b9bb
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: wmf/1.27.0-wmf.21
Gerrit-Owner: Aude <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits