* @file
* @author Niklas Laxström
*/
+use MediaWiki\MediaWikiServices;
/**
* The Message class provides methods which fulfil two basic services:
'parameters' => $this->parameters,
'format' => $this->format,
'useDatabase' => $this->useDatabase,
- 'title' => $this->title,
+ 'titlestr' => $this->title ? $this->title->getFullText() : null,
] );
}
*/
public function unserialize( $serialized ) {
$data = unserialize( $serialized );
+ if ( !is_array( $data ) ) {
+ throw new InvalidArgumentException( __METHOD__ . ': Invalid serialized data' );
+ }
+
$this->interface = $data['interface'];
$this->key = $data['key'];
$this->keysToTry = $data['keysToTry'];
$this->format = $data['format'];
$this->useDatabase = $data['useDatabase'];
$this->language = $data['language'] ? Language::factory( $data['language'] ) : false;
- $this->title = $data['title'];
+
+ if ( isset( $data['titlestr'] ) ) {
+ $this->title = Title::newFromText( $data['titlestr'] );
+ } elseif ( isset( $data['title'] ) && $data['title'] instanceof Title ) {
+ // Old serializations from before December 2018
+ $this->title = $data['title'];
+ } else {
+ $this->title = null; // Explicit for sanity
+ }
}
/**
* @since 1.26
*/
public function getTitle() {
- global $wgContLang, $wgForceUIMsgAsContentMsg;
+ global $wgForceUIMsgAsContentMsg;
+ $contLang = MediaWikiServices::getInstance()->getContentLanguage();
+ $lang = $this->getLanguage();
$title = $this->key;
if (
- !$this->language->equals( $wgContLang )
+ !$lang->equals( $contLang )
&& in_array( $this->key, (array)$wgForceUIMsgAsContentMsg )
) {
- $code = $this->language->getCode();
- $title .= '/' . $code;
+ $title .= '/' . $lang->getCode();
}
- return Title::makeTitle( NS_MEDIAWIKI, $wgContLang->ucfirst( strtr( $title, ' ', '_' ) ) );
+ return Title::makeTitle(
+ NS_MEDIAWIKI, $contLang->ucfirst( strtr( $title, ' ', '_' ) ) );
}
/**
return $this;
}
- global $wgContLang;
- $this->inLanguage( $wgContLang );
+ $this->inLanguage( MediaWikiServices::getInstance()->getContentLanguage() );
return $this;
}
* the last time (this is for B/C and should be avoided).
*
* @return string HTML
+ * @suppress SecurityCheck-DoubleEscaped phan false positive
*/
public function toString( $format = null ) {
if ( $format === null ) {