* @throws MWException
*/
public function inLanguage( $lang ) {
+ $previousLanguage = $this->language;
+
if ( $lang instanceof Language ) {
$this->language = $lang;
} elseif ( is_string( $lang ) ) {
. "passed a String or Language object; $type given"
);
}
- $this->message = null;
+
+ if ( $this->language !== $previousLanguage ) {
+ // The language has changed. Clear the message cache.
+ $this->message = null;
+ }
$this->interface = false;
return $this;
}
public static function listParam( array $list, $type = 'text' ) {
if ( !isset( self::$listTypeMap[$type] ) ) {
throw new InvalidArgumentException(
- "Invalid type '$type'. Known types are: " . join( ', ', array_keys( self::$listTypeMap ) )
+ "Invalid type '$type'. Known types are: " . implode( ', ', array_keys( self::$listTypeMap ) )
);
}
return [ 'list' => $list, 'type' => $type ];
*
* @return string
*/
- protected function replaceParameters( $message, $type = 'before', $format ) {
+ protected function replaceParameters( $message, $type, $format ) {
// A temporary marker for $1 parameters that is only valid
// in non-attribute contexts. However if the entire message is escaped
// then we don't want to use it because it will be mangled in all contexts
$this->getLanguage()
);
- return $out instanceof ParserOutput ? $out->getText() : $out;
+ return $out instanceof ParserOutput
+ ? $out->getText( [
+ 'enableSectionEditLinks' => false,
+ // Wrapping messages in an extra <div> is probably not expected. If
+ // they're outside the content area they probably shouldn't be
+ // targeted by CSS that's targeting the parser output, and if
+ // they're inside they already are from the outer div.
+ 'unwrap' => true,
+ ] )
+ : $out;
}
/**
*/
protected function formatPlaintext( $plaintext, $format ) {
switch ( $format ) {
- case self::FORMAT_TEXT:
- case self::FORMAT_PLAIN:
- return $plaintext;
-
- case self::FORMAT_PARSE:
- case self::FORMAT_BLOCK_PARSE:
- case self::FORMAT_ESCAPED:
- default:
- return htmlspecialchars( $plaintext, ENT_QUOTES );
-
+ case self::FORMAT_TEXT:
+ case self::FORMAT_PLAIN:
+ return $plaintext;
+
+ case self::FORMAT_PARSE:
+ case self::FORMAT_BLOCK_PARSE:
+ case self::FORMAT_ESCAPED:
+ default:
+ return htmlspecialchars( $plaintext, ENT_QUOTES );
}
}