X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=installer%2Fdata%2Fmysql%2Fupdatedatabase.pl;h=f3acaad9ec30d8f6da20fbb7e663710948457c5c;hb=76b80ac33ce5ad2048f4de8a9d132610f89d3fc1;hp=d29c8e48d4961cebb1c77838a7ee23e8383548dc;hpb=1610a7d61cf5cd9a58edb0630640b18b973ce8dd;p=koha.git diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index d29c8e48d4..f3acaad9ec 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -3974,20 +3974,25 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { } $DBversion = "3.03.00.015"; -if (C4::Context->preference("Version") < TransformToNum($DBversion)) { - my $sth = $dbh->prepare("INSERT INTO `marc_subfield_structure` (`tagfield`, `tagsubfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `kohafield`, +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + if ( C4::Context->preference("marcflavour") eq "MARC21" ) { + my $sth = $dbh->prepare( +"INSERT INTO `marc_subfield_structure` (`tagfield`, `tagsubfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `kohafield`, `tab`, `authorised_value`, `authtypecode`, `value_builder`, `isurl`, `hidden`, `frameworkcode`, `seealso`, `link`, `defaultvalue`) - VALUES ( ?, '9', '9 (RLIN)', '9 (RLIN)', 0, 0, '', 6, '', '', '', 0, -5, '', '', '', NULL)"); - $sth->execute('648'); - $sth->execute('654'); - $sth->execute('655'); - $sth->execute('656'); - $sth->execute('657'); - $sth->execute('658'); - $sth->execute('662'); - $sth->finish; - print "Upgrade to $DBversion done (Bug 5619: Add subfield 9 to marc21 648,654,655,656,657,658,662)\n"; - SetVersion ($DBversion); + VALUES ( ?, '9', '9 (RLIN)', '9 (RLIN)', 0, 0, '', 6, '', '', '', 0, -5, '', '', '', NULL)" + ); + $sth->execute('648'); + $sth->execute('654'); + $sth->execute('655'); + $sth->execute('656'); + $sth->execute('657'); + $sth->execute('658'); + $sth->execute('662'); + $sth->finish; + print +"Upgrade to $DBversion done (Bug 5619: Add subfield 9 to marc21 648,654,655,656,657,658,662)\n"; + } + SetVersion($DBversion); } $DBversion = '3.03.00.016'; @@ -4664,7 +4669,7 @@ ENDOFRENEWAL $DBversion = "3.07.00.012"; if (C4::Context->preference("Version") < TransformToNum($DBversion)) { - $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('AllowItemsOnHoldCheckout',0,'Do not generate RESERVE_WAITING and RESERVED warning when checking out items reserved to someone else. This allows self checkouts for those items.','','YesNo')"); + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('AllowItemsOnHoldCheckout',0,'Do not generate RESERVE_WAITING and RESERVED warning when checking out items reserved to someone else. This allows self checkouts for those items.','','YesNo')"); print "Upgrade to $DBversion add 'AllowItemsOnHoldCheckout' syspref \n"; SetVersion ($DBversion); } @@ -4893,19 +4898,21 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $DBversion = "3.07.00.025"; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { - $dbh->do( q|DROP TABLE bibliocoverimage;| ); - $dbh->do( - q|CREATE TABLE biblioimages ( - imagenumber int(11) NOT NULL AUTO_INCREMENT, - biblionumber int(11) NOT NULL, - mimetype varchar(15) NOT NULL, - imagefile mediumblob NOT NULL, - thumbnail mediumblob NOT NULL, - PRIMARY KEY (imagenumber), - CONSTRAINT bibliocoverimage_fk1 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE - ) ENGINE=InnoDB DEFAULT CHARSET=utf8;| - ); - print "Upgrade to $DBversion done (Correct table name for local cover images [please disregard the following error messages: \"Unknown table 'bibliocoverimage'...\" and \"Table 'biblioimages' already exists...\"])\n"; + if (TableExists('bibliocoverimage')) { + $dbh->do( q|DROP TABLE bibliocoverimage;| ); + $dbh->do( + q|CREATE TABLE biblioimages ( + imagenumber int(11) NOT NULL AUTO_INCREMENT, + biblionumber int(11) NOT NULL, + mimetype varchar(15) NOT NULL, + imagefile mediumblob NOT NULL, + thumbnail mediumblob NOT NULL, + PRIMARY KEY (imagenumber), + CONSTRAINT bibliocoverimage_fk1 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8;| + ); + } + print "Upgrade to $DBversion done (Correct table name for local cover images if needed. )\n"; SetVersion($DBversion); } @@ -4929,7 +4936,6 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AllowPKIAuth','None','Use the field from a client-side SSL certificate to look a user in the Koha database','None|Common Name|emailAddress','Choice'); }); print "Upgrade to $DBversion done (Bug 6296 New System preference AllowPKIAuth)\n"; - SetVersion($DBversion); } $DBversion = "3.07.00.029"; @@ -5012,6 +5018,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { $DBversion = "3.07.00.035"; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $dbh->do("ALTER TABLE issues CHANGE date_due date_due datetime"); + $dbh->do("UPDATE issues SET date_due = CONCAT(SUBSTR(date_due,1,11),'23:59:00')"); $dbh->do("ALTER TABLE issues CHANGE returndate returndate datetime"); $dbh->do("ALTER TABLE issues CHANGE lastreneweddate lastreneweddate datetime"); $dbh->do("ALTER TABLE issues CHANGE issuedate issuedate datetime"); @@ -5019,7 +5026,6 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $dbh->do("ALTER TABLE old_issues CHANGE returndate returndate datetime"); $dbh->do("ALTER TABLE old_issues CHANGE lastreneweddate lastreneweddate datetime"); $dbh->do("ALTER TABLE old_issues CHANGE issuedate issuedate datetime"); - $dbh->do("alter table issuingrules add column lengthunit varchar(10) default 'days' after issuelength"); print "Upgrade to $DBversion done (Setting up issues tables for hourly loans)\n"; SetVersion($DBversion); } @@ -5044,6 +5050,9 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='MARC21','40','9999') WHERE tagfield='008'; "); $dbh->do(" + UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='NORMARC','40','9999') WHERE tagfield='008'; + "); + $dbh->do(" UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='UNIMARC','36','9999') WHERE tagfield='100'; "); print "Upgrade to $DBversion done (Add new field maxlength to marc_subfield_structure)\n"; @@ -5091,12 +5100,368 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $DBversion = "3.07.00.041"; if (C4::Context->preference("Version") < TransformToNum($DBversion)) { $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('SubscriptionDuplicateDroppedInput','','','List of fields which must not be rewritten when a subscription is duplicated (Separated by pipe |)','Free')"); - print "Upgrade to $DBversion done (Add System Preferences SubscriptionDuplicateDroppedInput)\n"; + print "Upgrade to $DBversion done (Add system preference SubscriptionDuplicateDroppedInput)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.042"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE reserves ADD suspend BOOLEAN NOT NULL DEFAULT 0"); + $dbh->do("ALTER TABLE old_reserves ADD suspend BOOLEAN NOT NULL DEFAULT 0"); + + $dbh->do("ALTER TABLE reserves ADD suspend_until DATETIME NULL DEFAULT NULL"); + $dbh->do("ALTER TABLE old_reserves ADD suspend_until DATETIME NULL DEFAULT NULL"); + + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('AutoResumeSuspendedHolds', '1', NULL , 'Allow suspended holds to be automatically resumed by a set date.', 'YesNo')"); + + print "Upgrade to $DBversion done (Add suspend fields to reserves table, add syspref AutoResumeSuspendedHolds)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.043"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + my $countXSLTDetailsDisplay = 0; + my $valueXSLTDetailsDisplay = ""; + my $valueXSLTResultsDisplay = ""; + my $valueOPACXSLTDetailsDisplay = ""; + my $valueOPACXSLTResultsDisplay = ""; + #the line below test if database comes from a BibLibre's branch + $countXSLTDetailsDisplay = $dbh->do('SELECT 1 FROM systempreferences WHERE variable="IntranetXSLTDetailsDisplay"'); + if ($countXSLTDetailsDisplay > 0) + { + #the two lines below will only be used to update the databases from the BibLibre's branch. They will not affect the others + $dbh->do(q|UPDATE systempreferences SET variable="XSLTDetailsDisplay" WHERE variable="IntranetXSLTDetailsDisplay"|); + $dbh->do(q|UPDATE systempreferences SET variable="XSLTResultsDisplay" WHERE variable="IntranetXSLTResultsDisplay"|); + } + else + { + $valueXSLTDetailsDisplay = "default" if (C4::Context->preference("XSLTDetailsDisplay")); + $valueXSLTResultsDisplay = "default" if (C4::Context->preference("XSLTResultsDisplay")); + $valueOPACXSLTDetailsDisplay = "default" if (C4::Context->preference("OPACXSLTDetailsDisplay")); + $valueOPACXSLTResultsDisplay = "default" if (C4::Context->preference("OPACXSLTResultsDisplay")); + $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueXSLTDetailsDisplay\" WHERE variable='XSLTDetailsDisplay'"); + $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueXSLTResultsDisplay\" WHERE variable='XSLTResultsDisplay'"); + $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueOPACXSLTDetailsDisplay\" WHERE variable='OPACXSLTDetailsDisplay'"); + $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueOPACXSLTResultsDisplay\" WHERE variable='OPACXSLTResultsDisplay'"); + } + print "Upgrade to $DBversion done (XSLT systempreference takes a path to file rather than YesNo)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.044"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE aqbooksellers ADD deliverytime INT DEFAULT NULL"); + print "Upgrade to $DBversion done (Add deliverytime field in aqbooksellers table)"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.045"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE import_batches MODIFY COLUMN batch_type ENUM('batch','z3950','webservice') NOT NULL default 'batch'"); + print "Upgrade to $DBversion done (Add 'webservice' to batch_type enum)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.046"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE issuingrules ADD COLUMN lengthunit varchar(10) DEFAULT 'days' AFTER issuelength"); + print "Upgrade to $DBversion done (Setting up issues tables for hourly loans (lengthunit fix))\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.047"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("CREATE INDEX items_location ON items(location)"); + $dbh->do("CREATE INDEX items_ccode ON items(ccode)"); + print "Upgrade to $DBversion done (items_location and items_ccode indexes added for ShelfBrowser)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.048"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do( + q | CREATE TABLE ratings ( + borrowernumber int(11) NOT NULL, + biblionumber int(11) NOT NULL, + rating_value tinyint(1) NOT NULL, + timestamp timestamp NOT NULL default CURRENT_TIMESTAMP, + PRIMARY KEY (borrowernumber,biblionumber), + CONSTRAINT ratings_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT ratings_ibfk_2 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 | + ); + + $dbh->do( +q /INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacStarRatings','disable',NULL,'disable|all|details','Choice') / + ); + + print +"Upgrade to $DBversion done (Add 'ratings' table and 'OpacStarRatings' syspref)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.049"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacBrowseResults','1','Disable/enable browsing and paging search results from the OPAC detail page.',NULL,'YesNo')"); + print "Upgrade to $DBversion done (Add system preference OpacBrowseResults ))\n"; + SetVersion($DBversion); +} + +$DBversion = "3.08.00.000"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + print "Upgrade to $DBversion done\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.001"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE borrower_attribute_types MODIFY category_code VARCHAR( 1 ) NULL DEFAULT NULL"); + print "Upgrade to $DBversion done. (Bug 8002: Update patron attribute types table to allow NULL category_code)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.002"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE saved_sql + ADD ( + cache_expiry INT NOT NULL DEFAULT 300, + public BOOLEAN NOT NULL DEFAULT FALSE + ); + "); + print "Upgrade to $DBversion done (Added cache_expiry and public fields in +saved_reports table.)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.003"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SvcMaxReportRows','10','Maximum number of rows to return via the report web service.',NULL,'Integer');"); + print "Upgrade to $DBversion done (Added SvcMaxReportRows syspref)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.004"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT IGNORE INTO permissions (module_bit, code, description) VALUES('13', 'edit_patrons', 'Perform batch modifivation of patrons')"); + print "Upgrade to $DBversion done (Adds permissions flag for access to the patron modifications tool)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.005"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + unless (TableExists('quotes')) { + $dbh->do( qq{ + CREATE TABLE `quotes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `source` text DEFAULT NULL, + `text` mediumtext NOT NULL, + `timestamp` datetime NOT NULL, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 + }); + } + $dbh->do( qq{ + INSERT IGNORE INTO permissions VALUES (13, "edit_quotes","Edit quotes for quote-of-the-day feature"); + }); + $dbh->do( qq{ + INSERT IGNORE INTO `systempreferences` (variable,value,explanation,options,type) VALUES('QuoteOfTheDay',0,'Enable or disable display of Quote of the Day on the OPAC home page',NULL,'YesNo'); + }); + print "Upgrade to $DBversion done (Adding Quote of the Day Option.)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.006"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("UPDATE systempreferences SET + variable = 'OPACShowHoldQueueDetails', + value = CASE value WHEN '1' THEN 'priority' ELSE 'none' END, + options = 'none|priority|holds|holds_priority', + explanation = 'Show holds details in OPAC', + type = 'Choice' + WHERE variable = 'OPACDisplayRequestPriority'"); + print "Upgrade to $DBversion done (Changed system preference OPACDisplayRequestPriority -> OPACShowHoldQueueDetails)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.007"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + unless(C4::Context->preference('ReservesControlBranch')){ + $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights.','Choice')"); + } + print "Upgrade to $DBversion done (Insert ReservesControlBranch systempreference into systempreferences table )\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.008"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE sessions ADD PRIMARY KEY (id);"); + $dbh->do("ALTER TABLE sessions DROP INDEX `id`;"); + print "Upgrade to $DBversion done (redefine the field id as PRIMARY KEY of sessions)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.009"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE branches ADD PRIMARY KEY (branchcode);"); + $dbh->do("ALTER TABLE branches DROP INDEX branchcode;"); + print "Upgrade to $DBversion done (redefine the field branchcode as PRIMARY KEY of branches)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.09.00.010"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('IssueLostItem', 'alert', 'alert|confirm|nothing', 'Defines what should be done when an attempt is made to issue an item that has been marked as lost.', 'Choice')"); + print "Upgrade to $DBversion done (Add system preference issuelostitem ))\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.011"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE `biblioitems` ADD `ean` VARCHAR( 13 ) NULL AFTER issn"); + $dbh->do("CREATE INDEX `ean` ON biblioitems (`ean`) "); + $dbh->do("ALTER TABLE `deletedbiblioitems` ADD `ean` VARCHAR( 13 ) NULL AFTER issn"); + if (C4::Context->preference("marcflavour") eq 'UNIMARC') { + $dbh->do("UPDATE marc_subfield_structure SET kohafield='biblioitems.ean' WHERE tagfield='073' and tagsubfield='a'"); + } + print "Upgrade to $DBversion done (Adding ean in biblioitems and deletedbiblioitems)\n"; + print "If you have records with ean, please run misc/batchRebuildBiblioTables.pl to populate bibliotems.ean\n" if (C4::Context->preference("marcflavour") eq 'UNIMARC'); + SetVersion($DBversion); +} + +$DBversion = "3.09.00.012"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsIntranet', '1', NULL , 'Allow holds to be suspended from the intranet.', 'YesNo')"); + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsOpac', '1', NULL , 'Allow holds to be suspended from the OPAC.', 'YesNo')"); + print "Upgrade to $DBversion done (Add system preference OpacBrowseResults ))\n"; + SetVersion($DBversion); +} + +$DBversion ="3.09.00.013"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('DefaultLanguageField008','','Fill in the default language for field 008 Range 35-37 (e.g. eng, nor, ger, see www.loc.gov/marc/languages/language_code.html)','','Free');"); + print "Upgrade to $DBversion done (Add system preference DefaultLanguageField008))\n"; + SetVersion($DBversion); +} + +$DBversion ="3.09.00.014"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + # add phone message transport type + $dbh->do("INSERT INTO message_transport_types (message_transport_type) VALUES ('phone')"); + + # adds HOLD_PHONE and PREDUE_PHONE letters (as placeholders) + $dbh->do("INSERT INTO letter (module, code, name, title, content) VALUES + ('reserves', 'HOLD_PHONE', 'Item Available for Pick-up (phone notice)', 'Item Available for Pick-up (phone notice)', 'Your item is available for pickup'), + ('circulation', 'PREDUE_PHONE', 'Advance Notice of Item Due (phone notice)', 'Advance Notice of Item Due (phone notice)', 'Your item is due soon'), + ('circulation', 'OVERDUE_PHONE', 'Overdue Notice (phone notice)', 'Overdue Notice (phone notice)', 'Your item is overdue') + "); + + # add phone notifications to patron message preferences options + $dbh->do("INSERT INTO message_transports + (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) VALUES + (4, 'phone', 0, 'reserves', 'HOLD_PHONE'), + (2, 'phone', 0, 'circulation', 'PREDUE_PHONE') + "); + + # add TalkingTechItivaPhoneNotification syspref + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('TalkingTechItivaPhoneNotification',0,'If ON, enables Talking Tech I-tiva phone notifications',NULL,'YesNo');"); + + print "Upgrade done (Support for Talking Tech i-tiva phone notification system)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.015"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(qq{ + INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('StatisticsFields','location|itype|ccode','Define Fields (from the items table) used for statistics members','location|itype|ccode','free') + }); + print "Upgrade to $DBversion done (Add System preference StatisticsFields)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.016"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACShowBarcode','0','Show items barcode in holding tab','','YesNo')"); + print "Upgrade to $DBversion done (Add syspref OPACShowBarcode)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.09.00.017"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacNavRight', '', '70|10', 'Show the following HTML in the right hand column of the main page under the main login form', 'Textarea');"); + print "Upgrade to $DBversion done (Add customizable OpacNavRight region to the OPAC main page)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.09.00.018"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("DROP TABLE IF EXISTS aqbudgetborrowers"); + $dbh->do(" + CREATE TABLE aqbudgetborrowers ( + budget_id int(11) NOT NULL, + borrowernumber int(11) NOT NULL, + PRIMARY KEY (budget_id, borrowernumber), + CONSTRAINT aqbudgetborrowers_ibfk_1 FOREIGN KEY (budget_id) + REFERENCES aqbudgets (budget_id) + ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT aqbudgetborrowers_ibfk_2 FOREIGN KEY (borrowernumber) + REFERENCES borrowers (borrowernumber) + ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + "); + $dbh->do(" + INSERT INTO permissions (module_bit, code, description) + VALUES (11, 'budget_manage_all', 'Manage all budgets') + "); + print "Upgrade to $DBversion done (Add aqbudgetborrowers table)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.09.00.019"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OPACShowUnusedAuthorities','1','','Show authorities that are not being used in the OPAC.','YesNo')"); + print "Upgrade to $DBversion done (Add OPACShowUnusedAuthorities system preference)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.09.00.020"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,type) VALUES('EnableBorrowerFiles','0','If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo')"); + $dbh->do(" +CREATE TABLE IF NOT EXISTS borrower_files ( + file_id int(11) NOT NULL AUTO_INCREMENT, + borrowernumber int(11) NOT NULL, + file_name varchar(255) NOT NULL, + file_type varchar(255) NOT NULL, + file_description varchar(255) DEFAULT NULL, + file_content longblob NOT NULL, + date_uploaded timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (file_id), + KEY borrowernumber (borrowernumber) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + "); + $dbh->do("ALTER TABLE borrower_files ADD CONSTRAINT borrower_files_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE"); + + print "Upgrade to $DBversion done (Added borrow_files table, EnableBorrowerFiles syspref)\n"; SetVersion($DBversion); } =head1 FUNCTIONS +=head2 TableExists($table) + +=cut + +sub TableExists { + my $table = shift; + eval { + local $dbh->{PrintError} = 0; + local $dbh->{RaiseError} = 1; + $dbh->do(qq{SELECT * FROM $table WHERE 1 = 0 }); + }; + return 1 unless $@; + return 0; +} + =head2 DropAllForeignKeys($table) Drop all foreign keys of the table $table @@ -5161,6 +5526,7 @@ sub SetVersion { my $finish=$dbh->prepare("INSERT into systempreferences (variable,value,explanation) values ('Version',?,'The Koha database version. WARNING: Do not change this value manually, it is maintained by the webinstaller')"); $finish->execute($kohaversion); } + C4::Context::clear_syspref_cache(); # invalidate cached preferences } exit;