X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=installer%2Fdata%2Fmysql%2Fupdatedatabase.pl;h=e76d818bb7c234d79421b0aca86679aa9a392072;hb=16e067953bff831e6363c81f4980588fb2d76027;hp=06eded130019b6b77678676066f516b6465f835e;hpb=d56a693d844a1e64fc47b1f4b5ac82e0283f6493;p=koha_gimpoz diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 06eded1300..e76d818bb7 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -4664,7 +4664,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); } @@ -4884,8 +4884,341 @@ Date due: <>
SetVersion($DBversion); } +$DBversion = "3.07.00.024"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('ExpireReservesMaxPickUpDelayCharge', '0', NULL , 'If ExpireReservesMaxPickUpDelay is enabled, and this field has a non-zero value, than a borrower whose waiting hold has expired will be charged this amount.', 'free')"); + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('ExpireReservesMaxPickUpDelay', '0', '', 'Enabling this allows holds to expire automatically if they have not been picked by within the time period specified in ReservesMaxPickUpDelay', 'YesNo')"); + print "Upgrade to $DBversion done (Added system preference ExpireReservesMaxPickUpDelay, system preference ExpireReservesMaxPickUpDelayCharge, add reseves.charge_if_expired)\n"; +} + +$DBversion = "3.07.00.025"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + 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); +} + +$DBversion = "3.07.00.026"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CalendarFirstDayOfWeek','Sunday','Select the first day of week to use in the calendar.','Sunday|Monday','Choice');"); + print "Upgrade to $DBversion done (Add syspref CalendarFirstDayOfWeek used to select the first day of week to use in the calendar. )\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.027"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(q{INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('RoutingListNote','','Define a note to be shown on all routing lists','70|10','Textarea');}); + print "Upgrade to $DBversion done (Added system preference RoutingListNote for adding a general note to all routing lists.)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.028"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(qq{ + 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"; +} + +$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; + print "Upgrade to $DBversion done (Atomic update for OAI-PMH sets management)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.030"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE default_circ_rules ADD + COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`"); + $dbh->do("ALTER TABLE branch_item_rules ADD + COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`"); + $dbh->do("ALTER TABLE default_branch_circ_rules ADD + COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`"); + $dbh->do("ALTER TABLE default_branch_item_rules ADD + COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`"); + # set the default rule to the current value of HomeOrHoldingBranchReturn (default to 'homebranch' if need be) + my $homeorholdingbranchreturn = C4::Context->prefernce('HomeOrHoldingBranchReturn') || 'homebranch'; + $dbh->do("UPDATE default_circ_rules SET returnbranch = '$homeorholdingbranchreturn'"); + print "Upgrade to $DBversion done (Atomic update for OAI-PMH sets management)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.031"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('UseICU', '1', 'Tell Koha if ICU indexing is in use for Zebra or not.','1','YesNo')"); + print "Upgrade to $DBversion done (Add syspref to tell Koha if ICU indexing is in use for Zebra or not.)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.032"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE virtualshelves MODIFY COLUMN owner int"); #should have been int already (fk to borrowers) + $dbh->do("UPDATE virtualshelves vi LEFT JOIN borrowers bo ON bo.borrowernumber=vi.owner SET vi.owner=NULL where bo.borrowernumber IS NULL"); #before adding the constraint on borrowernumber, we need to get rid of deleted owners + $dbh->do("DELETE FROM virtualshelves WHERE owner IS NULL and category=1"); #delete private lists without owner (cascades to shelfcontents) + $dbh->do("ALTER TABLE virtualshelves ADD COLUMN allow_add tinyint(1) DEFAULT 0, ADD COLUMN allow_delete_own tinyint(1) DEFAULT 1, ADD COLUMN allow_delete_other tinyint(1) DEFAULT 0, ADD CONSTRAINT `virtualshelves_ibfk_1` FOREIGN KEY (`owner`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE SET NULL"); + $dbh->do("UPDATE virtualshelves SET allow_add=0, allow_delete_own=1, allow_delete_other=0 WHERE category=1"); + $dbh->do("UPDATE virtualshelves SET allow_add=0, allow_delete_own=1, allow_delete_other=0 WHERE category=2"); + $dbh->do("UPDATE virtualshelves SET allow_add=1, allow_delete_own=1, allow_delete_other=1 WHERE category=3"); + $dbh->do("UPDATE virtualshelves SET category=2 WHERE category=3"); + + $dbh->do("ALTER TABLE virtualshelfcontents ADD COLUMN borrowernumber int, ADD CONSTRAINT `shelfcontents_ibfk_3` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE SET NULL"); + $dbh->do("UPDATE virtualshelfcontents co LEFT JOIN virtualshelves sh USING (shelfnumber) SET co.borrowernumber=sh.owner"); + + $dbh->do("CREATE TABLE virtualshelfshares + (id int AUTO_INCREMENT PRIMARY KEY, shelfnumber int NOT NULL, + borrowernumber int, invitekey varchar(10), sharedate datetime, + CONSTRAINT `virtualshelfshares_ibfk_1` FOREIGN KEY (`shelfnumber`) REFERENCES `virtualshelves` (`shelfnumber`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `virtualshelfshares_ibfk_2` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE SET NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8"); + + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAllowPublicListCreation',1,'If set, allows opac users to create public lists',NULL,'YesNo');"); + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAllowSharingPrivateLists',0,'If set, allows opac users to share private lists with other patrons',NULL,'YesNo');"); + + print "Upgrade to $DBversion done (BZ7310: Improving list permissions)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.033"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE branches ADD opac_info text;"); + print "Upgrade to $DBversion done add opac_info to branches \n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.034"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE borrower_attribute_types ADD COLUMN category_code VARCHAR(10) NULL DEFAULT NULL AFTER `display_checkout`"); + $dbh->do("ALTER TABLE borrower_attribute_types ADD COLUMN class VARCHAR(255) NOT NULL DEFAULT '' AFTER `category_code`"); + $dbh->do("ALTER TABLE borrower_attribute_types ADD CONSTRAINT category_code_fk FOREIGN KEY (category_code) REFERENCES categories(categorycode)"); + print "Upgrade to $DBversion done (New fields category_code and class in borrower_attribute_types table)\n"; + SetVersion($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("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"); + $dbh->do("ALTER TABLE old_issues CHANGE date_due date_due datetime"); + $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"); + print "Upgrade to $DBversion done (Setting up issues tables for hourly loans)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.036"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(qq{ + ALTER TABLE z3950servers ADD timeout INT( 11 ) NOT NULL DEFAULT '0' AFTER syntax; + }); + print "Upgrade to $DBversion done (New timeout field in z3950servers)\n"; +} + +$DBversion = "3.07.00.037"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(" + ALTER TABLE `marc_subfield_structure` ADD `maxlength` INT( 4 ) NOT NULL DEFAULT '9999'; + "); + $dbh->do(" + UPDATE `marc_subfield_structure` SET maxlength=24 WHERE tagfield='000'; + "); + $dbh->do(" + 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"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.038"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(qq{ + INSERT INTO systempreferences(variable,value,explanation,options,type) + VALUES('UniqueItemFields', 'barcode', 'Space-separated list of fields that should be unique (used in acquisition module for item creation). Fields must be valid SQL column names of items table', '', 'Free') + }); + print "Upgrade to $DBversion done (Added system preference 'UniqueItemFields')\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.039"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do( qq{INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('Babeltheque_url_js','','Url for Babeltheque javascript (e.g. http://www.babeltheque.com/bw_XX.js','','Free')} ); + $dbh->do( qq{CREATE TABLE IF NOT EXISTS social_data + ( isbn VARCHAR(30), + num_critics INT, + num_critics_pro INT, + num_quotations INT, + num_videos INT, + score_avg DECIMAL(5,2), + num_scores INT, + PRIMARY KEY (isbn) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 + } ); + $dbh->do( qq{INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('Babeltheque_url_update', '', 'Url for Babeltheque update (E.G. http://www.babeltheque.com/.../file.csv.bz2)', '', 'Free')} ); + print "Upgrade to $DBversion done (added syspref and table for babeltheque (Babeltheque_url_js, babeltheque))\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.040"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do( qq{INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('SocialNetworks','0','Enable/Disable social networks links in opac detail','','YesNo')} ); + print "Upgrade to $DBversion done (added syspref SocialNetworks, to display facebook/ggl+ and other buttons)\n"; + SetVersion($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 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); +} + + =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