From 41f1b6a2880aa984c88045ebaeaddc147b9b9a35 Mon Sep 17 00:00:00 2001 From: Brian Wolff Date: Wed, 16 Nov 2011 19:50:59 +0000 Subject: [PATCH] (bug 31535; bug 332) Properly truncate upload summaries (img_description) on the php side. Before it would get truncated when inserted into the 255 byte db field. This is bad as it can leave dangling multi-byte unicode sequences, additionally, since directly after upload we appearently cache the file object, this can result in the comment in the file history table being super-huge. This also removes the parenthesis in the comment field in the table. Its a table, we don't need to use () to visually separate it from the rest of the page content. This commit also causes '...' (or the i18n'ed equivalent) to be appended when truncated a comment. Previously that didn't happen. Also I changed it to use a method that doesn't check for '*' as a special value to mean no description. I looked at the toolserver db, and even uploads to enwikipedia from 2002 don't use '*' as special no-description marker. --- RELEASE-NOTES-1.19 | 1 + includes/ImagePage.php | 2 +- includes/filerepo/LocalFile.php | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES-1.19 b/RELEASE-NOTES-1.19 index 9a9a640ee4..bcec1a4407 100644 --- a/RELEASE-NOTES-1.19 +++ b/RELEASE-NOTES-1.19 @@ -137,6 +137,7 @@ production. files (like audio files) * (bug 32168) Add wfAssembleUrl for use in wfExpandUrl * (bug 32168) fixed - wfExpandUrl expands dot segments now +* (bug 31535) Upload comments now truncated properly, and don't have brackets === API changes in 1.19 === * (bug 19838) siprop=interwikimap can now use the interwiki cache. diff --git a/includes/ImagePage.php b/includes/ImagePage.php index 034722ba60..4a35920cc0 100644 --- a/includes/ImagePage.php +++ b/includes/ImagePage.php @@ -1058,7 +1058,7 @@ class ImageHistoryList { if ( $file->isDeleted( File::DELETED_COMMENT ) ) { $row .= '' . wfMsgHtml( 'rev-deleted-comment' ) . ''; } else { - $row .= '' . Linker::commentBlock( $description, $this->title ) . ''; + $row .= '' . Linker::formatComment( $description, $this->title ) . ''; } $rowClass = null; diff --git a/includes/filerepo/LocalFile.php b/includes/filerepo/LocalFile.php index 8b66f81215..3a8aa58349 100644 --- a/includes/filerepo/LocalFile.php +++ b/includes/filerepo/LocalFile.php @@ -893,6 +893,11 @@ class LocalFile extends File { * archive name, or an empty string if it was a new file. */ function upload( $srcPath, $comment, $pageText, $flags = 0, $props = false, $timestamp = false, $user = null ) { + global $wgContLang; + // truncate nicely or the DB will do it for us + // non-nicely (dangling multi-byte chars, non-truncated + // version in cache). + $comment = $wgContLang->truncate( $comment, 255 ); $this->lock(); $status = $this->publish( $srcPath, $flags ); -- 2.20.1