projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Lieferwertbericht um Filter nach Warengruppen erweitert
[kivitendo-erp.git]
/
SL
/
SessionFile.pm
diff --git
a/SL/SessionFile.pm
b/SL/SessionFile.pm
index
b9a5b76
..
8392640
100644
(file)
--- a/
SL/SessionFile.pm
+++ b/
SL/SessionFile.pm
@@
-13,23
+13,43
@@
use POSIX qw(strftime);
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(fh file_name) ],
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(fh file_name) ],
+ 'scalar --get_set_init' => [ qw(session_id) ],
);
sub new {
);
sub new {
- my ($class, $file_name,
$mode
) = @_;
+ my ($class, $file_name,
%params
) = @_;
my $self = $class->SUPER::new;
my $self = $class->SUPER::new;
+ if ($params{session_id}) {
+ $self->session_id($params{session_id})
+ }
+
my $path = $self->prepare_path;
my $path = $self->prepare_path;
- $file_name =~ s
:.*/::
g;
+ $file_name =~ s
{.*/}{}
g;
$file_name = "${path}/${file_name}";
$file_name = "${path}/${file_name}";
- $self->fh(IO::File->new($file_name, $mode)) if $mode;
$self->file_name($file_name);
$self->file_name($file_name);
+ 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));
+ }
+
return $self;
}
return $self;
}
+sub open {
+ my ($self, $mode) = @_;
+ return $self->fh(IO::File->new($self->file_name, $mode));
+}
+
sub exists {
my ($self) = @_;
return -f $self->file_name;
sub exists {
my ($self) = @_;
return -f $self->file_name;
@@
-49,18
+69,22
@@
sub displayable_mtime {
}
sub get_path {
}
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 {
}
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;
}
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) = @_;
sub destroy_session {
my ($class, $session_id) = @_;
@@
-85,7
+109,7
@@
destroyed or expires
use SL::SessionFile;
# Create a session file named "customer.csv" (relative names only)
use SL::SessionFile;
# Create a session file named "customer.csv" (relative names only)
- my $sfile = SL::SessionFile->new(
"customer.csv", "w"
);
+ my $sfile = SL::SessionFile->new(
'customer.csv', mode => 'w'
);
$sfile->fh->print("col1;col2;col3\n" .
"value1;value2;value3\n");
$sfile->fh->close;
$sfile->fh->print("col1;col2;col3\n" .
"value1;value2;value3\n");
$sfile->fh->close;
@@
-108,13
+132,16
@@
C<users/session_files/SESSIONID>.
=over 4
=over 4
-=item C<new $file_name, [
$mode
]>
+=item C<new $file_name, [
%params
]>
Create a new instance. C<$file_name> is a relative file name (path
components are stripped) to the session-specific temporary directory.
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<IO::File>. C<$mode> is passed through to C<IO::File::new>.
+If C<$params{mode}> is given then try to open the file as an instance
+of C<IO::File>. C<${mode}> is passed through to C<IO::File::new>.
+
+If C<$params{encoding}> is given then the file is opened with the
+appropriate encoding layer.
=item C<fh>
=item C<fh>
@@
-126,6
+153,10
@@
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>.
it has been created for "customer.csv" then the value returned might
be C<users/session_files/e8789b98721347/customer.csv>.
+=item C<open [%params]>
+
+Opens the file_name given at creation with the given parameters.
+
=item C<exists>
Returns trueish if the file exists.
=item C<exists>
Returns trueish if the file exists.
@@
-149,7
+180,7
@@
C<22.01.2011 14:12:22>.
=item C<get_path>
Returns the name of the session-specific directory used for file
=item C<get_path>
Returns the name of the session-specific directory used for file
-storage relative to the
Lx-Office
installation folder.
+storage relative to the
kivitendo
installation folder.
=item C<prepare_path>
=item C<prepare_path>