hasFatal() ) { return $this->getOutputForErrors( $result->getErrors() ); } $parameters = $result->getParameters(); if ( !isset( $parameters['message'] ) ) { return ''; } $message = $parser->mStripState ? $parser->mStripState->unstripBoth( $parameters[ 'message' ]->getValue() ) : $parameters[ 'message' ]->getValue(); if ( $message === '' ) { return ''; } /** * Non-escaping is safe bacause a user's message is passed through parser, which will * handle unsafe HTM elements. */ $result = smwfEncodeMessages( [ $message ], $parameters['icon']->getValue(), ' ', false // No escaping. ); if ( !is_null( $parser->getTitle() ) && $parser->getTitle()->isSpecialPage() ) { global $wgOut; SMWOutputs::commitToOutputPage( $wgOut ); } else { SMWOutputs::commitToParser( $parser ); } return $result; } /** * @param ProcessingError[] $errors * @return string */ private function getOutputForErrors( $errors ) { // TODO: see https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/1485 return 'A fatal error occurred in the #info parser function'; } public static function getHookDefinition() { return new HookDefinition( 'info', [ [ 'name' => 'message', 'message' => 'smw-info-par-message', ], [ 'name' => 'icon', 'message' => 'smw-info-par-icon', 'default' => 'info', 'values' => [ 'info', 'warning', 'error', 'note' ], ], ], [ 'message', 'icon' ] ); } }