- # Remove now useless columns
- $dbh->do(qq|
- ALTER TABLE subscription
- DROP COLUMN numberingmethod,
- DROP COLUMN add1,
- DROP COLUMN every1,
- DROP COLUMN whenmorethan1,
- DROP COLUMN setto1,
- DROP COLUMN add2,
- DROP COLUMN every2,
- DROP COLUMN whenmorethan2,
- DROP COLUMN setto2,
- DROP COLUMN add3,
- DROP COLUMN every3,
- DROP COLUMN whenmorethan3,
- DROP COLUMN setto3,
- DROP COLUMN dow,
- DROP COLUMN issuesatonce,
- DROP COLUMN hemisphere,
- ADD COLUMN countissuesperunit INTEGER NOT NULL DEFAULT 1 AFTER periodicity,
- ADD COLUMN skip_serialseq BOOLEAN NOT NULL DEFAULT 0 AFTER irregularity,
- ADD COLUMN locale VARCHAR(80) DEFAULT NULL AFTER numberpattern,
- ADD CONSTRAINT subscription_ibfk_1 FOREIGN KEY (periodicity) REFERENCES subscription_frequencies (id) ON DELETE SET NULL ON UPDATE CASCADE,
- ADD CONSTRAINT subscription_ibfk_2 FOREIGN KEY (numberpattern) REFERENCES subscription_numberpatterns (id) ON DELETE SET NULL ON UPDATE CASCADE
- |);
-
- # Set firstacquidate if not already set (firstacquidate is now mandatory)
- my $get_first_planneddate_sth = $dbh->prepare(qq|
- SELECT planneddate
- FROM serial
- WHERE subscriptionid = ?
- ORDER BY serialid
- LIMIT 1
- |);
- my $update_firstacquidate_sth = $dbh->prepare(qq|
- UPDATE subscription
- SET firstacquidate = ?
- WHERE subscriptionid = ?
- |);
- my $get_subscriptions_sth = $dbh->prepare(qq|
- SELECT subscriptionid, startdate
- FROM subscription
- WHERE firstacquidate IS NULL
- OR firstacquidate = '0000-00-00'
- |);
- $get_subscriptions_sth->execute;
- while ( my ($subscriptionid, $startdate) = $get_subscriptions_sth->fetchrow ) {
- # Try to get the planned date of the first serial
- $get_first_planneddate_sth->execute($subscriptionid);
- my ($first_planneddate) = $get_first_planneddate_sth->fetchrow;
- if ($first_planneddate and $first_planneddate =~ /^\d{4}-\d{2}-\d{2}$/) {
- $update_firstacquidate_sth->execute($first_planneddate, $subscriptionid);
- } else {
- # Defaults to subscription start date
- $update_firstacquidate_sth->execute($startdate, $subscriptionid);
- }
+$DBversion = "3.11.00.203";
+if ( CheckVersion($DBversion) ) {
+ $dbh->do(q{ALTER TABLE suggestions CHANGE COLUMN title title VARCHAR(255) DEFAULT NULL;});
+ print "Upgrade to $DBversion done (Bug 2046 - increasing title column length for suggestions)\n";
+ SetVersion ($DBversion);
+}
+
+$DBversion = "3.11.00.300";
+if ( CheckVersion($DBversion) ) {
+ print "Upgrade to $DBversion done (3.12-beta3 release)\n";
+ SetVersion ($DBversion);
+}
+
+$DBversion = "3.11.00.301";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ #issues
+ $dbh->do(q{
+ ALTER TABLE `issues`
+ ADD KEY `itemnumber_idx` (`itemnumber`),
+ ADD KEY `branchcode_idx` (`branchcode`),
+ ADD KEY `issuingbranch_idx` (`issuingbranch`)
+ });
+ $dbh->do(q{
+ ALTER TABLE `old_issues`
+ ADD KEY `branchcode_idx` (`branchcode`),
+ ADD KEY `issuingbranch_idx` (`issuingbranch`)
+ });
+ #items
+ $dbh->do(q{
+ ALTER TABLE `items` ADD KEY `itype_idx` (`itype`)
+ });
+ $dbh->do(q{
+ ALTER TABLE `deleteditems` ADD KEY `itype_idx` (`itype`)
+ });
+ # biblioitems
+ $dbh->do(q{
+ ALTER TABLE `biblioitems` ADD KEY `itemtype_idx` (`itemtype`)
+ });
+ $dbh->do(q{
+ ALTER TABLE `deletedbiblioitems` ADD KEY `itemtype_idx` (`itemtype`)
+ });
+ # statistics
+ $dbh->do(q{
+ ALTER TABLE `statistics`
+ ADD KEY `branch_idx` (`branch`),
+ ADD KEY `proccode_idx` (`proccode`),
+ ADD KEY `type_idx` (`type`),
+ ADD KEY `usercode_idx` (`usercode`),
+ ADD KEY `itemnumber_idx` (`itemnumber`),
+ ADD KEY `itemtype_idx` (`itemtype`),
+ ADD KEY `borrowernumber_idx` (`borrowernumber`),
+ ADD KEY `associatedborrower_idx` (`associatedborrower`),
+ ADD KEY `ccode_idx` (`ccode`)
+ });
+
+ print "Upgrade to $DBversion done (Bug 9681: Add some database indexes)\n";
+ SetVersion($DBversion);
+}
+
+$DBversion = "3.12.00.000";
+if ( CheckVersion($DBversion) ) {
+ print "Upgrade to $DBversion done (3.12.0 release)\n";
+ SetVersion ($DBversion);
+}
+
+$DBversion = '3.13.00.000';
+if ( CheckVersion($DBversion) ) {
+ print "Upgrade to $DBversion done (start the journey to Koha Pi)\n";
+ SetVersion ($DBversion);
+}
+
+$DBversion = "3.13.00.001";
+if ( CheckVersion($DBversion) ) {
+ $dbh->do("INSERT INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('UseCourseReserves', '0', NULL, 'Enable the course reserves feature.', 'YesNo')");
+ $dbh->do("INSERT INTO userflags (bit,flag,flagdesc,defaulton) VALUES ('18','coursereserves','Course Reserves','0')");
+ $dbh->do("
+CREATE TABLE `courses` (
+ `course_id` int(11) NOT NULL AUTO_INCREMENT,
+ `department` varchar(20) DEFAULT NULL,
+ `course_number` varchar(255) DEFAULT NULL,
+ `section` varchar(255) DEFAULT NULL,
+ `course_name` varchar(255) DEFAULT NULL,
+ `term` varchar(20) DEFAULT NULL,
+ `staff_note` mediumtext,
+ `public_note` mediumtext,
+ `students_count` varchar(20) DEFAULT NULL,
+ `enabled` enum('yes','no') NOT NULL DEFAULT 'yes',
+ `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`course_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ ");
+
+ $dbh->do("
+CREATE TABLE `course_instructors` (
+ `course_id` int(11) NOT NULL,
+ `borrowernumber` int(11) NOT NULL,
+ PRIMARY KEY (`course_id`,`borrowernumber`),
+ KEY `borrowernumber` (`borrowernumber`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ ");
+
+ $dbh->do("
+ALTER TABLE `course_instructors`
+ ADD CONSTRAINT `course_instructors_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`),
+ ADD CONSTRAINT `course_instructors_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE;
+ ");
+
+ $dbh->do("
+CREATE TABLE `course_items` (
+ `ci_id` int(11) NOT NULL AUTO_INCREMENT,
+ `itemnumber` int(11) NOT NULL,
+ `itype` varchar(10) DEFAULT NULL,
+ `ccode` varchar(10) DEFAULT NULL,
+ `holdingbranch` varchar(10) DEFAULT NULL,
+ `location` varchar(80) DEFAULT NULL,
+ `enabled` enum('yes','no') NOT NULL DEFAULT 'no',
+ `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`ci_id`),
+ UNIQUE KEY `itemnumber` (`itemnumber`),
+ KEY `holdingbranch` (`holdingbranch`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ ");
+
+ $dbh->do("
+ALTER TABLE `course_items`
+ ADD CONSTRAINT `course_items_ibfk_2` FOREIGN KEY (`holdingbranch`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE,
+ ADD CONSTRAINT `course_items_ibfk_1` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE;
+");
+
+ $dbh->do("
+CREATE TABLE `course_reserves` (
+ `cr_id` int(11) NOT NULL AUTO_INCREMENT,
+ `course_id` int(11) NOT NULL,
+ `ci_id` int(11) NOT NULL,
+ `staff_note` mediumtext,
+ `public_note` mediumtext,
+ `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`cr_id`),
+ UNIQUE KEY `pseudo_key` (`course_id`,`ci_id`),
+ KEY `course_id` (`course_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+");
+
+ $dbh->do("
+ALTER TABLE `course_reserves`
+ ADD CONSTRAINT `course_reserves_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`);
+ ");
+
+ $dbh->do("
+INSERT INTO permissions (module_bit, code, description) VALUES
+ (18, 'manage_courses', 'Add, edit and delete courses'),
+ (18, 'add_reserves', 'Add course reserves'),
+ (18, 'delete_reserves', 'Remove course reserves')
+;
+ ");
+
+
+ print "Upgrade to $DBversion done (Add Course Reserves ( system preference UseCourseReserves ))\n";
+ SetVersion($DBversion);
+}
+
+$DBversion = "3.13.00.002";
+if ( CheckVersion($DBversion) ) {
+ $dbh->do("UPDATE systempreferences SET variable = 'IndependentBranches' WHERE variable = 'IndependantBranches'");
+ print "Upgrade to $DBversion done (Bug 10080 - Change system pref IndependantBranches to IndependentBranches)\n";
+ SetVersion ($DBversion);
+}
+
+$DBversion = '3.13.00.003';
+if ( CheckVersion($DBversion) ) {
+ $dbh->do("ALTER TABLE serial DROP itemnumber");
+ print "Upgrade to $DBversion done (Bug 7718 - Remove itemnumber column from serials table)\n";
+ SetVersion($DBversion);
+}
+
+$DBversion = "3.13.00.004";
+if(CheckVersion($DBversion)) {
+ $dbh->do(
+"INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowHoldNotes',0,'Show hold notes on OPAC','','YesNo')"
+ );
+ print "Upgrade to $DBversion done (Bug 9722: Allow users to add notes when placing a hold in OPAC)\n";
+ SetVersion($DBversion);
+}
+
+$DBversion = "3.13.00.005";
+if(CheckVersion($DBversion)) {
+ my $intra= C4::Context->preference("intranetstylesheet");
+ #if this pref is not blank or starting with http, https or / [root], then
+ #add an additional / to the front
+ if($intra && $intra !~ /^(\/|https?)/) {
+ $dbh->do("UPDATE systempreferences SET value=? WHERE variable=?",
+ undef,('/'.$intra,"intranetstylesheet"));
+ print "WARNING: Your system preference intranetstylesheet has been prefixed with a slash to make it an absolute path.\n";