X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=installer%2Fdata%2Fmysql%2Fupdatedatabase.pl;h=6c27ab714412c1e467173aa5f7a322981af4d91a;hb=f4ab1e836fe9589d4656e396387c8d679962090b;hp=67708fa36e752f0495d954512ee53281c298f8e5;hpb=c8982e1ab41ef54ba66afd3ed313e81cde307004;p=koha_gimpoz diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 67708fa36e..6c27ab7144 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -15,9 +15,9 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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. # # Bugs/ToDo: @@ -4497,7 +4497,6 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { print "Upgrade to $DBversion done (Add 461 subfield 9 to default framework)\n"; SetVersion ($DBversion); } - } $DBversion = "3.05.00.018"; @@ -4551,40 +4550,457 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { SetVersion ($DBversion); } -$DBversion = "3.06.00.001"; +$DBversion = "3.07.00.001"; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { - my $borrowers = $dbh->selectcol_arrayref( "SELECT borrowernumber from borrowers where debarred <>0;", { Columns => [1] } ); + my $borrowers = $dbh->selectcol_arrayref( "SELECT borrowernumber from borrowers where debarred =1;", { Columns => [1] } ); $dbh->do("ALTER TABLE borrowers MODIFY debarred DATE DEFAULT NULL;"); $dbh->do( "UPDATE borrowers set debarred='9999-12-31' where borrowernumber IN (" . join( ",", @$borrowers ) . ");" ) if ($borrowers and scalar(@$borrowers)>0); $dbh->do("ALTER TABLE borrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;"); $dbh->do("ALTER TABLE deletedborrowers MODIFY debarred DATE DEFAULT NULL;"); $dbh->do("ALTER TABLE deletedborrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;"); print "Upgrade done (Change borrowers.debarred into Date )\n"; - SetVersion($DBversion); } -$DBversion = "3.06.00.002"; +$DBversion = "3.07.00.002"; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $dbh->do("UPDATE borrowers SET debarred=NULL WHERE debarred='0000-00-00';"); print "Setting NULL to debarred where 0000-00-00 is stored (bug 7272)\n"; SetVersion($DBversion); } -$DBversion = "3.06.02.001"; +$DBversion = "3.07.00.003"; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $dbh->do(" UPDATE `message_attributes` SET message_name='Item_Due' WHERE message_name='Item_DUE'"); print "Updating message_name in message_attributes\n"; SetVersion($DBversion); } -$DBversion = "3.06.03.001"; +$DBversion = "3.07.00.004"; if (C4::Context->preference("Version") < TransformToNum($DBversion)) { $dbh->do("ALTER TABLE `suggestions` ADD `patronreason` TEXT NULL AFTER `reason`"); print "Upgrade to $DBversion done (Add column to suggestions table to store patrons' reasons for submitting a suggestion. )\n"; SetVersion($DBversion); } +$DBversion = "3.07.00.005"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('BorrowerUnwantedField','','Name the fields you don''t need to store for a patron''s account',NULL,'free')"); + print "Upgrade to $DBversion done (BorrowerUnwantedField syspref)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.006"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('CircAutoPrintQuickSlip', '1', 'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window or Clear the screen.',NULL,'YesNo');"); + print "Upgrade to $DBversion done (Add syspref CircAutoPrintQuickSlip to control what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window (default value, 3.6 behaviour) or clear the screen (previous 3.6 behaviour). )\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.007"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE items MODIFY materials text;"); + print "Upgrade to $DBversion done alter items.material from varchar(10) to text \n"; + SetVersion($DBversion); +} + +$DBversion = '3.07.00.008'; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + if (C4::Context->preference("marcflavour") eq 'MARC21') { + if (C4::Context->preference("opaclanguages") eq "de") { + $dbh->do("INSERT INTO `marc_tag_structure` (`tagfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `authorised_value`, `frameworkcode`) VALUES ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, '');"); + } else { + $dbh->do("INSERT INTO `marc_tag_structure` (`tagfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `authorised_value`, `frameworkcode`) VALUES ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, '');"); + } + } + print "Upgrade to $DBversion done (add MARC21 field 545 to framework)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.009"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE `aqorders` ADD COLUMN `claims_count` INT(11) DEFAULT 0, ADD COLUMN `claimed_date` DATE DEFAULT NULL AFTER `claims_count`"); + print "Upgrade to $DBversion done (Add claims_count and claimed_date fields in aqorders table)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.010"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $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| + ); + $dbh->do( + q|INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACLocalCoverImages','0','Display local cover images on OPAC search and details pages.','1','YesNo')| + ); + $dbh->do( + q|INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('LocalCoverImages','0','Display local cover images on intranet search and details pages.','1','YesNo')| + ); + $dbh->do( + q|INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AllowMultipleCovers','0','Allow multiple cover images to be attached to each bibliographic record.','1','YesNo')| + ); + $dbh->do( + q|INSERT INTO permissions (module_bit, code, description) VALUES (13, 'upload_local_cover_images', 'Upload local cover images')| + ); + print "Upgrade to $DBversion done (Added support for local cover images)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.011"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(<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')"); + print "Upgrade to $DBversion add 'AllowItemsOnHoldCheckout' syspref \n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.013"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacExportOptions','bibtex|dc|marcxml|marc8|utf8|marcstd|mods|ris','Define available export options on OPAC detail page.','','free');"); + print "Upgrade to $DBversion done (Bug 7345: Add system preference OpacExportOptions.)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.014"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + print "RELTERMS category available for English-, French-, and Spanish-language relator terms. They are not loaded during upgrade but can be easily inserted using the provided marc21_relatorterms.sql SQL script (MARC21 only, and currently available for en, es, and fr only).\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.015"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + my $sth = $dbh->prepare(q| + SELECT COUNT(*) FROM marc_subfield_structure where kohafield="biblioitems.editionstatement" + |); + $sth->execute; + my $already_exists = $sth->fetchrow; + if ( not $already_exists ) { + my $field = C4::Context->preference("marcflavour") eq "UNIMARC" ? "205" : "250"; + my $subfield = "a"; + my $sth = $dbh->prepare( q| + UPDATE marc_subfield_structure SET kohafield = "biblioitems.editionstatement" + WHERE tagfield = ? AND tagsubfield = ? + |); + $sth->execute( $field, $subfield ); + print "Upgrade to $DBversion done (Added a mapping for biblioitems.editionstatement.)\n"; + } else { + print "Upgrade to $DBversion done (Added a mapping for biblioitems.editionstatement (already exists, nothing to do).)\n"; + } + SetVersion($DBversion); +} + +$DBversion = "3.07.00.016"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE items ADD KEY `itemcallnumber` (itemcallnumber)"); + print "Upgrade to $DBversion done (Added index on items.itemcallnumber)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.017"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('TransferWhenCancelAllWaitingHolds','0','Transfer items when cancelling all waiting holds',NULL,'YesNo')"); + print "Upgrade to $DBversion done (Add sysprefs to control transfer when cancel all waiting holds)\n"; + SetVersion ($DBversion); +} + +$DBversion = "3.07.00.018"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("CREATE TABLE pending_offline_operations ( operationid int(11) NOT NULL AUTO_INCREMENT, userid varchar(30) NOT NULL, branchcode varchar(10) NOT NULL, timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, action varchar(10) NOT NULL, barcode varchar(20) NOT NULL, cardnumber varchar(16) DEFAULT NULL, PRIMARY KEY (operationid) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); + print "Upgrade to $DBversion done ( adding offline operations table )\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.019"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(" UPDATE `systempreferences` SET `value` = 'none', `options` = 'none|full|first|surname|firstandinitial|username', `explanation` = 'Choose how a commenter''s identity is presented alongside comments in the OPAC', `type` = 'Choice' WHERE `systempreferences`.`variable` = 'ShowReviewer' AND `systempreferences`.`variable` = 0"); + $dbh->do(" UPDATE `systempreferences` SET `value` = 'full', `options` = 'none|full|first|surname|firstandinitial|username', `explanation` = 'Choose how a commenter''s identity is presented alongside comments in the OPAC', `type` = 'Choice' WHERE `systempreferences`.`variable` = 'ShowReviewer' AND `systempreferences`.`variable` = 1"); + print "Upgrade to $DBversion done ( Adding additional options for the display of commenter's identity in the OPAC: Full name, first name, last name, first name and last name first initial, username, or no information)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.020"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OPACpatronimages',0,'Enable patron images in the OPAC',NULL,'YesNo');"); + print "Upgrade to $DBversion done (Bug 3516: Add the option to show patron images in the OPAC.)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.021"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do( + "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('LinkerModule','Default','Chooses which linker module to use (see documentation).','Default|FirstMatchLastMatch','Choice');" + ); + $dbh->do( + "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('LinkerOptions','','A pipe-separated list of options for the linker.','','free');" + ); + $dbh->do( + "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('LinkerRelink',1,'If ON the authority linker will relink headings that have previously been linked every time it runs.',NULL,'YesNo');" + ); + $dbh->do( + "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('LinkerKeepStale',0,'If ON the authority linker will keep existing authority links for headings where it is unable to find a match.',NULL,'YesNo');" + ); + $dbh->do( + "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AutoCreateAuthorities',0,'Automatically create authorities that do not exist when cataloging records.',NULL,'YesNo');" + ); + $dbh->do( + "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogModuleRelink',0,'If OFF the linker will never replace the authids that are set in the cataloging module.',NULL,'YesNo');" + ); + print "Upgrade to $DBversion done (Enhancement 7284, improved authority matching, see http://wiki.koha-community.org/wiki/Bug7284_authority_matching_improvement wiki page for configuration update needed)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.022"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("DELETE FROM reviews WHERE biblionumber NOT IN (SELECT biblionumber from biblio)"); + $dbh->do("UPDATE reviews SET borrowernumber = NULL WHERE borrowernumber NOT IN (SELECT borrowernumber FROM borrowers)"); + $dbh->do("ALTER TABLE reviews ADD CONSTRAINT reviews_ibfk_2 FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE"); + $dbh->do("ALTER TABLE reviews ADD CONSTRAINT reviews_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber ) ON UPDATE CASCADE ON DELETE SET NULL"); + print "Upgrade to $DBversion done (Bug 7493 - Add constraint linking OPAC comment biblionumber to biblio, OPAC comment borrowernumber to borrowers.)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.07.00.023"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("ALTER TABLE `message_transports` DROP FOREIGN KEY `message_transports_ibfk_3`"); + $dbh->do("ALTER TABLE `letter` DROP PRIMARY KEY"); + $dbh->do("ALTER TABLE `letter` ADD `branchcode` varchar(10) default NULL AFTER `code`"); + $dbh->do("ALTER TABLE `letter` ADD PRIMARY KEY (`module`,`code`, `branchcode`)"); + $dbh->do("ALTER TABLE `message_transports` ADD `branchcode` varchar(10) NOT NULL default ''"); + $dbh->do("ALTER TABLE `message_transports` ADD CONSTRAINT `message_transports_ibfk_3` FOREIGN KEY (`letter_module`, `letter_code`, `branchcode`) REFERENCES `letter` (`module`, `code`, `branchcode`) ON DELETE CASCADE ON UPDATE CASCADE"); + $dbh->do("ALTER TABLE `letter` ADD `is_html` tinyint(1) default 0 AFTER `name`"); + + $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html) + VALUES ('circulation','ISSUESLIP','Issue Slip','Issue Slip', '

