Truncate block reason for whole multibyte characters
authorumherirrender <umherirrender_de.wp@web.de>
Mon, 28 Jul 2014 17:25:49 +0000 (19:25 +0200)
committerSiebrand <siebrand@kitano.nl>
Mon, 28 Jul 2014 17:37:56 +0000 (17:37 +0000)
This applies to Special:BlockList, or to the block message shown to the
user, or API results. Log is not effected, because it already truncates
on its own.

Change-Id: I0a8bae5f43fd1604034d65e96c9461a9f83c0b0a

includes/specials/SpecialBlock.php

index f8b2e8d..3297c17 100644 (file)
@@ -600,7 +600,7 @@ class SpecialBlock extends FormSpecialPage {
         * @return bool|string
         */
        public static function processForm( array $data, IContextSource $context ) {
-               global $wgBlockAllowsUTEdit, $wgHideUserContribLimit;
+               global $wgBlockAllowsUTEdit, $wgHideUserContribLimit, $wgContLang;
 
                $performer = $context->getUser();
 
@@ -687,7 +687,8 @@ class SpecialBlock extends FormSpecialPage {
                $block = new Block();
                $block->setTarget( $target );
                $block->setBlocker( $performer );
-               $block->mReason = $data['Reason'][0];
+               # Truncate reason for whole multibyte characters
+               $block->mReason = $wgContLang->truncate( $data['Reason'][0], 255 );
                $block->mExpiry = self::parseExpiryInput( $data['Expiry'] );
                $block->prevents( 'createaccount', $data['CreateAccount'] );
                $block->prevents( 'editownusertalk', ( !$wgBlockAllowsUTEdit || $data['DisableUTEdit'] ) );