X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=installer%2Fdata%2Fmysql%2Fupdatedatabase.pl;h=ec7005ec5428b2337b31a2cd0315995fd1675e84;hb=6b9ca28a377a197c1233875c8013c94a8a6ea811;hp=c6ddc230f27e06badf678d51305b4bc0bedb38d1;hpb=311afaaf91bb55443a76729c64833cd8343f5692;p=koha-ffzg.git diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index c6ddc230f2..ec7005ec54 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6,18 +6,18 @@ # Parts copyright Catalyst IT 2011 # Part of the Koha Library Software www.koha-community.org -# 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 2 of the License, or (at your option) any later -# version. +# 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. +# 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, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . # # Bugs/ToDo: @@ -37,6 +37,7 @@ use Getopt::Long; use C4::Context; use C4::Installer; use C4::Dates; +use Koha::Database; use MARC::Record; use MARC::File::XML ( BinaryEncoding => 'utf8' ); @@ -57,6 +58,8 @@ my ( $prefitem, # preference item in systempreferences table ); +my $schema = Koha::Database->new()->schema(); + my $silent; GetOptions( 's' =>\$silent @@ -3809,8 +3812,8 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { print "Upgrade to $DBversion done (3.2.0 general release)\n"; SetVersion ($DBversion); } - # This is the point where 3.2.x and master diverged, we can use $original_version to make sure we don't + # apply updates that have already been done $DBversion = "3.03.00.001"; @@ -4941,10 +4944,52 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $DBversion = "3.07.00.029"; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { - my $installer = C4::Installer->new(); - my $full_path = C4::Context->config('intranetdir') . "/installer/data/$installer->{dbms}/atomicupdate/oai_sets.sql"; - my $error = $installer->load_sql($full_path); - warn $error if $error; + $dbh->do(q{DROP TABLE IF EXISTS `oai_sets_descriptions`;}); + $dbh->do(q{DROP TABLE IF EXISTS `oai_sets_mappings`;}); + $dbh->do(q{DROP TABLE IF EXISTS `oai_sets_biblios`;}); + $dbh->do(q{DROP TABLE IF EXISTS `oai_sets`;}); + + $dbh->do(q{ + CREATE TABLE `oai_sets` ( + `id` int(11) NOT NULL auto_increment, + `spec` varchar(80) NOT NULL UNIQUE, + `name` varchar(80) NOT NULL, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + }); + + $dbh->do(q{ + CREATE TABLE `oai_sets_descriptions` ( + `set_id` int(11) NOT NULL, + `description` varchar(255) NOT NULL, + CONSTRAINT `oai_sets_descriptions_ibfk_1` FOREIGN KEY (`set_id`) REFERENCES `oai_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + }); + + $dbh->do(q{ + CREATE TABLE `oai_sets_mappings` ( + `set_id` int(11) NOT NULL, + `marcfield` char(3) NOT NULL, + `marcsubfield` char(1) NOT NULL, + `marcvalue` varchar(80) NOT NULL, + CONSTRAINT `oai_sets_mappings_ibfk_1` FOREIGN KEY (`set_id`) REFERENCES `oai_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + }); + + $dbh->do(q{ + CREATE TABLE `oai_sets_biblios` ( + `biblionumber` int(11) NOT NULL, + `set_id` int(11) NOT NULL, + PRIMARY KEY (`biblionumber`, `set_id`), + CONSTRAINT `oai_sets_biblios_ibfk_1` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `oai_sets_biblios_ibfk_2` FOREIGN KEY (`set_id`) REFERENCES `oai_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + }); + + $dbh->do(q{ + INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OAI-PMH:AutoUpdateSets','0','Automatically update OAI sets when a bibliographic record is created or updated','','YesNo'); + }); + print "Upgrade to $DBversion done (Atomic update for OAI-PMH sets management)\n"; SetVersion($DBversion); } @@ -9658,15 +9703,21 @@ if(CheckVersion($DBversion)) { $DBversion = "3.19.00.006"; if ( CheckVersion($DBversion) ) { - $dbh->do(q|SET foreign_key_checks = 0|);; - my @tables = $dbh->tables(); - for my $table ( @tables ) { - $dbh->do(qq|ALTER TABLE $table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci|); + $dbh->do(q|SET foreign_key_checks = 0|); + my $sth = $dbh->table_info( '','','','TABLE' ); + my ( $cat, $schema, $name, $type, $remarks ); + while ( ( $cat, $schema, $name, $type, $remarks ) = $sth->fetchrow_array ) { + my $table_sth = $dbh->prepare(qq|SHOW CREATE TABLE $name|); + $table_sth->execute; + my @table = $table_sth->fetchrow_array; + unless ( $table[1] =~ /COLLATE=utf8mb4_unicode_ci/ ) { #catches utf8mb4 collated tables + $dbh->do(qq|ALTER TABLE $name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci|); + } } $dbh->do(q|SET foreign_key_checks = 1|);; print "Upgrade to $DBversion done (Bug 11944 - Convert DB tables to utf8_unicode_ci)\n"; - SetVersion ($DBversion); + SetVersion($DBversion); } $DBversion = "3.19.00.007"; @@ -9732,7 +9783,7 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } -$DBversion = "3.19.00.XXX"; +$DBversion = "3.19.00.009"; if ( CheckVersion($DBversion) ) { $dbh->do(q| UPDATE suggestions s SET s.budgetid = NULL @@ -9752,6 +9803,401 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.19.00.010"; +if ( CheckVersion($DBversion) ) { + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('SessionRestrictionByIP','1','Check for Change in Remote IP address for Session Security. Disable when remote ip address changes frequently.','','YesNo')"); + print "Upgrade to $DBversion done (Bug 5511 - SessionRestrictionByIP)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.011"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + INSERT INTO userflags (bit, flag, flagdesc, defaulton) VALUES + (20, 'lists', 'Lists', 0) + |); + $dbh->do(q| + INSERT INTO permissions (module_bit, code, description) VALUES + (20, 'delete_public_lists', 'Delete public lists') + |); + print "Upgrade to $DBversion done (Bug 13417: Add permission to delete public lists)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.012"; +if(CheckVersion($DBversion)) { + $dbh->do(q{ + ALTER TABLE biblioitems MODIFY COLUMN marcxml longtext + }); + + $dbh->do(q{ + ALTER TABLE deletedbiblioitems MODIFY COLUMN marcxml longtext + }); + + print "Upgrade to $DBversion done (Bug 13523 - Remove NOT NULL restriction on field marcxml due to mysql STRICT_TRANS_TABLES)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.013"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + INSERT INTO permissions (module_bit, code, description) VALUES + (13, 'records_batchmod', 'Perform batch modification of records (biblios or authorities)') + |); + print "Upgrade to $DBversion done (Bug 11395: Add permission tools_records_batchmod)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.014"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + CREATE TABLE aqorder_users ( + ordernumber int(11) NOT NULL, + borrowernumber int(11) NOT NULL, + PRIMARY KEY (ordernumber, borrowernumber), + CONSTRAINT aqorder_users_ibfk_1 FOREIGN KEY (ordernumber) REFERENCES aqorders (ordernumber) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT aqorder_users_ibfk_2 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + |); + + $dbh->do(q| + INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type) + VALUES ('acquisition', 'ACQ_NOTIF_ON_RECEIV', '', 'Notification on receiving', 'Order received', 'Dear <> <>,\n\n The order <> (<>) has been received.\n\nYour library.', 'email') + |); + print "Upgrade to $DBversion done (Bug 12648: Add letter ACQ_NOTIF_ON_RECEIV )\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.015"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + ALTER TABLE search_history ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY(id); + |); + print "Upgrade to $DBversion done (Bug 11430 - Add primary key for search_history)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.016"; +if(CheckVersion($DBversion)) { + my @order_cancellation_reason = $dbh->selectrow_array("SELECT count(*) FROM authorised_values WHERE category='ORDER_CANCELLATION_REASON'"); + if ($order_cancellation_reason[0] == 0) { + $dbh->do(q{ + INSERT INTO authorised_values (category, authorised_value, lib) VALUES + ('ORDER_CANCELLATION_REASON', 0, 'No reason provided'), + ('ORDER_CANCELLATION_REASON', 1, 'Out of stock'), + ('ORDER_CANCELLATION_REASON', 2, 'Restocking') + }); + + my $already_existing_reasons = $dbh->selectcol_arrayref(q{ + SELECT DISTINCT( cancellationreason ) + FROM aqorders; + }, { Slice => {} }); + + my $update_orders_sth = $dbh->prepare(q{ + UPDATE aqorders + SET cancellationreason = ? + WHERE cancellationreason = ? + }); + + my $insert_av_sth = $dbh->prepare(q{ + INSERT INTO authorised_values (category, authorised_value, lib) VALUES + ('ORDER_CANCELLATION_REASON', ?, ?) + }); + my $i = 3; + for my $reason ( @$already_existing_reasons ) { + next unless $reason; + $insert_av_sth->execute( $i, $reason ); + $update_orders_sth->execute( $i, $reason ); + $i++; + } + print "Upgrade to $DBversion done (Bug 13380: Add the ORDER_CANCELLATION_REASON authorised value)\n"; + } + else { + print "Upgrade to $DBversion done (Bug 13380: ORDER_CANCELLATION_REASON authorised value already existed from earlier update!)\n"; + } + + SetVersion($DBversion); +} + + +$DBversion = '3.19.00.017'; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + # First create the column + $dbh->do("ALTER TABLE issuingrules ADD onshelfholds tinyint(1) default 0 NOT NULL"); + # Now update the column + if (C4::Context->preference("AllowOnShelfHolds")){ + # Pref is on, set allow for all rules + $dbh->do("UPDATE issuingrules SET onshelfholds=1"); + } else { + # If the preference is not set, leave off + $dbh->do("UPDATE issuingrules SET onshelfholds=0"); + } + # Remove from the systempreferences table + $dbh->do("DELETE FROM systempreferences WHERE variable = 'AllowOnShelfHolds'"); + + # First create the column + $dbh->do("ALTER TABLE issuingrules ADD opacitemholds char(1) DEFAULT 'N' NOT NULL"); + # Now update the column + my $opacitemholds = C4::Context->preference("OPACItemHolds") || ''; + if (lc ($opacitemholds) eq 'force') { + $opacitemholds = 'F'; + } + else { + $opacitemholds = $opacitemholds ? 'Y' : 'N'; + } + # Set allow for all rules + $dbh->do("UPDATE issuingrules SET opacitemholds='$opacitemholds'"); + + # Remove from the systempreferences table + $dbh->do("DELETE FROM systempreferences WHERE variable = 'OPACItemHolds'"); + + print "Upgrade to $DBversion done (Bug 5786 - Move AllowOnShelfHolds to circulation matrix; Move OPACItemHolds system preference to circulation matrix)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.018"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + UPDATE systempreferences set variable="OpacAdditionalStylesheet" WHERE variable="opaccolorstylesheet" + |); + print "Upgrade to $DBversion done (Bug 10328: Rename opaccolorstylesheet to OpacAdditionalStylesheet\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.019"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q{ + INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type) + VALUES('Coce','0', 'If on, enables cover retrieval from the configured Coce server', NULL, 'YesNo') + }); + $dbh->do(q{ + INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type) + VALUES('CoceHost', NULL, 'Coce server URL', NULL,'Free') + }); + $dbh->do(q{ + INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type) + VALUES('CoceProviders', NULL, 'Coce providers', 'aws,gb,ol', 'multiple') + }); + print "Upgrade to $DBversion done (Bug 9580: Cover image from Coce, a remote image URL cache)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.020"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + ALTER TABLE aqorders DROP COLUMN supplierreference; + |); + + print "Upgrade to $DBversion done (Bug 11008: DROP column aqorders.supplierreference)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.021"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + ALTER TABLE issues DROP COLUMN issuingbranch + |); + $dbh->do(q| + ALTER TABLE old_issues DROP COLUMN issuingbranch + |); + print "Upgrade to $DBversion done (Bug 2806: Remove issuingbranch columns)\n"; + SetVersion ($DBversion); +} + +$DBversion = '3.19.00.022'; +if ( CheckVersion($DBversion) ) { + $dbh->do(q{ + ALTER TABLE suggestions DROP COLUMN mailoverseeing; + }); + print "Upgrade to $DBversion done (Bug 13006: Drop column suggestion.mailoverseeing)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.023"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + DELETE FROM systempreferences where variable = 'AddPatronLists' + |); + print "Upgrade to $DBversion done (Bug 13497: Remove the AddPatronLists system preferences)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.024"; +if ( CheckVersion($DBversion) ) { + $dbh->do(qq|DROP table patroncards;|); + print "Upgrade to $DBversion done (Bug 13539: Remove table patroncards from database as it's no longer in use)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.025"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + INSERT INTO systempreferences ( variable, value, options, explanation, type ) VALUES + ('SearchWithISBNVariations','0',NULL,'If enabled, search on all variations of the ISBN','YesNo') + |); + print "Upgrade to $DBversion done (Bug 13528 - Add the SearchWithISBNVariations syspref)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.19.00.026"; +if(CheckVersion($DBversion)) { + if ( C4::Context->preference('marcflavour') eq 'MARC21' ) { + $dbh->do(q{ + INSERT IGNORE INTO auth_tag_structure (authtypecode, tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value) VALUES + ('', '388', 'TIME PERIOD OF CREATION', 'TIME PERIOD OF CREATION', 1, 0, NULL); + }); + + $dbh->do(q{ + INSERT IGNORE INTO auth_subfield_structure (authtypecode, tagfield, tagsubfield, liblibrarian, libopac, repeatable, + mandatory, tab, authorised_value, value_builder, seealso, isurl, hidden, linkid, kohafield, frameworkcode) VALUES + ('', '388', '0', 'Authority record control number or standard number', 'Authority record control number or standard number', 1, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '388', '2', 'Source of term', 'Source of term', 0, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '388', '3', 'Materials specified', 'Materials specified', 0, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '388', '6', 'Linkage', 'Linkage', 0, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '388', '8', 'Field link and sequence number', 'Field link and sequence number', 1, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '388', 'a', 'Time period of creation term', 'Time period of creation term', 1, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''); + }); + + $dbh->do(q{ + UPDATE IGNORE auth_subfield_structure SET repeatable = 1 WHERE tagsubfield = 'g' AND tagfield IN + ('100','110','111','130','400','410','411','430','500','510','511','530','700','710','730'); + }); + + $dbh->do(q{ + INSERT IGNORE INTO auth_subfield_structure (authtypecode, tagfield, tagsubfield, liblibrarian, libopac, repeatable, + mandatory, tab, authorised_value, value_builder, seealso, isurl, hidden, linkid, kohafield, frameworkcode) VALUES + ('', '150', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 1, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '151', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 1, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '450', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 4, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '451', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 4, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '550', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 5, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '551', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 5, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '750', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '751', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '748', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '755', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '780', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '781', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '782', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '785', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '710', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '730', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '748', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '750', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '751', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '755', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '762', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '780', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '781', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '782', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '785', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''), + ('', '788', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''); + }); + + $dbh->do(q{ + UPDATE IGNORE auth_subfield_structure SET liblibrarian = 'Relationship information', libopac = 'Relationship information' + WHERE tagsubfield = 'i' AND tagfield IN ('700','710','730','750','751','762'); + }); + + $dbh->do(q{ + UPDATE IGNORE auth_subfield_structure SET liblibrarian = 'Relationship code', libopac = 'Relationship code' + WHERE tagsubfield = '4' AND tagfield IN ('700','710'); + }); + + $dbh->do(q{ + INSERT IGNORE INTO marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, frameworkcode) VALUES + ('370', 'ASSOCIATED PLACE', 'ASSOCIATED PLACE', 1, 0, NULL, ''), + ('388', 'TIME PERIOD OF CREATION', 'TIME PERIOD OF CREATION', 1, 0, NULL, ''); + }); + + $dbh->do(q{ + INSERT IGNORE INTO marc_subfield_structure (tagfield, tagsubfield, liblibrarian, libopac, repeatable, mandatory, + kohafield, tab, authorised_value, authtypecode, value_builder, isurl, hidden, frameworkcode, seealso, link, defaultvalue) VALUES + ('370', '0', 'Authority record control number or standard number', 'Authority record control number or standard number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', '2', 'Source of term', 'Source of term', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', '6', 'Linkage', 'Linkage', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', '8', 'Field link and sequence number', 'Field link and sequence number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 'c', 'Associated country', 'Associated country', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 'f', 'Other associated place', 'Other associated place', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 'g', 'Place of origin of work', 'Place of origin of work', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 's', 'Start period', 'Start period', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 't', 'End period', 'End period', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 'u', 'Uniform Resource Identifier', 'Uniform Resource Identifier', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('370', 'v', 'Source of information', 'Source of information', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('377', 'l', 'Language term', 'Language term', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('382', 's', 'Total number of performers', 'Total number of performers', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('388', '0', 'Authority record control number or standard number', 'Authority record control number or standard number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('388', '2', 'Source of term', 'Source of term', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('388', '3', ' Materials specified', ' Materials specified', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('388', '6', ' Linkage', ' Linkage', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('388', '8', 'Field link and sequence number', 'Field link and sequence number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('388', 'a', 'Time period of creation term', 'Time period of creation term', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL), + ('650', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, '', 6, '', '', '', 0, -1, '', '', '', NULL), + ('651', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, '', 6, '', '', '', 0, -1, '', '', '', NULL); + }); + + $dbh->do(q{ + UPDATE IGNORE marc_subfield_structure SET repeatable = 1 WHERE tagsubfield = 'g' AND + tagfield IN ('100','110','111','130','240','243','246','247','600','610','611','630','700','710','711','730','800','810','811','830'); + }); + } + + print "Upgrade to $DBversion done (Bug 13322 - Update MARC21 frameworks to Update No. 19 - October 2014)\n"; + SetVersion($DBversion); +} + +$DBversion = '3.19.00.027'; +if ( CheckVersion($DBversion) ) { + $dbh->do("ALTER TABLE items ADD COLUMN itemnotes_nonpublic MEDIUMTEXT AFTER itemnotes"); + $dbh->do("ALTER TABLE deleteditems ADD COLUMN itemnotes_nonpublic MEDIUMTEXT AFTER itemnotes"); + print "Upgrade to $DBversion done (Bug 4222: Nonpublic note not appearing in the staff client) Please check each of your frameworks to ensure your non-public item notes are mapped to items.itemnotes_nonpublic. After doing so please have your administrator run misc/batchRebuildItemsTables.pl )\n"; + SetVersion($DBversion); +} + +$DBversion = "3.19.00.XXX"; +if(CheckVersion($DBversion)) { + $dbh->do(q{ + ALTER TABLE old_issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST + }); + + $dbh->do(q{ + ALTER TABLE old_issues CHANGE issue_id issue_id INT( 11 ) NOT NULL + }); + + $dbh->do(q{ + ALTER TABLE issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST + }); + + $dbh->do(q{ + UPDATE issues SET issue_id = issue_id + ( SELECT COUNT(*) FROM old_issues ) ORDER BY issue_id DESC + }); + + my $max_issue_id = $schema->resultset('Issue')->get_column('issue_id')->max(); + if ($max_issue_id) { + $max_issue_id++; + $dbh->do(qq{ + ALTER TABLE issues AUTO_INCREMENT = $max_issue_id + }); + } + + print "Upgrade to $DBversion done (Bug 13790 - Add unique id issue_id to issues and oldissues tables)\n"; + SetVersion($DBversion); +} + + +# DEVELOPER PROCESS, search for anything to execute in the db_update directory +# SEE bug 13068 +# if there is anything in the atomicupdate, read and execute it. + +my $update_dir = C4::Context->config('intranetdir') . '/installer/data/mysql/atomicupdate/'; +opendir( my $dirh, $update_dir ); +while ( my $file = readdir $dirh ) { + next unless $file =~ /\.sql$/; # skip non SQL files + print "DEV atomic update : $file \n"; + my $installer = C4::Installer->new(); + my $rv = $installer->load_sql( $update_dir . $file ) ? 0 : 1; +} + =head1 FUNCTIONS =head2 TableExists($table)