|
Lines 26-31
use Scalar::Util qw( looks_like_number );
Link Here
|
| 26 |
use Try::Tiny; |
26 |
use Try::Tiny; |
| 27 |
|
27 |
|
| 28 |
use Koha::Database; |
28 |
use Koha::Database; |
|
|
29 |
use Koha::Exceptions; |
| 29 |
use Koha::Exceptions::Object; |
30 |
use Koha::Exceptions::Object; |
| 30 |
use Koha::DateUtils; |
31 |
use Koha::DateUtils; |
| 31 |
|
32 |
|
|
Lines 429-449
sub to_api {
Link Here
|
| 429 |
my $next = $embeds->{$curr}->{children}; |
430 |
my $next = $embeds->{$curr}->{children}; |
| 430 |
|
431 |
|
| 431 |
my $children = $self->$curr; |
432 |
my $children = $self->$curr; |
|
|
433 |
|
| 434 |
my $res; |
| 432 |
if ( ref $children eq 'ARRAY' ) { |
435 |
if ( ref $children eq 'ARRAY' ) { |
|
|
436 |
#when $self->$curr returns an array of Koha::Object |
| 433 |
my @list; |
437 |
my @list; |
| 434 |
my $pos = 0; |
|
|
| 435 |
foreach my $child (@$children) { |
438 |
foreach my $child (@$children) { |
| 436 |
my $res = $child->to_api({ embed => $next }); |
439 |
Koha::Exceptions::BadParameter->throw($curr." is not a valid embeddable option.") unless $child->can('to_api'); |
| 437 |
$res = { $json_object->{$curr}->[$pos], $res } |
440 |
my $r = $child->to_api({ embed => $next }); |
|
|
441 |
push @list, $r; |
| 442 |
} |
| 443 |
$res = \@list; |
| 444 |
} |
| 445 |
else { |
| 446 |
#when $self->$curr returns a single Koha::Object or Koha::Objects |
| 447 |
Koha::Exceptions::BadParameter->throw($curr." is not a valid embeddable option.") unless $children->can('to_api'); |
| 448 |
$res = $children->to_api({ embed => $next }); |
| 449 |
} |
| 450 |
|
| 451 |
if(ref $res eq 'ARRAY') { |
| 452 |
my @list; |
| 453 |
my $pos = 0; |
| 454 |
foreach my $r (@$res) { |
| 455 |
$r = { $json_object->{$curr}->[$pos], $r } |
| 438 |
if defined $json_object->{$curr} |
456 |
if defined $json_object->{$curr} |
| 439 |
&& defined $json_object->{$curr}->[$pos]; |
457 |
&& defined $json_object->{$curr}->[$pos]; |
| 440 |
push @list, $res; |
458 |
push @list, $r; |
| 441 |
$pos++; |
459 |
$pos++; |
| 442 |
} |
460 |
} |
| 443 |
$json_object->{$curr} = \@list; |
461 |
$json_object->{$curr} = \@list; |
| 444 |
} |
462 |
} else { |
| 445 |
else { |
|
|
| 446 |
my $res = $children->to_api({ embed => $next }); |
| 447 |
$res = { $json_object->{$curr}, $res } |
463 |
$res = { $json_object->{$curr}, $res } |
| 448 |
if defined $json_object->{$curr}; |
464 |
if defined $json_object->{$curr}; |
| 449 |
$json_object->{$curr} = $res; |
465 |
$json_object->{$curr} = $res; |
| 450 |
- |
|
|