X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FSessionFile.pm;h=dbed4154b9a8d153494802d2f52e9ae8ac538696;hb=abd4a0b007159d46da41dc6ed832acc3e85c9744;hp=12f498465b2d80223de6c33ec924ec212119e4ba;hpb=4344f4e30035852c6f28d78623511ad770010e08;p=kivitendo-erp.git diff --git a/SL/SessionFile.pm b/SL/SessionFile.pm index 12f498465..dbed4154b 100644 --- a/SL/SessionFile.pm +++ b/SL/SessionFile.pm @@ -5,7 +5,7 @@ use strict; use parent qw(Rose::Object); use Carp; -use File::Path qw(make_path remove_tree); +use File::Path qw(mkpath rmtree); use English qw(-no_match_vars); use IO::File; use POSIX qw(strftime); @@ -16,7 +16,7 @@ use Rose::Object::MakeMethods::Generic ); sub new { - my ($class, $file_name, $mode) = @_; + my ($class, $file_name, %params) = @_; my $self = $class->SUPER::new; @@ -24,7 +24,17 @@ sub new { $file_name =~ s:.*/::g; $file_name = "${path}/${file_name}"; - $self->fh(IO::File->new($file_name, $mode)) if $mode; + if ($params{mode}) { + my $mode = $params{mode}; + + if ($params{encoding}) { + $params{encoding} =~ s/[^a-z0-9\-]//gi; + $mode .= ':encoding(' . $params{encoding} . ')'; + } + + $self->fh(IO::File->new($file_name, $mode)); + } + $self->file_name($file_name); return $self; @@ -56,7 +66,7 @@ sub get_path { sub prepare_path { my $path = get_path(); return $path if -d $path; - make_path $path; + mkpath $path; die "Creating ${path} failed" unless -d $path; return $path; } @@ -65,7 +75,7 @@ sub destroy_session { my ($class, $session_id) = @_; $session_id =~ s/[^a-z0-9]//gi; - remove_tree "users/session_files/$session_id" if $session_id; + rmtree "users/session_files/$session_id" if $session_id; } 1; @@ -108,13 +118,16 @@ C. =over 4 -=item C +=item C Create a new instance. C<$file_name> is a relative file name (path components are stripped) to the session-specific temporary directory. -If C<$mode> is given then try to open the file as an instance of -C. C<$mode> is passed through to C. +If C<$params{mode}> is given then try to open the file as an instance +of C. C<${mode}> is passed through to C. + +If C<$params{encoding}> is given then the file is opened with the +appropriate encoding layer. =item C