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”を変更する。

変更前

[php firstline=”114″]
/* 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;
}
[/php]

変更後

[php firstline=”114″]
/* 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;
}
[/php]

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

[diff]
— 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;
[/diff]

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


Posted by:

Posted At:

Modified At:

Category:

コメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください