Merge "Use MediaWiki\SuppressWarnings around trigger_error('') instead @"
[lhc/web/wiklou.git] / includes / Message.php
index e2fe254..4049e11 100644 (file)
@@ -289,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,
                ] );
        }
 
@@ -300,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'];
@@ -307,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
+               }
        }
 
        /**
@@ -473,13 +485,13 @@ class Message implements MessageSpecifier, Serializable {
                global $wgForceUIMsgAsContentMsg;
 
                $contLang = MediaWikiServices::getInstance()->getContentLanguage();
+               $lang = $this->getLanguage();
                $title = $this->key;
                if (
-                       !$this->language->equals( $contLang )
+                       !$lang->equals( $contLang )
                        && in_array( $this->key, (array)$wgForceUIMsgAsContentMsg )
                ) {
-                       $code = $this->language->getCode();
-                       $title .= '/' . $code;
+                       $title .= '/' . $lang->getCode();
                }
 
                return Title::makeTitle(