Entry

WordPressのUploadPlusプラグインでprefixが重複する事象を直す

WordPressUploadPlusプラグイン(現バージョン:3.2.1)は、ファイルアップロード時のファイルに対し、

  • プレフィックスの追加(固定文字、日時等)
  • 大文字・小文字の変換
  • 文字変換

等を自動で行ってくれるプラグイン。ところがこのプラグインが、最近(とは言ってもここ数ヶ月)になって、以下のようにプレフィックスを2重で出力する事象が出るようになった。(下記画像の場合、本来”20130628_xnview.pngとなるところが、”20130628_20130628_xnview.png”となっている)

UploadPlus

検索してみたところ、以下のページを発見。

WordPress › Support » File name get Double when using Custom Prefix

この通りにソースコード”(WordPressインストールディレクトリ)/wp-content/plugins/uploadplus/inc/core.class.php”を変更する。

変更前

        /*    sanitize uploaded file name    */
        function upp_mangle_filename($file_name){	
            global $sep;
        	$ext = self::find_extension($file_name);

            $utf8 = get_option('uploadplus_utf8toascii');
        	if( $utf8[0] == "1" ):
                $file_name = self::_utf8_transliteration( $file_name );
        	endif;

            $file_name = self::_clean_global( $file_name );
            $file_name = self::_clean_filename( $ext, $file_name );
            $file_name = self::_clean_case( $file_name );
            $file_name = self::_add_prefix( $file_name );

        	return $file_name;
        }

変更後

        /*    sanitize uploaded file name    */
        function upp_mangle_filename($file_name){	
            if(isset($GLOBALS['UPLOAD-PLUS-NAMES'][$file_name])) return $file_name;

            global $sep;
        	$ext = self::find_extension($file_name);

            $utf8 = get_option('uploadplus_utf8toascii');
        	if( $utf8[0] == "1" ):
                $file_name = self::_utf8_transliteration( $file_name );
        	endif;

            $file_name = self::_clean_global( $file_name );
            $file_name = self::_clean_filename( $ext, $file_name );
            $file_name = self::_clean_case( $file_name );
            $file_name = self::_add_prefix( $file_name );
            
            $GLOBALS['UPLOAD-PLUS-NAMES'][$file_name] = 1;
        	return $file_name;
        }

差分は以下のようになる。

--- core.class.php.old	Mon Feb 25 23:59:33 2013
+++ core.class.php	Sun Jun 30 11:23:59 2013
@@ -115,0 +116,2 @@
+            if(isset($GLOBALS['UPLOAD-PLUS-NAMES'][$file_name])) return $file_name;
+
@@ -128 +130,2 @@
-
+            
+            $GLOBALS['UPLOAD-PLUS-NAMES'][$file_name] = 1;

これで、プレフィックスの重複が発生しなくなる。

Comments (0 件)

コメントを残す

メールアドレスが公開されることはありません。