Page MenuHomePhabricator

Cargo TypeError: Maps\Map\StructuredPopup::stripTags()
Closed, DeclinedPublicBUG REPORT

Description

Cargo wikitext (from FreoWiki):

{{#cargo_query: tables = fsps_photos
| fields = CONCAT(fsps_street)=Street, CONCAT(description)=Description, coordinates, _pageName=Details
| format = map
| no html
| where = coordinates__full IS NOT NULL
| height = 450px
}}

Results in the following error:

[da366c5a198e10b441fa067c] Cargo TypeError: Maps\Map\StructuredPopup::stripTags():
Argument #1 ($html) must be of type string, null given, called in
mediawiki/extensions/Maps/src/Map/StructuredPopup.php on line 32

Backtrace:

from /home/sam/code/wikimedia/mediawiki/extensions/Maps/src/Map/StructuredPopup.php(38)
#0 mediawiki/extensions/Maps/src/Map/StructuredPopup.php(32): Maps\Map\StructuredPopup->stripTags()
#1 mediawiki/extensions/Maps/src/Map/StructuredPopup.php(22): Maps\Map\StructuredPopup->getPropertyValueList()
#2 mediawiki/extensions/Maps/src/Map/CargoFormat/CargoOutputBuilder.php(124): Maps\Map\StructuredPopup->getHtml()
#3 mediawiki/extensions/Maps/src/Map/CargoFormat/CargoOutputBuilder.php(91): Maps\Map\CargoFormat\CargoOutputBuilder->newMarker()
#4 mediawiki/extensions/Maps/src/Map/CargoFormat/CargoOutputBuilder.php(50): Maps\Map\CargoFormat\CargoOutputBuilder->cargoValuesToMarkers()
#5 mediawiki/extensions/Maps/src/Map/CargoFormat/CargoOutputBuilder.php(40): Maps\Map\CargoFormat\CargoOutputBuilder->createMarkers()
#6 mediawiki/extensions/Maps/src/Map/CargoFormat/CargoFormat.php(30): Maps\Map\CargoFormat\CargoOutputBuilder->buildOutputFromCargoData()
#7 mediawiki/extensions/Cargo/includes/CargoQueryDisplayer.php(391): Maps\Map\CargoFormat\CargoFormat->display()
#8 mediawiki/extensions/Cargo/includes/parserfunctions/CargoQuery.php(168): CargoQueryDisplayer->displayQueryResults()
#9 mediawiki/includes/parser/Parser.php(3453): CargoQuery::run()
#10 mediawiki/includes/parser/Parser.php(3136): Parser->callParserFunction()
#11 mediawiki/includes/parser/PPFrame_Hash.php(276): Parser->braceSubstitution()
#12 mediawiki/includes/parser/Parser.php(2971): PPFrame_Hash->expand()
#13 mediawiki/includes/parser/Parser.php(1607): Parser->replaceVariables()
#14 mediawiki/includes/parser/Parser.php(723): Parser->internalParse()
#15 mediawiki/includes/content/WikitextContentHandler.php(295): Parser->parse()
#16 mediawiki/includes/content/ContentHandler.php(1714): WikitextContentHandler->fillParserOutput()
#17 mediawiki/includes/content/Renderer/ContentRenderer.php(47): ContentHandler->getParserOutput()
#18 mediawiki/includes/Revision/RenderedRevision.php(266): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput()
#19 mediawiki/includes/Revision/RenderedRevision.php(237): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached()
#20 mediawiki/includes/Revision/RevisionRenderer.php(221): MediaWiki\Revision\RenderedRevision->getSlotParserOutput()
#21 mediawiki/includes/Revision/RevisionRenderer.php(158): MediaWiki\Revision\RevisionRenderer->combineSlotOutput()
#22 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}()
#23 mediawiki/includes/Revision/RenderedRevision.php(199): call_user_func()
#24 mediawiki/includes/poolcounter/PoolWorkArticleView.php(91): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#25 mediawiki/includes/poolcounter/PoolWorkArticleViewCurrent.php(97): PoolWorkArticleView->renderRevision()
#26 mediawiki/includes/poolcounter/PoolCounterWork.php(162): PoolWorkArticleViewCurrent->doWork()
#27 mediawiki/includes/page/ParserOutputAccess.php(299): PoolCounterWork->execute()
#28 mediawiki/includes/page/Article.php(702): MediaWiki\Page\ParserOutputAccess->getParserOutput()
#29 mediawiki/includes/page/Article.php(517): Article->generateContentOutput()
#30 mediawiki/includes/actions/ViewAction.php(78): Article->view()
#31 mediawiki/includes/MediaWiki.php(550): ViewAction->show()
#32 mediawiki/includes/MediaWiki.php(322): MediaWiki->performAction()
#33 mediawiki/includes/MediaWiki.php(916): MediaWiki->performRequest()
#34 mediawiki/includes/MediaWiki.php(570): MediaWiki->main()
#35 mediawiki/index.php(50): MediaWiki->run()
#36 mediawiki/index.php(46): wfIndexMain()
#37 {main}

Initially reported as a Maps bug, but it looks like it's actually Cargo's.

Event Timeline

@Samwilson - not to pass the ball back, but I'm not sure that this is a bug in Cargo. Granted, I'm sure this problem could be fixed in either extension, but the basic problem seems to be (if I understand it correctly) that Cargo sometimes includes "null" in its returned values. I think that's correct behavior - again, if I understand it correctly. Jeroen said the problem should be fixed in the CargoOutputBuilder class, which is part of the Maps extension - why not do that?

I'm declining this - thinking more about this, I really think this is a Maps, not a Cargo, bug, and should be addressed there.