X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/4f7837d76dff9243196ac8fb3c4099215e32c514..ba802064109d19f3488e5555ec04491681e37b51:/SL/DB/Helper/LinkedRecords.pm diff --git a/SL/DB/Helper/LinkedRecords.pm b/SL/DB/Helper/LinkedRecords.pm index b75597abb..182f3bdcc 100644 --- a/SL/DB/Helper/LinkedRecords.pm +++ b/SL/DB/Helper/LinkedRecords.pm @@ -148,14 +148,20 @@ sub _linked_records_implementation { ORDER BY ${wanted}_table, ${wanted}_id, depth ASC; my $links = selectall_hashref_query($::form, $::form->get_standard_dbh, $query, $self->id, $self->meta->table); + + return [] unless @$links; + my $link_objs = SL::DB::Manager::RecordLink->get_all(query => [ id => [ map { $_->{id} } @$links ] ]); my @objects = map { $get_objects->($_) } @$link_objs; if ($params{save_path}) { my %links_by_id = map { $_->{id} => $_ } @$links; for (@objects) { - $_->{_record_link_path} = $links_by_id{$_->{_record_link}->id}->{path}; - $_->{_record_link_depth} = $links_by_id{$_->{_record_link}->id}->{depth}; + my $link = $links_by_id{$_->{_record_link}->id}; + my $intermediate_links = SL::DB::Manager::RecordLink->get_all(query => [ id => $link->{path} ]); + $_->{_record_link_path} = $link->{path}; + $_->{_record_link_obj_path} = [ map { $get_objects->($_) } @$intermediate_links ]; + $_->{_record_link_depth} = $link->{depth}; } }