Revert "get_webdav: Zeitstempel vor dem letzten . setzen"
authorJan Büren <jan@kivitendo.de>
Mon, 20 Dec 2021 08:18:17 +0000 (09:18 +0100)
committerJan Büren <jan@kivitendo.de>
Mon, 20 Dec 2021 08:24:12 +0000 (09:24 +0100)
This reverts commit 1a5f8c48c797b02bf12daaa7fda04b8d5347a6b3.

SL/File/Backend/Webdav.pm

index c457080..b1e48ed 100644 (file)
@@ -186,17 +186,18 @@ sub webdav_path {
   }
   $main::lxdebug->message(LXDebug->DEBUG2(), "file_name=" . $dbfile->file_name ." number=".$number);
 
+  my @fileparts = split(/_/, $dbfile->file_name);
+  my $number_ext = pop @fileparts;
+  my ($maynumber, $ext) = split(/\./, $number_ext, 2);
+  push @fileparts, $maynumber if $maynumber ne $number;
+
+  my $basename = join('_', @fileparts);
+
   my $path = File::Spec->catdir($self->get_rootdir, "webdav", $::auth->client->{id}, $type, $number);
   if (!-d $path) {
     File::Path::make_path($path, { chmod => 0770 });
   }
-  # simply add the timestring before the last .
-  # fails for .tar.gz but the number extraction algorithm failed for all
-  # '123 Storno zu 456' cases and doubled the name like:
-  # Rechnung_123_Storno_zu_456_202113104 Storno zu 456_20211123_113023
-  # TODO extension should be part of the File Model (filetype)
-  my ($filename, $ext) = split(/\.([^\.]+)$/, $dbfile->file_name);
-  my $fname = $filename . '_' . $dbfile->itime->strftime('%Y%m%d_%H%M%S');
+  my $fname = $basename . '_' . $number . '_' . $dbfile->itime->strftime('%Y%m%d_%H%M%S');
   $fname .= '.' . $ext if $ext;
 
   $main::lxdebug->message(LXDebug->DEBUG2(), "webdav path=" . $path . " filename=" . $fname);