Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ca10be4b

Von Tamino Steinert vor 4 Monaten hinzugefügt

  • ID ca10be4bb31730f94daee8224833ed02b65944c4
  • Vorgänger 378828e9
  • Nachfolger 0534f27e

File: Löschen über die guid der Version

Unterschiede anzeigen:

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