/**
* @param Language $lang Language to use for comment truncation. Defaults
- * to $wgContLang.
+ * to content language.
* @param int $migrationStage One of the MIGRATION_* constants
*/
public function __construct( Language $lang, $migrationStage ) {
* @return CommentStore
*/
public static function newKey( $key ) {
- global $wgCommentTableSchemaMigrationStage, $wgContLang;
+ global $wgCommentTableSchemaMigrationStage;
// TODO uncomment once not used in extensions
// wfDeprecated( __METHOD__, '1.31' );
- $store = new CommentStore( $wgContLang, $wgCommentTableSchemaMigrationStage );
+ $store = new CommentStore( MediaWikiServices::getInstance()->getContentLanguage(),
+ $wgCommentTableSchemaMigrationStage );
$store->key = $key;
return $store;
}
* @return string
*/
private function getKey( $methodKey = null ) {
- $key = $this->key !== null ? $this->key : $methodKey;
+ $key = $this->key ?? $methodKey;
if ( $key === null ) {
// @codeCoverageIgnoreStart
throw new InvalidArgumentException( '$key should not be null' );
*
* @since 1.30
* @since 1.31 Method signature changed, $key parameter added (with deprecated back compat)
- * @param string $key A key such as "rev_comment" identifying the comment
+ * @param string|null $key A key such as "rev_comment" identifying the comment
* field being fetched.
* @return string[] to include in the `$vars` to `IDatabase->select()`. All
* fields are aliased, so `+` is safe to use.
*
* @since 1.30
* @since 1.31 Method signature changed, $key parameter added (with deprecated back compat)
- * @param string $key A key such as "rev_comment" identifying the comment
+ * @param string|null $key A key such as "rev_comment" identifying the comment
* field being fetched.
* @return array With three keys:
* - tables: (string[]) to include in the `$table` to `IDatabase->select()`
* @since 1.31 Method signature changed, $key parameter added (with deprecated back compat)
* @param string $key A key such as "rev_comment" identifying the comment
* field being fetched.
- * @param object|array $row Result row.
+ * @param object|array|null $row Result row.
* @param bool $fallback If true, fall back as well as possible instead of throwing an exception.
* @return CommentStoreComment
*/
* @param IDatabase $db Database handle to use for lookup
* @param string $key A key such as "rev_comment" identifying the comment
* field being fetched.
- * @param object|array $row Result row.
+ * @param object|array|null $row Result row.
* @param bool $fallback If true, fall back as well as possible instead of throwing an exception.
* @return CommentStoreComment
*/
$comment = CommentStoreComment::newUnsavedComment( $comment, $data );
# Truncate comment in a Unicode-sensitive manner
- $comment->text = $this->lang->truncate( $comment->text, self::MAX_COMMENT_LENGTH );
- if ( mb_strlen( $comment->text, 'UTF-8' ) > self::COMMENT_CHARACTER_LIMIT ) {
- $ellipsis = wfMessage( 'ellipsis' )->inLanguage( $this->lang )->escaped();
- if ( mb_strlen( $ellipsis ) >= self::COMMENT_CHARACTER_LIMIT ) {
- // WTF?
- $ellipsis = '...';
- }
- $maxLength = self::COMMENT_CHARACTER_LIMIT - mb_strlen( $ellipsis, 'UTF-8' );
- $comment->text = mb_substr( $comment->text, 0, $maxLength, 'UTF-8' ) . $ellipsis;
- }
+ $comment->text = $this->lang->truncateForVisual( $comment->text, self::COMMENT_CHARACTER_LIMIT );
if ( $this->stage > MIGRATION_OLD && !$comment->id ) {
$dbData = $comment->data;
$comment = $this->createComment( $dbw, $comment, $data );
if ( $this->stage <= MIGRATION_WRITE_BOTH ) {
- $fields[$key] = $this->lang->truncate( $comment->text, 255 );
+ $fields[$key] = $this->lang->truncateForDatabase( $comment->text, 255 );
}
if ( $this->stage >= MIGRATION_WRITE_BOTH ) {
* @param IDatabase $dbw Database handle to insert on
* @param string $key A key such as "rev_comment" identifying the comment
* field being fetched.
- * @param string|Message|CommentStoreComment $comment As for `self::createComment()`
+ * @param string|Message|CommentStoreComment|null $comment As for `self::createComment()`
* @param array|null $data As for `self::createComment()`
* @return array Fields for the insert or update
*/
* @param IDatabase $dbw Database handle to insert on
* @param string $key A key such as "rev_comment" identifying the comment
* field being fetched.
- * @param string|Message|CommentStoreComment $comment As for `self::createComment()`
+ * @param string|Message|CommentStoreComment|null $comment As for `self::createComment()`
* @param array|null $data As for `self::createComment()`
* @return array Two values:
* - array Fields for the insert or update