<>

+Checked out to <> <> <> <>
+(<>)
+ +<>
+ +

Checked Out

+ +

+<>
+Barcode: <>
+Date due: <>
+

+
+ +

Overdues

+ +

+<>
+Barcode: <>
+Date due: <>
+

+
+ +
+ +

News

+ +
+
<>
+

<>

+

Posted on <>

+
+
+
', 1)"); + $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html) + VALUES ('circulation','ISSUEQSLIP','Issue Quick Slip','Issue Quick Slip', '

<>

+Checked out to <> <> <> <>
+(<>)
+ +<>
+ +

Checked Out Today

+ +

+<>
+Barcode: <>
+Date due: <>
+

+
', 1)"); + $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html) + VALUES ('circulation','RESERVESLIP','Reserve Slip','Reserve Slip', '
Date: <>
+ +

Transfer to/Hold in <>

+ +

<>, <>

+ +
    +
  • <>
  • +
  • <>
  • +
  • <>
    + <>
    + <> <> +
  • +
  • <>
  • +
+
+

ITEM ON HOLD

+

<>

+
<>
+
    +
  • <>
  • +
  • <>
  • +
  • <>
  • +
+

Notes: +

<>
+

', 1)"); + $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html) + VALUES ('circulation','TRANSFERSLIP','Transfer Slip','Transfer Slip', '
Date: <>
+

Transfer to <>

+ +

ITEM

+

<>

+
<>
+
    +
  • <>
  • +
  • <>
  • +
', 1)"); + + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('NoticeCSS','','Notices CSS url.',NULL,'free')"); + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('SlipCSS','','Slips CSS url.',NULL,'free')"); + + $dbh->do("UPDATE `letter` SET content = replace(content, '<>', '<<biblio.title>>') WHERE code = 'HOLDPLACED'"); + + print "Upgrade to $DBversion done (Add branchcode and is_html to letter table; Default ISSUESLIP, RESERVESLIP and TRANSFERSLIP letters; Add NoticeCSS and SlipCSS sysprefs)\n"; + 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) ) { + $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"; + 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"; + SetVersion($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; + 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") lt 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.XXX"; +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); +} + =head1 FUNCTIONS =head2 DropAllForeignKeys($table)