Thiemo Mättig (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/261186

Change subject: Merge and expand RegexValidator for Commons media files
......................................................................

Merge and expand RegexValidator for Commons media files

1. I merged the two regular expressions into one that does the exact
same.

2. I added []{}| to the list of disallowed characters. See the
documentation of $wgLegalTitleChars in DefaultSettings.php. These
characters are never allowed in file names.

3. A single character extension is now disallowed.

The intent of these changes is to avoid possibly expensive API
requests, when they are introduced in I65507d6.

Change-Id: I488abe3c13cb899e66b3e555d13a1142fd0c8f78
---
M repo/includes/ValidatorBuilders.php
M repo/tests/phpunit/includes/ValidatorBuildersTest.php
2 files changed, 11 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/86/261186/1

diff --git a/repo/includes/ValidatorBuilders.php 
b/repo/includes/ValidatorBuilders.php
index 15fbf65..05cf3d8 100644
--- a/repo/includes/ValidatorBuilders.php
+++ b/repo/includes/ValidatorBuilders.php
@@ -154,9 +154,10 @@
                // so restrict file name to 240 bytes (see 
UploadBase::getTitle).
                $validators = $this->getCommonStringValidators( 240 );
 
-               $validators[] = new RegexValidator( '@[#/:\\\\]@u', true ); // 
no nasty chars
-               // Must contain a non-empty file name and a non-empty, 
character-only file extension.
-               $validators[] = new RegexValidator( '/.\.\w+$/u' );
+               // Must contain a non-empty file name with no nasty characters 
(see documentation of
+               // $wgLegalTitleChars as well as $wgIllegalFileChars). File 
name extensions with digits
+               // (e.g. ".jp2") are possible, as well as two characters (e.g. 
".ai").
+               $validators[] = new RegexValidator( 
'/^[^#\/:[\\\\\]{|}]+\.\w{2,}$/u' );
                //TODO: add a validator that checks the rules that MediaWiki 
imposes on filenames for uploads.
                //      $wgLegalTitleChars and $wgIllegalFileChars define this, 
but we need these for the *target* wiki.
                //TODO: add a validator that uses a foreign DB query to check 
whether the file actually exists on commons.
diff --git a/repo/tests/phpunit/includes/ValidatorBuildersTest.php 
b/repo/tests/phpunit/includes/ValidatorBuildersTest.php
index 66b328e..af924d4 100644
--- a/repo/tests/phpunit/includes/ValidatorBuildersTest.php
+++ b/repo/tests/phpunit/includes/ValidatorBuildersTest.php
@@ -88,7 +88,14 @@
                        array( 'commonsMedia', new StringValue( '' ), false, 
'empty string should be invalid' ),
                        array( 'commonsMedia', new StringValue( str_repeat( 
'x', 237 ) . '.jpg' ), false, 'name too long' ),
                        array( 'commonsMedia', new StringValue( 'Foo' ), false, 
'no file extension' ),
+                       array( 'commonsMedia', new StringValue( 'Foo.a' ), 
false, 'file extension to short' ),
                        array( 'commonsMedia', new StringValue( 'Foo.jpg' ), 
true, 'this should be good' ),
+                       array( 'commonsMedia', new StringValue( "a\na.jpg" ), 
false, 'illegal character: newline' ),
+                       array( 'commonsMedia', new StringValue( 'a[a.jpg' ), 
false, 'illegal character: square bracket' ),
+                       array( 'commonsMedia', new StringValue( 'a]a.jpg' ), 
false, 'illegal character: square bracket' ),
+                       array( 'commonsMedia', new StringValue( 'a{a.jpg' ), 
false, 'illegal character: curly bracket' ),
+                       array( 'commonsMedia', new StringValue( 'a}a.jpg' ), 
false, 'illegal character: curly bracket' ),
+                       array( 'commonsMedia', new StringValue( 'a|a.jpg' ), 
false, 'illegal character: pipe' ),
                        array( 'commonsMedia', new StringValue( 'Foo#bar.jpg' 
), false, 'illegal character: hash' ),
                        array( 'commonsMedia', new StringValue( 'Foo:bar.jpg' 
), false, 'illegal character: colon' ),
                        array( 'commonsMedia', new StringValue( 'Foo/bar.jpg' 
), false, 'illegal character: slash' ),

-- 
To view, visit https://gerrit.wikimedia.org/r/261186
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I488abe3c13cb899e66b3e555d13a1142fd0c8f78
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to