* $button = Xml::button( wfMessage( 'submit' )->text() );
* </pre>
* Messages can have parameters:
- * wfMessage( 'welcome-to' )->params( $wgSitename )->text();
+ * wfMessage( 'welcome-to' )->params( $wgSitename )->text();
* {{GRAMMAR}} and friends work correctly
* wfMessage( 'are-friends', $user, $friend );
* wfMessage( 'bad-message' )->rawParams( '<script>...</script>' )->escaped();
* means the current interface language, false content language.
*/
protected $interface = true;
-
+
/**
* In which language to get this message. Overrides the $interface
* variable.
* @var Language
*/
protected $language = null;
-
+
/**
* The message key.
*/
*/
protected $title = null;
+ /**
+ * @var string
+ */
+ protected $message;
+
/**
* Constructor.
* @param $key: message key, or array of message keys to try and use the first non-empty message for
* Factory function accepting multiple message keys and returning a message instance
* for the first message which is non-empty. If all messages are empty then an
* instance of the first message key is returned.
- * @param Varargs: message keys
+ * @param Varargs: message keys (or first arg as an array of all the message keys)
* @return Message: $this
*/
public static function newFallbackSequence( /*...*/ ) {
/**
* Adds parameters to the parameter list of this message.
- * @param Varargs: parameters as Strings
+ * @param Varargs: parameters as Strings, or a single argument that is an array of Strings
* @return Message: $this
*/
public function params( /*...*/ ) {
* In other words the parsing process cannot access the contents
* of this type of parameter, and you need to make sure it is
* sanitized beforehand. The parser will see "$n", instead.
- * @param Varargs: raw parameters as Strings
+ * @param Varargs: raw parameters as Strings (or single argument that is an array of raw parameters)
* @return Message: $this
*/
public function rawParams( /*...*/ ) {
}
return $this;
}
-
+
/**
* Add parameters that are numeric and will be passed through
* Language::formatNum before substitution
- * @param Varargs: numeric parameters
+ * @param Varargs: numeric parameters (or single argument that is array of numeric parameters)
* @return Message: $this
*/
public function numParams( /*...*/ ) {
}
return $this;
}
-
+
+ /**
+ * Set the language and the title from a context object
+ *
+ * @param $context IContextSource
+ * @return Message: $this
+ */
+ public function setContext( IContextSource $context ) {
+ $this->inLanguage( $context->getLanguage() );
+ $this->title( $context->getTitle() );
+
+ return $this;
+ }
+
/**
* Request the message in any language that is supported.
* As a side effect interface message status is unconditionally
} else {
$type = gettype( $lang );
throw new MWException( __METHOD__ . " must be "
- . "passed a String or Language object; $type given"
+ . "passed a String or Language object; $type given"
);
}
$this->interface = false;
}
/**
- * Request the message in the wiki's content language.
+ * Request the message in the wiki's content language,
+ * unless it is disabled for this message.
+ * @see $wgForceUIMsgAsContentMsg
* @return Message: $this
*/
public function inContentLanguage() {
+ global $wgForceUIMsgAsContentMsg;
+ if ( in_array( $this->key, (array)$wgForceUIMsgAsContentMsg ) ) {
+ return $this;
+ }
+
global $wgContLang;
$this->interface = false;
$this->language = $wgContLang;
*/
public function toString() {
$string = $this->getMessageText();
-
+
# Replace parameters before text parsing
$string = $this->replaceParameters( $string, 'before' );
-
+
# Maybe transform using the full parser
if( $this->format === 'parse' ) {
$string = $this->parseText( $string );
$string = $this->transformText( $string );
$string = htmlspecialchars( $string, ENT_QUOTES, 'UTF-8', false );
}
-
+
# Raw parameter replacement
$string = $this->replaceParameters( $string, 'after' );
-
+
return $string;
}
public function __toString() {
return $this->toString();
}
-
+
/**
* Fully parse the text from wikitext to HTML
* @return String parsed HTML