X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FMessage.php;h=4049e114f39b3650a35a0a690745b2d68d3af9dc;hb=0770f85a0a293e6c7af6f1d3d3a1dbd2d13c1e09;hp=5ca0942291a86287a2521e8a9f62e838bfc8a2fe;hpb=c5f5ac85d14671a9baa983949e8acb81d092e802;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Message.php b/includes/Message.php index 5ca0942291..4049e114f3 100644 --- a/includes/Message.php +++ b/includes/Message.php @@ -20,6 +20,7 @@ * @file * @author Niklas Laxström */ +use MediaWiki\MediaWikiServices; /** * The Message class provides methods which fulfil two basic services: @@ -288,7 +289,7 @@ class Message implements MessageSpecifier, Serializable { 'parameters' => $this->parameters, 'format' => $this->format, 'useDatabase' => $this->useDatabase, - 'title' => $this->title, + 'titlestr' => $this->title ? $this->title->getFullText() : null, ] ); } @@ -299,6 +300,10 @@ class Message implements MessageSpecifier, Serializable { */ 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']; @@ -306,7 +311,15 @@ class Message implements MessageSpecifier, Serializable { $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 + } } /** @@ -469,18 +482,20 @@ class Message implements MessageSpecifier, Serializable { * @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, ' ', '_' ) ) ); } /** @@ -766,8 +781,7 @@ class Message implements MessageSpecifier, Serializable { return $this; } - global $wgContLang; - $this->inLanguage( $wgContLang ); + $this->inLanguage( MediaWikiServices::getInstance()->getContentLanguage() ); return $this; }