Revision ca10be4b
Von Tamino Steinert vor 4 Monaten hinzugefügt
SL/File.pm | ||
---|---|---|
4 | 4 |
|
5 | 5 |
use parent qw(Rose::Object); |
6 | 6 |
|
7 |
use Carp; |
|
7 | 8 |
use SL::File::Backend; |
8 | 9 |
use SL::File::Object; |
9 | 10 |
use SL::DB; |
10 | 11 |
use SL::DB::History; |
11 | 12 |
use SL::DB::ShopImage; |
12 | 13 |
use SL::DB::File; |
14 |
use SL::DB::FileVersion; |
|
13 | 15 |
use SL::Helper::UserPreferences; |
14 | 16 |
use SL::Controller::Helper::ThumbnailCreator qw(file_probe_type); |
15 | 17 |
use SL::JSON; |
... | ... | |
22 | 24 |
|
23 | 25 |
sub get { |
24 | 26 |
my ($self, %params) = @_; |
25 |
die "no id or dbfile" unless $params{id} || $params{dbfile}; |
|
26 |
$params{dbfile} = SL::DB::Manager::File->get_first(query => [id => $params{id}]) if !$params{dbfile}; |
|
27 |
die 'not found' unless $params{dbfile}; |
|
28 |
$main::lxdebug->message(LXDebug->DEBUG2(), "object_id=".$params{dbfile}->object_id." object_type=".$params{dbfile}->object_type." dbfile=".$params{dbfile}); |
|
29 |
SL::File::Object->new(db_file => $params{dbfile}, id => $params{dbfile}->id, loaded => 1); |
|
27 |
croak "no id or dbfile or guid" unless $params{id} || $params{dbfile} || $params{guid}; |
|
28 |
croak "dbfile has to be of type SL::DB::File" |
|
29 |
if defined $params{dbfile} && ref $params{dbfile} ne 'SL::DB::File'; |
|
30 |
|
|
31 |
my $dbfile; |
|
32 |
my $file_version; |
|
33 |
if (defined $params{guid}) { |
|
34 |
$file_version = SL::DB::Manager::FileVersion->get_first(where => [guid => $params{guid}]); |
|
35 |
die 'file version with guid not found: ' . $params{guid} unless $file_version; |
|
36 |
$dbfile = $file_version->file; |
|
37 |
if (defined $params{dbfile}) { |
|
38 |
croak "dbfile doesn't match guid" if $dbfile->id != $params{dbfile}->id; |
|
39 |
} |
|
40 |
if (defined $params{id}) { |
|
41 |
croak "id doesn't match guid" if $dbfile->id != $params{id}; |
|
42 |
} |
|
43 |
} elsif (defined $params{dbfile}) { |
|
44 |
$dbfile = $params{dbfile}; |
|
45 |
if (defined $params{id}) { |
|
46 |
croak "id doesn't match dbfile id" if $dbfile->_id != $params{id}; |
|
47 |
} |
|
48 |
} elsif (defined $params{id}) { |
|
49 |
$dbfile = SL::DB::Manager::File->get_first(query => [id => $params{id}]); |
|
50 |
die 'file with id not found: ' . $params{id} unless $dbfile; |
|
51 |
} |
|
52 |
|
|
53 |
my %object_params = ( |
|
54 |
db_file => $dbfile, |
|
55 |
id => $dbfile->id, |
|
56 |
loaded => 1, |
|
57 |
); |
|
58 |
$object_params{file_version} = $file_version if $file_version; |
|
59 |
SL::File::Object->new(%object_params); |
|
30 | 60 |
} |
31 | 61 |
|
32 | 62 |
sub get_version_count { |
... | ... | |
75 | 105 |
my @file_versions = reverse @{$fileobj->loaded_db_file->file_versions_sorted}; |
76 | 106 |
my $latest_file_version = shift @file_versions; |
77 | 107 |
$fileobj->version($latest_file_version->version); |
108 |
$fileobj->file_version($latest_file_version); |
|
78 | 109 |
push @versionobjs, $fileobj; |
79 | 110 |
foreach my $file_version (@file_versions) { |
80 | 111 |
my $clone = $fileobj->clone; |
81 | 112 |
$clone->version($file_version->version); |
113 |
$clone->file_version($file_version); |
|
82 | 114 |
$clone->newest(0); |
83 | 115 |
push @versionobjs, $clone; |
84 | 116 |
} |
... | ... | |
160 | 192 |
} |
161 | 193 |
if ($backend->delete(%params)) { |
162 | 194 |
my $do_delete = 0; |
163 |
if ( $params{last} || $params{version} || $params{all_but_notlast} ) { |
|
195 |
if ( $params{last} || $params{file_version} || $params{all_but_notlast} ) {
|
|
164 | 196 |
if ( $backend->get_version_count(%params) > 0 ) { |
165 | 197 |
$params{dbfile}->mtime(DateTime->now_local); |
166 | 198 |
$params{dbfile}->save; |
Auch abrufbar als: Unified diff
File: Löschen über die guid der Version