epic-s6ts
[kivitendo-erp.git] / SL / SessionFile.pm
index f4c509c..8392640 100644 (file)
@@ -13,6 +13,7 @@ use POSIX qw(strftime);
 use Rose::Object::MakeMethods::Generic
 (
  scalar => [ qw(fh file_name) ],
+ 'scalar --get_set_init' => [ qw(session_id) ],
 );
 
 sub new {
@@ -20,8 +21,12 @@ sub new {
 
   my $self   = $class->SUPER::new;
 
+  if ($params{session_id}) {
+    $self->session_id($params{session_id})
+  }
+
   my $path   = $self->prepare_path;
-  $file_name =~ s:.*/::g;
+  $file_name =~ s{.*/}{}g;
   $file_name =  "${path}/${file_name}";
 
   $self->file_name($file_name);
@@ -64,18 +69,22 @@ sub displayable_mtime {
 }
 
 sub get_path {
-  die "No session ID" unless $::auth->get_session_id;
-  return "users/session_files/" . $::auth->get_session_id;
+  die "No session ID" unless $_[0]->session_id;
+  return "users/session_files/" . $_[0]->session_id;
 }
 
 sub prepare_path {
-  my $path = get_path();
+  my $path = $_[0]->get_path;
   return $path if -d $path;
   mkpath $path;
   die "Creating ${path} failed" unless -d $path;
   return $path;
 }
 
+sub init_session_id {
+  $::auth->get_session_id;
+}
+
 sub destroy_session {
   my ($class, $session_id) = @_;
 
@@ -144,7 +153,7 @@ Returns the full relative file name associated with this instance. If
 it has been created for "customer.csv" then the value returned might
 be C<users/session_files/e8789b98721347/customer.csv>.
 
-=item C<open%params]>
+=item C<open [%params]>
 
 Opens the file_name given at creation with the given parameters.