+use File::Path;
+use Time::HiRes qw(gettimeofday);
+
+use strict;
+
+sub _get_export_path {
+ $main::lxdebug->enter_sub();
+
+ my ($a, $b) = gettimeofday();
+ my $path = get_path_for_download_token("${a}-${b}-${$}");
+
+ mkpath($path) unless (-d $path);
+
+ $main::lxdebug->leave_sub();
+
+ return $path;
+}
+
+sub get_path_for_download_token {
+ $main::lxdebug->enter_sub();
+
+ my $token = shift;
+ my $path;
+
+ if ($token =~ m|^(\d+)-(\d+)-(\d+)$|) {
+ $path = "${main::userspath}/datev-export-${1}-${2}-${3}";
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return $path;
+}
+
+sub get_download_token_for_path {
+ $main::lxdebug->enter_sub();
+
+ my $path = shift;
+ my $token;
+
+ if ($path =~ m|.*datev-export-(\d+)-(\d+)-(\d+)/?$|) {
+ $token = "${1}-${2}-${3}";
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return $token;
+}
+
+sub clean_temporary_directories {
+ $main::lxdebug->enter_sub();
+
+ foreach my $path (glob "${main::userspath}/datev-export-*") {
+ next unless (-d $path);
+
+ my $mtime = (stat($path))[9];
+ next if ((time() - $mtime) < 8 * 60 * 60);
+
+ rmtree $path;
+ }
+
+ $main::lxdebug->leave_sub();
+}