X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCommon.pm;h=3d923780be76c53ad5547e7db6fc765a6c2a8855;hb=1e2a4a3836d317a33166b34f514ca6863e4824c1;hp=de1735ffed018cd49175014d5aa1132ba6faf6a3;hpb=54e4131e091831e00a861fe2c4f53e344b87ddca;p=kivitendo-erp.git diff --git a/SL/Common.pm b/SL/Common.pm index de1735ffe..3d923780b 100644 --- a/SL/Common.pm +++ b/SL/Common.pm @@ -8,6 +8,17 @@ package Common; +use Time::HiRes qw(gettimeofday); + +sub unique_id { + my ($a, $b) = gettimeofday(); + return "${a}-${b}-${$}"; +} + +sub tmpname { + return "/tmp/lx-office-tmp-" . unique_id(); +} + sub retrieve_parts { $main::lxdebug->enter_sub(); @@ -176,4 +187,80 @@ sub retrieve_vendor { return $vendors; } +sub mkdir_with_parents { + $main::lxdebug->enter_sub(); + + my ($full_path) = @_; + + my $path = ""; + + $full_path =~ s|/+|/|; + + foreach my $part (split(m|/|, $full_path)) { + $path .= "/" if ($path); + $path .= $part; + + die("Could not create directory '$path' because a file exists with " . + "the same name.\n") if (-f $path); + + if (! -d $path) { + mkdir($path, 0770) || die("Could not create the directory '$path'. " . + "OS error: $!\n"); + } + } + + $main::lxdebug->leave_sub(); +} + +sub webdav_folder { + $main::lxdebug->enter_sub(); + + my ($form) = @_; + + return $main::lxdebug->leave_sub() + unless ($main::webdav && $form->{id}); + + my ($path, $number); + + $form->{WEBDAV} = {}; + + if ($form->{type} eq "sales_quotation") { + ($path, $number) = ("angebote", $form->{quonumber}); + } elsif ($form->{type} eq "sales_order") { + ($path, $number) = ("bestellungen", $form->{ordnumber}); + } elsif ($form->{type} eq "request_quotation") { + ($path, $number) = ("anfragen", $form->{quonumber}); + } elsif ($form->{type} eq "purchase_order") { + ($path, $number) = ("lieferantenbestellungen", $form->{ordnumber}); + } elsif ($form->{type} eq "credit_note") { + ($path, $number) = ("gutschriften", $form->{invnumber}); + } elsif ($form->{vc} eq "customer") { + ($path, $number) = ("rechnungen", $form->{invnumber}); + } else { + ($path, $number) = ("einkaufsrechnungen", $form->{invnumber}); + } + + return $main::lxdebug->leave_sub() unless ($path && $number); + + $path = "webdav/${path}/${number}"; + + if (!-d $path) { + mkdir_with_parents($path); + + } else { + my $base_path = substr($ENV{'SCRIPT_NAME'}, 1); + $base_path =~ s|[^/]+$||; + + foreach my $file (<$path/*>) { + my $fname = $file; + $fname =~ s|.*/||; + $form->{WEBDAV}{$fname} = + ($ENV{"HTTPS"} ? "https://" : "http://") . + $ENV{'SERVER_NAME'} . "/" . $base_path . $file; + } + } + + $main::lxdebug->leave_sub(); +} + 1;