Martin Renvoize
293d9c66ce
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
112 lines
5.4 KiB
Perl
Executable file
112 lines
5.4 KiB
Perl
Executable file
use Modern::Perl;
|
|
|
|
return {
|
|
bug_number => "29002",
|
|
description => "Add bookings table",
|
|
up => sub {
|
|
my ($args) = @_;
|
|
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
|
|
|
# Handle cases of roombookings plugin existing
|
|
if ( TableExists('bookings') ) {
|
|
if ( column_exists( 'bookings', 'bookingid' ) ) {
|
|
my $old_rooms_table = 'booking_rooms';
|
|
my $old_rooms_index = 'bookingrooms_idx';
|
|
my $old_bookings_table = 'bookings';
|
|
my $old_bookings_index = 'bookingbookings_idx';
|
|
my $old_equipment_table = 'booking_equipment';
|
|
my $old_equipment_index = 'bookingequipment_idx';
|
|
my $old_roomequipment_table = 'booking_room_equipment';
|
|
my $old_roomequipment_index = 'bookingroomequipment_idx';
|
|
|
|
my $prefix = 'bws_rr_';
|
|
our $rooms_table = $prefix . $old_rooms_table;
|
|
our $rooms_index = $prefix . $old_rooms_index;
|
|
our $bookings_table = $prefix . $old_bookings_table;
|
|
our $bookings_index = $prefix . $old_bookings_index;
|
|
our $equipment_table = $prefix . $old_equipment_table;
|
|
our $equipment_index = $prefix . $old_equipment_index;
|
|
our $roomequipment_table = $prefix . $old_roomequipment_table;
|
|
our $roomequipment_index = $prefix . $old_roomequipment_index;
|
|
|
|
$dbh->do(
|
|
qq{
|
|
RENAME TABLE
|
|
$old_rooms_table TO $rooms_table,
|
|
$old_bookings_table TO $bookings_table,
|
|
$old_equipment_table TO $equipment_table,
|
|
$old_roomequipment_table TO $roomequipment_table,
|
|
}
|
|
);
|
|
$dbh->do("ALTER TABLE $rooms_table RENAME INDEX $old_rooms_index TO $rooms_index");
|
|
$dbh->do("ALTER TABLE $bookings_table RENAME INDEX $old_bookings_index TO $bookings_index");
|
|
$dbh->do("ALTER TABLE $equipment_table RENAME INDEX $old_equipment_index TO $equipment_index");
|
|
$dbh->do(
|
|
"ALTER TABLE $roomequipment_table RENAME INDEX $old_roomequipment_index TO $roomequipment_index");
|
|
|
|
say "Migrated room reservations plugin to it's own namespace";
|
|
say "You MUST upgrade to the latest room reservation plugin to continue using it";
|
|
$dbh->do(
|
|
"UPDATE plugin_data SET plugin_value = 0 WHERE plugin_class = 'Koha::Plugin::Com::MarywoodUniversity::RoomReservations' AND plugin_key = '__ENABLED__'"
|
|
);
|
|
|
|
say "Plugin disabled, please re-enable once you have upgraded it";
|
|
}
|
|
}
|
|
|
|
if ( !TableExists('bookings') ) {
|
|
$dbh->do(
|
|
q{
|
|
CREATE TABLE `bookings` (
|
|
`booking_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
|
`patron_id` int(11) NOT NULL DEFAULT 0 COMMENT 'foreign key from the borrowers table defining which patron this booking is for',
|
|
`biblio_id` int(11) NOT NULL DEFAULT 0 COMMENT 'foreign key from the biblio table defining which bib record this booking is on',
|
|
`item_id` int(11) DEFAULT NULL COMMENT 'foreign key from the items table defining the specific item the patron has placed a booking for',
|
|
`start_date` datetime DEFAULT NULL COMMENT 'the start date of the booking',
|
|
`end_date` datetime DEFAULT NULL COMMENT 'the end date of the booking',
|
|
PRIMARY KEY (`booking_id`),
|
|
KEY `patron_id` (`patron_id`),
|
|
KEY `biblio_id` (`biblio_id`),
|
|
KEY `item_id` (`item_id`),
|
|
CONSTRAINT `bookings_ibfk_1` FOREIGN KEY (`patron_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `bookings_ibfk_2` FOREIGN KEY (`biblio_id`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `bookings_ibfk_3` FOREIGN KEY (`item_id`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|
}
|
|
);
|
|
say $out "Added new table 'bookings'";
|
|
}
|
|
|
|
if ( !column_exists( 'items', 'bookable' ) ) {
|
|
$dbh->do(
|
|
q{
|
|
ALTER TABLE items ADD COLUMN `bookable` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'boolean value defining whether this this item is available for bookings or not' AFTER `barcode`
|
|
}
|
|
);
|
|
|
|
say $out "Added column 'items.bookable'";
|
|
}
|
|
|
|
if ( !column_exists( 'deleteditems', 'bookable' ) ) {
|
|
$dbh->do(
|
|
q{
|
|
ALTER TABLE deleteditems ADD COLUMN `bookable` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'boolean value defining whether this this item is available for bookings or not' AFTER `barcode`
|
|
}
|
|
);
|
|
|
|
say $out "Added column 'deleteditems.bookable'";
|
|
}
|
|
|
|
$dbh->do(
|
|
q{
|
|
INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (
|
|
1,
|
|
'manage_bookings',
|
|
'Manage item bookings'
|
|
);
|
|
}
|
|
);
|
|
say $out "Added new permission 'manage_bookings'";
|
|
|
|
},
|
|
};
|