CRM-Tabellen in die Blacklist aufnehmen
[kivitendo-erp.git] / SL / Common.pm
index 0f172dd..d626025 100644 (file)
@@ -19,7 +19,9 @@ use File::Copy ();
 use File::stat;
 use File::Slurp;
 use File::Spec;
+use List::MoreUtils qw(apply);
 use POSIX ();
+use Encode qw(decode);
 
 use SL::DBUtils;
 
@@ -354,7 +356,7 @@ sub webdav_folder {
     my $base_path = $ENV{'SCRIPT_NAME'};
     $base_path =~ s|[^/]+$||;
     if (opendir my $dir, $path) {
-      foreach my $file (sort { lc $a cmp lc $b } readdir $dir) {
+      foreach my $file (sort { lc $a cmp lc $b } map { decode("UTF-8", $_) } readdir $dir) {
         next if (($file eq '.') || ($file eq '..'));
 
         my $fname = $file;
@@ -607,14 +609,14 @@ sub copy_file_to_webdav_folder {
   foreach my $item (qw(tmpdir tmpfile type)){
     next if $form->{$item};
     $::lxdebug->message(LXDebug::WARN(), 'Missing parameter');
-    $::form->error($::locale->text("Missing parameter for webdav file copy"));
+    $::form->error($::locale->text("Missing parameter for WebDAV file copy"));
   }
 
   my ($webdav_folder, $document_name) =  get_webdav_folder($form);
 
   if (! $webdav_folder){
     $::lxdebug->leave_sub();
-    $::form->error($::locale->text("Cannot check correct webdav folder"));
+    $::form->error($::locale->text("Cannot check correct WebDAV folder"));
     return undef;
   }
 
@@ -633,8 +635,7 @@ sub copy_file_to_webdav_folder {
   $latest_file_name    = File::Spec->catfile($complete_path, $newest_name);
   my $filesize         = stat($latest_file_name)->size;
 
-  my ($ext)            = $form->{tmpfile} =~ /(\.[^.]+)$/;
-  my $current_file     = File::Spec->catfile($form->{tmpdir}, $form->{tmpfile});
+  my $current_file     = File::Spec->catfile($form->{tmpdir}, apply { s:.*/:: } $form->{tmpfile});
   my $current_filesize = -f $current_file ? stat($current_file)->size : 0;
 
   if ($current_filesize == $filesize) {