Fix for Bug [ 720843 ]: Replace invalid chars in uploaded file names instead of cutti...
authorJens Frank <jeluf@users.mediawiki.org>
Mon, 9 Aug 2004 21:37:27 +0000 (21:37 +0000)
committerJens Frank <jeluf@users.mediawiki.org>
Mon, 9 Aug 2004 21:37:27 +0000 (21:37 +0000)
includes/SpecialUpload.php

index f95717e..f9e5365 100644 (file)
@@ -92,9 +92,11 @@ class UploadForm {
 
                if ( "" != $this->mOname ) {
                        $basename = strrchr( $this->mOname, "/" );
+
                        if ( false === $basename ) { $basename = $this->mOname; }
                        else ( $basename = substr( $basename, 1 ) );
 
+
                        $ext = strrchr( $basename, "." );
                        if ( false === $ext ) { $ext = ""; }
                        else { $ext = substr( $ext, 1 ); }
@@ -106,6 +108,16 @@ class UploadForm {
                                $this->mainUploadForm( WfMsg( "minlength" ) );
                                return;
                        }
+
+                       $changed_name = false;
+                       $bn = preg_replace ( "/[^".Title::legalChars()."]/", '-', $basename );
+                       if ( 0 != strcmp( $bn, $basename ) )
+                       {
+                               $changed_name = true;
+                               $basename = $bn;
+                       }
+
+
                        $nt = Title::newFromText( $basename );
                        if( !$nt ) {
                                return $this->uploadError( wfMsg( "illegalfilename", htmlspecialchars( $basename ) ) );
@@ -126,7 +138,7 @@ class UploadForm {
                        
                        if ( ! $this->mIgnoreWarning ) {
                                $warning = '';
-                               if( 0 != strcmp( ucfirst( $basename ), $this->mUploadSaveName ) ) {
+                               if( $changed_name || 0 != strcmp( ucfirst( $basename ), $this->mUploadSaveName ) ) {
                                        $warning .=  '<li>'.wfMsg( "badfilename", htmlspecialchars( $this->mUploadSaveName ) ).'</li>';
                                }