Bugzilla – Attachment 156637 Details for
Bug 30708
Creation of a new 'Preservation' module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 30708: Add Koha Objects
Bug-30708-Add-Koha-Objects.patch (text/plain), 22.12 KB, created by
Marcel de Rooy
on 2023-10-07 06:39:51 UTC
(
hide
)
Description:
Bug 30708: Add Koha Objects
Filename:
MIME Type:
Creator:
Marcel de Rooy
Created:
2023-10-07 06:39:51 UTC
Size:
22.12 KB
patch
obsolete
>From b910bac4e08534e2e54533ac430e29bb69663fd1 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Fri, 7 Apr 2023 14:48:06 +0200 >Subject: [PATCH] Bug 30708: Add Koha Objects >Content-Type: text/plain; charset=utf-8 > >Sponsored-by: BULAC - http://www.bulac.fr/ > >Signed-off-by: BULAC - http://www.bulac.fr/ >Signed-off-by: Heather Hernandez <heather_hernandez@nps.gov> >Signed-off-by: Laurence Rault <laurence.rault@biblibre.com> > >Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >--- > Koha/Exceptions/Preservation.pm | 83 +++++++++++++ > Koha/Preservation/Processing.pm | 72 +++++++++++ > Koha/Preservation/Processing/Attribute.pm | 44 +++++++ > Koha/Preservation/Processing/Attributes.pm | 53 ++++++++ > Koha/Preservation/Processings.pm | 52 ++++++++ > Koha/Preservation/Train.pm | 133 +++++++++++++++++++++ > Koha/Preservation/Train/Item.pm | 101 ++++++++++++++++ > Koha/Preservation/Train/Item/Attribute.pm | 63 ++++++++++ > Koha/Preservation/Train/Item/Attributes.pm | 52 ++++++++ > Koha/Preservation/Train/Items.pm | 52 ++++++++ > Koha/Preservation/Trains.pm | 52 ++++++++ > 11 files changed, 757 insertions(+) > create mode 100644 Koha/Exceptions/Preservation.pm > create mode 100644 Koha/Preservation/Processing.pm > create mode 100644 Koha/Preservation/Processing/Attribute.pm > create mode 100644 Koha/Preservation/Processing/Attributes.pm > create mode 100644 Koha/Preservation/Processings.pm > create mode 100644 Koha/Preservation/Train.pm > create mode 100644 Koha/Preservation/Train/Item.pm > create mode 100644 Koha/Preservation/Train/Item/Attribute.pm > create mode 100644 Koha/Preservation/Train/Item/Attributes.pm > create mode 100644 Koha/Preservation/Train/Items.pm > create mode 100644 Koha/Preservation/Trains.pm > >diff --git a/Koha/Exceptions/Preservation.pm b/Koha/Exceptions/Preservation.pm >new file mode 100644 >index 0000000000..332a76536a >--- /dev/null >+++ b/Koha/Exceptions/Preservation.pm >@@ -0,0 +1,83 @@ >+package Koha::Exceptions::Preservation; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Exception; >+ >+use Exception::Class ( >+ >+ 'Koha::Exceptions::Preservation' => { >+ isa => 'Koha::Exception', >+ }, >+ 'Koha::Exceptions::Preservation::MissingSettings' => { >+ isa => 'Koha::Exceptions::Preservation', >+ description => "Missing configuration settings", >+ fields => ['parameter'], >+ }, >+ 'Koha::Exceptions::Preservation::ItemAlreadyInTrain' => { >+ isa => 'Koha::Exceptions::Preservation', >+ description => "Cannot add item to waiting list, it is already in a non-received train", >+ }, >+ 'Koha::Exceptions::Preservation::ItemNotInWaitingList' => { >+ isa => 'Koha::Exceptions::Preservation', >+ description => "Cannot add item to train, it is not in the waiting list", >+ }, >+ 'Koha::Exceptions::Preservation::ItemNotFound' => { >+ isa => 'Koha::Exceptions::Preservation', >+ description => "Cannot add item to train, the item does not exist", >+ }, >+); >+ >+sub full_message { >+ my $self = shift; >+ >+ my $msg = $self->message; >+ >+ unless ( $msg ) { >+ if ( $self->isa('Koha::Exceptions::Preservation::MissingSettings') ) { >+ $msg = sprintf("The following parameter settings is required: %s", $self->parameter ); >+ } >+ } >+ >+ return $msg; >+} >+ >+=head1 NAME >+ >+Koha::Exceptions::Preservation - Exception class for the preservation module >+ >+=head1 Exceptions >+ >+=head2 Koha::Exceptions::Preservation >+ >+Generic Preservation exception >+ >+=head2 Koha::Exceptions::Preservation::MissingSettings >+ >+Exception to be used when the preservation module is not configured correctly >+and a setting is missing >+ >+=head1 Class methods >+ >+=head2 full_message >+ >+Overloaded method for exception stringifying. >+ >+=cut >+ >+1; >diff --git a/Koha/Preservation/Processing.pm b/Koha/Preservation/Processing.pm >new file mode 100644 >index 0000000000..ee21b727b2 >--- /dev/null >+++ b/Koha/Preservation/Processing.pm >@@ -0,0 +1,72 @@ >+package Koha::Preservation::Processing; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Database; >+ >+use base qw(Koha::Object); >+ >+use Koha::Preservation::Processing::Attributes; >+ >+=head1 NAME >+ >+Koha::Preservation::Processing - Koha Processing Object class >+ >+=head1 API >+ >+=head2 Class methods >+ >+=cut >+ >+=head3 attributes >+ >+Set or return the attributes for this processing >+ >+=cut >+ >+sub attributes { >+ my ( $self, $attributes ) = @_; >+ >+ if ( $attributes ) { >+ my $schema = $self->_result->result_source->schema; >+ $schema->txn_do( >+ sub { >+ $self->attributes->delete; >+ >+ for my $attribute (@$attributes) { >+ $self->_result->add_to_preservation_processing_attributes($attribute); >+ } >+ } >+ ); >+ } >+ >+ my $attributes_rs = $self->_result->preservation_processing_attributes; >+ return Koha::Preservation::Processing::Attributes->_new_from_dbic($attributes_rs); >+} >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'PreservationProcessing'; >+} >+ >+1; >diff --git a/Koha/Preservation/Processing/Attribute.pm b/Koha/Preservation/Processing/Attribute.pm >new file mode 100644 >index 0000000000..07ca2f7f8c >--- /dev/null >+++ b/Koha/Preservation/Processing/Attribute.pm >@@ -0,0 +1,44 @@ >+package Koha::Preservation::Processing::Attribute; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Database; >+ >+use base qw(Koha::Object); >+ >+=head1 NAME >+ >+Koha::Preservation::Processing::Attribute - Koha Processing Attribute Object class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'PreservationProcessingAttribute'; >+} >+ >+1; >diff --git a/Koha/Preservation/Processing/Attributes.pm b/Koha/Preservation/Processing/Attributes.pm >new file mode 100644 >index 0000000000..01c29631e5 >--- /dev/null >+++ b/Koha/Preservation/Processing/Attributes.pm >@@ -0,0 +1,53 @@ >+package Koha::Preservation::Processing::Attributes; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+ >+use Koha::Database; >+ >+use Koha::Preservation::Processing::Attribute; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Preservation::Processing::Attributes - Koha Processing Attribute Object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub _type { >+ return 'PreservationProcessingAttribute'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Preservation::Processing::Attribute'; >+} >+ >+1; >diff --git a/Koha/Preservation/Processings.pm b/Koha/Preservation/Processings.pm >new file mode 100644 >index 0000000000..0bcc324215 >--- /dev/null >+++ b/Koha/Preservation/Processings.pm >@@ -0,0 +1,52 @@ >+package Koha::Preservation::Processings; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Database; >+ >+use Koha::Preservation::Processing; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Preservation::Processings - Koha Processing Object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub _type { >+ return 'PreservationProcessing'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Preservation::Processing'; >+} >+ >+1; >diff --git a/Koha/Preservation/Train.pm b/Koha/Preservation/Train.pm >new file mode 100644 >index 0000000000..f52cb5c15a >--- /dev/null >+++ b/Koha/Preservation/Train.pm >@@ -0,0 +1,133 @@ >+package Koha::Preservation::Train; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use JSON qw( to_json ); >+use Try::Tiny; >+ >+use Koha::Database; >+ >+use base qw(Koha::Object); >+ >+use Koha::Preservation::Processings; >+use Koha::Preservation::Train::Items; >+ >+use Koha::Exceptions::Preservation; >+ >+=head1 NAME >+ >+Koha::Preservation::Train - Koha Train Object class >+ >+=head1 API >+ >+=head2 Class methods >+ >+=cut >+ >+=head3 default_processing >+ >+Return the default processing object for this train >+ >+=cut >+ >+sub default_processing { >+ my ( $self ) = @_; >+ my $rs = $self->_result->default_processing; >+ return unless $rs; >+ return Koha::Preservation::Processing->_new_from_dbic($rs); >+} >+ >+=head3 add_item >+ >+Add item to this train >+ >+my $train_item = $train->add_item({item_id => $itemnumber, processing_id => $processing_id}); >+my $train_item = $train->add_item({barcode => $barcode, processing_id => $processing_id}); >+ >+=cut >+ >+sub add_item { >+ my ( $self, $train_item ) = @_; >+ >+ my $not_for_loan = C4::Context->preference('PreservationNotForLoanWaitingListIn'); >+ >+ my $key = exists $train_item->{item_id} ? 'itemnumber' : 'barcode'; >+ my $item = Koha::Items->find( { $key => $train_item->{item_id} || $train_item->{barcode} } ); >+ Koha::Exceptions::Preservation::ItemNotFound->throw unless $item; >+ Koha::Exceptions::Preservation::ItemNotInWaitingList->throw if $item->notforloan != $not_for_loan; >+ >+ my $train_item_rs = $self->_result->add_to_preservation_trains_items( >+ { >+ item_id => $item->itemnumber, >+ processing_id => $train_item->{processing_id} || $self->default_processing_id, >+ added_on => \'NOW()', >+ } >+ ); >+ $item->notforloan( $self->not_for_loan )->store; >+ return Koha::Preservation::Train::Item->_new_from_dbic($train_item_rs); >+} >+ >+=head3 add_items >+ >+my $train_items = $train->add_items([$item_1, $item_2]); >+ >+Add items in batch. >+ >+=cut >+ >+sub add_items { >+ my ( $self, $train_items ) = @_; >+ my @added_items; >+ for my $train_item (@$train_items) { >+ try { >+ push @added_items, $self->add_item($train_item); >+ } catch { >+ >+ # FIXME Do we rollback and raise an error or just skip it? >+ # FIXME See status code 207 partial success >+ warn "Item not added to train: " . $_; >+ }; >+ } >+ return Koha::Preservation::Train::Items->search( { train_item_id => [ map { $_->train_item_id } @added_items ] } ); >+} >+ >+=head3 items >+ >+my $items = $train->items; >+ >+Return the items in this train. >+ >+=cut >+ >+sub items { >+ my ( $self ) = @_; >+ my $items_rs = $self->_result->preservation_trains_items; >+ return Koha::Preservation::Train::Items->_new_from_dbic($items_rs) >+} >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'PreservationTrain'; >+} >+ >+1; >diff --git a/Koha/Preservation/Train/Item.pm b/Koha/Preservation/Train/Item.pm >new file mode 100644 >index 0000000000..39cab4356a >--- /dev/null >+++ b/Koha/Preservation/Train/Item.pm >@@ -0,0 +1,101 @@ >+package Koha::Preservation::Train::Item; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use JSON qw( to_json ); >+use Try::Tiny; >+ >+use Koha::Database; >+ >+use base qw(Koha::Object); >+ >+use Koha::Items; >+use Koha::Preservation::Processings; >+use Koha::Preservation::Train::Item::Attributes; >+ >+=head1 NAME >+ >+Koha::Preservation::Train::Item - Koha Train::Item Object class >+ >+=head1 API >+ >+=head2 Class methods >+ >+=cut >+ >+=head3 processing >+ >+Return the processing object for this item >+ >+=cut >+ >+sub processing { >+ my ( $self ) = @_; >+ my $rs = $self->_result->processing; # FIXME Should we return train's default processing if there is no specific? >+ return Koha::Preservation::Processing->_new_from_dbic($rs); >+} >+ >+=head3 catalogue_item >+ >+Return the catalogue item object for this train item >+ >+=cut >+ >+sub catalogue_item { >+ my ( $self ) = @_; >+ my $item_rs = $self->_result->item; >+ return Koha::Item->_new_from_dbic($item_rs); >+} >+ >+=head3 attributes >+ >+Getter and setter for the attributes >+ >+=cut >+ >+sub attributes { >+ my ( $self, $attributes ) = @_; >+ >+ if ( $attributes ) { >+ my $schema = $self->_result->result_source->schema; >+ $schema->txn_do( >+ sub { >+ $self->attributes->delete; >+ >+ for my $attribute (@$attributes) { >+ $self->_result->add_to_preservation_processing_attributes_items($attribute); >+ } >+ } >+ ); >+ >+ } >+ my $attributes_rs = $self->_result->preservation_processing_attributes_items; >+ return Koha::Preservation::Train::Item::Attributes->_new_from_dbic($attributes_rs); >+} >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'PreservationTrainsItem'; >+} >+ >+1; >diff --git a/Koha/Preservation/Train/Item/Attribute.pm b/Koha/Preservation/Train/Item/Attribute.pm >new file mode 100644 >index 0000000000..b99b84e6c8 >--- /dev/null >+++ b/Koha/Preservation/Train/Item/Attribute.pm >@@ -0,0 +1,63 @@ >+package Koha::Preservation::Train::Item::Attribute; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use JSON qw( to_json ); >+use Try::Tiny; >+ >+use Koha::Database; >+ >+use base qw(Koha::Object); >+ >+use Koha::Preservation::Processing::Attributes; >+ >+=head1 NAME >+ >+Koha::Preservation::Train::Item::Attribute - Koha Train::Item::Attribute Object class >+ >+=head1 API >+ >+=head2 Class methods >+ >+=cut >+ >+=head3 processing_attribute >+ >+my $processing_attribute = $attribute->processing_attribute; >+ >+Return the Koha::Preservation::Processing::Attribute object >+ >+=cut >+ >+sub processing_attribute { >+ my ( $self ) = @_; >+ my $processing_attribute_rs = $self->_result->processing_attribute; >+ return Koha::Preservation::Processing::Attribute->_new_from_dbic($processing_attribute_rs) >+} >+ >+=head2 Internal methods >+ >+=head3 _type >+ >+=cut >+ >+sub _type { >+ return 'PreservationProcessingAttributesItem'; >+} >+ >+1; >diff --git a/Koha/Preservation/Train/Item/Attributes.pm b/Koha/Preservation/Train/Item/Attributes.pm >new file mode 100644 >index 0000000000..42a00e4c5c >--- /dev/null >+++ b/Koha/Preservation/Train/Item/Attributes.pm >@@ -0,0 +1,52 @@ >+package Koha::Preservation::Train::Item::Attributes; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Database; >+ >+use Koha::Preservation::Train::Item::Attribute; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Preservation::Train::Item::Attributes - Koha Train::Item::Attribute Object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub _type { >+ return 'PreservationProcessingAttributesItem'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Preservation::Train::Item::Attribute'; >+} >+ >+1; >diff --git a/Koha/Preservation/Train/Items.pm b/Koha/Preservation/Train/Items.pm >new file mode 100644 >index 0000000000..3755e3065b >--- /dev/null >+++ b/Koha/Preservation/Train/Items.pm >@@ -0,0 +1,52 @@ >+package Koha::Preservation::Train::Items; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Database; >+ >+use Koha::Preservation::Train::Item; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Preservation::Train::Items - Koha Train::Item Object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub _type { >+ return 'PreservationTrainsItem'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Preservation::Train::Item'; >+} >+ >+1; >diff --git a/Koha/Preservation/Trains.pm b/Koha/Preservation/Trains.pm >new file mode 100644 >index 0000000000..f25f16bb59 >--- /dev/null >+++ b/Koha/Preservation/Trains.pm >@@ -0,0 +1,52 @@ >+package Koha::Preservation::Trains; >+ >+# 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>. >+ >+use Modern::Perl; >+ >+use Koha::Database; >+ >+use Koha::Preservation::Train; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Preservation::Trains - Koha Train Object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub _type { >+ return 'PreservationTrain'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Preservation::Train'; >+} >+ >+1; >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 30708
:
134715
|
134716
|
134732
|
134733
|
134734
|
134736
|
134737
|
134738
|
134782
|
134783
|
134784
|
134785
|
152939
|
152940
|
152941
|
152942
|
152943
|
152944
|
152945
|
152946
|
152947
|
152948
|
152949
|
152950
|
152951
|
152952
|
152953
|
152954
|
152955
|
152956
|
152957
|
152958
|
152959
|
152960
|
152961
|
152962
|
152963
|
152964
|
152965
|
152966
|
152967
|
152968
|
152969
|
152970
|
153102
|
153576
|
154167
|
154168
|
154169
|
154170
|
154171
|
154172
|
154173
|
154174
|
154175
|
154176
|
154177
|
154178
|
154179
|
154180
|
154181
|
154182
|
154183
|
154184
|
154185
|
154186
|
154187
|
154188
|
154189
|
154190
|
154191
|
154192
|
154193
|
154194
|
154195
|
154196
|
154197
|
154198
|
154199
|
154200
|
154201
|
154202
|
154203
|
156592
|
156596
|
156597
|
156636
| 156637 |
156638
|
156639
|
156640
|
156641
|
156642
|
156643
|
156644
|
156645
|
156646
|
156647
|
156648
|
156649
|
156650
|
156651
|
156652
|
156653
|
156654
|
156655
|
156656
|
156657
|
156658
|
156659
|
156660
|
156661
|
156662
|
156663
|
156664
|
156665
|
156666
|
156667
|
156668
|
156669
|
156670
|
156671
|
156672
|
156673
|
156674
|
156675
|
157502
|
157503
|
157506
|
157508
|
157512
|
157514
|
157557