diff --git a/lib/MT/CMS/Asset.pm b/lib/MT/CMS/Asset.pm index b02fae969..4e754ebaa 100644 --- a/lib/MT/CMS/Asset.pm +++ b/lib/MT/CMS/Asset.pm @@ -1005,6 +1005,12 @@ sub _upload_file { my $basename = $q->param('file') || $q->param('fname'); $basename =~ s!\\!/!g; ## Change backslashes to forward slashes $basename =~ s!^.*/!!; ## Get rid of full directory paths + if (MT->config->EnableAssetAutoDirify) { + my $delimiter = MT->config->AssetAutoDirifyDelimiter; + my (@parts) = ($basename =~ m/([\w\W]+)(\.[\w]+)/g); + use MT::Util; + $basename = scalar(@parts) == 2 ? MT::Util::dirify($parts[0], $delimiter) . $parts[1] : MT::Util::dirify($basename, $delimiter); + } if ( $basename =~ m!\.\.|\0|\|! ) { return start_upload( $app, %param, diff --git a/lib/MT/Core.pm b/lib/MT/Core.pm index c7bf68a13..425f6c088 100644 --- a/lib/MT/Core.pm +++ b/lib/MT/Core.pm @@ -314,6 +314,8 @@ BEGIN { 'PluginPath' => { default => 'plugins', path => 1, type => 'ARRAY', }, 'EnableArchivePaths' => { default => 0, }, + 'EnableAssetAutoDirify' => { default => 1 }, + 'AssetAutoDirifyDelimiter' => { default => '-' }, 'SearchTemplatePath' => { default => 'search_templates', path => 1, }, 'ObjectDriver' => undef,