101 lines
2.1 KiB
Perl
101 lines
2.1 KiB
Perl
package Koha::Object::Mixin::AdditionalFields;
|
|
|
|
use Modern::Perl;
|
|
|
|
=head1 NAME
|
|
|
|
Koha::Object::Mixin::AdditionalFields
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
package Koha::Foo;
|
|
|
|
use parent qw( Koha::Object Koha::Object::Mixin::AdditionalFields );
|
|
|
|
sub _type { 'Foo' }
|
|
|
|
|
|
package main;
|
|
|
|
use Koha::Foo;
|
|
|
|
Koha::Foos->find($id)->set_additional_fields(...);
|
|
|
|
=head1 API
|
|
|
|
=head2 Public methods
|
|
|
|
=head3 set_additional_fields
|
|
|
|
$foo->set_additional_fields([
|
|
{
|
|
id => 1,
|
|
value => 'foo',
|
|
},
|
|
{
|
|
id => 2,
|
|
value => 'bar',
|
|
}
|
|
]);
|
|
|
|
=cut
|
|
|
|
sub set_additional_fields {
|
|
my ($self, $additional_fields) = @_;
|
|
|
|
my $rs = Koha::Database->new->schema->resultset('AdditionalFieldValue');
|
|
|
|
foreach my $additional_field (@$additional_fields) {
|
|
my $field_value = $rs->find_or_new({
|
|
field_id => $additional_field->{id},
|
|
record_id => $self->id,
|
|
});
|
|
my $value = $additional_field->{value};
|
|
if (defined $value) {
|
|
$field_value->set_columns({ value => $value })->update_or_insert;
|
|
} elsif ($field_value->in_storage) {
|
|
$field_value->delete;
|
|
}
|
|
}
|
|
}
|
|
|
|
=head3 additional_field_values
|
|
|
|
Returns additional field values
|
|
|
|
my @values = $foo->additional_field_values;
|
|
|
|
=cut
|
|
|
|
sub additional_field_values {
|
|
my ($self) = @_;
|
|
|
|
return $self->_result->additional_field_values;
|
|
}
|
|
|
|
=head1 AUTHOR
|
|
|
|
Koha Development Team <http://koha-community.org/>
|
|
|
|
=head1 COPYRIGHT AND LICENSE
|
|
|
|
Copyright 2018 BibLibre
|
|
|
|
This file is part of Koha.
|
|
|
|
Koha is free software; you can redistribute it and/or modify it under the
|
|
terms of the GNU General Public License as published by the Free Software
|
|
Foundation; either version 3 of the License, or (at your option) any later
|
|
version.
|
|
|
|
Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
=cut
|
|
|
|
1;
|