'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
+ }
}
/**
// escaped, breaking the replacement and avoiding XSS.
$replacementKeys['$' . ( $n + 1 )] = $marker . ( $n + 1 );
}
- } else {
- if ( $paramType === 'after' ) {
- $replacementKeys[$marker . ( $n + 1 )] = $value;
- }
+ } elseif ( $paramType === 'after' ) {
+ $replacementKeys[$marker . ( $n + 1 )] = $value;
}
}
- $message = strtr( $message, $replacementKeys );
- return $message;
+ return strtr( $message, $replacementKeys );
}
/**