View | Details | Raw Unified | Return to bug 23893
Collapse All | Expand All

(-)a/Koha/Object.pm (-33 / +58 lines)
Lines 446-451 sub from_api_mapping { Link Here
446
    return $self->{_from_api_mapping};
446
    return $self->{_from_api_mapping};
447
}
447
}
448
448
449
=head3 new_from_api
450
451
    my $object = Koha::Object->new_from_api;
452
    my $object = Koha::Object->new_from_api( $attrs );
453
454
Creates a new object, mapping the API attribute names to the ones on the DB schema.
455
456
=cut
457
458
sub new_from_api {
459
    my ( $class, $params ) = @_;
460
461
    my $self = $class->new;
462
    return $self->set_from_api( $params );
463
}
464
465
=head3 set_from_api
466
467
    my $object = Koha::Object->new(...);
468
    $object->set_from_api( $attrs )
469
470
Sets the object's attributes mapping API attribute names to the ones on the DB schema.
471
472
=cut
473
474
sub set_from_api {
475
    my ( $self, $from_api_params ) = @_;
476
477
    return $self->set( $self->attributes_from_api( $from_api_params ) );
478
}
479
480
=head3 attributes_from_api
481
482
    my $attributes = attributes_from_api( $params );
483
484
Returns the passed params, converted from API naming into the model.
485
486
=cut
487
488
sub attributes_from_api {
489
    my ( $self, $from_api_params ) = @_;
490
491
    my $from_api_mapping = $self->from_api_mapping;
492
493
    my $params;
494
495
    while (my ($key, $value) = each %{ $from_api_params } ) {
496
        if ( exists $from_api_mapping->{$key} ) {
497
            $params->{$from_api_mapping->{$key}} = $value;
498
        }
499
        else {
500
            $params->{$key} = $value;
501
        }
502
    }
503
504
    return $params;
505
}
506
449
=head3 $object->unblessed_all_relateds
507
=head3 $object->unblessed_all_relateds
450
508
451
my $everything_into_one_hashref = $object->unblessed_all_relateds
509
my $everything_into_one_hashref = $object->unblessed_all_relateds
Lines 558-595 sub AUTOLOAD { Link Here
558
    return $r;
616
    return $r;
559
}
617
}
560
618
561
=head3 attributes_from_api
562
563
    my $attributes = attributes_from_api( $params );
564
565
Returns the passed params, converted from API naming into the model.
566
567
=cut
568
569
sub attributes_from_api {
570
    my ( $self, $attributes ) = @_;
571
572
    my $mapping = $self->from_api_mapping;
573
574
    foreach my $attribute ( keys %{$mapping} ) {
575
        my $mapped_attribute = $mapping->{$attribute};
576
        if ( exists $attributes->{$attribute}
577
            && defined $mapped_attribute )
578
        {
579
            # key => !undef
580
            $attributes->{$mapped_attribute} = delete $attributes->{$attribute};
581
        }
582
        elsif ( exists $attributes->{$attribute}
583
            && !defined $mapped_attribute )
584
        {
585
            # key => undef / to be deleted
586
            delete $attributes->{$attribute};
587
        }
588
    }
589
590
    return $attributes;
591
}
592
593
=head3 _type
619
=head3 _type
594
620
595
This method must be defined in the child class. The value is the name of the DBIC resultset.
621
This method must be defined in the child class. The value is the name of the DBIC resultset.
596
- 

Return to bug 23893