id = $id; $this->text = $text; $this->message = $message ?: new RawMessage( '$1', [ Message::plaintextParam( $text ) ] ); $this->data = $data; } /** * Create a new, unsaved CommentStoreComment * * @param string|Message|CommentStoreComment $comment Comment text or Message object. * A CommentStoreComment is also accepted here, in which case it is returned unchanged. * @param array|null $data Structured data to store. Keys beginning with '_' are reserved. * Ignored if $comment is a CommentStoreComment. * @return CommentStoreComment */ public static function newUnsavedComment( $comment, array $data = null ) { if ( $comment instanceof CommentStoreComment ) { return $comment; } if ( $data !== null ) { foreach ( $data as $k => $v ) { if ( substr( $k, 0, 1 ) === '_' ) { throw new InvalidArgumentException( 'Keys in $data beginning with "_" are reserved' ); } } } if ( $comment instanceof Message ) { $message = clone $comment; // Avoid $wgForceUIMsgAsContentMsg $text = $message->inLanguage( MediaWikiServices::getInstance()->getContentLanguage() ) ->setInterfaceMessageFlag( true ) ->text(); return new CommentStoreComment( null, $text, $message, $data ); } else { return new CommentStoreComment( null, $comment, null, $data ); } } }