Increment version for 17.05.02 release
[koha.git] / installer / data / mysql / updatedatabase.pl
blobe90cf723fce9a3881b0a778477ed12bc5f0f092a
1 #!/usr/bin/perl
3 # Database Updater
4 # This script checks for required updates to the database.
6 # Parts copyright Catalyst IT 2011
8 # Part of the Koha Library Software www.koha-community.org
9 # Koha is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 3 of the License, or
12 # (at your option) any later version.
14 # Koha is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with Koha; if not, see <http://www.gnu.org/licenses>.
23 # Bugs/ToDo:
24 # - Would also be a good idea to offer to do a backup at this time...
26 # NOTE: If you do something more than once in here, make it table driven.
28 # NOTE: Please keep the version in kohaversion.pl up-to-date!
30 use strict;
31 use warnings;
33 use feature 'say';
35 # CPAN modules
36 use DBI;
37 use Getopt::Long;
38 # Koha modules
39 use C4::Context;
40 use C4::Installer;
41 use Koha::Database;
42 use Koha;
43 use Koha::DateUtils;
45 use MARC::Record;
46 use MARC::File::XML ( BinaryEncoding => 'utf8' );
48 use File::Path qw[remove_tree]; # perl core module
49 use File::Spec;
50 use File::Slurp;
52 # FIXME - The user might be installing a new database, so can't rely
53 # on /etc/koha.conf anyway.
55 my $debug = 0;
57 my (
58 $sth, $sti,
59 $query,
60 %existingtables, # tables already in database
61 %types,
62 $table,
63 $column,
64 $type, $null, $key, $default, $extra,
65 $prefitem, # preference item in systempreferences table
68 my $schema = Koha::Database->new()->schema();
70 my $silent;
71 GetOptions(
72 's' =>\$silent
74 my $dbh = C4::Context->dbh;
75 $|=1; # flushes output
77 local $dbh->{RaiseError} = 0;
79 # Record the version we are coming from
81 my $original_version = C4::Context->preference("Version");
83 # Deal with virtualshelves
84 my $DBversion = "3.00.00.001";
85 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
86 # update virtualshelves table to
88 $dbh->do("ALTER TABLE `bookshelf` RENAME `virtualshelves`");
89 $dbh->do("ALTER TABLE `shelfcontents` RENAME `virtualshelfcontents`");
90 $dbh->do("ALTER TABLE `virtualshelfcontents` ADD `biblionumber` INT( 11 ) NOT NULL default '0' AFTER shelfnumber");
91 $dbh->do("UPDATE `virtualshelfcontents` SET biblionumber=(SELECT biblionumber FROM items WHERE items.itemnumber=virtualshelfcontents.itemnumber)");
92 # drop all foreign keys : otherwise, we can't drop itemnumber field.
93 DropAllForeignKeys('virtualshelfcontents');
94 $dbh->do("ALTER TABLE `virtualshelfcontents` ADD KEY biblionumber (biblionumber)");
95 # create the new foreign keys (on biblionumber)
96 $dbh->do("ALTER TABLE `virtualshelfcontents` ADD CONSTRAINT `virtualshelfcontents_ibfk_1` FOREIGN KEY (`shelfnumber`) REFERENCES `virtualshelves` (`shelfnumber`) ON DELETE CASCADE ON UPDATE CASCADE");
97 # re-create the foreign key on virtualshelf
98 $dbh->do("ALTER TABLE `virtualshelfcontents` ADD CONSTRAINT `shelfcontents_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE");
99 $dbh->do("ALTER TABLE `virtualshelfcontents` DROP `itemnumber`");
100 print "Upgrade to $DBversion done (virtualshelves)\n";
101 SetVersion ($DBversion);
105 $DBversion = "3.00.00.002";
106 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
107 $dbh->do("DROP TABLE sessions");
108 $dbh->do("CREATE TABLE `sessions` (
109 `id` varchar(32) NOT NULL,
110 `a_session` text NOT NULL,
111 UNIQUE KEY `id` (`id`)
112 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
113 print "Upgrade to $DBversion done (sessions uses CGI::session, new table structure for sessions)\n";
114 SetVersion ($DBversion);
118 $DBversion = "3.00.00.003";
119 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
120 if (C4::Context->preference("opaclanguages") eq "fr") {
121 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('ReservesNeedReturns','0','Si ce paramètre est mis à 1, une réservation posée sur un exemplaire présent sur le site devra être passée en retour pour être disponible. Sinon, elle sera automatiquement disponible, Koha considère que le bibliothécaire place la réservation en ayant le document en mains','','YesNo')");
122 } else {
123 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('ReservesNeedReturns','0','If set, a reserve done on an item available in this branch need a check-in, otherwise, a reserve on a specific item, that is on the branch & available is considered as available','','YesNo')");
125 print "Upgrade to $DBversion done (adding ReservesNeedReturns systempref, in circulation)\n";
126 SetVersion ($DBversion);
130 $DBversion = "3.00.00.004";
131 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
132 $dbh->do("INSERT INTO `systempreferences` VALUES ('DebugLevel','2','set the level of error info sent to the browser. 0=none, 1=some, 2=most','0|1|2','Choice')");
133 print "Upgrade to $DBversion done (adding DebugLevel systempref, in 'Admin' tab)\n";
134 SetVersion ($DBversion);
137 $DBversion = "3.00.00.005";
138 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
139 $dbh->do("CREATE TABLE `tags` (
140 `entry` varchar(255) NOT NULL default '',
141 `weight` bigint(20) NOT NULL default 0,
142 PRIMARY KEY (`entry`)
143 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
145 $dbh->do("CREATE TABLE `nozebra` (
146 `server` varchar(20) NOT NULL,
147 `indexname` varchar(40) NOT NULL,
148 `value` varchar(250) NOT NULL,
149 `biblionumbers` longtext NOT NULL,
150 KEY `indexname` (`server`,`indexname`),
151 KEY `value` (`server`,`value`))
152 ENGINE=InnoDB DEFAULT CHARSET=utf8;
154 print "Upgrade to $DBversion done (adding tags and nozebra tables )\n";
155 SetVersion ($DBversion);
158 $DBversion = "3.00.00.006";
159 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
160 $dbh->do("UPDATE issues SET issuedate=timestamp WHERE issuedate='0000-00-00'");
161 print "Upgrade to $DBversion done (filled issues.issuedate with timestamp)\n";
162 SetVersion ($DBversion);
165 $DBversion = "3.00.00.007";
166 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
167 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SessionStorage','mysql','Use mysql or a temporary file for storing session data','mysql|tmp','Choice')");
168 print "Upgrade to $DBversion done (set SessionStorage variable)\n";
169 SetVersion ($DBversion);
172 $DBversion = "3.00.00.008";
173 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
174 $dbh->do("ALTER TABLE `biblio` ADD `datecreated` DATE NOT NULL AFTER `timestamp` ;");
175 $dbh->do("UPDATE biblio SET datecreated=timestamp");
176 print "Upgrade to $DBversion done (biblio creation date)\n";
177 SetVersion ($DBversion);
180 $DBversion = "3.00.00.009";
181 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
183 # Create backups of call number columns
184 # in case default migration needs to be customized
186 # UPGRADE NOTE: temp_upg_biblioitems_call_num should be dropped
187 # after call numbers have been transformed to the new structure
189 # Not bothering to do the same with deletedbiblioitems -- assume
190 # default is good enough.
191 $dbh->do("CREATE TABLE `temp_upg_biblioitems_call_num` AS
192 SELECT `biblioitemnumber`, `biblionumber`,
193 `classification`, `dewey`, `subclass`,
194 `lcsort`, `ccode`
195 FROM `biblioitems`");
197 # biblioitems changes
198 $dbh->do("ALTER TABLE `biblioitems` CHANGE COLUMN `volumeddesc` `volumedesc` TEXT,
199 ADD `cn_source` VARCHAR(10) DEFAULT NULL AFTER `ccode`,
200 ADD `cn_class` VARCHAR(30) DEFAULT NULL AFTER `cn_source`,
201 ADD `cn_item` VARCHAR(10) DEFAULT NULL AFTER `cn_class`,
202 ADD `cn_suffix` VARCHAR(10) DEFAULT NULL AFTER `cn_item`,
203 ADD `cn_sort` VARCHAR(30) DEFAULT NULL AFTER `cn_suffix`,
204 ADD `totalissues` INT(10) AFTER `cn_sort`");
206 # default mapping of call number columns:
207 # cn_class = concatentation of classification + dewey,
208 # trimmed to fit -- assumes that most users do not
209 # populate both classification and dewey in a single record
210 # cn_item = subclass
211 # cn_source = left null
212 # cn_sort = lcsort
214 # After upgrade, cn_sort will have to be set based on whatever
215 # default call number scheme user sets as a preference. Misc
216 # script will be added at some point to do that.
218 $dbh->do("UPDATE `biblioitems`
219 SET cn_class = SUBSTR(TRIM(CONCAT_WS(' ', `classification`, `dewey`)), 1, 30),
220 cn_item = subclass,
221 `cn_sort` = `lcsort`
224 # Now drop the old call number columns
225 $dbh->do("ALTER TABLE `biblioitems` DROP COLUMN `classification`,
226 DROP COLUMN `dewey`,
227 DROP COLUMN `subclass`,
228 DROP COLUMN `lcsort`,
229 DROP COLUMN `ccode`");
231 # deletedbiblio changes
232 $dbh->do("ALTER TABLE `deletedbiblio` ALTER COLUMN `frameworkcode` SET DEFAULT '',
233 DROP COLUMN `marc`,
234 ADD `datecreated` DATE NOT NULL AFTER `timestamp`");
235 $dbh->do("UPDATE deletedbiblio SET datecreated = timestamp");
237 # deletedbiblioitems changes
238 $dbh->do("ALTER TABLE `deletedbiblioitems`
239 MODIFY `publicationyear` TEXT,
240 CHANGE `volumeddesc` `volumedesc` TEXT,
241 MODIFY `collectiontitle` MEDIUMTEXT DEFAULT NULL AFTER `volumedesc`,
242 MODIFY `collectionissn` TEXT DEFAULT NULL AFTER `collectiontitle`,
243 MODIFY `collectionvolume` MEDIUMTEXT DEFAULT NULL AFTER `collectionissn`,
244 MODIFY `editionstatement` TEXT DEFAULT NULL AFTER `collectionvolume`,
245 MODIFY `editionresponsibility` TEXT DEFAULT NULL AFTER `editionstatement`,
246 MODIFY `place` VARCHAR(255) DEFAULT NULL AFTER `size`,
247 MODIFY `marc` LONGBLOB,
248 ADD `cn_source` VARCHAR(10) DEFAULT NULL AFTER `url`,
249 ADD `cn_class` VARCHAR(30) DEFAULT NULL AFTER `cn_source`,
250 ADD `cn_item` VARCHAR(10) DEFAULT NULL AFTER `cn_class`,
251 ADD `cn_suffix` VARCHAR(10) DEFAULT NULL AFTER `cn_item`,
252 ADD `cn_sort` VARCHAR(30) DEFAULT NULL AFTER `cn_suffix`,
253 ADD `totalissues` INT(10) AFTER `cn_sort`,
254 ADD `marcxml` LONGTEXT NOT NULL AFTER `totalissues`,
255 ADD KEY `isbn` (`isbn`),
256 ADD KEY `publishercode` (`publishercode`)
259 $dbh->do("UPDATE `deletedbiblioitems`
260 SET `cn_class` = SUBSTR(TRIM(CONCAT_WS(' ', `classification`, `dewey`)), 1, 30),
261 `cn_item` = `subclass`,
262 `cn_sort` = `lcsort`
264 $dbh->do("ALTER TABLE `deletedbiblioitems`
265 DROP COLUMN `classification`,
266 DROP COLUMN `dewey`,
267 DROP COLUMN `subclass`,
268 DROP COLUMN `lcsort`,
269 DROP COLUMN `ccode`
272 # deleteditems changes
273 $dbh->do("ALTER TABLE `deleteditems`
274 MODIFY `barcode` VARCHAR(20) DEFAULT NULL,
275 MODIFY `price` DECIMAL(8,2) DEFAULT NULL,
276 MODIFY `replacementprice` DECIMAL(8,2) DEFAULT NULL,
277 DROP `bulk`,
278 MODIFY `itemcallnumber` VARCHAR(30) DEFAULT NULL AFTER `wthdrawn`,
279 MODIFY `holdingbranch` VARCHAR(10) DEFAULT NULL,
280 DROP `interim`,
281 MODIFY `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP AFTER `paidfor`,
282 DROP `cutterextra`,
283 ADD `cn_source` VARCHAR(10) DEFAULT NULL AFTER `onloan`,
284 ADD `cn_sort` VARCHAR(30) DEFAULT NULL AFTER `cn_source`,
285 ADD `ccode` VARCHAR(10) DEFAULT NULL AFTER `cn_sort`,
286 ADD `materials` VARCHAR(10) DEFAULT NULL AFTER `ccode`,
287 ADD `uri` VARCHAR(255) DEFAULT NULL AFTER `materials`,
288 MODIFY `marc` LONGBLOB AFTER `uri`,
289 DROP KEY `barcode`,
290 DROP KEY `itembarcodeidx`,
291 DROP KEY `itembinoidx`,
292 DROP KEY `itembibnoidx`,
293 ADD UNIQUE KEY `delitembarcodeidx` (`barcode`),
294 ADD KEY `delitembinoidx` (`biblioitemnumber`),
295 ADD KEY `delitembibnoidx` (`biblionumber`),
296 ADD KEY `delhomebranch` (`homebranch`),
297 ADD KEY `delholdingbranch` (`holdingbranch`)");
298 $dbh->do("UPDATE deleteditems SET `ccode` = `itype`");
299 $dbh->do("ALTER TABLE deleteditems DROP `itype`");
300 $dbh->do("UPDATE `deleteditems` SET `cn_sort` = `itemcallnumber`");
302 # items changes
303 $dbh->do("ALTER TABLE `items` ADD `cn_source` VARCHAR(10) DEFAULT NULL AFTER `onloan`,
304 ADD `cn_sort` VARCHAR(30) DEFAULT NULL AFTER `cn_source`,
305 ADD `ccode` VARCHAR(10) DEFAULT NULL AFTER `cn_sort`,
306 ADD `materials` VARCHAR(10) DEFAULT NULL AFTER `ccode`,
307 ADD `uri` VARCHAR(255) DEFAULT NULL AFTER `materials`
309 $dbh->do("ALTER TABLE `items`
310 DROP KEY `itembarcodeidx`,
311 ADD UNIQUE KEY `itembarcodeidx` (`barcode`)");
313 # map items.itype to items.ccode and
314 # set cn_sort to itemcallnumber -- as with biblioitems.cn_sort,
315 # will have to be subsequently updated per user's default
316 # classification scheme
317 $dbh->do("UPDATE `items` SET `cn_sort` = `itemcallnumber`,
318 `ccode` = `itype`");
320 $dbh->do("ALTER TABLE `items` DROP `cutterextra`,
321 DROP `itype`");
323 print "Upgrade to $DBversion done (major changes to biblio, biblioitems, items, and deleted* versions of same\n";
324 SetVersion ($DBversion);
327 $DBversion = "3.00.00.010";
328 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
329 $dbh->do("CREATE INDEX `userid` ON borrowers (`userid`) ");
330 print "Upgrade to $DBversion done (userid index added)\n";
331 SetVersion ($DBversion);
334 $DBversion = "3.00.00.011";
335 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
336 $dbh->do("ALTER TABLE `branchcategories` CHANGE `categorycode` `categorycode` varchar(10) ");
337 $dbh->do("ALTER TABLE `branchcategories` CHANGE `categoryname` `categoryname` varchar(32) ");
338 $dbh->do("ALTER TABLE `branchcategories` ADD COLUMN `categorytype` varchar(16) ");
339 $dbh->do("UPDATE `branchcategories` SET `categorytype` = 'properties'");
340 $dbh->do("ALTER TABLE `branchrelations` CHANGE `categorycode` `categorycode` varchar(10) ");
341 print "Upgrade to $DBversion done (added branchcategory type)\n";
342 SetVersion ($DBversion);
345 $DBversion = "3.00.00.012";
346 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
347 $dbh->do("CREATE TABLE `class_sort_rules` (
348 `class_sort_rule` varchar(10) NOT NULL default '',
349 `description` mediumtext,
350 `sort_routine` varchar(30) NOT NULL default '',
351 PRIMARY KEY (`class_sort_rule`),
352 UNIQUE KEY `class_sort_rule_idx` (`class_sort_rule`)
353 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
354 $dbh->do("CREATE TABLE `class_sources` (
355 `cn_source` varchar(10) NOT NULL default '',
356 `description` mediumtext,
357 `used` tinyint(4) NOT NULL default 0,
358 `class_sort_rule` varchar(10) NOT NULL default '',
359 PRIMARY KEY (`cn_source`),
360 UNIQUE KEY `cn_source_idx` (`cn_source`),
361 KEY `used_idx` (`used`),
362 CONSTRAINT `class_source_ibfk_1` FOREIGN KEY (`class_sort_rule`)
363 REFERENCES `class_sort_rules` (`class_sort_rule`)
364 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
365 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type)
366 VALUES('DefaultClassificationSource','ddc',
367 'Default classification scheme used by the collection. E.g., Dewey, LCC, etc.', NULL,'free')");
368 $dbh->do("INSERT INTO `class_sort_rules` (`class_sort_rule`, `description`, `sort_routine`) VALUES
369 ('dewey', 'Default filing rules for DDC', 'Dewey'),
370 ('lcc', 'Default filing rules for LCC', 'LCC'),
371 ('generic', 'Generic call number filing rules', 'Generic')");
372 $dbh->do("INSERT INTO `class_sources` (`cn_source`, `description`, `used`, `class_sort_rule`) VALUES
373 ('ddc', 'Dewey Decimal Classification', 1, 'dewey'),
374 ('lcc', 'Library of Congress Classification', 1, 'lcc'),
375 ('udc', 'Universal Decimal Classification', 0, 'generic'),
376 ('sudocs', 'SuDoc Classification (U.S. GPO)', 0, 'generic'),
377 ('z', 'Other/Generic Classification Scheme', 0, 'generic')");
378 print "Upgrade to $DBversion done (classification sources added)\n";
379 SetVersion ($DBversion);
382 $DBversion = "3.00.00.013";
383 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
384 $dbh->do("CREATE TABLE `import_batches` (
385 `import_batch_id` int(11) NOT NULL auto_increment,
386 `template_id` int(11) default NULL,
387 `branchcode` varchar(10) default NULL,
388 `num_biblios` int(11) NOT NULL default 0,
389 `num_items` int(11) NOT NULL default 0,
390 `upload_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
391 `overlay_action` enum('replace', 'create_new', 'use_template') NOT NULL default 'create_new',
392 `import_status` enum('staging', 'staged', 'importing', 'imported', 'reverting', 'reverted', 'cleaned') NOT NULL default 'staging',
393 `batch_type` enum('batch', 'z3950') NOT NULL default 'batch',
394 `file_name` varchar(100),
395 `comments` mediumtext,
396 PRIMARY KEY (`import_batch_id`),
397 KEY `branchcode` (`branchcode`)
398 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
399 $dbh->do("CREATE TABLE `import_records` (
400 `import_record_id` int(11) NOT NULL auto_increment,
401 `import_batch_id` int(11) NOT NULL,
402 `branchcode` varchar(10) default NULL,
403 `record_sequence` int(11) NOT NULL default 0,
404 `upload_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
405 `import_date` DATE default NULL,
406 `marc` longblob NOT NULL,
407 `marcxml` longtext NOT NULL,
408 `marcxml_old` longtext NOT NULL,
409 `record_type` enum('biblio', 'auth', 'holdings') NOT NULL default 'biblio',
410 `overlay_status` enum('no_match', 'auto_match', 'manual_match', 'match_applied') NOT NULL default 'no_match',
411 `status` enum('error', 'staged', 'imported', 'reverted', 'items_reverted') NOT NULL default 'staged',
412 `import_error` mediumtext,
413 `encoding` varchar(40) NOT NULL default '',
414 `z3950random` varchar(40) default NULL,
415 PRIMARY KEY (`import_record_id`),
416 CONSTRAINT `import_records_ifbk_1` FOREIGN KEY (`import_batch_id`)
417 REFERENCES `import_batches` (`import_batch_id`) ON DELETE CASCADE ON UPDATE CASCADE,
418 KEY `branchcode` (`branchcode`),
419 KEY `batch_sequence` (`import_batch_id`, `record_sequence`)
420 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
421 $dbh->do("CREATE TABLE `import_record_matches` (
422 `import_record_id` int(11) NOT NULL,
423 `candidate_match_id` int(11) NOT NULL,
424 `score` int(11) NOT NULL default 0,
425 CONSTRAINT `import_record_matches_ibfk_1` FOREIGN KEY (`import_record_id`)
426 REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
427 KEY `record_score` (`import_record_id`, `score`)
428 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
429 $dbh->do("CREATE TABLE `import_biblios` (
430 `import_record_id` int(11) NOT NULL,
431 `matched_biblionumber` int(11) default NULL,
432 `control_number` varchar(25) default NULL,
433 `original_source` varchar(25) default NULL,
434 `title` varchar(128) default NULL,
435 `author` varchar(80) default NULL,
436 `isbn` varchar(14) default NULL,
437 `issn` varchar(9) default NULL,
438 `has_items` tinyint(1) NOT NULL default 0,
439 CONSTRAINT `import_biblios_ibfk_1` FOREIGN KEY (`import_record_id`)
440 REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
441 KEY `matched_biblionumber` (`matched_biblionumber`),
442 KEY `title` (`title`),
443 KEY `isbn` (`isbn`)
444 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
445 $dbh->do("CREATE TABLE `import_items` (
446 `import_items_id` int(11) NOT NULL auto_increment,
447 `import_record_id` int(11) NOT NULL,
448 `itemnumber` int(11) default NULL,
449 `branchcode` varchar(10) default NULL,
450 `status` enum('error', 'staged', 'imported', 'reverted') NOT NULL default 'staged',
451 `marcxml` longtext NOT NULL,
452 `import_error` mediumtext,
453 PRIMARY KEY (`import_items_id`),
454 CONSTRAINT `import_items_ibfk_1` FOREIGN KEY (`import_record_id`)
455 REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
456 KEY `itemnumber` (`itemnumber`),
457 KEY `branchcode` (`branchcode`)
458 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
460 $dbh->do("INSERT INTO `import_batches`
461 (`overlay_action`, `import_status`, `batch_type`, `file_name`)
462 SELECT distinct 'create_new', 'staged', 'z3950', `file`
463 FROM `marc_breeding`");
465 $dbh->do("INSERT INTO `import_records`
466 (`import_batch_id`, `import_record_id`, `record_sequence`, `marc`, `record_type`, `status`,
467 `encoding`, `z3950random`, `marcxml`, `marcxml_old`)
468 SELECT `import_batch_id`, `id`, 1, `marc`, 'biblio', 'staged', `encoding`, `z3950random`, '', ''
469 FROM `marc_breeding`
470 JOIN `import_batches` ON (`file_name` = `file`)");
472 $dbh->do("INSERT INTO `import_biblios`
473 (`import_record_id`, `title`, `author`, `isbn`)
474 SELECT `import_record_id`, `title`, `author`, `isbn`
475 FROM `marc_breeding`
476 JOIN `import_records` ON (`import_record_id` = `id`)");
478 $dbh->do("UPDATE `import_batches`
479 SET `num_biblios` = (
480 SELECT COUNT(*)
481 FROM `import_records`
482 WHERE `import_batch_id` = `import_batches`.`import_batch_id`
483 )");
485 $dbh->do("DROP TABLE `marc_breeding`");
487 print "Upgrade to $DBversion done (import_batches et al. added)\n";
488 SetVersion ($DBversion);
491 $DBversion = "3.00.00.014";
492 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
493 $dbh->do("ALTER TABLE subscription ADD lastbranch VARCHAR(4)");
494 print "Upgrade to $DBversion done (userid index added)\n";
495 SetVersion ($DBversion);
498 $DBversion = "3.00.00.015";
499 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
500 $dbh->do("CREATE TABLE `saved_sql` (
501 `id` int(11) NOT NULL auto_increment,
502 `borrowernumber` int(11) default NULL,
503 `date_created` datetime default NULL,
504 `last_modified` datetime default NULL,
505 `savedsql` text,
506 `last_run` datetime default NULL,
507 `report_name` varchar(255) default NULL,
508 `type` varchar(255) default NULL,
509 `notes` text,
510 PRIMARY KEY (`id`),
511 KEY boridx (`borrowernumber`)
512 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
513 $dbh->do("CREATE TABLE `saved_reports` (
514 `id` int(11) NOT NULL auto_increment,
515 `report_id` int(11) default NULL,
516 `report` longtext,
517 `date_run` datetime default NULL,
518 PRIMARY KEY (`id`)
519 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
520 print "Upgrade to $DBversion done (saved_sql and saved_reports added)\n";
521 SetVersion ($DBversion);
524 $DBversion = "3.00.00.016";
525 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
526 $dbh->do(" CREATE TABLE reports_dictionary (
527 id int(11) NOT NULL auto_increment,
528 name varchar(255) default NULL,
529 description text,
530 date_created datetime default NULL,
531 date_modified datetime default NULL,
532 saved_sql text,
533 area int(11) default NULL,
534 PRIMARY KEY (id)
535 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
536 print "Upgrade to $DBversion done (reports_dictionary) added)\n";
537 SetVersion ($DBversion);
540 $DBversion = "3.00.00.017";
541 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
542 $dbh->do("ALTER TABLE action_logs DROP PRIMARY KEY");
543 $dbh->do("ALTER TABLE action_logs ADD KEY timestamp (timestamp,user)");
544 $dbh->do("ALTER TABLE action_logs ADD action_id INT(11) NOT NULL FIRST");
545 $dbh->do("UPDATE action_logs SET action_id = if (\@a, \@a:=\@a+1, \@a:=1)");
546 $dbh->do("ALTER TABLE action_logs MODIFY action_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY");
547 print "Upgrade to $DBversion done (added column to action_logs)\n";
548 SetVersion ($DBversion);
551 $DBversion = "3.00.00.018";
552 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
553 $dbh->do("ALTER TABLE `zebraqueue`
554 ADD `done` INT NOT NULL DEFAULT '0',
555 ADD `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
557 print "Upgrade to $DBversion done (adding timestamp and done columns to zebraque table to improve problem tracking) added)\n";
558 SetVersion ($DBversion);
561 $DBversion = "3.00.00.019";
562 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
563 $dbh->do("ALTER TABLE biblio MODIFY biblionumber INT(11) NOT NULL AUTO_INCREMENT");
564 $dbh->do("ALTER TABLE biblioitems MODIFY biblioitemnumber INT(11) NOT NULL AUTO_INCREMENT");
565 $dbh->do("ALTER TABLE items MODIFY itemnumber INT(11) NOT NULL AUTO_INCREMENT");
566 print "Upgrade to $DBversion done (made bib/item PKs auto_increment)\n";
567 SetVersion ($DBversion);
570 $DBversion = "3.00.00.020";
571 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
572 $dbh->do("ALTER TABLE deleteditems
573 DROP KEY `delitembarcodeidx`,
574 ADD KEY `delitembarcodeidx` (`barcode`)");
575 print "Upgrade to $DBversion done (dropped uniqueness of key on deleteditems.barcode)\n";
576 SetVersion ($DBversion);
579 $DBversion = "3.00.00.021";
580 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
581 $dbh->do("ALTER TABLE items CHANGE homebranch homebranch VARCHAR(10)");
582 $dbh->do("ALTER TABLE deleteditems CHANGE homebranch homebranch VARCHAR(10)");
583 $dbh->do("ALTER TABLE statistics CHANGE branch branch VARCHAR(10)");
584 $dbh->do("ALTER TABLE subscription CHANGE lastbranch lastbranch VARCHAR(10)");
585 print "Upgrade to $DBversion done (extended missed branchcode columns to 10 chars)\n";
586 SetVersion ($DBversion);
589 $DBversion = "3.00.00.022";
590 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
591 $dbh->do("ALTER TABLE items
592 ADD `damaged` tinyint(1) default NULL AFTER notforloan");
593 $dbh->do("ALTER TABLE deleteditems
594 ADD `damaged` tinyint(1) default NULL AFTER notforloan");
595 print "Upgrade to $DBversion done (adding damaged column to items table)\n";
596 SetVersion ($DBversion);
599 $DBversion = "3.00.00.023";
600 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
601 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
602 VALUES ('yuipath','http://yui.yahooapis.com/2.3.1/build','Insert the path to YUI libraries','','free')");
603 print "Upgrade to $DBversion done (adding new system preference for controlling YUI path)\n";
604 SetVersion ($DBversion);
606 $DBversion = "3.00.00.024";
607 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
608 $dbh->do("ALTER TABLE biblioitems CHANGE itemtype itemtype VARCHAR(10)");
609 print "Upgrade to $DBversion done (changing itemtype to (10))\n";
610 SetVersion ($DBversion);
613 $DBversion = "3.00.00.025";
614 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
615 $dbh->do("ALTER TABLE items ADD COLUMN itype VARCHAR(10)");
616 $dbh->do("ALTER TABLE deleteditems ADD COLUMN itype VARCHAR(10) AFTER uri");
617 if(C4::Context->preference('item-level_itypes')){
618 $dbh->do('update items,biblioitems set items.itype=biblioitems.itemtype where items.biblionumber=biblioitems.biblionumber and itype is null');
620 print "Upgrade to $DBversion done (reintroduce items.itype - fill from itemtype)\n ";
621 SetVersion ($DBversion);
624 $DBversion = "3.00.00.026";
625 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
626 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
627 VALUES ('HomeOrHoldingBranch','homebranch','homebranch|holdingbranch','With independent branches turned on this decides whether to check the items holdingbranch or homebranch at circulatilon','choice')");
628 print "Upgrade to $DBversion done (adding new system preference for choosing whether homebranch or holdingbranch is checked in circulation)\n";
629 SetVersion ($DBversion);
632 $DBversion = "3.00.00.027";
633 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
634 $dbh->do("CREATE TABLE `marc_matchers` (
635 `matcher_id` int(11) NOT NULL auto_increment,
636 `code` varchar(10) NOT NULL default '',
637 `description` varchar(255) NOT NULL default '',
638 `record_type` varchar(10) NOT NULL default 'biblio',
639 `threshold` int(11) NOT NULL default 0,
640 PRIMARY KEY (`matcher_id`),
641 KEY `code` (`code`),
642 KEY `record_type` (`record_type`)
643 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
644 $dbh->do("CREATE TABLE `matchpoints` (
645 `matcher_id` int(11) NOT NULL,
646 `matchpoint_id` int(11) NOT NULL auto_increment,
647 `search_index` varchar(30) NOT NULL default '',
648 `score` int(11) NOT NULL default 0,
649 PRIMARY KEY (`matchpoint_id`),
650 CONSTRAINT `matchpoints_ifbk_1` FOREIGN KEY (`matcher_id`)
651 REFERENCES `marc_matchers` (`matcher_id`) ON DELETE CASCADE ON UPDATE CASCADE
652 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
653 $dbh->do("CREATE TABLE `matchpoint_components` (
654 `matchpoint_id` int(11) NOT NULL,
655 `matchpoint_component_id` int(11) NOT NULL auto_increment,
656 sequence int(11) NOT NULL default 0,
657 tag varchar(3) NOT NULL default '',
658 subfields varchar(40) NOT NULL default '',
659 offset int(4) NOT NULL default 0,
660 length int(4) NOT NULL default 0,
661 PRIMARY KEY (`matchpoint_component_id`),
662 KEY `by_sequence` (`matchpoint_id`, `sequence`),
663 CONSTRAINT `matchpoint_components_ifbk_1` FOREIGN KEY (`matchpoint_id`)
664 REFERENCES `matchpoints` (`matchpoint_id`) ON DELETE CASCADE ON UPDATE CASCADE
665 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
666 $dbh->do("CREATE TABLE `matchpoint_component_norms` (
667 `matchpoint_component_id` int(11) NOT NULL,
668 `sequence` int(11) NOT NULL default 0,
669 `norm_routine` varchar(50) NOT NULL default '',
670 KEY `matchpoint_component_norms` (`matchpoint_component_id`, `sequence`),
671 CONSTRAINT `matchpoint_component_norms_ifbk_1` FOREIGN KEY (`matchpoint_component_id`)
672 REFERENCES `matchpoint_components` (`matchpoint_component_id`) ON DELETE CASCADE ON UPDATE CASCADE
673 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
674 $dbh->do("CREATE TABLE `matcher_matchpoints` (
675 `matcher_id` int(11) NOT NULL,
676 `matchpoint_id` int(11) NOT NULL,
677 CONSTRAINT `matcher_matchpoints_ifbk_1` FOREIGN KEY (`matcher_id`)
678 REFERENCES `marc_matchers` (`matcher_id`) ON DELETE CASCADE ON UPDATE CASCADE,
679 CONSTRAINT `matcher_matchpoints_ifbk_2` FOREIGN KEY (`matchpoint_id`)
680 REFERENCES `matchpoints` (`matchpoint_id`) ON DELETE CASCADE ON UPDATE CASCADE
681 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
682 $dbh->do("CREATE TABLE `matchchecks` (
683 `matcher_id` int(11) NOT NULL,
684 `matchcheck_id` int(11) NOT NULL auto_increment,
685 `source_matchpoint_id` int(11) NOT NULL,
686 `target_matchpoint_id` int(11) NOT NULL,
687 PRIMARY KEY (`matchcheck_id`),
688 CONSTRAINT `matcher_matchchecks_ifbk_1` FOREIGN KEY (`matcher_id`)
689 REFERENCES `marc_matchers` (`matcher_id`) ON DELETE CASCADE ON UPDATE CASCADE,
690 CONSTRAINT `matcher_matchchecks_ifbk_2` FOREIGN KEY (`source_matchpoint_id`)
691 REFERENCES `matchpoints` (`matchpoint_id`) ON DELETE CASCADE ON UPDATE CASCADE,
692 CONSTRAINT `matcher_matchchecks_ifbk_3` FOREIGN KEY (`target_matchpoint_id`)
693 REFERENCES `matchpoints` (`matchpoint_id`) ON DELETE CASCADE ON UPDATE CASCADE
694 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
695 print "Upgrade to $DBversion done (added C4::Matcher serialization tables)\n ";
696 SetVersion ($DBversion);
699 $DBversion = "3.00.00.028";
700 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
701 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
702 VALUES ('canreservefromotherbranches','1','','With Independent branches on, can a user from one library reserve an item from another library','YesNo')");
703 print "Upgrade to $DBversion done (adding new system preference for changing reserve/holds behaviour with independent branches)\n";
704 SetVersion ($DBversion);
708 $DBversion = "3.00.00.029";
709 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
710 $dbh->do("ALTER TABLE `import_batches` ADD `matcher_id` int(11) NULL AFTER `import_batch_id`");
711 print "Upgrade to $DBversion done (adding matcher_id to import_batches)\n";
712 SetVersion ($DBversion);
715 $DBversion = "3.00.00.030";
716 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
717 $dbh->do("
718 CREATE TABLE services_throttle (
719 service_type varchar(10) NOT NULL default '',
720 service_count varchar(45) default NULL,
721 PRIMARY KEY (service_type)
722 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
724 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
725 VALUES ('FRBRizeEditions',0,'','If ON, Koha will query one or more ISBN web services for associated ISBNs and display an Editions tab on the details pages','YesNo')");
726 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
727 VALUES ('XISBN',0,'','Use with FRBRizeEditions. If ON, Koha will use the OCLC xISBN web service in the Editions tab on the detail pages. See: http://www.worldcat.org/affiliate/webservices/xisbn/app.jsp','YesNo')");
728 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
729 VALUES ('OCLCAffiliateID','','','Use with FRBRizeEditions and XISBN. You can sign up for an AffiliateID here: http://www.worldcat.org/wcpa/do/AffiliateUserServices?method=initSelfRegister','free')");
730 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
731 VALUES ('XISBNDailyLimit',499,'','The xISBN Web service is free for non-commercial use when usage does not exceed 500 requests per day','free')");
732 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
733 VALUES ('PINESISBN',0,'','Use with FRBRizeEditions. If ON, Koha will use PINES OISBN web service in the Editions tab on the detail pages.','YesNo')");
734 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
735 VALUES ('ThingISBN',0,'','Use with FRBRizeEditions. If ON, Koha will use the ThingISBN web service in the Editions tab on the detail pages.','YesNo')");
736 print "Upgrade to $DBversion done (adding services throttle table and sysprefs for xISBN)\n";
737 SetVersion ($DBversion);
740 $DBversion = "3.00.00.031";
741 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
743 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('QueryStemming',1,'If ON, enables query stemming',NULL,'YesNo')");
744 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('QueryFuzzy',1,'If ON, enables fuzzy option for searches',NULL,'YesNo')");
745 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('QueryWeightFields',1,'If ON, enables field weighting',NULL,'YesNo')");
746 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('WebBasedSelfCheck',0,'If ON, enables the web-based self-check system',NULL,'YesNo')");
747 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('numSearchResults',20,'Specify the maximum number of results to display on a page of results',NULL,'free')");
748 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACnumSearchResults',20,'Specify the maximum number of results to display on a page of results',NULL,'free')");
749 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('maxItemsInSearchResults',20,'Specify the maximum number of items to display for each result on a page of results',NULL,'free')");
750 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('defaultSortField',NULL,'Specify the default field used for sorting','relevance|popularity|call_number|pubdate|acqdate|title|author','Choice')");
751 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('defaultSortOrder',NULL,'Specify the default sort order','asc|dsc|az|za','Choice')");
752 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACdefaultSortField',NULL,'Specify the default field used for sorting','relevance|popularity|call_number|pubdate|acqdate|title|author','Choice')");
753 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACdefaultSortOrder',NULL,'Specify the default sort order','asc|dsc|za|az','Choice')");
754 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('staffClientBaseURL','','Specify the base URL of the staff client',NULL,'free')");
755 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('minPasswordLength',3,'Specify the minimum length of a patron/staff password',NULL,'free')");
756 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('noItemTypeImages',0,'If ON, disables item-type images',NULL,'YesNo')");
757 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('emailLibrarianWhenHoldIsPlaced',0,'If ON, emails the librarian whenever a hold is placed',NULL,'YesNo')");
758 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('holdCancelLength','','Specify how many days before a hold is canceled',NULL,'free')");
759 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('libraryAddress','','The address to use for printing receipts, overdues, etc. if different than physical address',NULL,'free')");
760 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('finesMode','test','Choose the fines mode, test or production','test|production','Choice')");
761 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('globalDueDate','','If set, allows a global static due date for all checkouts',NULL,'free')");
762 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('itemBarcodeInputFilter','','If set, allows specification of a item barcode input filter','cuecat','Choice')");
763 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('singleBranchMode',0,'Operate in Single-branch mode, hide branch selection in the OPAC',NULL,'YesNo')");
764 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('URLLinkText','','Text to display as the link anchor in the OPAC',NULL,'free')");
765 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACSubscriptionDisplay','economical','Specify how to display subscription information in the OPAC','economical|off|full','Choice')");
766 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACDisplayExtendedSubInfo',1,'If ON, extended subscription information is displayed in the OPAC',NULL,'YesNo')");
767 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACViewOthersSuggestions',0,'If ON, allows all suggestions to be displayed in the OPAC',NULL,'YesNo')");
768 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACURLOpenInNewWindow',0,'If ON, URLs in the OPAC open in a new window',NULL,'YesNo')");
769 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACUserCSS',0,'Add CSS to be included in the OPAC',NULL,'free')");
771 print "Upgrade to $DBversion done (adding additional system preference)\n";
772 SetVersion ($DBversion);
775 $DBversion = "3.00.00.032";
776 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
777 $dbh->do("UPDATE `marc_subfield_structure` SET `kohafield` = 'items.wthdrawn' WHERE `kohafield` = 'items.withdrawn'");
778 print "Upgrade to $DBversion done (fixed MARC framework references to items.withdrawn)\n";
779 SetVersion ($DBversion);
782 $DBversion = "3.00.00.033";
783 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
784 $dbh->do("INSERT INTO `userflags` VALUES(17,'staffaccess','Modify login / permissions for staff users',0)");
785 print "Upgrade to $DBversion done (Adding permissions flag for staff member access modification. )\n";
786 SetVersion ($DBversion);
789 $DBversion = "3.00.00.034";
790 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
791 $dbh->do("ALTER TABLE `virtualshelves` ADD COLUMN `sortfield` VARCHAR(16) ");
792 print "Upgrade to $DBversion done (Adding sortfield for Virtual Shelves. )\n";
793 SetVersion ($DBversion);
796 $DBversion = "3.00.00.035";
797 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
798 $dbh->do("UPDATE marc_subfield_structure
799 SET authorised_value = 'cn_source'
800 WHERE kohafield IN ('items.cn_source', 'biblioitems.cn_source')
801 AND (authorised_value is NULL OR authorised_value = '')");
802 print "Upgrade to $DBversion done (MARC frameworks: make classification source a drop-down)\n";
803 SetVersion ($DBversion);
806 $DBversion = "3.00.00.036";
807 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
808 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACItemsResultsDisplay','statuses','statuses : show only the status of items in result list. itemdisplay : show full location of items (branch+location+callnumber) as in staff interface','statuses|itemdetails','Choice');");
809 print "Upgrade to $DBversion done (OPACItemsResultsDisplay systempreference added)\n";
810 SetVersion ($DBversion);
813 $DBversion = "3.00.00.037";
814 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
815 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactfirstname` varchar(255)");
816 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactsurname` varchar(255)");
817 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactaddress1` varchar(255)");
818 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactaddress2` varchar(255)");
819 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactaddress3` varchar(255)");
820 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactzipcode` varchar(50)");
821 $dbh->do("ALTER TABLE `borrowers` ADD COLUMN `altcontactphone` varchar(50)");
822 print "Upgrade to $DBversion done (Adding Alternative Contact Person information to borrowers table)\n";
823 SetVersion ($DBversion);
826 $DBversion = "3.00.00.038";
827 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
828 $dbh->do("UPDATE `systempreferences` set explanation='Choose the fines mode, off, test (emails admin report) or production (accrue overdue fines). Requires fines cron script' , options='off|test|production' where variable='finesMode'");
829 $dbh->do("DELETE FROM `systempreferences` WHERE variable='hideBiblioNumber'");
830 print "Upgrade to $DBversion done ('alter finesMode systempreference, remove superfluous syspref.')\n";
831 SetVersion ($DBversion);
834 $DBversion = "3.00.00.039";
835 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
836 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('uppercasesurnames',0,'If ON, surnames are converted to upper case in patron entry form',NULL,'YesNo')");
837 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('CircControl','ItemHomeLibrary','Specify the agency that controls the circulation and fines policy','PickupLibrary|PatronLibrary|ItemHomeLibrary','Choice')");
838 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('finesCalendar','noFinesWhenClosed','Specify whether to use the Calendar in calculating duedates and fines','ignoreCalendar|noFinesWhenClosed','Choice')");
839 # $dbh->do("DELETE FROM `systempreferences` WHERE variable='HomeOrHoldingBranch'"); # Bug #2752
840 print "Upgrade to $DBversion done ('add circ sysprefs CircControl, finesCalendar, and uppercasesurnames, and delete HomeOrHoldingBranch.')\n";
841 SetVersion ($DBversion);
844 $DBversion = "3.00.00.040";
845 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
846 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('previousIssuesDefaultSortOrder','asc','Specify the sort order of Previous Issues on the circulation page','asc|desc','Choice')");
847 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('todaysIssuesDefaultSortOrder','desc','Specify the sort order of Todays Issues on the circulation page','asc|desc','Choice')");
848 print "Upgrade to $DBversion done ('add circ sysprefs todaysIssuesDefaultSortOrder and previousIssuesDefaultSortOrder.')\n";
849 SetVersion ($DBversion);
853 $DBversion = "3.00.00.041";
854 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
855 # Strictly speaking it is not necessary to explicitly change
856 # NULL values to 0, because the ALTER TABLE statement will do that.
857 # However, setting them first avoids a warning.
858 $dbh->do("UPDATE items SET notforloan = 0 WHERE notforloan IS NULL");
859 $dbh->do("UPDATE items SET damaged = 0 WHERE damaged IS NULL");
860 $dbh->do("UPDATE items SET itemlost = 0 WHERE itemlost IS NULL");
861 $dbh->do("UPDATE items SET wthdrawn = 0 WHERE wthdrawn IS NULL");
862 $dbh->do("ALTER TABLE items
863 MODIFY notforloan tinyint(1) NOT NULL default 0,
864 MODIFY damaged tinyint(1) NOT NULL default 0,
865 MODIFY itemlost tinyint(1) NOT NULL default 0,
866 MODIFY wthdrawn tinyint(1) NOT NULL default 0");
867 $dbh->do("UPDATE deleteditems SET notforloan = 0 WHERE notforloan IS NULL");
868 $dbh->do("UPDATE deleteditems SET damaged = 0 WHERE damaged IS NULL");
869 $dbh->do("UPDATE deleteditems SET itemlost = 0 WHERE itemlost IS NULL");
870 $dbh->do("UPDATE deleteditems SET wthdrawn = 0 WHERE wthdrawn IS NULL");
871 $dbh->do("ALTER TABLE deleteditems
872 MODIFY notforloan tinyint(1) NOT NULL default 0,
873 MODIFY damaged tinyint(1) NOT NULL default 0,
874 MODIFY itemlost tinyint(1) NOT NULL default 0,
875 MODIFY wthdrawn tinyint(1) NOT NULL default 0");
876 print "Upgrade to $DBversion done (disallow NULL in several item status columns)\n";
877 SetVersion ($DBversion);
880 $DBversion = "3.00.00.04";
881 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
882 $dbh->do("ALTER TABLE aqbooksellers CHANGE name name mediumtext NOT NULL");
883 print "Upgrade to $DBversion done (disallow NULL in aqbooksellers.name; part of fix for bug 1251)\n";
884 SetVersion ($DBversion);
887 $DBversion = "3.00.00.043";
888 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
889 $dbh->do("ALTER TABLE `currency` ADD `symbol` varchar(5) default NULL AFTER currency, ADD `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP AFTER symbol");
890 print "Upgrade to $DBversion done (currency table: add symbol and timestamp columns)\n";
891 SetVersion ($DBversion);
894 $DBversion = "3.00.00.044";
895 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
896 $dbh->do("ALTER TABLE deletedborrowers
897 ADD `altcontactfirstname` varchar(255) default NULL,
898 ADD `altcontactsurname` varchar(255) default NULL,
899 ADD `altcontactaddress1` varchar(255) default NULL,
900 ADD `altcontactaddress2` varchar(255) default NULL,
901 ADD `altcontactaddress3` varchar(255) default NULL,
902 ADD `altcontactzipcode` varchar(50) default NULL,
903 ADD `altcontactphone` varchar(50) default NULL
905 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES
906 ('OPACBaseURL',NULL,'Specify the Base URL of the OPAC, e.g., opac.mylibrary.com, the http:// will be added automatically by Koha.',NULL,'Free'),
907 ('language','en','Set the default language in the staff client.',NULL,'Languages'),
908 ('QueryAutoTruncate',1,'If ON, query truncation is enabled by default',NULL,'YesNo'),
909 ('QueryRemoveStopwords',0,'If ON, stopwords listed in the Administration area will be removed from queries',NULL,'YesNo')
911 print "Upgrade to $DBversion done (syncing deletedborrowers table with borrowers table)\n";
912 SetVersion ($DBversion);
915 #-- http://www.w3.org/International/articles/language-tags/
917 #-- RFC4646
918 $DBversion = "3.00.00.045";
919 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
920 $dbh->do("
921 CREATE TABLE language_subtag_registry (
922 subtag varchar(25),
923 type varchar(25), -- language-script-region-variant-extension-privateuse
924 description varchar(25), -- only one of the possible descriptions for ease of reference, see language_descriptions for the complete list
925 added date,
926 KEY `subtag` (`subtag`)
927 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
929 #-- TODO: add suppress_scripts
930 #-- this maps three letter codes defined in iso639.2 back to their
931 #-- two letter equivilents in rfc4646 (LOC maintains iso639+)
932 $dbh->do("CREATE TABLE language_rfc4646_to_iso639 (
933 rfc4646_subtag varchar(25),
934 iso639_2_code varchar(25),
935 KEY `rfc4646_subtag` (`rfc4646_subtag`)
936 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
938 $dbh->do("CREATE TABLE language_descriptions (
939 subtag varchar(25),
940 type varchar(25),
941 lang varchar(25),
942 description varchar(255),
943 KEY `lang` (`lang`)
944 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
946 #-- bi-directional support, keyed by script subcode
947 $dbh->do("CREATE TABLE language_script_bidi (
948 rfc4646_subtag varchar(25), -- script subtag, Arab, Hebr, etc.
949 bidi varchar(3), -- rtl ltr
950 KEY `rfc4646_subtag` (`rfc4646_subtag`)
951 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
953 #-- BIDI Stuff, Arabic and Hebrew
954 $dbh->do("INSERT INTO language_script_bidi(rfc4646_subtag,bidi)
955 VALUES( 'Arab', 'rtl')");
956 $dbh->do("INSERT INTO language_script_bidi(rfc4646_subtag,bidi)
957 VALUES( 'Hebr', 'rtl')");
959 #-- TODO: need to map language subtags to script subtags for detection
960 #-- of bidi when script is not specified (like ar, he)
961 $dbh->do("CREATE TABLE language_script_mapping (
962 language_subtag varchar(25),
963 script_subtag varchar(25),
964 KEY `language_subtag` (`language_subtag`)
965 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
967 #-- Default mappings between script and language subcodes
968 $dbh->do("INSERT INTO language_script_mapping(language_subtag,script_subtag)
969 VALUES( 'ar', 'Arab')");
970 $dbh->do("INSERT INTO language_script_mapping(language_subtag,script_subtag)
971 VALUES( 'he', 'Hebr')");
973 print "Upgrade to $DBversion done (adding language subtag registry and basic BiDi support NOTE: You should import the subtag registry SQL)\n";
974 SetVersion ($DBversion);
977 $DBversion = "3.00.00.046";
978 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
979 $dbh->do("ALTER TABLE `subscription` CHANGE `numberlength` `numberlength` int(11) default '0' ,
980 CHANGE `weeklength` `weeklength` int(11) default '0'");
981 $dbh->do("CREATE TABLE `serialitems` (`serialid` int(11) NOT NULL, `itemnumber` int(11) NOT NULL, UNIQUE KEY `serialididx` (`serialid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
982 $dbh->do("INSERT INTO `serialitems` SELECT `serialid`,`itemnumber` from serial where NOT ISNULL(itemnumber) && itemnumber <> '' && itemnumber NOT LIKE '%,%'");
983 print "Upgrade to $DBversion done (Add serialitems table to link serial issues to items. )\n";
984 SetVersion ($DBversion);
987 $DBversion = "3.00.00.047";
988 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
989 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacRenewalAllowed',0,'If ON, users can renew their issues directly from their OPAC account',NULL,'YesNo');");
990 print "Upgrade to $DBversion done ( Added OpacRenewalAllowed syspref )\n";
991 SetVersion ($DBversion);
994 $DBversion = "3.00.00.048";
995 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
996 $dbh->do("ALTER TABLE `items` ADD `more_subfields_xml` longtext default NULL AFTER `itype`");
997 print "Upgrade to $DBversion done (added items.more_subfields_xml)\n";
998 SetVersion ($DBversion);
1001 $DBversion = "3.00.00.049";
1002 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1003 $dbh->do("ALTER TABLE `z3950servers` ADD `encoding` text default NULL AFTER type ");
1004 print "Upgrade to $DBversion done ( Added encoding field to z3950servers table )\n";
1005 SetVersion ($DBversion);
1008 $DBversion = "3.00.00.050";
1009 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1010 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacHighlightedWords','0','If Set, query matched terms are highlighted in OPAC',NULL,'YesNo');");
1011 print "Upgrade to $DBversion done ( Added OpacHighlightedWords syspref )\n";
1012 SetVersion ($DBversion);
1015 $DBversion = "3.00.00.051";
1016 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1017 $dbh->do("UPDATE systempreferences SET explanation = 'Define the current theme for the OPAC interface.' WHERE variable = 'opacthemes';");
1018 print "Upgrade to $DBversion done ( Corrected opacthemes explanation. )\n";
1019 SetVersion ($DBversion);
1022 $DBversion = "3.00.00.052";
1023 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1024 $dbh->do("ALTER TABLE `deleteditems` ADD `more_subfields_xml` LONGTEXT DEFAULT NULL AFTER `itype`");
1025 print "Upgrade to $DBversion done ( Adding missing column to deleteditems table. )\n";
1026 SetVersion ($DBversion);
1029 $DBversion = "3.00.00.053";
1030 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1031 $dbh->do("CREATE TABLE `printers_profile` (
1032 `prof_id` int(4) NOT NULL auto_increment,
1033 `printername` varchar(40) NOT NULL,
1034 `tmpl_id` int(4) NOT NULL,
1035 `paper_bin` varchar(20) NOT NULL,
1036 `offset_horz` float default NULL,
1037 `offset_vert` float default NULL,
1038 `creep_horz` float default NULL,
1039 `creep_vert` float default NULL,
1040 `unit` char(20) NOT NULL default 'POINT',
1041 PRIMARY KEY (`prof_id`),
1042 UNIQUE KEY `printername` (`printername`,`tmpl_id`,`paper_bin`),
1043 CONSTRAINT `printers_profile_pnfk_1` FOREIGN KEY (`tmpl_id`) REFERENCES `labels_templates` (`tmpl_id`) ON DELETE CASCADE ON UPDATE CASCADE
1044 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
1045 $dbh->do("CREATE TABLE `labels_profile` (
1046 `tmpl_id` int(4) NOT NULL,
1047 `prof_id` int(4) NOT NULL,
1048 UNIQUE KEY `tmpl_id` (`tmpl_id`),
1049 UNIQUE KEY `prof_id` (`prof_id`)
1050 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
1051 print "Upgrade to $DBversion done ( Printer Profile tables added )\n";
1052 SetVersion ($DBversion);
1055 $DBversion = "3.00.00.054";
1056 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1057 $dbh->do("UPDATE systempreferences SET options = 'incremental|annual|hbyymmincr|OFF', explanation = 'Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB = Home Branch' WHERE variable = 'autoBarcode';");
1058 print "Upgrade to $DBversion done ( Added another barcode autogeneration sequence to barcode.pl. )\n";
1059 SetVersion ($DBversion);
1062 $DBversion = "3.00.00.055";
1063 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1064 $dbh->do("ALTER TABLE `zebraqueue` ADD KEY `zebraqueue_lookup` (`server`, `biblio_auth_number`, `operation`, `done`)");
1065 print "Upgrade to $DBversion done ( Added index on zebraqueue. )\n";
1066 SetVersion ($DBversion);
1068 $DBversion = "3.00.00.056";
1069 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1070 if (C4::Context->preference("marcflavour") eq 'UNIMARC') {
1071 $dbh->do("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 ('995', 'v', 'Note sur le N° de périodique','Note sur le N° de périodique', 0, 0, 'items.enumchron', 10, '', '', '', 0, 0, '', '', '', NULL) ");
1072 } else {
1073 $dbh->do("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 ('952', 'h', 'Serial Enumeration / chronology','Serial Enumeration / chronology', 0, 0, 'items.enumchron', 10, '', '', '', 0, 0, '', '', '', NULL) ");
1075 $dbh->do("ALTER TABLE `items` ADD `enumchron` VARCHAR(80) DEFAULT NULL;");
1076 print "Upgrade to $DBversion done ( Added item.enumchron column, and framework map to 952h )\n";
1077 SetVersion ($DBversion);
1080 $DBversion = "3.00.00.057";
1081 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1082 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH','0','if ON, OAI-PMH server is enabled',NULL,'YesNo');");
1083 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH:archiveID','KOHA-OAI-TEST','OAI-PMH archive identification',NULL,'Free');");
1084 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH:MaxCount','50','OAI-PMH maximum number of records by answer to ListRecords and ListIdentifiers queries',NULL,'Integer');");
1085 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH:Set','SET,Experimental set\r\nSET:SUBSET,Experimental subset','OAI-PMH exported set, the set name is followed by a comma and a short description, one set by line',NULL,'Free');");
1086 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH:Subset',\"itemtype='BOOK'\",'Restrict answer to matching raws of the biblioitems table (experimental)',NULL,'Free');");
1087 SetVersion ($DBversion);
1090 $DBversion = "3.00.00.058";
1091 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1092 $dbh->do("ALTER TABLE `opac_news`
1093 CHANGE `lang` `lang` VARCHAR( 25 )
1094 CHARACTER SET utf8
1095 COLLATE utf8_general_ci
1096 NOT NULL default ''");
1097 print "Upgrade to $DBversion done ( lang field in opac_news made longer )\n";
1098 SetVersion ($DBversion);
1101 $DBversion = "3.00.00.059";
1102 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1104 $dbh->do("CREATE TABLE IF NOT EXISTS `labels_templates` (
1105 `tmpl_id` int(4) NOT NULL auto_increment,
1106 `tmpl_code` char(100) default '',
1107 `tmpl_desc` char(100) default '',
1108 `page_width` float default '0',
1109 `page_height` float default '0',
1110 `label_width` float default '0',
1111 `label_height` float default '0',
1112 `topmargin` float default '0',
1113 `leftmargin` float default '0',
1114 `cols` int(2) default '0',
1115 `rows` int(2) default '0',
1116 `colgap` float default '0',
1117 `rowgap` float default '0',
1118 `active` int(1) default NULL,
1119 `units` char(20) default 'PX',
1120 `fontsize` int(4) NOT NULL default '3',
1121 PRIMARY KEY (`tmpl_id`)
1122 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1123 $dbh->do("CREATE TABLE IF NOT EXISTS `printers_profile` (
1124 `prof_id` int(4) NOT NULL auto_increment,
1125 `printername` varchar(40) NOT NULL,
1126 `tmpl_id` int(4) NOT NULL,
1127 `paper_bin` varchar(20) NOT NULL,
1128 `offset_horz` float default NULL,
1129 `offset_vert` float default NULL,
1130 `creep_horz` float default NULL,
1131 `creep_vert` float default NULL,
1132 `unit` char(20) NOT NULL default 'POINT',
1133 PRIMARY KEY (`prof_id`),
1134 UNIQUE KEY `printername` (`printername`,`tmpl_id`,`paper_bin`),
1135 CONSTRAINT `printers_profile_pnfk_1` FOREIGN KEY (`tmpl_id`) REFERENCES `labels_templates` (`tmpl_id`) ON DELETE CASCADE ON UPDATE CASCADE
1136 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
1137 print "Upgrade to $DBversion done ( Added labels_templates table if it did not exist. )\n";
1138 SetVersion ($DBversion);
1141 $DBversion = "3.00.00.060";
1142 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1143 $dbh->do("CREATE TABLE IF NOT EXISTS `patronimage` (
1144 `cardnumber` varchar(16) NOT NULL,
1145 `mimetype` varchar(15) NOT NULL,
1146 `imagefile` mediumblob NOT NULL,
1147 PRIMARY KEY (`cardnumber`),
1148 CONSTRAINT `patronimage_fk1` FOREIGN KEY (`cardnumber`) REFERENCES `borrowers` (`cardnumber`) ON DELETE CASCADE ON UPDATE CASCADE
1149 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1150 print "Upgrade to $DBversion done ( Added patronimage table. )\n";
1151 SetVersion ($DBversion);
1154 $DBversion = "3.00.00.061";
1155 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1156 $dbh->do("ALTER TABLE labels_templates ADD COLUMN font char(10) NOT NULL DEFAULT 'TR';");
1157 print "Upgrade to $DBversion done ( Added font column to labels_templates )\n";
1158 SetVersion ($DBversion);
1161 $DBversion = "3.00.00.062";
1162 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1163 $dbh->do("CREATE TABLE `old_issues` (
1164 `borrowernumber` int(11) default NULL,
1165 `itemnumber` int(11) default NULL,
1166 `date_due` date default NULL,
1167 `branchcode` varchar(10) default NULL,
1168 `issuingbranch` varchar(18) default NULL,
1169 `returndate` date default NULL,
1170 `lastreneweddate` date default NULL,
1171 `return` varchar(4) default NULL,
1172 `renewals` tinyint(4) default NULL,
1173 `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
1174 `issuedate` date default NULL,
1175 KEY `old_issuesborridx` (`borrowernumber`),
1176 KEY `old_issuesitemidx` (`itemnumber`),
1177 KEY `old_bordate` (`borrowernumber`,`timestamp`),
1178 CONSTRAINT `old_issues_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
1179 ON DELETE SET NULL ON UPDATE SET NULL,
1180 CONSTRAINT `old_issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`)
1181 ON DELETE SET NULL ON UPDATE SET NULL
1182 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1183 $dbh->do("CREATE TABLE `old_reserves` (
1184 `borrowernumber` int(11) default NULL,
1185 `reservedate` date default NULL,
1186 `biblionumber` int(11) default NULL,
1187 `constrainttype` varchar(1) default NULL,
1188 `branchcode` varchar(10) default NULL,
1189 `notificationdate` date default NULL,
1190 `reminderdate` date default NULL,
1191 `cancellationdate` date default NULL,
1192 `reservenotes` mediumtext,
1193 `priority` smallint(6) default NULL,
1194 `found` varchar(1) default NULL,
1195 `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
1196 `itemnumber` int(11) default NULL,
1197 `waitingdate` date default NULL,
1198 KEY `old_reserves_borrowernumber` (`borrowernumber`),
1199 KEY `old_reserves_biblionumber` (`biblionumber`),
1200 KEY `old_reserves_itemnumber` (`itemnumber`),
1201 KEY `old_reserves_branchcode` (`branchcode`),
1202 CONSTRAINT `old_reserves_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
1203 ON DELETE SET NULL ON UPDATE SET NULL,
1204 CONSTRAINT `old_reserves_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`)
1205 ON DELETE SET NULL ON UPDATE SET NULL,
1206 CONSTRAINT `old_reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`)
1207 ON DELETE SET NULL ON UPDATE SET NULL
1208 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1210 # move closed transactions to old_* tables
1211 $dbh->do("INSERT INTO old_issues SELECT * FROM issues WHERE returndate IS NOT NULL");
1212 $dbh->do("DELETE FROM issues WHERE returndate IS NOT NULL");
1213 $dbh->do("INSERT INTO old_reserves SELECT * FROM reserves WHERE cancellationdate IS NOT NULL OR found = 'F'");
1214 $dbh->do("DELETE FROM reserves WHERE cancellationdate IS NOT NULL OR found = 'F'");
1216 print "Upgrade to $DBversion done ( Added old_issues and old_reserves tables )\n";
1217 SetVersion ($DBversion);
1220 $DBversion = "3.00.00.063";
1221 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1222 $dbh->do("ALTER TABLE deleteditems
1223 CHANGE COLUMN booksellerid booksellerid MEDIUMTEXT DEFAULT NULL,
1224 ADD COLUMN enumchron VARCHAR(80) DEFAULT NULL AFTER more_subfields_xml,
1225 ADD COLUMN copynumber SMALLINT(6) DEFAULT NULL AFTER enumchron;");
1226 $dbh->do("ALTER TABLE items
1227 CHANGE COLUMN booksellerid booksellerid MEDIUMTEXT,
1228 ADD COLUMN copynumber SMALLINT(6) DEFAULT NULL AFTER enumchron;");
1229 print "Upgrade to $DBversion done ( Changed items.booksellerid and deleteditems.booksellerid to MEDIUMTEXT and added missing items.copynumber and deleteditems.copynumber to fix Bug 1927)\n";
1230 SetVersion ($DBversion);
1233 $DBversion = "3.00.00.064";
1234 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1235 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AmazonLocale','US','Use to set the Locale of your Amazon.com Web Services','US|CA|DE|FR|JP|UK','Choice');");
1236 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AWSAccessKeyID','','See: http://aws.amazon.com','','free');");
1237 $dbh->do("DELETE FROM `systempreferences` WHERE variable='AmazonDevKey';");
1238 $dbh->do("DELETE FROM `systempreferences` WHERE variable='XISBNAmazonSimilarItems';");
1239 $dbh->do("DELETE FROM `systempreferences` WHERE variable='OPACXISBNAmazonSimilarItems';");
1240 print "Upgrade to $DBversion done (IMPORTANT: Upgrading to Amazon.com Associates Web Service 4.0 ) \n";
1241 SetVersion ($DBversion);
1244 $DBversion = "3.00.00.065";
1245 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1246 $dbh->do("CREATE TABLE `patroncards` (
1247 `cardid` int(11) NOT NULL auto_increment,
1248 `batch_id` varchar(10) NOT NULL default '1',
1249 `borrowernumber` int(11) NOT NULL,
1250 `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
1251 PRIMARY KEY (`cardid`),
1252 KEY `patroncards_ibfk_1` (`borrowernumber`),
1253 CONSTRAINT `patroncards_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE
1254 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1255 print "Upgrade to $DBversion done (Adding patroncards table for patroncards generation feature. ) \n";
1256 SetVersion ($DBversion);
1259 $DBversion = "3.00.00.066";
1260 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1261 $dbh->do("ALTER TABLE `virtualshelfcontents` MODIFY `dateadded` timestamp NOT NULL
1262 DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP;
1264 print "Upgrade to $DBversion done (fix for bug 1873: virtualshelfcontents dateadded column empty. ) \n";
1265 SetVersion ($DBversion);
1268 $DBversion = "3.00.00.067";
1269 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1270 $dbh->do("UPDATE systempreferences SET explanation = 'Enable patron images for the Staff Client', type = 'YesNo' WHERE variable = 'patronimages'");
1271 print "Upgrade to $DBversion done (Updating patronimages syspref to reflect current kohastructure.sql. ) \n";
1272 SetVersion ($DBversion);
1275 $DBversion = "3.00.00.068";
1276 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1277 $dbh->do("CREATE TABLE `permissions` (
1278 `module_bit` int(11) NOT NULL DEFAULT 0,
1279 `code` varchar(30) DEFAULT NULL,
1280 `description` varchar(255) DEFAULT NULL,
1281 PRIMARY KEY (`module_bit`, `code`),
1282 CONSTRAINT `permissions_ibfk_1` FOREIGN KEY (`module_bit`) REFERENCES `userflags` (`bit`)
1283 ON DELETE CASCADE ON UPDATE CASCADE
1284 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1285 $dbh->do("CREATE TABLE `user_permissions` (
1286 `borrowernumber` int(11) NOT NULL DEFAULT 0,
1287 `module_bit` int(11) NOT NULL DEFAULT 0,
1288 `code` varchar(30) DEFAULT NULL,
1289 CONSTRAINT `user_permissions_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
1290 ON DELETE CASCADE ON UPDATE CASCADE,
1291 CONSTRAINT `user_permissions_ibfk_2` FOREIGN KEY (`module_bit`, `code`)
1292 REFERENCES `permissions` (`module_bit`, `code`)
1293 ON DELETE CASCADE ON UPDATE CASCADE
1294 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1296 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES
1297 (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
1298 (13, 'label_creator', 'Create printable labels and barcodes from catalog and patron data'),
1299 (13, 'edit_calendar', 'Define days when the library is closed'),
1300 (13, 'moderate_comments', 'Moderate patron comments'),
1301 (13, 'edit_notices', 'Define notices'),
1302 (13, 'edit_notice_status_triggers', 'Set notice/status triggers for overdue items'),
1303 (13, 'view_system_logs', 'Browse the system logs'),
1304 (13, 'inventory', 'Perform inventory (stocktaking) of your catalogue'),
1305 (13, 'stage_marc_import', 'Stage MARC records into the reservoir'),
1306 (13, 'manage_staged_marc', 'Managed staged MARC records, including completing and reversing imports'),
1307 (13, 'export_catalog', 'Export bibliographic and holdings data'),
1308 (13, 'import_patrons', 'Import patron data'),
1309 (13, 'delete_anonymize_patrons', 'Delete old borrowers and anonymize circulation history (deletes borrower reading history)'),
1310 (13, 'batch_upload_patron_images', 'Upload patron images in batch or one at a time'),
1311 (13, 'schedule_tasks', 'Schedule tasks to run')");
1313 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('GranularPermissions','0','Use detailed staff user permissions',NULL,'YesNo')");
1315 print "Upgrade to $DBversion done (adding permissions and user_permissions tables and GranularPermissions syspref) \n";
1316 SetVersion ($DBversion);
1318 $DBversion = "3.00.00.069";
1319 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1320 $dbh->do("ALTER TABLE labels_conf CHANGE COLUMN class classification int(1) DEFAULT NULL;");
1321 print "Upgrade to $DBversion done ( Correcting columname in labels_conf )\n";
1322 SetVersion ($DBversion);
1325 $DBversion = "3.00.00.070";
1326 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1327 $sth = $dbh->prepare("SELECT value FROM systempreferences WHERE variable='yuipath'");
1328 $sth->execute;
1329 my ($value) = $sth->fetchrow;
1330 $value =~ s/2.3.1/2.5.1/;
1331 $dbh->do("UPDATE systempreferences SET value='$value' WHERE variable='yuipath';");
1332 print "Update yuipath syspref to 2.5.1 if necessary\n";
1333 SetVersion ($DBversion);
1336 $DBversion = "3.00.00.071";
1337 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1338 $dbh->do(" ALTER TABLE `subscription` ADD `serialsadditems` TINYINT( 1 ) NOT NULL DEFAULT '0';");
1339 # fill the new field with the previous systempreference value, then drop the syspref
1340 my $sth = $dbh->prepare("SELECT value FROM systempreferences WHERE variable='serialsadditems'");
1341 $sth->execute;
1342 my ($serialsadditems) = $sth->fetchrow();
1343 $dbh->do("UPDATE subscription SET serialsadditems=$serialsadditems");
1344 $dbh->do("DELETE FROM systempreferences WHERE variable='serialsadditems'");
1345 print "Upgrade to $DBversion done ( moving serialsadditems from syspref to subscription )\n";
1346 SetVersion ($DBversion);
1349 $DBversion = "3.00.00.072";
1350 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1351 $dbh->do("ALTER TABLE labels_conf ADD COLUMN formatstring mediumtext DEFAULT NULL AFTER printingtype");
1352 print "Upgrade to $DBversion done ( Adding format string to labels generator. )\n";
1353 SetVersion ($DBversion);
1356 $DBversion = "3.00.00.073";
1357 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1358 $dbh->do("DROP TABLE IF EXISTS `tags_all`;");
1359 $dbh->do(q#
1360 CREATE TABLE `tags_all` (
1361 `tag_id` int(11) NOT NULL auto_increment,
1362 `borrowernumber` int(11) NOT NULL,
1363 `biblionumber` int(11) NOT NULL,
1364 `term` varchar(255) NOT NULL,
1365 `language` int(4) default NULL,
1366 `date_created` datetime NOT NULL,
1367 PRIMARY KEY (`tag_id`),
1368 KEY `tags_borrowers_fk_1` (`borrowernumber`),
1369 KEY `tags_biblionumber_fk_1` (`biblionumber`),
1370 CONSTRAINT `tags_borrowers_fk_1` FOREIGN KEY (`borrowernumber`)
1371 REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1372 CONSTRAINT `tags_biblionumber_fk_1` FOREIGN KEY (`biblionumber`)
1373 REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE
1374 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1376 $dbh->do("DROP TABLE IF EXISTS `tags_approval`;");
1377 $dbh->do(q#
1378 CREATE TABLE `tags_approval` (
1379 `term` varchar(255) NOT NULL,
1380 `approved` int(1) NOT NULL default '0',
1381 `date_approved` datetime default NULL,
1382 `approved_by` int(11) default NULL,
1383 `weight_total` int(9) NOT NULL default '1',
1384 PRIMARY KEY (`term`),
1385 KEY `tags_approval_borrowers_fk_1` (`approved_by`),
1386 CONSTRAINT `tags_approval_borrowers_fk_1` FOREIGN KEY (`approved_by`)
1387 REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE
1388 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1390 $dbh->do("DROP TABLE IF EXISTS `tags_index`;");
1391 $dbh->do(q#
1392 CREATE TABLE `tags_index` (
1393 `term` varchar(255) NOT NULL,
1394 `biblionumber` int(11) NOT NULL,
1395 `weight` int(9) NOT NULL default '1',
1396 PRIMARY KEY (`term`,`biblionumber`),
1397 KEY `tags_index_biblionumber_fk_1` (`biblionumber`),
1398 CONSTRAINT `tags_index_term_fk_1` FOREIGN KEY (`term`)
1399 REFERENCES `tags_approval` (`term`) ON DELETE CASCADE ON UPDATE CASCADE,
1400 CONSTRAINT `tags_index_biblionumber_fk_1` FOREIGN KEY (`biblionumber`)
1401 REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE
1402 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1404 $dbh->do(q#
1405 INSERT INTO `systempreferences` VALUES
1406 ('BakerTaylorBookstoreURL','','','URL template for \"My Libary Bookstore\" links, to which the \"key\" value is appended, and \"https://\" is prepended. It should include your hostname and \"Parent Number\". Make this variable empty to turn MLB links off. Example: ocls.mylibrarybookstore.com/MLB/actions/searchHandler.do?nextPage=bookDetails&parentNum=10923&key=',''),
1407 ('BakerTaylorEnabled','0','','Enable or disable all Baker & Taylor features.','YesNo'),
1408 ('BakerTaylorPassword','','','Baker & Taylor Password for Content Cafe (external content)','Textarea'),
1409 ('BakerTaylorUsername','','','Baker & Taylor Username for Content Cafe (external content)','Textarea'),
1410 ('TagsEnabled','1','','Enables or disables all tagging features. This is the main switch for tags.','YesNo'),
1411 ('TagsExternalDictionary',NULL,'','Path on server to local ispell executable, used to set $Lingua::Ispell::path This dictionary is used as a \"whitelist\" of pre-allowed tags.',''),
1412 ('TagsInputOnDetail','1','','Allow users to input tags from the detail page.', 'YesNo'),
1413 ('TagsInputOnList', '0','','Allow users to input tags from the search results list.', 'YesNo'),
1414 ('TagsModeration', NULL,'','Require tags from patrons to be approved before becoming visible.','YesNo'),
1415 ('TagsShowOnDetail','10','','Number of tags to display on detail page. 0 is off.', 'Integer'),
1416 ('TagsShowOnList', '6','','Number of tags to display on search results list. 0 is off.','Integer')
1418 print "Upgrade to $DBversion done (Baker/Taylor,Tags: sysprefs and tables (tags_all, tags_index, tags_approval)) \n";
1419 SetVersion ($DBversion);
1422 $DBversion = "3.00.00.074";
1423 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1424 $dbh->do( q(update itemtypes set imageurl = concat( 'npl/', imageurl )
1425 where imageurl not like 'http%'
1426 and imageurl is not NULL
1427 and imageurl != '') );
1428 print "Upgrade to $DBversion done (updating imagetype.imageurls to reflect new icon locations.)\n";
1429 SetVersion ($DBversion);
1432 $DBversion = "3.00.00.075";
1433 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1434 $dbh->do( q(alter table authorised_values add imageurl varchar(200) default NULL) );
1435 print "Upgrade to $DBversion done (adding imageurl field to authorised_values table)\n";
1436 SetVersion ($DBversion);
1439 $DBversion = "3.00.00.076";
1440 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1441 $dbh->do("ALTER TABLE import_batches
1442 ADD COLUMN nomatch_action enum('create_new', 'ignore') NOT NULL default 'create_new' AFTER overlay_action");
1443 $dbh->do("ALTER TABLE import_batches
1444 ADD COLUMN item_action enum('always_add', 'add_only_for_matches', 'add_only_for_new', 'ignore')
1445 NOT NULL default 'always_add' AFTER nomatch_action");
1446 $dbh->do("ALTER TABLE import_batches
1447 MODIFY overlay_action enum('replace', 'create_new', 'use_template', 'ignore')
1448 NOT NULL default 'create_new'");
1449 $dbh->do("ALTER TABLE import_records
1450 MODIFY status enum('error', 'staged', 'imported', 'reverted', 'items_reverted',
1451 'ignored') NOT NULL default 'staged'");
1452 $dbh->do("ALTER TABLE import_items
1453 MODIFY status enum('error', 'staged', 'imported', 'reverted', 'ignored') NOT NULL default 'staged'");
1455 print "Upgrade to $DBversion done (changes to import_batches and import_records)\n";
1456 SetVersion ($DBversion);
1459 $DBversion = "3.00.00.077";
1460 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1461 # drop these tables only if they exist and none of them are empty
1462 # these tables are not defined in the packaged 2.2.9, but since it is believed
1463 # that at least one library may be using them in a post-2.2.9 but pre-3.0 Koha,
1464 # some care is taken.
1465 my ($print_error) = $dbh->{PrintError};
1466 $dbh->{PrintError} = 0;
1467 my ($raise_error) = $dbh->{RaiseError};
1468 $dbh->{RaiseError} = 1;
1470 my $count = 0;
1471 my $do_drop = 1;
1472 eval { $count = $dbh->do("SELECT 1 FROM categorytable"); };
1473 if ($count > 0) {
1474 $do_drop = 0;
1476 eval { $count = $dbh->do("SELECT 1 FROM mediatypetable"); };
1477 if ($count > 0) {
1478 $do_drop = 0;
1480 eval { $count = $dbh->do("SELECT 1 FROM subcategorytable"); };
1481 if ($count > 0) {
1482 $do_drop = 0;
1485 if ($do_drop) {
1486 $dbh->do("DROP TABLE IF EXISTS `categorytable`");
1487 $dbh->do("DROP TABLE IF EXISTS `mediatypetable`");
1488 $dbh->do("DROP TABLE IF EXISTS `subcategorytable`");
1491 $dbh->{PrintError} = $print_error;
1492 $dbh->{RaiseError} = $raise_error;
1493 print "Upgrade to $DBversion done (drop categorytable, subcategorytable, and mediatypetable)\n";
1494 SetVersion ($DBversion);
1497 $DBversion = "3.00.00.078";
1498 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1499 my ($print_error) = $dbh->{PrintError};
1500 $dbh->{PrintError} = 0;
1502 unless ($dbh->do("SELECT 1 FROM browser")) {
1503 $dbh->{PrintError} = $print_error;
1504 $dbh->do("CREATE TABLE `browser` (
1505 `level` int(11) NOT NULL,
1506 `classification` varchar(20) NOT NULL,
1507 `description` varchar(255) NOT NULL,
1508 `number` bigint(20) NOT NULL,
1509 `endnode` tinyint(4) NOT NULL
1510 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1512 $dbh->{PrintError} = $print_error;
1513 print "Upgrade to $DBversion done (add browser table if not already present)\n";
1514 SetVersion ($DBversion);
1517 $DBversion = "3.00.00.079";
1518 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1519 my ($print_error) = $dbh->{PrintError};
1520 $dbh->{PrintError} = 0;
1522 $dbh->do("INSERT INTO `systempreferences` (variable, value,options,type, explanation)VALUES
1523 ('AddPatronLists','categorycode','categorycode|category_type','Choice','Allow user to choose what list to pick up from when adding patrons')");
1524 print "Upgrade to $DBversion done (add browser table if not already present)\n";
1525 SetVersion ($DBversion);
1528 $DBversion = "3.00.00.080";
1529 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1530 $dbh->do("ALTER TABLE subscription CHANGE monthlength monthlength int(11) default '0'");
1531 $dbh->do("ALTER TABLE deleteditems MODIFY marc LONGBLOB AFTER copynumber");
1532 $dbh->do("ALTER TABLE aqbooksellers CHANGE name name mediumtext NOT NULL");
1533 print "Upgrade to $DBversion done (catch up on DB schema changes since alpha and beta)\n";
1534 SetVersion ($DBversion);
1537 $DBversion = "3.00.00.081";
1538 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1539 $dbh->do("CREATE TABLE `borrower_attribute_types` (
1540 `code` varchar(10) NOT NULL,
1541 `description` varchar(255) NOT NULL,
1542 `repeatable` tinyint(1) NOT NULL default 0,
1543 `unique_id` tinyint(1) NOT NULL default 0,
1544 `opac_display` tinyint(1) NOT NULL default 0,
1545 `password_allowed` tinyint(1) NOT NULL default 0,
1546 `staff_searchable` tinyint(1) NOT NULL default 0,
1547 `authorised_value_category` varchar(10) default NULL,
1548 PRIMARY KEY (`code`)
1549 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1550 $dbh->do("CREATE TABLE `borrower_attributes` (
1551 `borrowernumber` int(11) NOT NULL,
1552 `code` varchar(10) NOT NULL,
1553 `attribute` varchar(30) default NULL,
1554 `password` varchar(30) default NULL,
1555 KEY `borrowernumber` (`borrowernumber`),
1556 KEY `code_attribute` (`code`, `attribute`),
1557 CONSTRAINT `borrower_attributes_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
1558 ON DELETE CASCADE ON UPDATE CASCADE,
1559 CONSTRAINT `borrower_attributes_ibfk_2` FOREIGN KEY (`code`) REFERENCES `borrower_attribute_types` (`code`)
1560 ON DELETE CASCADE ON UPDATE CASCADE
1561 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1562 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('ExtendedPatronAttributes','0','Use extended patron IDs and attributes',NULL,'YesNo')");
1563 print "Upgrade to $DBversion done (added borrower_attributes and borrower_attribute_types)\n";
1564 SetVersion ($DBversion);
1567 $DBversion = "3.00.00.082";
1568 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1569 $dbh->do( q(alter table accountlines add column lastincrement decimal(28,6) default NULL) );
1570 print "Upgrade to $DBversion done (adding lastincrement column to accountlines table)\n";
1571 SetVersion ($DBversion);
1574 $DBversion = "3.00.00.083";
1575 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1576 $dbh->do( qq(UPDATE systempreferences SET value='local' where variable='yuipath' and value like "%/intranet-tmpl/prog/%"));
1577 print "Upgrade to $DBversion done (Changing yuipath behaviour in managing a local value)\n";
1578 SetVersion ($DBversion);
1580 $DBversion = "3.00.00.084";
1581 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1582 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('RenewSerialAddsSuggestion','0','if ON, adds a new suggestion at serial subscription renewal',NULL,'YesNo')");
1583 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('GoogleJackets','0','if ON, displays jacket covers from Google Books API',NULL,'YesNo')");
1584 print "Upgrade to $DBversion done (add new sysprefs)\n";
1585 SetVersion ($DBversion);
1588 $DBversion = "3.00.00.085";
1589 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1590 if (C4::Context->preference("marcflavour") eq 'MARC21') {
1591 $dbh->do("UPDATE marc_subfield_structure SET tab = 0 WHERE tab = 9 AND tagfield = '037'");
1592 $dbh->do("UPDATE marc_subfield_structure SET tab = 1 WHERE tab = 6 AND tagfield in ('100', '110', '111', '130')");
1593 $dbh->do("UPDATE marc_subfield_structure SET tab = 2 WHERE tab = 6 AND tagfield in ('240', '243')");
1594 $dbh->do("UPDATE marc_subfield_structure SET tab = 4 WHERE tab = 6 AND tagfield in ('400', '410', '411', '440')");
1595 $dbh->do("UPDATE marc_subfield_structure SET tab = 5 WHERE tab = 9 AND tagfield = '584'");
1596 $dbh->do("UPDATE marc_subfield_structure SET tab = 7 WHERE tab = -6 AND tagfield = '760'");
1598 print "Upgrade to $DBversion done (move editing tab of various MARC21 subfields)\n";
1599 SetVersion ($DBversion);
1602 $DBversion = "3.00.00.086";
1603 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1604 $dbh->do(
1605 "CREATE TABLE `tmp_holdsqueue` (
1606 `biblionumber` int(11) default NULL,
1607 `itemnumber` int(11) default NULL,
1608 `barcode` varchar(20) default NULL,
1609 `surname` mediumtext NOT NULL,
1610 `firstname` text,
1611 `phone` text,
1612 `borrowernumber` int(11) NOT NULL,
1613 `cardnumber` varchar(16) default NULL,
1614 `reservedate` date default NULL,
1615 `title` mediumtext,
1616 `itemcallnumber` varchar(30) default NULL,
1617 `holdingbranch` varchar(10) default NULL,
1618 `pickbranch` varchar(10) default NULL,
1619 `notes` text
1620 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
1622 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('RandomizeHoldsQueueWeight','0','if ON, the holds queue in circulation will be randomized, either based on all location codes, or by the location codes specified in StaticHoldsQueueWeight',NULL,'YesNo')");
1623 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('StaticHoldsQueueWeight','0','Specify a list of library location codes separated by commas -- the list of codes will be traversed and weighted with first values given higher weight for holds fulfillment -- alternatively, if RandomizeHoldsQueueWeight is set, the list will be randomly selective',NULL,'TextArea')");
1625 print "Upgrade to $DBversion done (Table structure for table `tmp_holdsqueue`)\n";
1626 SetVersion ($DBversion);
1629 $DBversion = "3.00.00.087";
1630 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1631 $dbh->do("INSERT INTO `systempreferences` VALUES ('AutoEmailOpacUser','0','','Sends notification emails containing new account details to patrons - when account is created.','YesNo')" );
1632 $dbh->do("INSERT INTO `systempreferences` VALUES ('AutoEmailPrimaryAddress','OFF','email|emailpro|B_email|cardnumber|OFF','Defines the default email address where Account Details emails are sent.','Choice')");
1633 print "Upgrade to $DBversion done (added 2 new 'AutoEmailOpacUser' sysprefs)\n";
1634 SetVersion ($DBversion);
1637 $DBversion = "3.00.00.088";
1638 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1639 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('OPACShelfBrowser','1','','Enable/disable Shelf Browser on item details page','YesNo')");
1640 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('OPACItemHolds','1','Allow OPAC users to place hold on specific items. If OFF, users can only request next available copy.','','YesNo')");
1641 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('XSLTDetailsDisplay','0','','Enable XSL stylesheet control over details page display on OPAC WARNING: MARC21 Only','YesNo')");
1642 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('XSLTResultsDisplay','0','','Enable XSL stylesheet control over results page display on OPAC WARNING: MARC21 Only','YesNo')");
1643 print "Upgrade to $DBversion done (added 2 new 'AutoEmailOpacUser' sysprefs)\n";
1644 SetVersion ($DBversion);
1647 $DBversion = "3.00.00.089";
1648 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1649 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('AdvancedSearchTypes','itemtypes','itemtypes|ccode','Select which set of fields comprise the Type limit in the advanced search','Choice')");
1650 print "Upgrade to $DBversion done (added new AdvancedSearchTypes syspref)\n";
1651 SetVersion ($DBversion);
1654 $DBversion = "3.00.00.090";
1655 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1656 $dbh->do("
1657 CREATE TABLE `branch_borrower_circ_rules` (
1658 `branchcode` VARCHAR(10) NOT NULL,
1659 `categorycode` VARCHAR(10) NOT NULL,
1660 `maxissueqty` int(4) default NULL,
1661 PRIMARY KEY (`categorycode`, `branchcode`),
1662 CONSTRAINT `branch_borrower_circ_rules_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
1663 ON DELETE CASCADE ON UPDATE CASCADE,
1664 CONSTRAINT `branch_borrower_circ_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
1665 ON DELETE CASCADE ON UPDATE CASCADE
1666 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1668 $dbh->do("
1669 CREATE TABLE `default_borrower_circ_rules` (
1670 `categorycode` VARCHAR(10) NOT NULL,
1671 `maxissueqty` int(4) default NULL,
1672 PRIMARY KEY (`categorycode`),
1673 CONSTRAINT `borrower_borrower_circ_rules_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
1674 ON DELETE CASCADE ON UPDATE CASCADE
1675 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1677 $dbh->do("
1678 CREATE TABLE `default_branch_circ_rules` (
1679 `branchcode` VARCHAR(10) NOT NULL,
1680 `maxissueqty` int(4) default NULL,
1681 PRIMARY KEY (`branchcode`),
1682 CONSTRAINT `default_branch_circ_rules_ibfk_1` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
1683 ON DELETE CASCADE ON UPDATE CASCADE
1684 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1686 $dbh->do("
1687 CREATE TABLE `default_circ_rules` (
1688 `singleton` enum('singleton') NOT NULL default 'singleton',
1689 `maxissueqty` int(4) default NULL,
1690 PRIMARY KEY (`singleton`)
1691 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1693 print "Upgrade to $DBversion done (added several circ rules tables)\n";
1694 SetVersion ($DBversion);
1698 $DBversion = "3.00.00.091";
1699 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1700 $dbh->do(<<'END_SQL');
1701 ALTER TABLE borrowers
1702 ADD `smsalertnumber` varchar(50) default NULL
1703 END_SQL
1705 $dbh->do(<<'END_SQL');
1706 CREATE TABLE `message_attributes` (
1707 `message_attribute_id` int(11) NOT NULL auto_increment,
1708 `message_name` varchar(20) NOT NULL default '',
1709 `takes_days` tinyint(1) NOT NULL default '0',
1710 PRIMARY KEY (`message_attribute_id`),
1711 UNIQUE KEY `message_name` (`message_name`)
1712 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1713 END_SQL
1715 $dbh->do(<<'END_SQL');
1716 CREATE TABLE `message_transport_types` (
1717 `message_transport_type` varchar(20) NOT NULL,
1718 PRIMARY KEY (`message_transport_type`)
1719 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1720 END_SQL
1722 $dbh->do(<<'END_SQL');
1723 CREATE TABLE `message_transports` (
1724 `message_attribute_id` int(11) NOT NULL,
1725 `message_transport_type` varchar(20) NOT NULL,
1726 `is_digest` tinyint(1) NOT NULL default '0',
1727 `letter_module` varchar(20) NOT NULL default '',
1728 `letter_code` varchar(20) NOT NULL default '',
1729 PRIMARY KEY (`message_attribute_id`,`message_transport_type`,`is_digest`),
1730 KEY `message_transport_type` (`message_transport_type`),
1731 KEY `letter_module` (`letter_module`,`letter_code`),
1732 CONSTRAINT `message_transports_ibfk_1` FOREIGN KEY (`message_attribute_id`) REFERENCES `message_attributes` (`message_attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
1733 CONSTRAINT `message_transports_ibfk_2` FOREIGN KEY (`message_transport_type`) REFERENCES `message_transport_types` (`message_transport_type`) ON DELETE CASCADE ON UPDATE CASCADE,
1734 CONSTRAINT `message_transports_ibfk_3` FOREIGN KEY (`letter_module`, `letter_code`) REFERENCES `letter` (`module`, `code`) ON DELETE CASCADE ON UPDATE CASCADE
1735 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1736 END_SQL
1738 $dbh->do(<<'END_SQL');
1739 CREATE TABLE `borrower_message_preferences` (
1740 `borrower_message_preference_id` int(11) NOT NULL auto_increment,
1741 `borrowernumber` int(11) NOT NULL default '0',
1742 `message_attribute_id` int(11) default '0',
1743 `days_in_advance` int(11) default '0',
1744 `wants_digets` tinyint(1) NOT NULL default '0',
1745 PRIMARY KEY (`borrower_message_preference_id`),
1746 KEY `borrowernumber` (`borrowernumber`),
1747 KEY `message_attribute_id` (`message_attribute_id`),
1748 CONSTRAINT `borrower_message_preferences_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1749 CONSTRAINT `borrower_message_preferences_ibfk_2` FOREIGN KEY (`message_attribute_id`) REFERENCES `message_attributes` (`message_attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE
1750 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1751 END_SQL
1753 $dbh->do(<<'END_SQL');
1754 CREATE TABLE `borrower_message_transport_preferences` (
1755 `borrower_message_preference_id` int(11) NOT NULL default '0',
1756 `message_transport_type` varchar(20) NOT NULL default '0',
1757 PRIMARY KEY (`borrower_message_preference_id`,`message_transport_type`),
1758 KEY `message_transport_type` (`message_transport_type`),
1759 CONSTRAINT `borrower_message_transport_preferences_ibfk_1` FOREIGN KEY (`borrower_message_preference_id`) REFERENCES `borrower_message_preferences` (`borrower_message_preference_id`) ON DELETE CASCADE ON UPDATE CASCADE,
1760 CONSTRAINT `borrower_message_transport_preferences_ibfk_2` FOREIGN KEY (`message_transport_type`) REFERENCES `message_transport_types` (`message_transport_type`) ON DELETE CASCADE ON UPDATE CASCADE
1761 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1762 END_SQL
1764 $dbh->do(<<'END_SQL');
1765 CREATE TABLE `message_queue` (
1766 `message_id` int(11) NOT NULL auto_increment,
1767 `borrowernumber` int(11) NOT NULL,
1768 `subject` text,
1769 `content` text,
1770 `message_transport_type` varchar(20) NOT NULL,
1771 `status` enum('sent','pending','failed','deleted') NOT NULL default 'pending',
1772 `time_queued` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
1773 KEY `message_id` (`message_id`),
1774 KEY `borrowernumber` (`borrowernumber`),
1775 KEY `message_transport_type` (`message_transport_type`),
1776 CONSTRAINT `messageq_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1777 CONSTRAINT `messageq_ibfk_2` FOREIGN KEY (`message_transport_type`) REFERENCES `message_transport_types` (`message_transport_type`) ON DELETE RESTRICT ON UPDATE CASCADE
1778 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1779 END_SQL
1781 $dbh->do(<<'END_SQL');
1782 INSERT INTO `systempreferences`
1783 (variable,value,explanation,options,type)
1784 VALUES
1785 ('EnhancedMessagingPreferences',0,'If ON, allows patrons to select to receive additional messages about items due or nearly due.','','YesNo')
1786 END_SQL
1788 $dbh->do( <<'END_SQL');
1789 INSERT INTO `letter`
1790 (module, code, name, title, content)
1791 VALUES
1792 ('circulation','DUE','Item Due Reminder','Item Due Reminder','Dear <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nThe following item is now due:\r\n\r\n<<biblio.title>> by <<biblio.author>>'),
1793 ('circulation','DUEDGST','Item Due Reminder (Digest)','Item Due Reminder','You have <<count>> items due'),
1794 ('circulation','PREDUE','Advance Notice of Item Due','Advance Notice of Item Due','Dear <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nThe following item will be due soon:\r\n\r\n<<biblio.title>> by <<biblio.author>>'),
1795 ('circulation','PREDUEDGST','Advance Notice of Item Due (Digest)','Advance Notice of Item Due','You have <<count>> items due soon'),
1796 ('circulation','EVENT','Upcoming Library Event','Upcoming Library Event','Dear <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nThis is a reminder of an upcoming library event in which you have expressed interest.');
1797 END_SQL
1799 my @sql_scripts = (
1800 'installer/data/mysql/en/mandatory/message_transport_types.sql',
1801 'installer/data/mysql/en/optional/sample_notices_message_attributes.sql',
1802 'installer/data/mysql/en/optional/sample_notices_message_transports.sql',
1805 my $installer = C4::Installer->new();
1806 foreach my $script ( @sql_scripts ) {
1807 my $full_path = $installer->get_file_path_from_name($script);
1808 my $error = $installer->load_sql($full_path);
1809 warn $error if $error;
1812 print "Upgrade to $DBversion done (Table structure for table `message_queue`, `message_transport_types`, `message_attributes`, `message_transports`, `borrower_message_preferences`, and `borrower_message_transport_preferences`. Alter `borrowers` table,\n";
1813 SetVersion ($DBversion);
1816 $DBversion = "3.00.00.092";
1817 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1818 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('AllowOnShelfHolds', '0', '', 'Allow hold requests to be placed on items that are not on loan', 'YesNo')");
1819 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('AllowHoldsOnDamagedItems', '1', '', 'Allow hold requests to be placed on damaged items', 'YesNo')");
1820 print "Upgrade to $DBversion done (added new AllowOnShelfHolds syspref)\n";
1821 SetVersion ($DBversion);
1824 $DBversion = "3.00.00.093";
1825 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1826 $dbh->do("ALTER TABLE `items` MODIFY COLUMN `copynumber` VARCHAR(32) DEFAULT NULL");
1827 $dbh->do("ALTER TABLE `deleteditems` MODIFY COLUMN `copynumber` VARCHAR(32) DEFAULT NULL");
1828 print "Upgrade to $DBversion done (Change data type of items.copynumber to allow free text)\n";
1829 SetVersion ($DBversion);
1832 $DBversion = "3.00.00.094";
1833 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1834 $dbh->do("ALTER TABLE `marc_subfield_structure` MODIFY `tagsubfield` VARCHAR(1) NOT NULL DEFAULT '' COLLATE utf8_bin");
1835 print "Upgrade to $DBversion done (Change Collation of marc_subfield_structure to allow mixed case in subfield labels.)\n";
1836 SetVersion ($DBversion);
1839 $DBversion = "3.00.00.095";
1840 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1841 if (C4::Context->preference("marcflavour") eq 'MARC21') {
1842 $dbh->do("UPDATE marc_subfield_structure SET authtypecode = 'MEETI_NAME' WHERE authtypecode = 'Meeting Name'");
1843 $dbh->do("UPDATE marc_subfield_structure SET authtypecode = 'CORPO_NAME' WHERE authtypecode = 'CORP0_NAME'");
1845 print "Upgrade to $DBversion done (fix invalid authority types in MARC21 frameworks [bug 2254])\n";
1846 SetVersion ($DBversion);
1849 $DBversion = "3.00.00.096";
1850 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1851 $sth = $dbh->prepare("SHOW COLUMNS FROM borrower_message_preferences LIKE 'wants_digets'");
1852 $sth->execute();
1853 if (my $row = $sth->fetchrow_hashref) {
1854 $dbh->do("ALTER TABLE borrower_message_preferences CHANGE wants_digets wants_digest tinyint(1) NOT NULL default 0");
1856 print "Upgrade to $DBversion done (fix name borrower_message_preferences.wants_digest)\n";
1857 SetVersion ($DBversion);
1860 $DBversion = '3.00.00.097';
1861 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1863 $dbh->do('ALTER TABLE message_queue ADD to_address mediumtext default NULL');
1864 $dbh->do('ALTER TABLE message_queue ADD from_address mediumtext default NULL');
1865 $dbh->do('ALTER TABLE message_queue ADD content_type text');
1866 $dbh->do('ALTER TABLE message_queue CHANGE borrowernumber borrowernumber int(11) default NULL');
1868 print "Upgrade to $DBversion done (updating 4 fields in message_queue table)\n";
1869 SetVersion($DBversion);
1872 $DBversion = '3.00.00.098';
1873 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1875 $dbh->do(q(DELETE FROM message_transport_types WHERE message_transport_type = 'rss'));
1876 $dbh->do(q(DELETE FROM message_transports WHERE message_transport_type = 'rss'));
1878 print "Upgrade to $DBversion done (removing unused RSS message_transport_type)\n";
1879 SetVersion($DBversion);
1882 $DBversion = '3.00.00.099';
1883 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1884 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('OpacSuppression', '0', '', 'Turn ON the OPAC Suppression feature, requires further setup, ask your system administrator for details', 'YesNo')");
1885 print "Upgrade to $DBversion done (Adding OpacSuppression syspref)\n";
1886 SetVersion($DBversion);
1889 $DBversion = '3.00.00.100';
1890 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1891 $dbh->do('ALTER TABLE virtualshelves ADD COLUMN lastmodified timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP');
1892 print "Upgrade to $DBversion done (Adding lastmodified column to virtualshelves)\n";
1893 SetVersion($DBversion);
1896 $DBversion = '3.00.00.101';
1897 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1898 $dbh->do('ALTER TABLE `overduerules` CHANGE `categorycode` `categorycode` VARCHAR(10) NOT NULL');
1899 $dbh->do('ALTER TABLE `deletedborrowers` CHANGE `categorycode` `categorycode` VARCHAR(10) NOT NULL');
1900 print "Upgrade to $DBversion done (Updating columnd definitions for patron category codes in notice/statsu triggers and deletedborrowers tables.)\n";
1901 SetVersion($DBversion);
1904 $DBversion = '3.00.00.102';
1905 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1906 $dbh->do('ALTER TABLE serialitems MODIFY `serialid` int(11) NOT NULL AFTER itemnumber' );
1907 $dbh->do('ALTER TABLE serialitems DROP KEY serialididx' );
1908 $dbh->do('ALTER TABLE serialitems ADD CONSTRAINT UNIQUE KEY serialitemsidx (itemnumber)' );
1909 # before setting constraint, delete any unvalid data
1910 $dbh->do('DELETE from serialitems WHERE serialid not in (SELECT serial.serialid FROM serial)');
1911 $dbh->do('ALTER TABLE serialitems ADD CONSTRAINT serialitems_sfk_1 FOREIGN KEY (serialid) REFERENCES serial (serialid) ON DELETE CASCADE ON UPDATE CASCADE' );
1912 print "Upgrade to $DBversion done (Updating serialitems table to allow for multiple items per serial fixing kohabug 2380)\n";
1913 SetVersion($DBversion);
1916 $DBversion = "3.00.00.103";
1917 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1918 $dbh->do("DELETE FROM systempreferences WHERE variable='serialsadditems'");
1919 print "Upgrade to $DBversion done ( Verifying the removal of serialsadditems from syspref fixing kohabug 2219)\n";
1920 SetVersion ($DBversion);
1923 $DBversion = "3.00.00.104";
1924 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1925 $dbh->do("DELETE FROM systempreferences WHERE variable='noOPACHolds'");
1926 print "Upgrade to $DBversion done (remove superseded 'noOPACHolds' system preference per bug 2413)\n";
1927 SetVersion ($DBversion);
1930 $DBversion = '3.00.00.105';
1931 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
1933 # it is possible that this syspref is already defined since the feature was added some time ago.
1934 unless ( $dbh->do(q(SELECT variable FROM systempreferences WHERE variable = 'SMSSendDriver')) ) {
1935 $dbh->do(<<'END_SQL');
1936 INSERT INTO `systempreferences`
1937 (variable,value,explanation,options,type)
1938 VALUES
1939 ('SMSSendDriver','','Sets which SMS::Send driver is used to send SMS messages.','','free')
1940 END_SQL
1942 print "Upgrade to $DBversion done (added SMSSendDriver system preference)\n";
1943 SetVersion($DBversion);
1946 $DBversion = "3.00.00.106";
1947 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1948 $dbh->do("DELETE FROM systempreferences WHERE variable='noOPACHolds'");
1950 # db revision 105 didn't apply correctly, so we're rolling this into 106
1951 $dbh->do("INSERT INTO `systempreferences`
1952 (variable,value,explanation,options,type)
1953 VALUES
1954 ('SMSSendDriver','','Sets which SMS::Send driver is used to send SMS messages.','','free')");
1956 print "Upgrade to $DBversion done (remove default '0000-00-00' in subscriptionhistory.enddate field)\n";
1957 $dbh->do("ALTER TABLE `subscriptionhistory` CHANGE `enddate` `enddate` DATE NULL DEFAULT NULL ");
1958 $dbh->do("UPDATE subscriptionhistory SET enddate=NULL WHERE enddate='0000-00-00'");
1959 SetVersion ($DBversion);
1962 $DBversion = '3.00.00.107';
1963 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1964 $dbh->do(<<'END_SQL');
1965 UPDATE systempreferences
1966 SET explanation = CONCAT( explanation, '. WARNING: this feature is very resource consuming on collections with large numbers of items.' )
1967 WHERE variable = 'OPACShelfBrowser'
1968 AND explanation NOT LIKE '%WARNING%'
1969 END_SQL
1970 $dbh->do(<<'END_SQL');
1971 UPDATE systempreferences
1972 SET explanation = CONCAT( explanation, '. WARNING: this feature is very resource consuming.' )
1973 WHERE variable = 'CataloguingLog'
1974 AND explanation NOT LIKE '%WARNING%'
1975 END_SQL
1976 $dbh->do(<<'END_SQL');
1977 UPDATE systempreferences
1978 SET explanation = CONCAT( explanation, '. WARNING: using NoZebra on even modest sized collections is very slow.' )
1979 WHERE variable = 'NoZebra'
1980 AND explanation NOT LIKE '%WARNING%'
1981 END_SQL
1982 print "Upgrade to $DBversion done (warning added to OPACShelfBrowser system preference)\n";
1983 SetVersion ($DBversion);
1986 $DBversion = '3.01.00.000';
1987 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
1988 print "Upgrade to $DBversion done (start of 3.1)\n";
1989 SetVersion ($DBversion);
1992 $DBversion = '3.01.00.001';
1993 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
1994 $dbh->do("
1995 CREATE TABLE hold_fill_targets (
1996 `borrowernumber` int(11) NOT NULL,
1997 `biblionumber` int(11) NOT NULL,
1998 `itemnumber` int(11) NOT NULL,
1999 `source_branchcode` varchar(10) default NULL,
2000 `item_level_request` tinyint(4) NOT NULL default 0,
2001 PRIMARY KEY `itemnumber` (`itemnumber`),
2002 KEY `bib_branch` (`biblionumber`, `source_branchcode`),
2003 CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`)
2004 REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
2005 CONSTRAINT `hold_fill_targets_ibfk_2` FOREIGN KEY (`biblionumber`)
2006 REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
2007 CONSTRAINT `hold_fill_targets_ibfk_3` FOREIGN KEY (`itemnumber`)
2008 REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
2009 CONSTRAINT `hold_fill_targets_ibfk_4` FOREIGN KEY (`source_branchcode`)
2010 REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
2011 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2013 $dbh->do("
2014 ALTER TABLE tmp_holdsqueue
2015 ADD item_level_request tinyint(4) NOT NULL default 0
2018 print "Upgrade to $DBversion done (add hold_fill_targets table and a column to tmp_holdsqueue)\n";
2019 SetVersion($DBversion);
2022 $DBversion = '3.01.00.002';
2023 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
2024 # use statistics where available
2025 $dbh->do("
2026 ALTER TABLE statistics ADD KEY tmp_stats (type, itemnumber, borrowernumber)
2028 $dbh->do("
2029 UPDATE issues iss
2030 SET issuedate = (
2031 SELECT max(datetime)
2032 FROM statistics
2033 WHERE type = 'issue'
2034 AND itemnumber = iss.itemnumber
2035 AND borrowernumber = iss.borrowernumber
2037 WHERE issuedate IS NULL;
2039 $dbh->do("ALTER TABLE statistics DROP KEY tmp_stats");
2041 # default to last renewal date
2042 $dbh->do("
2043 UPDATE issues
2044 SET issuedate = lastreneweddate
2045 WHERE issuedate IS NULL
2046 and lastreneweddate IS NOT NULL
2049 my $num_bad_issuedates = $dbh->selectrow_array("SELECT COUNT(*) FROM issues WHERE issuedate IS NULL");
2050 if ($num_bad_issuedates > 0) {
2051 print STDERR "After the upgrade to $DBversion, there are still $num_bad_issuedates loan(s) with a NULL (blank) loan date. ",
2052 "Please check the issues table in your database.";
2054 print "Upgrade to $DBversion done (bug 2582: set null issues.issuedate to lastreneweddate)\n";
2055 SetVersion($DBversion);
2058 $DBversion = "3.01.00.003";
2059 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2060 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowRenewalLimitOverride', '0', 'if ON, allows renewal limits to be overridden on the circulation screen',NULL,'YesNo')");
2061 print "Upgrade to $DBversion done (add new syspref)\n";
2062 SetVersion ($DBversion);
2065 $DBversion = '3.01.00.004';
2066 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2067 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OPACDisplayRequestPriority','0','Show patrons the priority level on holds in the OPAC','','YesNo')");
2068 print "Upgrade to $DBversion done (added OPACDisplayRequestPriority system preference)\n";
2069 SetVersion ($DBversion);
2072 $DBversion = '3.01.00.005';
2073 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2074 $dbh->do("
2075 INSERT INTO `letter` (module, code, name, title, content)
2076 VALUES('reserves', 'HOLD', 'Hold Available for Pickup', 'Hold Available for Pickup at <<branches.branchname>>', 'Dear <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nYou have a hold available for pickup as of <<reserves.waitingdate>>:\r\n\r\nTitle: <<biblio.title>>\r\nAuthor: <<biblio.author>>\r\nCopy: <<items.copynumber>>\r\nLocation: <<branches.branchname>>\r\n<<branches.branchaddress1>>\r\n<<branches.branchaddress2>>\r\n<<branches.branchaddress3>>')
2078 $dbh->do("INSERT INTO `message_attributes` (message_attribute_id, message_name, takes_days) values(4, 'Hold Filled', 0)");
2079 $dbh->do("INSERT INTO `message_transports` (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) values(4, 'sms', 0, 'reserves', 'HOLD')");
2080 $dbh->do("INSERT INTO `message_transports` (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) values(4, 'email', 0, 'reserves', 'HOLD')");
2081 print "Upgrade to $DBversion done (Add letter for holds notifications)\n";
2082 SetVersion ($DBversion);
2085 $DBversion = '3.01.00.006';
2086 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2087 $dbh->do("ALTER TABLE `biblioitems` ADD KEY issn (issn)");
2088 print "Upgrade to $DBversion done (add index on biblioitems.issn)\n";
2089 SetVersion ($DBversion);
2092 $DBversion = "3.01.00.007";
2093 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2094 $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='intranetmainUserblock'");
2095 $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='intranetuserjs'");
2096 $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='opacheader'");
2097 $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='OpacMainUserBlock'");
2098 $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='OpacNav'");
2099 $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='opacuserjs'");
2100 $dbh->do("UPDATE `systempreferences` SET options='30|10', type='Textarea' WHERE variable='OAI-PMH:Set'");
2101 $dbh->do("UPDATE `systempreferences` SET options='50' WHERE variable='intranetstylesheet'");
2102 $dbh->do("UPDATE `systempreferences` SET options='50' WHERE variable='intranetcolorstylesheet'");
2103 $dbh->do("UPDATE `systempreferences` SET options='10' WHERE variable='globalDueDate'");
2104 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='numSearchResults'");
2105 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='OPACnumSearchResults'");
2106 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='ReservesMaxPickupDelay'");
2107 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='TransfersMaxDaysWarning'");
2108 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='StaticHoldsQueueWeight'");
2109 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='holdCancelLength'");
2110 $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='XISBNDailyLimit'");
2111 $dbh->do("UPDATE `systempreferences` SET type='Float' WHERE variable='gist'");
2112 $dbh->do("UPDATE `systempreferences` SET type='Free' WHERE variable='BakerTaylorUsername'");
2113 $dbh->do("UPDATE `systempreferences` SET type='Free' WHERE variable='BakerTaylorPassword'");
2114 $dbh->do("UPDATE `systempreferences` SET type='Textarea', options='70|10' WHERE variable='ISBD'");
2115 $dbh->do("UPDATE `systempreferences` SET type='Textarea', options='70|10', explanation='Enter a specific hash for NoZebra indexes. Enter : \\\'indexname\\\' => \\\'100a,245a,500*\\\',\\\'index2\\\' => \\\'...\\\'' WHERE variable='NoZebraIndexes'");
2116 print "Upgrade to $DBversion done (fix display of many sysprefs)\n";
2117 SetVersion ($DBversion);
2120 $DBversion = '3.01.00.008';
2121 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2123 $dbh->do("CREATE TABLE branch_transfer_limits (
2124 limitId int(8) NOT NULL auto_increment,
2125 toBranch varchar(4) NOT NULL,
2126 fromBranch varchar(4) NOT NULL,
2127 itemtype varchar(4) NOT NULL,
2128 PRIMARY KEY (limitId)
2129 ) ENGINE=InnoDB DEFAULT CHARSET=utf8"
2132 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, Koha will will use the rules defined in branch_transfer_limits to decide if an item transfer should be allowed.', 'YesNo')");
2134 print "Upgrade to $DBversion done (added branch_transfer_limits table and UseBranchTransferLimits system preference)\n";
2135 SetVersion ($DBversion);
2138 $DBversion = "3.01.00.009";
2139 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2140 $dbh->do("ALTER TABLE permissions MODIFY `code` varchar(64) DEFAULT NULL");
2141 $dbh->do("ALTER TABLE user_permissions MODIFY `code` varchar(64) DEFAULT NULL");
2142 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions')");
2143 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'override_renewals', 'Override blocked renewals')");
2144 print "Upgrade to $DBversion done (added subpermissions for circulate permission)\n";
2147 $DBversion = '3.01.00.010';
2148 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
2149 $dbh->do("ALTER TABLE `borrower_attributes` MODIFY COLUMN `attribute` VARCHAR(64) DEFAULT NULL");
2150 $dbh->do("ALTER TABLE `borrower_attributes` MODIFY COLUMN `password` VARCHAR(64) DEFAULT NULL");
2151 print "Upgrade to $DBversion done (bug 2687: increase length of borrower attribute fields)\n";
2152 SetVersion ($DBversion);
2155 $DBversion = '3.01.00.011';
2156 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
2158 # Yes, the old value was ^M terminated.
2159 my $bad_value = "function prepareEmailPopup(){\r\n if (!document.getElementById) return false;\r\n if (!document.getElementById('reserveemail')) return false;\r\n rsvlink = document.getElementById('reserveemail');\r\n rsvlink.onclick = function() {\r\n doReservePopup();\r\n return false;\r\n }\r\n}\r\n\r\nfunction doReservePopup(){\r\n}\r\n\r\nfunction prepareReserveList(){\r\n}\r\n\r\naddLoadEvent(prepareEmailPopup);\r\naddLoadEvent(prepareReserveList);";
2161 my $intranetuserjs = C4::Context->preference('intranetuserjs');
2162 if ($intranetuserjs and $intranetuserjs eq $bad_value) {
2163 my $sql = <<'END_SQL';
2164 UPDATE systempreferences
2165 SET value = ''
2166 WHERE variable = 'intranetuserjs'
2167 END_SQL
2168 $dbh->do($sql);
2170 print "Upgrade to $DBversion done (removed bogus intranetuserjs syspref)\n";
2171 SetVersion($DBversion);
2174 $DBversion = "3.01.00.012";
2175 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2176 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldPolicyOverride', '0', 'Allow staff to override hold policies when placing holds',NULL,'YesNo')");
2177 $dbh->do("
2178 CREATE TABLE `branch_item_rules` (
2179 `branchcode` varchar(10) NOT NULL,
2180 `itemtype` varchar(10) NOT NULL,
2181 `holdallowed` tinyint(1) default NULL,
2182 PRIMARY KEY (`itemtype`,`branchcode`),
2183 KEY `branch_item_rules_ibfk_2` (`branchcode`),
2184 CONSTRAINT `branch_item_rules_ibfk_1` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE,
2185 CONSTRAINT `branch_item_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
2186 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2188 $dbh->do("
2189 CREATE TABLE `default_branch_item_rules` (
2190 `itemtype` varchar(10) NOT NULL,
2191 `holdallowed` tinyint(1) default NULL,
2192 PRIMARY KEY (`itemtype`),
2193 CONSTRAINT `default_branch_item_rules_ibfk_1` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE
2194 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2196 $dbh->do("
2197 ALTER TABLE default_branch_circ_rules
2198 ADD COLUMN holdallowed tinyint(1) NULL
2200 $dbh->do("
2201 ALTER TABLE default_circ_rules
2202 ADD COLUMN holdallowed tinyint(1) NULL
2204 print "Upgrade to $DBversion done (Add tables and system preferences for holds policies)\n";
2205 SetVersion ($DBversion);
2208 $DBversion = '3.01.00.013';
2209 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2210 $dbh->do("
2211 CREATE TABLE item_circulation_alert_preferences (
2212 id int(11) AUTO_INCREMENT,
2213 branchcode varchar(10) NOT NULL,
2214 categorycode varchar(10) NOT NULL,
2215 item_type varchar(10) NOT NULL,
2216 notification varchar(16) NOT NULL,
2217 PRIMARY KEY (id),
2218 KEY (branchcode, categorycode, item_type, notification)
2219 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2222 $dbh->do(q{ ALTER TABLE `message_queue` ADD metadata text DEFAULT NULL AFTER content; });
2223 $dbh->do(q{ ALTER TABLE `message_queue` ADD letter_code varchar(64) DEFAULT NULL AFTER metadata; });
2225 $dbh->do(q{
2226 INSERT INTO `letter` (`module`, `code`, `name`, `title`, `content`) VALUES
2227 ('circulation','CHECKIN','Item Check-in','Check-ins','The following items have been checked in:\r\n----\r\n<<biblio.title>>\r\n----\r\nThank you.');
2229 $dbh->do(q{
2230 INSERT INTO `letter` (`module`, `code`, `name`, `title`, `content`) VALUES
2231 ('circulation','CHECKOUT','Item Checkout','Checkouts','The following items have been checked out:\r\n----\r\n<<biblio.title>>\r\n----\r\nThank you for visiting <<branches.branchname>>.');
2234 $dbh->do(q{INSERT INTO message_attributes (message_attribute_id, message_name, takes_days) VALUES (5, 'Item Check-in', 0);});
2235 $dbh->do(q{INSERT INTO message_attributes (message_attribute_id, message_name, takes_days) VALUES (6, 'Item Checkout', 0);});
2237 $dbh->do(q{INSERT INTO message_transports (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) VALUES (5, 'email', 0, 'circulation', 'CHECKIN');});
2238 $dbh->do(q{INSERT INTO message_transports (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) VALUES (5, 'sms', 0, 'circulation', 'CHECKIN');});
2239 $dbh->do(q{INSERT INTO message_transports (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) VALUES (6, 'email', 0, 'circulation', 'CHECKOUT');});
2240 $dbh->do(q{INSERT INTO message_transports (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) VALUES (6, 'sms', 0, 'circulation', 'CHECKOUT');});
2242 print "Upgrade to $DBversion done (data for Email Checkout Slips project)\n";
2243 SetVersion ($DBversion);
2246 $DBversion = "3.01.00.014";
2247 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2248 $dbh->do("ALTER TABLE `branch_transfer_limits` CHANGE `itemtype` `itemtype` VARCHAR( 4 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL");
2249 $dbh->do("ALTER TABLE `branch_transfer_limits` ADD `ccode` VARCHAR( 10 ) NULL ;");
2250 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` )
2251 VALUES (
2252 'BranchTransferLimitsType', 'ccode', 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit by itemtype or collection code.', 'Choice'
2253 );");
2255 print "Upgrade to $DBversion done ( Updated table for Branch Transfer Limits)\n";
2256 SetVersion ($DBversion);
2259 $DBversion = '3.01.00.015';
2260 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2261 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsClientCode', '0', 'Client Code for using Syndetics Solutions content','','free')");
2263 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsEnabled', '0', 'Turn on Syndetics Enhanced Content','','YesNo')");
2265 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsCoverImages', '0', 'Display Cover Images from Syndetics','','YesNo')");
2267 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsTOC', '0', 'Display Table of Content information from Syndetics','','YesNo')");
2269 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsSummary', '0', 'Display Summary Information from Syndetics','','YesNo')");
2271 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsEditions', '0', 'Display Editions from Syndetics','','YesNo')");
2273 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsExcerpt', '0', 'Display Excerpts and first chapters on OPAC from Syndetics','','YesNo')");
2275 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsReviews', '0', 'Display Reviews on OPAC from Syndetics','','YesNo')");
2277 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsAuthorNotes', '0', 'Display Notes about the Author on OPAC from Syndetics','','YesNo')");
2279 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsAwards', '0', 'Display Awards on OPAC from Syndetics','','YesNo')");
2281 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsSeries', '0', 'Display Series information on OPAC from Syndetics','','YesNo')");
2283 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsCoverImageSize', 'MC', 'Choose the size of the Syndetics Cover Image to display on the OPAC detail page, MC is Medium, LC is Large','MC|LC','Choice')");
2285 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OPACAmazonCoverImages', '0', 'Display cover images on OPAC from Amazon Web Services','','YesNo')");
2287 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('AmazonCoverImages', '0', 'Display Cover Images in Staff Client from Amazon Web Services','','YesNo')");
2289 $dbh->do("UPDATE systempreferences SET variable='AmazonEnabled' WHERE variable = 'AmazonContent'");
2291 $dbh->do("UPDATE systempreferences SET variable='OPACAmazonEnabled' WHERE variable = 'OPACAmazonContent'");
2293 print "Upgrade to $DBversion done (added Syndetics Enhanced Content system preferences)\n";
2294 SetVersion ($DBversion);
2297 $DBversion = "3.01.00.016";
2298 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2299 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('Babeltheque',0,'Turn ON Babeltheque content - See babeltheque.com to subscribe to this service','','YesNo')");
2300 print "Upgrade to $DBversion done (Added Babeltheque syspref)\n";
2301 SetVersion ($DBversion);
2304 $DBversion = "3.01.00.017";
2305 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2306 $dbh->do("ALTER TABLE `subscription` ADD `staffdisplaycount` VARCHAR(10) NULL;");
2307 $dbh->do("ALTER TABLE `subscription` ADD `opacdisplaycount` VARCHAR(10) NULL;");
2308 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` )
2309 VALUES (
2310 'StaffSerialIssueDisplayCount', '3', '', 'Number of serial issues to display per subscription in the Staff client', 'Integer'
2311 );");
2312 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` )
2313 VALUES (
2314 'OPACSerialIssueDisplayCount', '3', '', 'Number of serial issues to display per subscription in the OPAC', 'Integer'
2315 );");
2317 print "Upgrade to $DBversion done ( Updated table for Serials Display)\n";
2318 SetVersion ($DBversion);
2321 $DBversion = "3.01.00.018";
2322 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2323 $dbh->do("ALTER TABLE deletedborrowers ADD `smsalertnumber` varchar(50) default NULL");
2324 print "Upgrade to $DBversion done (added deletedborrowers.smsalertnumber, missed in 3.00.00.091)\n";
2325 SetVersion ($DBversion);
2328 $DBversion = "3.01.00.019";
2329 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2330 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACShowCheckoutName','0','Displays in the OPAC the name of patron who has checked out the material. WARNING: Most sites should leave this off. It is intended for corporate or special sites which need to track who has the item.','','YesNo')");
2331 print "Upgrade to $DBversion done (adding OPACShowCheckoutName systempref)\n";
2332 SetVersion ($DBversion);
2335 $DBversion = "3.01.00.020";
2336 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2337 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('LibraryThingForLibrariesID','','See:http://librarything.com/forlibraries/','','free')");
2338 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('LibraryThingForLibrariesEnabled','0','Enable or Disable Library Thing for Libraries Features','','YesNo')");
2339 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('LibraryThingForLibrariesTabbedView','0','Put LibraryThingForLibraries Content in Tabs.','','YesNo')");
2340 print "Upgrade to $DBversion done (adding LibraryThing for Libraries sysprefs)\n";
2341 SetVersion ($DBversion);
2344 $DBversion = "3.01.00.021";
2345 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2346 my $enable_reviews = C4::Context->preference('OPACAmazonEnabled') ? '1' : '0';
2347 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OPACAmazonReviews', '$enable_reviews', 'Display Amazon readers reviews on OPAC','','YesNo')");
2348 print "Upgrade to $DBversion done (adding OPACAmazonReviews syspref)\n";
2349 SetVersion ($DBversion);
2352 $DBversion = '3.01.00.022';
2353 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
2354 $dbh->do("ALTER TABLE `labels_conf` MODIFY COLUMN `formatstring` mediumtext DEFAULT NULL");
2355 print "Upgrade to $DBversion done (bug 2945: increase size of labels_conf.formatstring)\n";
2356 SetVersion ($DBversion);
2359 $DBversion = '3.01.00.023';
2360 if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
2361 $dbh->do("ALTER TABLE biblioitems MODIFY COLUMN isbn VARCHAR(30) DEFAULT NULL");
2362 $dbh->do("ALTER TABLE deletedbiblioitems MODIFY COLUMN isbn VARCHAR(30) DEFAULT NULL");
2363 $dbh->do("ALTER TABLE import_biblios MODIFY COLUMN isbn VARCHAR(30) DEFAULT NULL");
2364 $dbh->do("ALTER TABLE suggestions MODIFY COLUMN isbn VARCHAR(30) DEFAULT NULL");
2365 print "Upgrade to $DBversion done (bug 2765: increase width of isbn column in several tables)\n";
2366 SetVersion ($DBversion);
2369 $DBversion = "3.01.00.024";
2370 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2371 $dbh->do("ALTER TABLE labels MODIFY COLUMN batch_id int(10) NOT NULL default 1;");
2372 print "Upgrade to $DBversion done (change labels.batch_id from varchar to int)\n";
2373 SetVersion ($DBversion);
2376 $DBversion = '3.01.00.025';
2377 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2378 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'ceilingDueDate', '', '', 'If set, date due will not be past this date. Enter date according to the dateformat System Preference', 'free')");
2380 print "Upgrade to $DBversion done (added ceilingDueDate system preference)\n";
2381 SetVersion ($DBversion);
2384 $DBversion = '3.01.00.026';
2385 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2386 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'numReturnedItemsToShow', '20', '', 'Number of returned items to show on the check-in page', 'Integer')");
2388 print "Upgrade to $DBversion done (added numReturnedItemsToShow system preference)\n";
2389 SetVersion ($DBversion);
2392 $DBversion = '3.01.00.027';
2393 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2394 $dbh->do("ALTER TABLE zebraqueue CHANGE `biblio_auth_number` `biblio_auth_number` bigint(20) unsigned NOT NULL default 0");
2395 print "Upgrade to $DBversion done (Increased size of zebraqueue biblio_auth_number to address bug 3148.)\n";
2396 SetVersion ($DBversion);
2399 $DBversion = '3.01.00.028';
2400 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2401 my $enable_reviews = C4::Context->preference('AmazonEnabled') ? '1' : '0';
2402 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('AmazonReviews', '$enable_reviews', 'Display Amazon reviews on staff interface','','YesNo')");
2403 print "Upgrade to $DBversion done (added AmazonReviews)\n";
2404 SetVersion ($DBversion);
2407 $DBversion = '3.01.00.029';
2408 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2409 $dbh->do(q( UPDATE language_rfc4646_to_iso639
2410 SET iso639_2_code = 'spa'
2411 WHERE rfc4646_subtag = 'es'
2412 AND iso639_2_code = 'rus' )
2414 print "Upgrade to $DBversion done (fixed bug 2599: using Spanish search limit retrieves Russian results)\n";
2415 SetVersion ($DBversion);
2418 $DBversion = "3.01.00.030";
2419 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2420 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'AllowNotForLoanOverride', '0', '', 'If ON, Koha will allow the librarian to loan a not for loan item.', 'YesNo')");
2421 print "Upgrade to $DBversion done (added AllowNotForLoanOverride system preference)\n";
2422 SetVersion ($DBversion);
2425 $DBversion = "3.01.00.031";
2426 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2427 $dbh->do("ALTER TABLE branch_transfer_limits
2428 MODIFY toBranch varchar(10) NOT NULL,
2429 MODIFY fromBranch varchar(10) NOT NULL,
2430 MODIFY itemtype varchar(10) NULL");
2431 print "Upgrade to $DBversion done (fix column widths in branch_transfer_limits)\n";
2432 SetVersion ($DBversion);
2435 $DBversion = "3.01.00.032";
2436 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2437 $dbh->do(<<ENDOFRENEWAL);
2438 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('RenewalPeriodBase', 'now', 'Set whether the renewal date should be counted from the date_due or from the moment the Patron asks for renewal ','date_due|now','Choice');
2439 ENDOFRENEWAL
2440 print "Upgrade to $DBversion done (Change the field)\n";
2441 SetVersion ($DBversion);
2444 $DBversion = "3.01.00.033";
2445 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2446 $dbh->do(q/
2447 ALTER TABLE borrower_message_preferences
2448 MODIFY borrowernumber int(11) default NULL,
2449 ADD categorycode varchar(10) default NULL AFTER borrowernumber,
2450 ADD KEY `categorycode` (`categorycode`),
2451 ADD CONSTRAINT `borrower_message_preferences_ibfk_3`
2452 FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
2453 ON DELETE CASCADE ON UPDATE CASCADE
2455 print "Upgrade to $DBversion done (DB changes to allow patron category defaults for messaging preferences)\n";
2456 SetVersion ($DBversion);
2459 $DBversion = "3.01.00.034";
2460 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2461 $dbh->do("ALTER TABLE `subscription` ADD COLUMN `graceperiod` INT(11) NOT NULL default '0';");
2462 print "Upgrade to $DBversion done (Adding graceperiod column to subscription table)\n";
2463 SetVersion ($DBversion);
2466 $DBversion = '3.01.00.035';
2467 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2468 $dbh->do(q{ ALTER TABLE `subscription` ADD location varchar(80) NULL DEFAULT '' AFTER callnumber; });
2469 print "Upgrade to $DBversion done (Adding location to subscription table)\n";
2470 SetVersion ($DBversion);
2473 $DBversion = '3.01.00.036';
2474 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2475 $dbh->do("UPDATE systempreferences SET explanation = 'Choose the default detail view in the staff interface; choose between normal, labeled_marc, marc or isbd'
2476 WHERE variable = 'IntranetBiblioDefaultView'
2477 AND explanation = 'IntranetBiblioDefaultView'");
2478 $dbh->do("UPDATE systempreferences SET type = 'Choice', options = 'normal|marc|isbd|labeled_marc'
2479 WHERE variable = 'IntranetBiblioDefaultView'");
2480 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('viewISBD','1','Allow display of ISBD view of bibiographic records','','YesNo')");
2481 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('viewLabeledMARC','0','Allow display of labeled MARC view of bibiographic records','','YesNo')");
2482 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('viewMARC','1','Allow display of MARC view of bibiographic records','','YesNo')");
2483 print "Upgrade to $DBversion done (new viewISBD, viewLabeledMARC, viewMARC sysprefs and tweak IntranetBiblioDefaultView)\n";
2484 SetVersion ($DBversion);
2487 $DBversion = '3.01.00.037';
2488 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2489 $dbh->do('ALTER TABLE authorised_values ADD KEY `lib` (`lib`)');
2490 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('FilterBeforeOverdueReport','0','Do not run overdue report until filter selected','','YesNo')");
2491 SetVersion ($DBversion);
2492 print "Upgrade to $DBversion done (added FilterBeforeOverdueReport syspref and new index on authorised_values)\n";
2495 $DBversion = "3.01.00.038";
2496 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2497 # update branches table
2499 $dbh->do("ALTER TABLE branches ADD `branchzip` varchar(25) default NULL AFTER `branchaddress3`");
2500 $dbh->do("ALTER TABLE branches ADD `branchcity` mediumtext AFTER `branchzip`");
2501 $dbh->do("ALTER TABLE branches ADD `branchcountry` text AFTER `branchcity`");
2502 $dbh->do("ALTER TABLE branches ADD `branchurl` mediumtext AFTER `branchemail`");
2503 $dbh->do("ALTER TABLE branches ADD `branchnotes` mediumtext AFTER `branchprinter`");
2504 print "Upgrade to $DBversion done (add ZIP, city, country, URL, and notes column to branches)\n";
2505 SetVersion ($DBversion);
2508 $DBversion = '3.01.00.039';
2509 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2510 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type)VALUES('SpineLabelFormat', '<itemcallnumber><copynumber>', '30|10', 'This preference defines the format for the quick spine label printer. Just list the fields you would like to see in the order you would like to see them, surrounded by <>, for example <itemcallnumber>.', 'Textarea')");
2511 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type)VALUES('SpineLabelAutoPrint', '0', '', 'If this setting is turned on, a print dialog will automatically pop up for the quick spine label printer.', 'YesNo')");
2512 SetVersion ($DBversion);
2513 print "Upgrade to $DBversion done (added SpineLabelFormat and SpineLabelAutoPrint sysprefs)\n";
2516 $DBversion = '3.01.00.040';
2517 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2518 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('AllowHoldDateInFuture','0','If set a date field is displayed on the Hold screen of the Staff Interface, allowing the hold date to be set in the future.','','YesNo')");
2519 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('OPACAllowHoldDateInFuture','0','If set, along with the AllowHoldDateInFuture system preference, OPAC users can set the date of a hold to be in the future.','','YesNo')");
2520 SetVersion ($DBversion);
2521 print "Upgrade to $DBversion done (AllowHoldDateInFuture and OPACAllowHoldDateInFuture sysprefs)\n";
2524 $DBversion = '3.01.00.041';
2525 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2526 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AWSPrivateKey','','See: http://aws.amazon.com. Note that this is required after 2009/08/15 in order to retrieve any enhanced content other than book covers from Amazon.','','free')");
2527 SetVersion ($DBversion);
2528 print "Upgrade to $DBversion done (added AWSPrivateKey syspref - note that if you use enhanced content from Amazon, this should be set right away.)\n";
2531 $DBversion = '3.01.00.042';
2532 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2533 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACFineNoRenewals','99999','Fine Limit above which user canmot renew books via OPAC','','Integer')");
2534 SetVersion ($DBversion);
2535 print "Upgrade to $DBversion done (added OPACFineNoRenewals syspref)\n";
2538 $DBversion = '3.01.00.043';
2539 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2540 $dbh->do('ALTER TABLE items ADD COLUMN permanent_location VARCHAR(80) DEFAULT NULL AFTER location');
2541 $dbh->do('UPDATE items SET permanent_location = location');
2542 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'NewItemsDefaultLocation', '', '', 'If set, all new items will have a location of the given Location Code ( Authorized Value type LOC )', '')");
2543 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'InProcessingToShelvingCart', '0', '', 'If set, when any item with a location code of PROC is ''checked in'', it''s location code will be changed to CART.', 'YesNo')");
2544 $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'ReturnToShelvingCart', '0', '', 'If set, when any item is ''checked in'', it''s location code will be changed to CART.', 'YesNo')");
2545 SetVersion ($DBversion);
2546 print "Upgrade to $DBversion done (amended Item added NewItemsDefaultLocation, InProcessingToShelvingCart, ReturnToShelvingCart sysprefs)\n";
2549 $DBversion = '3.01.00.044';
2550 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2551 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES( 'DisplayClearScreenButton', '0', 'If set to yes, a clear screen button will appear on the circulation page.', 'If set to yes, a clear screen button will appear on the circulation page.', 'YesNo')");
2552 SetVersion ($DBversion);
2553 print "Upgrade to $DBversion done (added DisplayClearScreenButton system preference)\n";
2556 $DBversion = '3.01.00.045';
2557 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2558 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type)VALUES('HidePatronName', '0', '', 'If this is switched on, patron''s cardnumber will be shown instead of their name on the holds and catalog screens', 'YesNo')");
2559 SetVersion ($DBversion);
2560 print "Upgrade to $DBversion done (added a preference to hide the patrons name in the staff catalog)\n";
2563 $DBversion = "3.01.00.046";
2564 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2565 # update borrowers table
2567 $dbh->do("ALTER TABLE borrowers ADD `country` text AFTER zipcode");
2568 $dbh->do("ALTER TABLE borrowers ADD `B_country` text AFTER B_zipcode");
2569 $dbh->do("ALTER TABLE deletedborrowers ADD `country` text AFTER zipcode");
2570 $dbh->do("ALTER TABLE deletedborrowers ADD `B_country` text AFTER B_zipcode");
2571 print "Upgrade to $DBversion done (add country and B_country to borrowers)\n";
2572 SetVersion ($DBversion);
2575 $DBversion = '3.01.00.047';
2576 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2577 $dbh->do("ALTER TABLE items MODIFY itemcallnumber varchar(255);");
2578 $dbh->do("ALTER TABLE deleteditems MODIFY itemcallnumber varchar(255);");
2579 $dbh->do("ALTER TABLE tmp_holdsqueue MODIFY itemcallnumber varchar(255);");
2580 SetVersion ($DBversion);
2581 print " Upgrade to $DBversion done (bug 2761: change max length of itemcallnumber to 255 from 30)\n";
2584 $DBversion = '3.01.00.048';
2585 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2586 $dbh->do("UPDATE userflags SET flagdesc='View Catalog (Librarian Interface)' WHERE bit=2;");
2587 $dbh->do("UPDATE userflags SET flagdesc='Edit Catalog (Modify bibliographic/holdings data)' WHERE bit=9;");
2588 $dbh->do("UPDATE userflags SET flagdesc='Allow to edit authorities' WHERE bit=14;");
2589 $dbh->do("UPDATE userflags SET flagdesc='Allow to access to the reports module' WHERE bit=16;");
2590 $dbh->do("UPDATE userflags SET flagdesc='Allow to manage serials subscriptions' WHERE bit=15;");
2591 SetVersion ($DBversion);
2592 print " Upgrade to $DBversion done (bug 2611: fix spelling/capitalization in permission flag descriptions)\n";
2595 $DBversion = '3.01.00.049';
2596 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2597 $dbh->do("UPDATE permissions SET description = 'Perform inventory (stocktaking) of your catalog' WHERE code = 'inventory';");
2598 SetVersion ($DBversion);
2599 print "Upgrade to $DBversion done (bug 2611: changed catalogue to catalog per the standard)\n";
2602 $DBversion = '3.01.00.050';
2603 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2604 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACSearchForTitleIn','<li class=\"yuimenuitem\">\n<a target=\"_blank\" class=\"yuimenuitemlabel\" href=\"http://worldcat.org/search?q=TITLE\">Other Libraries (WorldCat)</a></li>\n<li class=\"yuimenuitem\">\n<a class=\"yuimenuitemlabel\" href=\"http://www.scholar.google.com/scholar?q=TITLE\" target=\"_blank\">Other Databases (Google Scholar)</a></li>\n<li class=\"yuimenuitem\">\n<a class=\"yuimenuitemlabel\" href=\"http://www.bookfinder.com/search/?author=AUTHOR&amp;title=TITLE&amp;st=xl&amp;ac=qr\" target=\"_blank\">Online Stores (Bookfinder.com)</a></li>','Enter the HTML that will appear in the ''Search for this title in'' box on the detail page in the OPAC. Enter TITLE, AUTHOR, or ISBN in place of their respective variables in the URL. Leave blank to disable ''More Searches'' menu.','70|10','Textarea');");
2605 SetVersion ($DBversion);
2606 print "Upgrade to $DBversion done (bug 1934: Add OPACSearchForTitleIn syspref)\n";
2609 $DBversion = '3.01.00.051';
2610 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2611 $dbh->do("UPDATE systempreferences SET explanation='Fine limit above which user cannot renew books via OPAC' WHERE variable='OPACFineNoRenewals';");
2612 $dbh->do("UPDATE systempreferences SET explanation='If set to ON, a clear screen button will appear on the circulation page.' WHERE variable='DisplayClearScreenButton';");
2613 SetVersion ($DBversion);
2614 print "Upgrade to $DBversion done (fixed typos in new sysprefs)\n";
2617 $DBversion = '3.01.00.052';
2618 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2619 $dbh->do('ALTER TABLE deleteditems ADD COLUMN permanent_location VARCHAR(80) DEFAULT NULL AFTER location');
2620 SetVersion ($DBversion);
2621 print "Upgrade to $DBversion done (bug 3481: add permanent_location column to deleteditems)\n";
2624 $DBversion = '3.01.00.053';
2625 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2626 my $upgrade_script = C4::Context->config("intranetdir") . "/installer/data/mysql/labels_upgrade.pl";
2627 system("perl $upgrade_script");
2628 print "Upgrade to $DBversion done (Migrated labels tables and data to new schema.) NOTE: All existing label batches have been assigned to the first branch in the list of branches. This is ONLY true of migrated label batches.\n";
2629 SetVersion ($DBversion);
2632 $DBversion = '3.01.00.054';
2633 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2634 $dbh->do("ALTER TABLE borrowers ADD `B_address2` text AFTER B_address");
2635 $dbh->do("ALTER TABLE borrowers ADD `altcontactcountry` text AFTER altcontactzipcode");
2636 $dbh->do("ALTER TABLE deletedborrowers ADD `B_address2` text AFTER B_address");
2637 $dbh->do("ALTER TABLE deletedborrowers ADD `altcontactcountry` text AFTER altcontactzipcode");
2638 SetVersion ($DBversion);
2639 print "Upgrade to $DBversion done (bug 1600, bug 3454: add altcontactcountry and B_address2 to borrowers and deletedborrowers)\n";
2642 $DBversion = '3.01.00.055';
2643 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2644 $dbh->do(qq|UPDATE systempreferences set explanation='Enter the HTML that will appear in the ''Search for this title in'' box on the detail page in the OPAC. Enter {TITLE}, {AUTHOR}, or {ISBN} in place of their respective variables in the URL. Leave blank to disable ''More Searches'' menu.', value='<li><a href="http://worldcat.org/search?q={TITLE}" target="_blank">Other Libraries (WorldCat)</a></li>\n<li><a href="http://www.scholar.google.com/scholar?q={TITLE}" target="_blank">Other Databases (Google Scholar)</a></li>\n<li><a href="http://www.bookfinder.com/search/?author={AUTHOR}&amp;title={TITLE}&amp;st=xl&amp;ac=qr" target="_blank">Online Stores (Bookfinder.com)</a></li>' WHERE variable='OPACSearchForTitleIn'|);
2645 SetVersion ($DBversion);
2646 print "Upgrade to $DBversion done (changed OPACSearchForTitleIn per requests in bug 1934)\n";
2649 $DBversion = '3.01.00.056';
2650 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2651 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACPatronDetails','1','If OFF the patron details tab in the OPAC is disabled.','','YesNo');");
2652 SetVersion ($DBversion);
2653 print "Upgrade to $DBversion done (Bug 1172 : Add OPACPatronDetails syspref)\n";
2656 $DBversion = '3.01.00.057';
2657 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2658 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACFinesTab','1','If OFF the patron fines tab in the OPAC is disabled.','','YesNo');");
2659 SetVersion ($DBversion);
2660 print "Upgrade to $DBversion done (Bug 2576 : Add OPACFinesTab syspref)\n";
2663 $DBversion = '3.01.00.058';
2664 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2665 $dbh->do("ALTER TABLE `language_subtag_registry` ADD `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY;");
2666 $dbh->do("ALTER TABLE `language_rfc4646_to_iso639` ADD `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY;");
2667 $dbh->do("ALTER TABLE `language_descriptions` ADD `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY;");
2668 SetVersion ($DBversion);
2669 print "Upgrade to $DBversion done (Added primary keys to language tables)\n";
2672 $DBversion = '3.01.00.059';
2673 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2674 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type)VALUES('DisplayOPACiconsXSLT', '1', '', 'If ON, displays the format, audience, type icons in XSLT MARC21 results and display pages.', 'YesNo')");
2675 SetVersion ($DBversion);
2676 print "Upgrade to $DBversion done (added DisplayOPACiconsXSLT sysprefs)\n";
2679 $DBversion = '3.01.00.060';
2680 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2681 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowAllMessageDeletion','0','Allow any Library to delete any message','','YesNo');");
2682 $dbh->do('DROP TABLE IF EXISTS messages');
2683 $dbh->do("CREATE TABLE messages ( `message_id` int(11) NOT NULL auto_increment,
2684 `borrowernumber` int(11) NOT NULL,
2685 `branchcode` varchar(4) default NULL,
2686 `message_type` varchar(1) NOT NULL,
2687 `message` text NOT NULL,
2688 `message_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
2689 PRIMARY KEY (`message_id`)
2690 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
2692 print "Upgrade to $DBversion done ( Added AllowAllMessageDeletion syspref and messages table )\n";
2693 SetVersion ($DBversion);
2696 $DBversion = '3.01.00.061';
2697 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2698 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('ShowPatronImageInWebBasedSelfCheck', '0', 'If ON, displays patron image when a patron uses web-based self-checkout', '', 'YesNo')");
2699 print "Upgrade to $DBversion done ( Added ShowPatronImageInWebBasedSelfCheck system preference )\n";
2700 SetVersion ($DBversion);
2703 $DBversion = "3.01.00.062";
2704 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2705 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'manage_csv_profiles', 'Manage CSV export profiles')");
2706 $dbh->do(q/
2707 CREATE TABLE `export_format` (
2708 `export_format_id` int(11) NOT NULL auto_increment,
2709 `profile` varchar(255) NOT NULL,
2710 `description` mediumtext NOT NULL,
2711 `marcfields` mediumtext NOT NULL,
2712 PRIMARY KEY (`export_format_id`)
2713 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Used for CSV export';
2715 print "Upgrade to $DBversion done (added csv export profiles)\n";
2718 $DBversion = "3.01.00.063";
2719 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2720 $dbh->do("
2721 CREATE TABLE `fieldmapping` (
2722 `id` int(11) NOT NULL auto_increment,
2723 `field` varchar(255) NOT NULL,
2724 `frameworkcode` char(4) NOT NULL default '',
2725 `fieldcode` char(3) NOT NULL,
2726 `subfieldcode` char(1) NOT NULL,
2727 PRIMARY KEY (`id`)
2728 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2730 SetVersion ($DBversion);print "Upgrade to $DBversion done (Created table fieldmapping)\n";print "Upgrade to 3.01.00.064 done (Version number skipped: nothing done)\n";
2733 $DBversion = '3.01.00.065';
2734 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2735 $dbh->do('ALTER TABLE issuingrules ADD COLUMN `renewalsallowed` smallint(6) NOT NULL default "0" AFTER `issuelength`;');
2736 $sth = $dbh->prepare("SELECT itemtype, renewalsallowed FROM itemtypes");
2737 $sth->execute();
2739 my $sthupd = $dbh->prepare("UPDATE issuingrules SET renewalsallowed = ? WHERE itemtype = ?");
2741 while(my $row = $sth->fetchrow_hashref){
2742 $sthupd->execute($row->{renewalsallowed}, $row->{itemtype});
2745 $dbh->do('ALTER TABLE itemtypes DROP COLUMN `renewalsallowed`;');
2747 SetVersion ($DBversion);
2748 print "Upgrade to $DBversion done (Moving allowed renewals from itemtypes to issuingrule)\n";
2751 $DBversion = '3.01.00.066';
2752 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2753 $dbh->do('ALTER TABLE issuingrules ADD COLUMN `reservesallowed` smallint(6) NOT NULL default "0" AFTER `renewalsallowed`;');
2755 my $maxreserves = C4::Context->preference('maxreserves');
2756 $sth = $dbh->prepare('UPDATE issuingrules SET reservesallowed = ?;');
2757 $sth->execute($maxreserves);
2759 $dbh->do('DELETE FROM systempreferences WHERE variable = "maxreserves";');
2761 $dbh->do("INSERT INTO systempreferences (variable,value, options, explanation, type) VALUES('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights','Choice')");
2763 SetVersion ($DBversion);
2764 print "Upgrade to $DBversion done (Moving max allowed reserves from system preference to issuingrule)\n";
2767 $DBversion = "3.01.00.067";
2768 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2769 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'batchmod', 'Perform batch modification of items')");
2770 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'batchdel', 'Perform batch deletion of items')");
2771 print "Upgrade to $DBversion done (added permissions for batch modification and deletion)\n";
2772 SetVersion ($DBversion);
2775 $DBversion = "3.01.00.068";
2776 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2777 $dbh->do("ALTER TABLE issuingrules ADD COLUMN `finedays` int(11) default NULL AFTER `fine` ");
2778 print "Upgrade to $DBversion done (Adding finedays in issuingrules table)\n";
2779 SetVersion ($DBversion);
2783 $DBversion = "3.01.00.069";
2784 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2785 $dbh->do("INSERT INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('EnableOpacSearchHistory', '1', '', 'Enable or disable opac search history', 'YesNo')");
2787 my $create = <<SEARCHHIST;
2788 CREATE TABLE IF NOT EXISTS `search_history` (
2789 `userid` int(11) NOT NULL,
2790 `sessionid` varchar(32) NOT NULL,
2791 `query_desc` varchar(255) NOT NULL,
2792 `query_cgi` varchar(255) NOT NULL,
2793 `total` int(11) NOT NULL,
2794 `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
2795 KEY `userid` (`userid`),
2796 KEY `sessionid` (`sessionid`)
2797 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Opac search history results';
2798 SEARCHHIST
2799 $dbh->do($create);
2801 print "Upgrade to $DBversion done (added OPAC search history preference and table)\n";
2804 $DBversion = "3.01.00.070";
2805 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2806 $dbh->do("ALTER TABLE authorised_values ADD COLUMN `lib_opac` VARCHAR(80) default NULL AFTER `lib`");
2807 print "Upgrade to $DBversion done (Added a lib_opac field in authorised_values table)\n";
2810 $DBversion = "3.01.00.071";
2811 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2812 $dbh->do("ALTER TABLE `subscription` ADD `enddate` date default NULL");
2813 $dbh->do("ALTER TABLE subscriptionhistory CHANGE enddate histenddate DATE default NULL");
2814 print "Upgrade to $DBversion done ( Adding enddate to subscription)\n";
2817 # Acquisitions update
2819 $DBversion = "3.01.00.072";
2820 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2821 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacPrivacy', '0', 'if ON, allows patrons to define their privacy rules (reading history)',NULL,'YesNo')");
2822 # create a new syspref for the 'Mr anonymous' patron
2823 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AnonymousPatron', '0', \"Set the identifier (borrowernumber) of the 'Mister anonymous' patron. Used for Suggestion and reading history privacy\",NULL,'')");
2824 # fill AnonymousPatron with AnonymousSuggestion value (copy)
2825 my $sth=$dbh->prepare("SELECT value FROM systempreferences WHERE variable='AnonSuggestions'");
2826 $sth->execute;
2827 my ($value) = $sth->fetchrow() || 0;
2828 $dbh->do("UPDATE systempreferences SET value='$value' WHERE variable='AnonymousPatron'");
2829 # set AnonymousSuggestion do YesNo
2830 # 1st, set the value (1/True if it had a borrowernumber)
2831 $dbh->do("UPDATE systempreferences SET value=1 WHERE variable='AnonSuggestions' AND value>0");
2832 # 2nd, change the type to Choice
2833 $dbh->do("UPDATE systempreferences SET type='YesNo' WHERE variable='AnonSuggestions'");
2834 # borrower reading record privacy : 0 : forever, 1 : laws, 2 : don't keep at all
2835 $dbh->do("ALTER TABLE `borrowers` ADD `privacy` INTEGER NOT NULL DEFAULT 1;");
2836 print "Upgrade to $DBversion done (add new syspref and column in borrowers)\n";
2837 SetVersion ($DBversion);
2840 $DBversion = '3.01.00.073';
2841 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2842 $dbh->do('SET FOREIGN_KEY_CHECKS=0 ');
2843 $dbh->do(<<'END_SQL');
2844 CREATE TABLE IF NOT EXISTS `aqcontract` (
2845 `contractnumber` int(11) NOT NULL auto_increment,
2846 `contractstartdate` date default NULL,
2847 `contractenddate` date default NULL,
2848 `contractname` varchar(50) default NULL,
2849 `contractdescription` mediumtext,
2850 `booksellerid` int(11) not NULL,
2851 PRIMARY KEY (`contractnumber`),
2852 CONSTRAINT `booksellerid_fk1` FOREIGN KEY (`booksellerid`)
2853 REFERENCES `aqbooksellers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
2854 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
2855 END_SQL
2856 $dbh->do('SET FOREIGN_KEY_CHECKS=1 ');
2857 print "Upgrade to $DBversion done (adding aqcontract table)\n";
2858 SetVersion ($DBversion);
2861 $DBversion = '3.01.00.074';
2862 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2863 $dbh->do("ALTER TABLE `aqbasket` ADD COLUMN `basketname` varchar(50) default NULL AFTER `basketno`");
2864 $dbh->do("ALTER TABLE `aqbasket` ADD COLUMN `note` mediumtext AFTER `basketname`");
2865 $dbh->do("ALTER TABLE `aqbasket` ADD COLUMN `booksellernote` mediumtext AFTER `note`");
2866 $dbh->do("ALTER TABLE `aqbasket` ADD COLUMN `contractnumber` int(11) AFTER `booksellernote`");
2867 $dbh->do("ALTER TABLE `aqbasket` ADD FOREIGN KEY (`contractnumber`) REFERENCES `aqcontract` (`contractnumber`)");
2868 print "Upgrade to $DBversion done (edit aqbasket table done)\n";
2869 SetVersion ($DBversion);
2872 $DBversion = '3.01.00.075';
2873 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2874 $dbh->do("ALTER TABLE `aqorders` ADD COLUMN `uncertainprice` tinyint(1)");
2876 print "Upgrade to $DBversion done (adding uncertainprices)\n";
2877 SetVersion ($DBversion);
2880 $DBversion = '3.01.00.076';
2881 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2882 $dbh->do('SET FOREIGN_KEY_CHECKS=0 ');
2883 $dbh->do("CREATE TABLE IF NOT EXISTS `aqbasketgroups` (
2884 `id` int(11) NOT NULL auto_increment,
2885 `name` varchar(50) default NULL,
2886 `closed` tinyint(1) default NULL,
2887 `booksellerid` int(11) NOT NULL,
2888 PRIMARY KEY (`id`),
2889 KEY `booksellerid` (`booksellerid`),
2890 CONSTRAINT `aqbasketgroups_ibfk_1` FOREIGN KEY (`booksellerid`) REFERENCES `aqbooksellers` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
2891 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
2892 $dbh->do("ALTER TABLE aqbasket ADD COLUMN `basketgroupid` int(11)");
2893 $dbh->do("ALTER TABLE aqbasket ADD FOREIGN KEY (`basketgroupid`) REFERENCES `aqbasketgroups` (`id`) ON UPDATE CASCADE ON DELETE SET NULL");
2894 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('pdfformat','pdfformat::layout2pages','Controls what script is used for printing (basketgroups)','','free')");
2895 $dbh->do('SET FOREIGN_KEY_CHECKS=1 ');
2896 print "Upgrade to $DBversion done (adding basketgroups)\n";
2897 SetVersion ($DBversion);
2899 $DBversion = '3.01.00.077';
2900 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
2902 $dbh->do("SET FOREIGN_KEY_CHECKS=0 ");
2903 # create a mapping table holding the info we need to match orders to budgets
2904 $dbh->do('DROP TABLE IF EXISTS fundmapping');
2905 $dbh->do(
2906 q|CREATE TABLE fundmapping AS
2907 SELECT aqorderbreakdown.ordernumber, branchcode, bookfundid, budgetdate, entrydate
2908 FROM aqorderbreakdown JOIN aqorders ON aqorderbreakdown.ordernumber = aqorders.ordernumber|);
2909 # match the new type of the corresponding field
2910 $dbh->do('ALTER TABLE fundmapping modify column bookfundid varchar(30)');
2911 # System did not ensure budgetdate was valid historically
2912 $dbh->do(q|UPDATE fundmapping SET budgetdate = entrydate WHERE budgetdate = '0000-00-00' OR budgetdate IS NULL|);
2913 # We save the map in fundmapping in case you need later processing
2914 $dbh->do(q|ALTER TABLE fundmapping add column aqbudgetid integer|);
2915 # these can speed processing up
2916 $dbh->do(q|CREATE INDEX fundmaporder ON fundmapping (ordernumber)|);
2917 $dbh->do(q|CREATE INDEX fundmapid ON fundmapping (bookfundid)|);
2919 $dbh->do("DROP TABLE IF EXISTS `aqbudgetperiods` ");
2921 $dbh->do(qq|
2922 CREATE TABLE `aqbudgetperiods` (
2923 `budget_period_id` int(11) NOT NULL auto_increment,
2924 `budget_period_startdate` date NOT NULL,
2925 `budget_period_enddate` date NOT NULL,
2926 `budget_period_active` tinyint(1) default '0',
2927 `budget_period_description` mediumtext,
2928 `budget_period_locked` tinyint(1) default NULL,
2929 `sort1_authcat` varchar(10) default NULL,
2930 `sort2_authcat` varchar(10) default NULL,
2931 PRIMARY KEY (`budget_period_id`)
2932 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |);
2934 $dbh->do(<<ADDPERIODS);
2935 INSERT INTO aqbudgetperiods (budget_period_startdate,budget_period_enddate,budget_period_active,budget_period_description,budget_period_locked)
2936 SELECT DISTINCT startdate, enddate, NOW() BETWEEN startdate and enddate, concat(startdate," ",enddate),NOT NOW() BETWEEN startdate AND enddate from aqbudget
2937 ADDPERIODS
2938 # SORRY , NO AQBUDGET/AQBOOKFUND -> AQBUDGETS IMPORT JUST YET,
2939 # BUT A NEW CLEAN AQBUDGETS TABLE CREATE FOR NOW..
2940 # DROP TABLE IF EXISTS `aqbudget`;
2941 #CREATE TABLE `aqbudget` (
2942 # `bookfundid` varchar(10) NOT NULL default ',
2943 # `startdate` date NOT NULL default 0,
2944 # `enddate` date default NULL,
2945 # `budgetamount` decimal(13,2) default NULL,
2946 # `aqbudgetid` tinyint(4) NOT NULL auto_increment,
2947 # `branchcode` varchar(10) default NULL,
2948 DropAllForeignKeys('aqbudget');
2949 #$dbh->do("drop table aqbudget;");
2952 my $maxbudgetid = $dbh->selectcol_arrayref(<<IDsBUDGET);
2953 SELECT MAX(aqbudgetid) from aqbudget
2954 IDsBUDGET
2956 $$maxbudgetid[0] = 0 if !$$maxbudgetid[0];
2958 $dbh->do(<<BUDGETAUTOINCREMENT);
2959 ALTER TABLE aqbudget AUTO_INCREMENT=$$maxbudgetid[0]
2960 BUDGETAUTOINCREMENT
2962 $dbh->do(<<BUDGETNAME);
2963 ALTER TABLE aqbudget RENAME `aqbudgets`
2964 BUDGETNAME
2966 $dbh->do(<<BUDGETS);
2967 ALTER TABLE `aqbudgets`
2968 CHANGE COLUMN aqbudgetid `budget_id` int(11) NOT NULL AUTO_INCREMENT,
2969 CHANGE COLUMN branchcode `budget_branchcode` varchar(10) default NULL,
2970 CHANGE COLUMN budgetamount `budget_amount` decimal(28,6) NOT NULL default '0.00',
2971 CHANGE COLUMN bookfundid `budget_code` varchar(30) default NULL,
2972 ADD COLUMN `budget_parent_id` int(11) default NULL,
2973 ADD COLUMN `budget_name` varchar(80) default NULL,
2974 ADD COLUMN `budget_encumb` decimal(28,6) default '0.00',
2975 ADD COLUMN `budget_expend` decimal(28,6) default '0.00',
2976 ADD COLUMN `budget_notes` mediumtext,
2977 ADD COLUMN `budget_description` mediumtext,
2978 ADD COLUMN `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
2979 ADD COLUMN `budget_amount_sublevel` decimal(28,6) AFTER `budget_amount`,
2980 ADD COLUMN `budget_period_id` int(11) default NULL,
2981 ADD COLUMN `sort1_authcat` varchar(80) default NULL,
2982 ADD COLUMN `sort2_authcat` varchar(80) default NULL,
2983 ADD COLUMN `budget_owner_id` int(11) default NULL,
2984 ADD COLUMN `budget_permission` int(1) default '0';
2985 BUDGETS
2987 $dbh->do(<<BUDGETCONSTRAINTS);
2988 ALTER TABLE `aqbudgets`
2989 ADD CONSTRAINT `aqbudgets_ifbk_1` FOREIGN KEY (`budget_period_id`) REFERENCES `aqbudgetperiods` (`budget_period_id`) ON DELETE CASCADE ON UPDATE CASCADE
2990 BUDGETCONSTRAINTS
2991 # $dbh->do(<<BUDGETPKDROP);
2992 #ALTER TABLE `aqbudgets`
2993 # DROP PRIMARY KEY
2994 #BUDGETPKDROP
2995 # $dbh->do(<<BUDGETPKADD);
2996 #ALTER TABLE `aqbudgets`
2997 # ADD PRIMARY KEY budget_id
2998 #BUDGETPKADD
3001 my $query_period= $dbh->prepare(qq|SELECT budget_period_id from aqbudgetperiods where budget_period_startdate=? and budget_period_enddate=?|);
3002 my $query_bookfund= $dbh->prepare(qq|SELECT * from aqbookfund where bookfundid=?|);
3003 my $selectbudgets=$dbh->prepare(qq|SELECT * from aqbudgets|);
3004 my $updatebudgets=$dbh->prepare(qq|UPDATE aqbudgets SET budget_period_id= ? , budget_name=?, budget_branchcode=? where budget_id=?|);
3005 $selectbudgets->execute;
3006 while (my $databudget=$selectbudgets->fetchrow_hashref){
3007 $query_period->execute ($$databudget{startdate},$$databudget{enddate});
3008 my ($budgetperiodid)=$query_period->fetchrow;
3009 $query_bookfund->execute ($$databudget{budget_code});
3010 my $databf=$query_bookfund->fetchrow_hashref;
3011 my $branchcode=$$databudget{budget_branchcode}||$$databf{branchcode};
3012 $updatebudgets->execute($budgetperiodid,$$databf{bookfundname},$branchcode,$$databudget{budget_id});
3014 $dbh->do(<<BUDGETDROPDATES);
3015 ALTER TABLE `aqbudgets`
3016 DROP startdate,
3017 DROP enddate
3018 BUDGETDROPDATES
3021 $dbh->do("DROP TABLE IF EXISTS `aqbudgets_planning` ");
3022 $dbh->do("CREATE TABLE `aqbudgets_planning` (
3023 `plan_id` int(11) NOT NULL auto_increment,
3024 `budget_id` int(11) NOT NULL,
3025 `budget_period_id` int(11) NOT NULL,
3026 `estimated_amount` decimal(28,6) default NULL,
3027 `authcat` varchar(30) NOT NULL,
3028 `authvalue` varchar(30) NOT NULL,
3029 `display` tinyint(1) DEFAULT 1,
3030 PRIMARY KEY (`plan_id`),
3031 CONSTRAINT `aqbudgets_planning_ifbk_1` FOREIGN KEY (`budget_id`) REFERENCES `aqbudgets` (`budget_id`) ON DELETE CASCADE ON UPDATE CASCADE
3032 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
3034 $dbh->do("ALTER TABLE `aqorders`
3035 ADD COLUMN `budget_id` tinyint(4) NOT NULL,
3036 ADD COLUMN `budgetgroup_id` int(11) NOT NULL,
3037 ADD COLUMN `sort1_authcat` varchar(10) default NULL,
3038 ADD COLUMN `sort2_authcat` varchar(10) default NULL" );
3039 # We need to map the orders to the budgets
3040 # For Historic reasons this is more complex than it should be on occasions
3041 my $budg_arr = $dbh->selectall_arrayref(
3042 q|SELECT aqbudgets.budget_id, aqbudgets.budget_code, aqbudgetperiods.budget_period_startdate,
3043 aqbudgetperiods.budget_period_enddate
3044 FROM aqbudgets JOIN aqbudgetperiods ON aqbudgets.budget_period_id = aqbudgetperiods.budget_period_id
3045 ORDER BY budget_code, budget_period_startdate|, { Slice => {} });
3046 # We arbitarily order on start date, this means if you have overlapping periods the order will be
3047 # linked to the latest matching budget YMMV
3048 my $b_sth = $dbh->prepare(
3049 'UPDATE fundmapping set aqbudgetid = ? where bookfundid =? AND budgetdate >= ? AND budgetdate <= ?');
3050 for my $b ( @{$budg_arr}) {
3051 $b_sth->execute($b->{budget_id}, $b->{budget_code}, $b->{budget_period_startdate}, $b->{budget_period_enddate});
3053 # move the budgetids to aqorders
3054 $dbh->do(q|UPDATE aqorders, fundmapping SET aqorders.budget_id = fundmapping.aqbudgetid
3055 WHERE aqorders.ordernumber = fundmapping.ordernumber AND fundmapping.aqbudgetid IS NOT NULL|);
3056 # NB fundmapping is left as an accontants trail also if you have budgetids that werent set
3057 # you can decide what to do with them
3059 $dbh->do(
3060 q|UPDATE aqorders, aqbudgets SET aqorders.budgetgroup_id = aqbudgets.budget_period_id
3061 WHERE aqorders.budget_id = aqbudgets.budget_id|);
3062 # cannot do until aqorderbreakdown removed
3063 # $dbh->do("DROP TABLE aqbookfund ");
3064 # $dbh->do("ALTER TABLE aqorders ADD FOREIGN KEY (`budget_id`) REFERENCES `aqbudgets` (`budget_id`) ON UPDATE CASCADE " ); ????
3065 $dbh->do("SET FOREIGN_KEY_CHECKS=1 ");
3067 print "Upgrade to $DBversion done (Adding new aqbudgetperiods, aqbudgets and aqbudget_planning tables )\n";
3068 SetVersion ($DBversion);
3073 $DBversion = '3.01.00.078';
3074 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
3075 $dbh->do("ALTER TABLE aqbudgetperiods ADD COLUMN budget_period_total decimal(28,6)");
3076 print "Upgrade to $DBversion done (adds 'budget_period_total' column to aqbudgetperiods table)\n";
3077 SetVersion($DBversion);
3081 $DBversion = '3.01.00.079';
3082 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
3083 $dbh->do("ALTER TABLE currency ADD COLUMN active tinyint(1)");
3085 print "Upgrade to $DBversion done (adds 'active' column to currencies table)\n";
3086 SetVersion($DBversion);
3089 $DBversion = '3.01.00.080';
3090 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
3091 $dbh->do(<<BUDG_PERM );
3092 INSERT INTO permissions (module_bit, code, description) VALUES
3093 (11, 'vendors_manage', 'Manage vendors'),
3094 (11, 'contracts_manage', 'Manage contracts'),
3095 (11, 'period_manage', 'Manage periods'),
3096 (11, 'budget_manage', 'Manage budgets'),
3097 (11, 'budget_modify', "Modify budget (can't create lines but can modify existing ones)"),
3098 (11, 'planning_manage', 'Manage budget plannings'),
3099 (11, 'order_manage', 'Manage orders & basket'),
3100 (11, 'group_manage', 'Manage orders & basketgroups'),
3101 (11, 'order_receive', 'Manage orders & basket'),
3102 (11, 'budget_add_del', "Add and delete budgets (but can't modify budgets)");
3103 BUDG_PERM
3105 print "Upgrade to $DBversion done (adds permissions for the acquisitions module)\n";
3106 SetVersion($DBversion);
3110 $DBversion = '3.01.00.081';
3111 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
3112 $dbh->do("ALTER TABLE aqbooksellers ADD COLUMN `gstrate` decimal(6,4) default NULL");
3113 if (my $gist=C4::Context->preference("gist")){
3114 my $sql=$dbh->prepare("UPDATE aqbooksellers set `gstrate`=? ");
3115 $sql->execute($gist) ;
3117 print "Upgrade to $DBversion done (added per-supplier gstrate setting)\n";
3118 SetVersion($DBversion);
3121 $DBversion = "3.01.00.082";
3122 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3123 if (C4::Context->preference("opaclanguages") eq "fr") {
3124 $dbh->do(qq#INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AcqCreateItem','ordering',"Définit quand l'exemplaire est créé : à la commande, à la livraison, au catalogage",'ordering|receiving|cataloguing','Choice')#);
3125 } else {
3126 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AcqCreateItem','ordering','Define when the item is created : when ordering, when receiving, or in cataloguing module','ordering|receiving|cataloguing','Choice')");
3128 print "Upgrade to $DBversion done (adding ReservesNeedReturns systempref, in circulation)\n";
3129 SetVersion ($DBversion);
3132 $DBversion = "3.01.00.083";
3133 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3134 $dbh->do(qq|
3135 CREATE TABLE `aqorders_items` (
3136 `ordernumber` int(11) NOT NULL,
3137 `itemnumber` int(11) NOT NULL,
3138 `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
3139 PRIMARY KEY (`itemnumber`),
3140 KEY `ordernumber` (`ordernumber`)
3141 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
3144 $dbh->do(qq| DROP TABLE aqorderbreakdown |);
3145 $dbh->do('DROP TABLE aqbookfund');
3146 print "Upgrade to $DBversion done (New aqorders_items table for acqui)\n";
3147 SetVersion ($DBversion);
3150 $DBversion = "3.01.00.084";
3151 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3152 $dbh->do( qq# INSERT INTO `systempreferences` VALUES ('CurrencyFormat','US','US|FR','Determines the display format of currencies. eg: ''36000'' is displayed as ''360 000,00'' in ''FR'' or 360,000.00'' in ''US''.','Choice') #);
3154 print "Upgrade to $DBversion done (CurrencyFormat syspref added)\n";
3155 SetVersion ($DBversion);
3158 $DBversion = "3.01.00.085";
3159 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3160 $dbh->do("ALTER table aqorders drop column title");
3161 $dbh->do("ALTER TABLE `aqorders` CHANGE `budget_id` `budget_id` INT( 11 ) NOT NULL");
3162 print "Upgrade to $DBversion done update budget_id size that should not be a tinyint\n";
3163 SetVersion ($DBversion);
3166 $DBversion = "3.01.00.086";
3167 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3168 $dbh->do(<<SUGGESTIONS);
3169 ALTER table suggestions
3170 ADD budgetid INT(11),
3171 ADD branchcode VARCHAR(10) default NULL,
3172 ADD acceptedby INT(11) default NULL,
3173 ADD accepteddate date default NULL,
3174 ADD suggesteddate date default NULL,
3175 ADD manageddate date default NULL,
3176 ADD rejectedby INT(11) default NULL,
3177 ADD rejecteddate date default NULL,
3178 ADD collectiontitle text default NULL,
3179 ADD itemtype VARCHAR(30) default NULL
3181 SUGGESTIONS
3182 print "Upgrade to $DBversion done (Suggestions)\n";
3183 SetVersion ($DBversion);
3186 $DBversion = "3.01.00.087";
3187 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3188 $dbh->do("ALTER table aqbudgets drop column budget_amount_sublevel;");
3189 print "Upgrade to $DBversion done (Drop column budget_amount_sublevel from aqbudgets)\n";
3190 SetVersion ($DBversion);
3193 $DBversion = "3.01.00.088";
3194 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3195 $dbh->do( qq# INSERT INTO `systempreferences` VALUES ('intranetbookbag','1','','If ON, enables display of Cart feature in the intranet','YesNo') #);
3197 print "Upgrade to $DBversion done (intranetbookbag syspref added)\n";
3198 SetVersion ($DBversion);
3201 $DBversion = "3.01.00.090";
3202 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3203 $dbh->do("
3204 INSERT INTO `permissions` (`module_bit`, `code`, `description`) VALUES
3205 (16, 'execute_reports', 'Execute SQL reports'),
3206 (16, 'create_reports', 'Create SQL Reports')
3209 print "Upgrade to $DBversion done (granular permissions for guided reports added)\n";
3210 SetVersion ($DBversion);
3213 $DBversion = "3.01.00.091";
3214 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3215 $dbh->do("
3216 UPDATE `systempreferences` SET `options` = 'holdings|serialcollection|subscriptions'
3217 WHERE `systempreferences`.`variable` = 'opacSerialDefaultTab' LIMIT 1
3220 print "Upgrade to $DBversion done (opac-detail default tag updated)\n";
3221 SetVersion ($DBversion);
3224 $DBversion = "3.01.00.092";
3225 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3226 if (C4::Context->preference("opaclanguages") =~ /fr/) {
3227 $dbh->do(qq{
3228 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('RoutingListAddReserves','1','Si activé, des reservations sont automatiquement créées pour chaque lecteur de la liste de circulation d''un numéro de périodique','','YesNo');
3230 }else{
3231 $dbh->do(qq{
3232 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('RoutingListAddReserves','1','If ON the patrons on routing lists are automatically added to holds on the issue.','','YesNo');
3235 print "Upgrade to $DBversion done (Added RoutingListAddReserves syspref)\n";
3236 SetVersion ($DBversion);
3239 $DBversion = "3.01.00.093";
3240 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3241 $dbh->do(qq{
3242 ALTER TABLE biblioitems ADD INDEX issn_idx (issn);
3244 print "Upgrade to $DBversion done (added index to ISSN)\n";
3245 SetVersion ($DBversion);
3248 $DBversion = "3.01.00.094";
3249 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3250 $dbh->do(qq{
3251 ALTER TABLE aqbasketgroups ADD deliveryplace VARCHAR(10) default NULL, ADD deliverycomment VARCHAR(255) default NULL;
3254 print "Upgrade to $DBversion done (adding deliveryplace deliverycomment to basketgroups)\n";
3255 SetVersion ($DBversion);
3258 $DBversion = "3.01.00.095";
3259 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3260 $dbh->do(qq{
3261 ALTER TABLE items ADD stocknumber VARCHAR(32) DEFAULT NULL COMMENT "stores the inventory number";
3263 $dbh->do(qq{
3264 ALTER TABLE items ADD UNIQUE INDEX itemsstocknumberidx (stocknumber);
3266 $dbh->do(qq{
3267 ALTER TABLE deleteditems ADD stocknumber VARCHAR(32) DEFAULT NULL COMMENT "stores the inventory number of deleted items";
3269 $dbh->do(qq{
3270 ALTER TABLE deleteditems ADD UNIQUE INDEX deleteditemsstocknumberidx (stocknumber);
3272 if (C4::Context->preference('marcflavour') eq 'UNIMARC'){
3273 $dbh->do(qq{
3274 INSERT IGNORE INTO marc_subfield_structure (frameworkcode,tagfield, tagsubfield, tab, repeatable, mandatory,kohafield)
3275 SELECT DISTINCT (frameworkcode),995,"j",10,0,0,"items.stocknumber" from biblio_framework ;
3277 #Previously, copynumber was used as stocknumber
3278 $dbh->do(qq{
3279 UPDATE items set stocknumber=copynumber;
3281 $dbh->do(qq{
3282 UPDATE items set copynumber=NULL;
3285 print "Upgrade to $DBversion done (stocknumber field added)\n";
3286 SetVersion ($DBversion);
3289 $DBversion = "3.01.00.096";
3290 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3291 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OrderPdfTemplate','','Uploads a PDF template to use for printing baskets','NULL','Upload')");
3292 $dbh->do("UPDATE systempreferences SET variable='OrderPdfFormat' WHERE variable='pdfformat'");
3293 print "Upgrade to $DBversion done (PDF orders system preferences added and updated)\n";
3294 SetVersion ($DBversion);
3297 $DBversion = "3.01.00.097";
3298 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3299 $dbh->do(qq{
3300 ALTER TABLE aqbasketgroups ADD billingplace VARCHAR(10) NOT NULL AFTER deliverycomment;
3303 print "Upgrade to $DBversion done (Adding billingplace to aqbasketgroups)\n";
3304 SetVersion ($DBversion);
3307 $DBversion = "3.01.00.098";
3308 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3309 $dbh->do(qq{
3310 ALTER TABLE auth_subfield_structure MODIFY frameworkcode VARCHAR(10) NULL;
3313 print "Upgrade to $DBversion done (changing frameworkcode length in auth_subfield_structure)\n";
3314 SetVersion ($DBversion);
3317 $DBversion = "3.01.00.099";
3318 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3319 $dbh->do(qq{
3320 INSERT INTO `permissions` (`module_bit`, `code`, `description`) VALUES
3321 (9, 'edit_catalogue', 'Edit catalogue'),
3322 (9, 'fast_cataloging', 'Fast cataloging')
3325 print "Upgrade to $DBversion done (granular permissions for cataloging added)\n";
3326 SetVersion ($DBversion);
3329 $DBversion = "3.01.00.100";
3330 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3331 $dbh->do("INSERT INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('casAuthentication', '0', '', 'Enable or disable CAS authentication', 'YesNo'), ('casLogout', '1', '', 'Does a logout from Koha should also log out of CAS ?', 'YesNo'), ('casServerUrl', 'https://localhost:8443/cas', '', 'URL of the cas server', 'Free')");
3332 print "Upgrade to $DBversion done (added CAS authentication system preferences)\n";
3333 SetVersion ($DBversion);
3336 $DBversion = "3.01.00.101";
3337 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3338 $dbh->do(
3339 "INSERT INTO systempreferences
3340 (variable, value, options, explanation, type)
3341 VALUES (
3342 'OverdueNoticeBcc', '', '',
3343 'Email address to Bcc outgoing notices sent by email',
3344 'free')
3346 print "Upgrade to $DBversion done (added OverdueNoticeBcc system preferences)\n";
3347 SetVersion ($DBversion);
3349 $DBversion = "3.01.00.102";
3350 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3351 $dbh->do(
3352 "UPDATE permissions set description = 'Edit catalog (Modify bibliographic/holdings data)' where module_bit = 9 and code = 'edit_catalogue'"
3354 print "Upgrade to $DBversion done (fixed spelling error in edit_catalogue permission)\n";
3355 SetVersion ($DBversion);
3358 $DBversion = "3.01.00.103";
3359 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3360 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES (13, 'moderate_tags', 'Moderate patron tags')");
3361 print "Upgrade to $DBversion done (adding patron permissions for tags tool)\n";
3362 SetVersion ($DBversion);
3365 $DBversion = "3.01.00.104";
3366 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3368 my ($maninv_count, $borrnotes_count);
3369 eval { $maninv_count = $dbh->do("SELECT 1 FROM authorised_values WHERE category='MANUAL_INV'"); };
3370 if ($maninv_count == 0) {
3371 $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('MANUAL_INV','Copier Fees','.25')");
3373 eval { $borrnotes_count = $dbh->do("SELECT 1 FROM authorised_values WHERE category='BOR_NOTES'"); };
3374 if ($borrnotes_count == 0) {
3375 $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('BOR_NOTES','ADDR','Address Notes')");
3378 $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('LOC','CART','Book Cart')");
3379 $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('LOC','PROC','Processing Center')");
3381 print "Upgrade to $DBversion done ( add defaults to authorized values for MANUAL_INV and BOR_NOTES and add new default LOC authorized values for shelf to cart processing )\n";
3382 SetVersion ($DBversion);
3386 $DBversion = "3.01.00.105";
3387 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3388 $dbh->do("
3389 CREATE TABLE `collections` (
3390 `colId` int(11) NOT NULL auto_increment,
3391 `colTitle` varchar(100) NOT NULL default '',
3392 `colDesc` text NOT NULL,
3393 `colBranchcode` varchar(4) default NULL COMMENT 'branchcode for branch where item should be held.',
3394 PRIMARY KEY (`colId`)
3395 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3398 $dbh->do("
3399 CREATE TABLE `collections_tracking` (
3400 `ctId` int(11) NOT NULL auto_increment,
3401 `colId` int(11) NOT NULL default '0' COMMENT 'collections.colId',
3402 `itemnumber` int(11) NOT NULL default '0' COMMENT 'items.itemnumber',
3403 PRIMARY KEY (`ctId`)
3404 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3406 $dbh->do("
3407 INSERT INTO permissions (module_bit, code, description)
3408 VALUES ( 13, 'rotating_collections', 'Manage Rotating collections')" );
3409 print "Upgrade to $DBversion done (added collection and collection_tracking tables for rotating collections functionality)\n";
3410 SetVersion ($DBversion);
3412 $DBversion = "3.01.00.106";
3413 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3414 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ( 'OpacAddMastheadLibraryPulldown', '0', '', 'Adds a pulldown menu to select the library to search on the opac masthead.', 'YesNo' )");
3415 print "Upgrade to $DBversion done (added OpacAddMastheadLibraryPulldown system preferences)\n";
3416 SetVersion ($DBversion);
3419 $DBversion = '3.01.00.107';
3420 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3421 my $upgrade_script = C4::Context->config("intranetdir") . "/installer/data/mysql/patroncards_upgrade.pl";
3422 system("perl $upgrade_script");
3423 print "Upgrade to $DBversion done (Migrated labels and patroncards tables and data to new schema.)\n";
3424 SetVersion ($DBversion);
3427 $DBversion = '3.01.00.108';
3428 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3429 $dbh->do(qq{
3430 ALTER TABLE `export_format` ADD `csv_separator` VARCHAR( 2 ) NOT NULL AFTER `marcfields` ,
3431 ADD `field_separator` VARCHAR( 2 ) NOT NULL AFTER `csv_separator` ,
3432 ADD `subfield_separator` VARCHAR( 2 ) NOT NULL AFTER `field_separator`
3434 print "Upgrade to $DBversion done (added separators for csv export)\n";
3435 SetVersion ($DBversion);
3438 $DBversion = "3.01.00.109";
3439 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3440 $dbh->do(qq{
3441 ALTER TABLE `export_format` ADD `encoding` VARCHAR(255) NOT NULL AFTER `subfield_separator`
3443 print "Upgrade to $DBversion done (added encoding for csv export)\n";
3444 SetVersion ($DBversion);
3447 $DBversion = '3.01.00.110';
3448 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3449 $dbh->do('ALTER TABLE `categories` ADD COLUMN `enrolmentperioddate` DATE NULL DEFAULT NULL AFTER `enrolmentperiod`');
3450 print "Upgrade to $DBversion done (Add enrolment period date support)\n";
3451 SetVersion ($DBversion);
3454 $DBversion = '3.01.00.111';
3455 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3456 print "Upgrade to $DBversion done (mark DBrev for 3.2-alpha release)\n";
3457 SetVersion ($DBversion);
3460 $DBversion = '3.01.00.112';
3461 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3462 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('SpineLabelShowPrintOnBibDetails', '0', '', 'If turned on, a \"Print Label\" link will appear for each item on the bib details page in the staff interface.', 'YesNo');");
3463 print "Upgrade to $DBversion done ( added Show Spine Label Printer on Bib Items Details preferences )\n";
3464 SetVersion ($DBversion);
3467 $DBversion = '3.01.00.113';
3468 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3469 my $value = C4::Context->preference("XSLTResultsDisplay");
3470 $dbh->do(
3471 "INSERT INTO systempreferences (variable,value,type)
3472 VALUES('OPACXSLTResultsDisplay',?,'YesNo')", {}, $value ? 1 : 0);
3473 $value = C4::Context->preference("XSLTDetailsDisplay");
3474 $dbh->do(
3475 "INSERT INTO systempreferences (variable,value,type)
3476 VALUES('OPACXSLTDetailsDisplay',?,'YesNo')", {}, $value ? 1 : 0);
3477 print "Upgrade to $DBversion done (added two new syspref: OPACXSLTResultsDisplay and OPACXSLTDetailDisplay). You may have to go in Admin > System preference to tweak XSLT related syspref both in OPAC and Search tabs.\n";
3478 SetVersion ($DBversion);
3481 $DBversion = '3.01.00.114';
3482 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3483 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('AutoSelfCheckAllowed', '0', 'For corporate and special libraries which want web-based self-check available from any PC without the need for a manual staff login. Most libraries will want to leave this turned off. If on, requires self-check ID and password to be entered in AutoSelfCheckID and AutoSelfCheckPass sysprefs.', '', 'YesNo')");
3484 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoSelfCheckID','','Staff ID with circulation rights to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','','free')");
3485 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoSelfCheckPass','','Password to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','','free')");
3486 print "Upgrade to $DBversion done ( Added AutoSelfCheckAllowed, AutoSelfCheckID, and AutoShelfCheckPass system preference )\n";
3487 SetVersion ($DBversion);
3490 $DBversion = '3.01.00.115';
3491 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3492 $dbh->do('UPDATE aqorders SET quantityreceived = 0 WHERE quantityreceived IS NULL');
3493 $dbh->do('ALTER TABLE aqorders MODIFY COLUMN quantityreceived smallint(6) NOT NULL DEFAULT 0');
3494 print "Upgrade to $DBversion done ( Default aqorders.quantityreceived to 0 )\n";
3495 SetVersion ($DBversion);
3498 $DBversion = '3.01.00.116';
3499 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3500 if (C4::Context->preference('OrderPdfFormat') eq 'pdfformat::example'){
3501 $dbh->do("UPDATE `systempreferences` set value='pdfformat::layout2pages' WHERE variable='OrderPdfFormat'");
3503 print "Upgrade to $DBversion done (corrected default OrderPdfFormat value if still set wrong )\n";
3504 SetVersion ($DBversion);
3507 $DBversion = '3.01.00.117';
3508 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3509 $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code = 'por' WHERE rfc4646_subtag='pt' ");
3510 print "Upgrade to $DBversion done (corrected ISO 639-2 language code for Portuguese)\n";
3511 SetVersion ($DBversion);
3514 $DBversion = '3.01.00.118';
3515 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3516 my ($count) = $dbh->selectrow_array("SELECT count(*) FROM information_schema.columns
3517 WHERE table_name = 'aqbudgets_planning'
3518 AND column_name = 'display'");
3519 if ($count < 1) {
3520 $dbh->do("ALTER TABLE aqbudgets_planning ADD COLUMN display tinyint(1) DEFAULT 1");
3522 print "Upgrade to $DBversion done (bug 4203: add display column to aqbudgets_planning if missing)\n";
3523 SetVersion ($DBversion);
3526 $DBversion = '3.01.00.119';
3527 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3528 eval{require Locale::Currency::Format};
3529 if (!$@) {
3530 print "Upgrade to $DBversion done (Locale::Currency::Format installed.)\n";
3531 SetVersion ($DBversion);
3533 else {
3534 print "Upgrade to $DBversion done.\n";
3535 print "NOTICE: The Locale::Currency::Format package is not installed on your system or not found in \@INC.\nThis dependency is required in order to include fine information in overdue notices.\nPlease ask your system administrator to install this package.\n";
3536 SetVersion ($DBversion);
3540 $DBversion = '3.01.00.120';
3541 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3542 $dbh->do(q{
3543 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('soundon','0','Enable circulation sounds during checkin and checkout in the staff interface. Not supported by all web browsers yet.','','YesNo');
3545 print "Upgrade to $DBversion done (bug 1080: add soundon system preference for circulation sounds)\n";
3546 SetVersion ($DBversion);
3549 $DBversion = '3.01.00.121';
3550 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3551 $dbh->do("ALTER TABLE `reserves` ADD `expirationdate` DATE DEFAULT NULL");
3552 $dbh->do("ALTER TABLE `reserves` ADD `lowestPriority` tinyint(1) NOT NULL");
3553 $dbh->do("ALTER TABLE `old_reserves` ADD `expirationdate` DATE DEFAULT NULL");
3554 $dbh->do("ALTER TABLE `old_reserves` ADD `lowestPriority` tinyint(1) NOT NULL");
3555 print "Upgrade to $DBversion done ( Added Additional Fields to Reserves tables )\n";
3556 SetVersion ($DBversion);
3559 $DBversion = '3.01.00.122';
3560 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3561 $dbh->do(q{
3562 INSERT INTO systempreferences (variable,value,explanation,options,type)
3563 VALUES ('OAI-PMH:ConfFile', '', 'If empty, Koha OAI Server operates in normal mode, otherwise it operates in extended mode.','','File');
3565 print "Upgrade to $DBversion done. — Add a new system preference OAI-PMF:ConfFile\n";
3566 SetVersion ($DBversion);
3569 $DBversion = "3.01.00.123";
3570 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3571 $dbh->do("INSERT INTO `permissions` (`module_bit`, `code`, `description`) VALUES
3572 (6, 'place_holds', 'Place holds for patrons')");
3573 $dbh->do("INSERT INTO `permissions` (`module_bit`, `code`, `description`) VALUES
3574 (6, 'modify_holds_priority', 'Modify holds priority')");
3575 $dbh->do("UPDATE `userflags` SET `flagdesc` = 'Place and modify holds for patrons' WHERE `flag` = 'reserveforothers'");
3576 print "Upgrade to $DBversion done (Add granular permission for holds modification and update description of reserveforothers permission)\n";
3577 SetVersion ($DBversion);
3580 $DBversion = '3.01.00.124';
3581 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3582 $dbh->do("
3583 INSERT INTO `letter` (module, code, name, title, content) VALUES('reserves', 'HOLDPLACED', 'Hold Placed on Item', 'Hold Placed on Item','A hold has been placed on the following item : <<title>> (<<biblionumber>>) by the user <<firstname>> <<surname>> (<<cardnumber>>).');
3585 print "Upgrade to $DBversion done (bug 3242: add HOLDPLACED letter template, which is used when emailLibrarianWhenHoldIsPlaced is enabled)\n";
3586 SetVersion ($DBversion);
3589 $DBversion = '3.01.00.125';
3590 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3591 $dbh->do("
3592 INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'PrintNoticesMaxLines', '0', '', 'If greater than 0, sets the maximum number of lines an overdue notice will print. If the number of items is greater than this number, the notice will end with a warning asking the borrower to check their online account for a full list of overdue items.', 'Integer' );
3594 $dbh->do("
3595 INSERT INTO message_transport_types (message_transport_type) values ('print');
3597 print "Upgrade to $DBversion done (bug 3482: Printable hold and overdue notices)\n";
3598 SetVersion ($DBversion);
3601 $DBversion = "3.01.00.126";
3602 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3603 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('ILS-DI','0','Enable ILS-DI services. See http://your.opac.name/cgi-bin/koha/ilsdi.pl for online documentation.','','YesNo')");
3604 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('ILS-DI:AuthorizedIPs','127.0.0.1','A comma separated list of IP addresses authorized to access the web services.','','free')");
3606 print "Upgrade to $DBversion done (Adding ILS-DI updates and ILS-DI:AuthorizedIPs)\n";
3607 SetVersion ($DBversion);
3610 $DBversion = '3.01.00.127';
3611 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3612 $dbh->do("ALTER TABLE messages CHANGE branchcode branchcode varchar(10);");
3613 print "Upgrade to $DBversion done (bug 4190: messages in patron account did not work with branchcodes > 4)\n";
3614 SetVersion ($DBversion);
3617 $DBversion = '3.01.00.128';
3618 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3619 $dbh->do('CREATE INDEX budget_id ON aqorders (budget_id );');
3620 print "Upgrade to $DBversion done (bug 4331: index orders by budget_id)\n";
3621 SetVersion ($DBversion);
3624 $DBversion = "3.01.00.129";
3625 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3626 $dbh->do("UPDATE `permissions` SET `code` = 'items_batchdel' WHERE `permissions`.`module_bit` =13 AND `permissions`.`code` = 'batchdel' LIMIT 1 ;");
3627 $dbh->do("UPDATE `permissions` SET `code` = 'items_batchmod' WHERE `permissions`.`module_bit` =13 AND `permissions`.`code` = 'batchmod' LIMIT 1 ;");
3628 print "Upgrade to $DBversion done (Change permissions names for item batch modification / deletion)\n";
3630 SetVersion ($DBversion);
3633 $DBversion = "3.01.00.130";
3634 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3635 $dbh->do("UPDATE reserves SET expirationdate = NULL WHERE expirationdate = '0000-00-00'");
3636 print "Upgrade to $DBversion done (change reserves.expirationdate values of 0000-00-00 to NULL (bug 1532)\n";
3637 SetVersion ($DBversion);
3640 $DBversion = "3.01.00.131";
3641 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3642 $dbh->do(q{
3643 INSERT IGNORE INTO message_transport_types (message_transport_type) VALUES ('print'),('feed');
3645 print "Upgrade to $DBversion done (adding print and feed message transport types)\n";
3646 SetVersion ($DBversion);
3649 $DBversion = "3.01.00.132";
3650 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3651 $dbh->do(q{
3652 ALTER TABLE language_descriptions ADD INDEX subtag_type_lang (subtag, type, lang);
3654 print "Upgrade to $DBversion done (Adding index to language_descriptions table)\n";
3655 SetVersion ($DBversion);
3658 $DBversion = '3.01.00.133';
3659 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3660 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OverduesBlockCirc','noblock','When checking out an item should overdues block checkout, generate a confirmation dialogue, or allow checkout','noblock|confirmation|block','Choice')");
3661 print "Upgrade to $DBversion done (bug 4405: added OverduesBlockCirc syspref to control whether circulation is blocked if a borrower has overdues)\n";
3662 SetVersion ($DBversion);
3665 $DBversion = '3.01.00.134';
3666 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3667 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('DisplayMultiPlaceHold','1','Display the ability to place multiple holds or not','','YesNo')");
3668 print "Upgrade to $DBversion done (adding syspref DisplayMultiPlaceHold to control whether multiple holds can be placed from the search results page)\n";
3669 SetVersion ($DBversion);
3672 $DBversion = '3.01.00.135';
3673 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3674 $dbh->do("
3675 INSERT INTO `letter` (module, code, name, title, content) VALUES
3676 ('reserves', 'HOLD_PRINT', 'Hold Available for Pickup (print notice)', 'Hold Available for Pickup (print notice)', '<<branches.branchname>>\r\n<<branches.branchaddress1>>\r\n<<branches.branchaddress2>>\r\n\r\n\r\nChange Service Requested\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<<borrowers.firstname>> <<borrowers.surname>>\r\n<<borrowers.address>>\r\n<<borrowers.city>> <<borrowers.zipcode>>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<<borrowers.firstname>> <<borrowers.surname>> <<borrowers.cardnumber>>\r\n\r\nYou have a hold available for pickup as of <<reserves.waitingdate>>:\r\n\r\nTitle: <<biblio.title>>\r\nAuthor: <<biblio.author>>\r\nCopy: <<items.copynumber>>\r\n')
3678 print "Upgrade to $DBversion done (bug 4377: added HOLD_PRINT message template)\n";
3679 SetVersion ($DBversion);
3682 $DBversion = '3.01.00.136';
3683 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3684 $dbh->do(qq{
3685 INSERT INTO permissions (module_bit, code, description) VALUES
3686 ( 9, 'edit_items', 'Edit Items');});
3687 print "Upgrade to $DBversion done (Adding a new permission to edit items)\n";
3688 SetVersion ($DBversion);
3691 $DBversion = "3.01.00.137";
3692 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3693 $dbh->do("
3694 INSERT INTO permissions (module_bit, code, description) VALUES
3695 (15, 'check_expiration', 'Check the expiration of a serial'),
3696 (15, 'claim_serials', 'Claim missing serials'),
3697 (15, 'create_subscription', 'Create a new subscription'),
3698 (15, 'delete_subscription', 'Delete an existing subscription'),
3699 (15, 'edit_subscription', 'Edit an existing subscription'),
3700 (15, 'receive_serials', 'Serials receiving'),
3701 (15, 'renew_subscription', 'Renew a subscription'),
3702 (15, 'routing', 'Routing');
3704 print "Upgrade to $DBversion done (adding granular permissions for serials)\n";
3705 SetVersion ($DBversion);
3708 $DBversion = "3.01.00.138";
3709 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3710 $dbh->do("DELETE FROM systempreferences WHERE variable = 'GranularPermissions'");
3711 print "Upgrade to $DBversion done (bug 4896: removing GranularPermissions syspref; use of granular permissions is now the default)\n";
3712 SetVersion ($DBversion);
3715 $DBversion = '3.01.00.139';
3716 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3717 $dbh->do("ALTER TABLE message_attributes CHANGE message_name message_name varchar(40);");
3718 print "Upgrade to $DBversion done (bug 3682: change message_name from varchar(20) to varchar(40))\n";
3719 SetVersion ($DBversion);
3722 $DBversion = '3.01.00.140';
3723 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3724 $dbh->do("UPDATE systempreferences SET value = '0' WHERE variable = 'TagsModeration' AND value is NULL");
3725 print "Upgrade to $DBversion done (bug 4312 TagsModeration changed from NULL to 0)\n";
3726 SetVersion ($DBversion);
3729 $DBversion = '3.01.00.141';
3730 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3731 $dbh->do(qq{DELETE FROM message_attributes WHERE message_attribute_id=3;});
3732 $dbh->do(qq{DELETE FROM letter WHERE code='EVENT' AND title='Upcoming Library Event';});
3733 print "Upgrade to $DBversion done Remove upcoming events messaging option (bug 2434)\n";
3734 SetVersion ($DBversion);
3737 $DBversion = '3.01.00.142';
3738 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3739 $dbh->do(qq{DELETE FROM message_transports WHERE message_attribute_id=3;});
3740 print "Upgrade to $DBversion done (Remove upcoming events messaging option part 2 (bug 2434))\n";
3741 SetVersion ($DBversion);
3744 $DBversion = '3.01.00.143';
3745 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3746 $dbh->do(qq{CREATE INDEX auth_value_idx ON authorised_values (authorised_value)});
3747 $dbh->do(qq{CREATE INDEX auth_val_cat_idx ON borrower_attribute_types (authorised_value_category)});
3748 print "Upgrade to $DBversion done (Create index on authorised_values and borrower_attribute_types (bug 4139))\n";
3749 SetVersion ($DBversion);
3752 $DBversion = '3.01.00.144';
3753 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3754 $dbh->do(qq{UPDATE systempreferences SET value='normal' where value='default' and variable='IntranetBiblioDefaultView'});
3755 print "Upgrade to $DBversion done (Update the 'default' to 'normal' for the IntranetBiblioDefaultView syspref (bug 5007))\n";
3756 SetVersion ($DBversion);
3759 $DBversion = "3.01.00.145";
3760 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3761 $dbh->do("ALTER TABLE borrowers ADD KEY `guarantorid` (guarantorid);");
3762 print "Upgrade to $DBversion done (Add index on guarantorid)\n";
3763 SetVersion ($DBversion);
3766 $DBversion = '3.01.00.999';
3767 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3768 print "Upgrade to $DBversion done (3.2.0 release candidate)\n";
3769 SetVersion ($DBversion);
3772 $DBversion = "3.02.00.000";
3773 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3774 my $value = $dbh->selectrow_array("SELECT value FROM systempreferences WHERE variable = 'HomeOrHoldingBranch'");
3775 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('HomeOrHoldingBranchReturn','$value','Used by Circulation to determine which branch of an item to check checking-in items','holdingbranch|homebranch','Choice');");
3776 print "Upgrade to $DBversion done (Add HomeOrHoldingBranchReturn system preference)\n";
3777 SetVersion ($DBversion);
3780 $DBversion = "3.02.00.001";
3781 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3782 $dbh->do(q{DELETE FROM systempreferences WHERE variable IN (
3783 'holdCancelLength',
3784 'PINESISBN',
3785 'sortbynonfiling',
3786 'TemplateEncoding',
3787 'OPACSubscriptionDisplay',
3788 'OPACDisplayExtendedSubInfo',
3789 'OAI-PMH:Set',
3790 'OAI-PMH:Subset',
3791 'libraryAddress',
3792 'kohaspsuggest',
3793 'OrderPdfTemplate',
3794 'marc',
3795 'acquisitions',
3796 'MIME')
3799 print "Upgrade to $DBversion done (bug 3756: remove disused system preferences)\n";
3800 SetVersion ($DBversion);
3803 $DBversion = "3.02.00.002";
3804 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3805 $dbh->do(q{DELETE FROM systempreferences WHERE variable = 'OpacPrivacy'});
3806 print "Upgrade to $DBversion done (bug 3881: remove unused OpacPrivacy system preference)\n";
3807 SetVersion ($DBversion);
3810 $DBversion = "3.02.00.003";
3811 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3812 $dbh->do(q{UPDATE systempreferences SET variable = 'ILS-DI:AuthorizedIPs' WHERE variable = 'ILS-DI:Authorized_IPs'});
3813 print "Upgrade to $DBversion done (correct ILS-DI:AuthorizedIPs)\n";
3814 SetVersion ($DBversion);
3817 $DBversion = "3.02.00.004";
3818 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3819 print "Upgrade to $DBversion done (3.2.0 general release)\n";
3820 SetVersion ($DBversion);
3822 # This is the point where 3.2.x and master diverged, we can use $original_version to make sure we don't
3824 # apply updates that have already been done
3826 $DBversion = "3.03.00.001";
3827 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.00.005")) {
3828 $dbh->do("DELETE FROM subscriptionroutinglist WHERE borrowernumber IS NULL;");
3829 $dbh->do("ALTER TABLE subscriptionroutinglist MODIFY COLUMN `borrowernumber` int(11) NOT NULL;");
3830 $dbh->do("DELETE FROM subscriptionroutinglist WHERE subscriptionid IS NULL;");
3831 $dbh->do("ALTER TABLE subscriptionroutinglist MODIFY COLUMN `subscriptionid` int(11) NOT NULL;");
3832 $dbh->do("CREATE TEMPORARY TABLE del_subscriptionroutinglist
3833 SELECT s1.routingid FROM subscriptionroutinglist s1
3834 WHERE EXISTS (SELECT * FROM subscriptionroutinglist s2
3835 WHERE s2.borrowernumber = s1.borrowernumber
3836 AND s2.subscriptionid = s1.subscriptionid
3837 AND s2.routingid < s1.routingid);");
3838 $dbh->do("DELETE FROM subscriptionroutinglist
3839 WHERE routingid IN (SELECT routingid FROM del_subscriptionroutinglist);");
3840 $dbh->do("ALTER TABLE subscriptionroutinglist ADD UNIQUE (subscriptionid, borrowernumber);");
3841 $dbh->do("ALTER TABLE subscriptionroutinglist
3842 ADD CONSTRAINT `subscriptionroutinglist_ibfk_1` FOREIGN KEY (`borrowernumber`)
3843 REFERENCES `borrowers` (`borrowernumber`)
3844 ON DELETE CASCADE ON UPDATE CASCADE");
3845 $dbh->do("ALTER TABLE subscriptionroutinglist
3846 ADD CONSTRAINT `subscriptionroutinglist_ibfk_2` FOREIGN KEY (`subscriptionid`)
3847 REFERENCES `subscription` (`subscriptionid`)
3848 ON DELETE CASCADE ON UPDATE CASCADE");
3849 print "Upgrade to $DBversion done (Make subscriptionroutinglist more strict)\n";
3850 SetVersion ($DBversion);
3853 $DBversion = '3.03.00.002';
3854 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.00.006")) {
3855 $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code='arm' WHERE rfc4646_subtag='hy';");
3856 $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code='eng' WHERE rfc4646_subtag='en';");
3857 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'fi','fin');");
3858 $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code='fre' WHERE rfc4646_subtag='fr';");
3859 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'lo','lao');");
3860 $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code='ita' WHERE rfc4646_subtag='it';");
3861 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'sr','srp');");
3862 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'tet','tet');");
3863 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'ur','urd');");
3865 print "Upgrade to $DBversion done (Correct language mappings)\n";
3866 SetVersion ($DBversion);
3869 $DBversion = '3.03.00.003';
3870 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.00.007")) {
3871 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('UseTablesortForCirc','0','If on, use the JQuery tablesort function on the list of current borrower checkouts on the circulation page. Note that the use of this function may slow down circ for patrons with may checkouts.','','YesNo');");
3872 print "Upgrade to $DBversion done (Add UseTablesortForCirc syspref)\n";
3873 SetVersion ($DBversion);
3876 $DBversion = '3.03.00.004';
3877 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.01.001")) {
3878 my $count = $dbh->selectrow_array('SELECT COUNT(*) FROM letter WHERE module = ? AND code = ?', {}, 'suggestions', 'ACCEPTED');
3879 $dbh->do(q/
3880 INSERT INTO `letter`
3881 (module, code, name, title, content)
3882 VALUES
3883 ('suggestions','ACCEPTED','Suggestion accepted', 'Purchase suggestion accepted','Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\nYou have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.\n\nThe library has reviewed your suggestion today. The item will be ordered as soon as possible. You will be notified by mail when the order is completed, and again when the item arrives at the library.\n\nIf you have any questions, please email us at <<branches.branchemail>>.\n\nThank you,\n\n<<branches.branchname>>')
3884 /) unless $count > 0;
3885 $count = $dbh->selectrow_array('SELECT COUNT(*) FROM letter WHERE module = ? AND code = ?', {}, 'suggestions', 'AVAILABLE');
3886 $dbh->do(q/
3887 INSERT INTO `letter`
3888 (module, code, name, title, content)
3889 VALUES
3890 ('suggestions','AVAILABLE','Suggestion available', 'Suggested purchase available','Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\nYou have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.\n\nWe are pleased to inform you that the item you requested is now part of the collection.\n\nIf you have any questions, please email us at <<branches.branchemail>>.\n\nThank you,\n\n<<branches.branchname>>')
3891 /) unless $count > 0;
3892 $count = $dbh->selectrow_array('SELECT COUNT(*) FROM letter WHERE module = ? AND code = ?', {}, 'suggestions', 'ORDERED');
3893 $dbh->do(q/
3894 INSERT INTO `letter`
3895 (module, code, name, title, content)
3896 VALUES
3897 ('suggestions','ORDERED','Suggestion ordered', 'Suggested item ordered','Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\nYou have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.\n\nWe are pleased to inform you that the item you requested has now been ordered. It should arrive soon, at which time it will be processed for addition into the collection.\n\nYou will be notified again when the book is available.\n\nIf you have any questions, please email us at <<branches.branchemail>>\n\nThank you,\n\n<<branches.branchname>>')
3898 /) unless $count > 0;
3899 $count = $dbh->selectrow_array('SELECT COUNT(*) FROM letter WHERE module = ? AND code = ?', {}, 'suggestions', 'REJECTED');
3900 $dbh->do(q/
3901 INSERT INTO `letter`
3902 (module, code, name, title, content)
3903 VALUES
3904 ('suggestions','REJECTED','Suggestion rejected', 'Purchase suggestion declined','Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\nYou have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.\n\nThe library has reviewed your request today, and has decided not to accept the suggestion at this time.\n\nThe reason given is: <<suggestions.reason>>\n\nIf you have any questions, please email us at <<branches.branchemail>>.\n\nThank you,\n\n<<branches.branchname>>')
3905 /) unless $count > 0;
3906 print "Upgrade to $DBversion done (bug 5127: add default templates for suggestion status change notifications)\n";
3907 SetVersion ($DBversion);
3910 $DBversion = '3.03.00.005';
3911 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3912 $dbh->do("update `systempreferences` set options='whitespace|T-prefix|cuecat|libsuite8' where variable='itemBarcodeInputFilter'");
3913 print "Upgrade to $DBversion done (Add itemBarcodeInputFilter choice libsuite8)\n";
3916 $DBversion = '3.03.00.006';
3917 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.01.002")) {
3918 $dbh->do("ALTER TABLE deletedborrowers ADD `privacy` int(11) AFTER smsalertnumber;");
3919 $dbh->do("ALTER TABLE deletedborrowers CHANGE `cardnumber` `cardnumber` varchar(16);");
3920 print "Upgrade to $DBversion done (Fix differences between borrowers and deletedborrowers)\n";
3921 SetVersion ($DBversion);
3924 $DBversion = '3.03.00.007';
3925 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3926 $dbh->do("ALTER table suggestions ADD quantity SMALLINT(6) default NULL,
3927 ADD currency VARCHAR(3) default NULL,
3928 ADD price DECIMAL(28,6) default NULL,
3929 ADD total DECIMAL(28,6) default NULL;
3931 print "Upgrade to $DBversion done (Added acq related columns to suggestions)\n";
3932 SetVersion ($DBversion);
3935 $DBversion = '3.03.00.008';
3936 if (C4::Context->preference('Version') < TransformToNum($DBversion)){
3937 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OPACNoResultsFound','','Display this HTML when no results are found for a search in the OPAC','70|10','Textarea')");
3938 print "Upgrade to $DBversion done (adding syspref OPACNoResultsFound to control what displays when no results are found for a search in the OPAC.)\n";
3939 SetVersion ($DBversion);
3942 $DBversion = '3.03.00.009';
3943 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.01.003")) {
3944 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('IntranetUserCSS','','Add CSS to be included in the Intranet',NULL,'free')");
3945 print "Upgrade to $DBversion done (Add IntranetUserCSS syspref)\n";
3946 SetVersion ($DBversion);
3949 $DBversion = "3.03.00.010";
3950 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.02.001")) {
3951 $dbh->do("UPDATE `marc_subfield_structure` SET liblibrarian = 'Distance from earth' WHERE liblibrarian = 'Distrance from earth' AND tagfield = '034' AND tagsubfield = 'r';");
3952 $dbh->do("UPDATE `marc_subfield_structure` SET libopac = 'Distance from earth' WHERE libopac = 'Distrance from earth' AND tagfield = '034' AND tagsubfield = 'r';");
3953 print "Upgrade to $DBversion done (Fix misspelled 034r subfield in MARC21 Frameworks)\n";
3954 SetVersion ($DBversion);
3957 $DBversion = "3.03.00.011";
3958 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3959 $dbh->do("UPDATE aqbooksellers SET gstrate=NULL WHERE gstrate=0.0");
3960 print "Upgrade to $DBversion done (Bug 5186: allow GST rate to be set to 0)\n";
3961 SetVersion ($DBversion);
3964 $DBversion = "3.03.00.012";
3965 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3966 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('maxItemsInSearchResults',20,'Specify the maximum number of items to display for each result on a page of results',NULL,'free')");
3967 print "Upgrade to $DBversion done (Bug 2142: maxItemsInSearchResults syspref resurrected)\n";
3968 SetVersion ($DBversion);
3971 $DBversion = "3.03.00.013";
3972 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3973 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacPublic','1','If set to OFF and user is not logged in, all OPAC pages require authentication, and OPAC searchbar is removed)','','YesNo')");
3974 print "Upgrade to $DBversion done (added 'OpacPublic' syspref)\n";
3975 SetVersion ($DBversion);
3978 $DBversion = "3.03.00.014";
3979 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
3980 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding items for the shelf browser.','1','YesNo')");
3981 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when finding items for the shelf browser.','1','YesNo')");
3982 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('ShelfBrowserUsesCcode','0','Use the item collection code when finding items for the shelf browser.','1','YesNo')");
3983 print "Upgrade to $DBversion done (Add flexible shelf browser constraints)\n";
3984 SetVersion ($DBversion);
3987 $DBversion = "3.03.00.015";
3988 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
3989 if ( C4::Context->preference("marcflavour") eq "MARC21" ) {
3990 my $sth = $dbh->prepare(
3991 "INSERT INTO `marc_subfield_structure` (`tagfield`, `tagsubfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `kohafield`,
3992 `tab`, `authorised_value`, `authtypecode`, `value_builder`, `isurl`, `hidden`, `frameworkcode`, `seealso`, `link`, `defaultvalue`)
3993 VALUES ( ?, '9', '9 (RLIN)', '9 (RLIN)', 0, 0, '', 6, '', '', '', 0, -5, '', '', '', NULL)"
3995 $sth->execute('648');
3996 $sth->execute('654');
3997 $sth->execute('655');
3998 $sth->execute('656');
3999 $sth->execute('657');
4000 $sth->execute('658');
4001 $sth->execute('662');
4002 $sth->finish;
4003 print
4004 "Upgrade to $DBversion done (Bug 5619: Add subfield 9 to marc21 648,654,655,656,657,658,662)\n";
4006 SetVersion($DBversion);
4009 $DBversion = '3.03.00.016';
4010 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4011 # reimplement OpacPrivacy system preference
4012 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacPrivacy', '0', 'if ON, allows patrons to define their privacy rules (reading history)',NULL,'YesNo')");
4013 $dbh->do("ALTER TABLE `borrowers` ADD `privacy` INTEGER NOT NULL DEFAULT 1;");
4014 $dbh->do("ALTER TABLE `deletedborrowers` ADD `privacy` INTEGER NOT NULL DEFAULT 1;");
4015 print "Upgrade to $DBversion done (OpacPrivacy reimplementation)\n";
4016 SetVersion($DBversion);
4019 $DBversion = '3.03.00.017';
4020 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.03.001")) {
4021 $dbh->do("ALTER TABLE `currency` CHANGE `rate` `rate` FLOAT( 15, 5 ) NULL DEFAULT NULL;");
4022 print "Upgrade to $DBversion done (Enable currency rates >= 100)\n";
4023 SetVersion ($DBversion);
4026 $DBversion = '3.03.00.018';
4027 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.03.002")) {
4028 $dbh->do( q|update language_descriptions set description = 'Nederlands' where lang = 'nl' and subtag = 'nl'|);
4029 $dbh->do( q|update language_descriptions set description = 'Dansk' where lang = 'da' and subtag = 'da'|);
4030 print "Upgrade to $DBversion done (Correct language descriptions)\n";
4031 SetVersion ($DBversion);
4034 $DBversion = '3.03.00.019';
4035 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.03.003")) {
4036 # Fix bokmål
4037 $dbh->do("UPDATE language_subtag_registry SET description = 'Norwegian bokm&#229;l' WHERE subtag = 'nb';");
4038 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'nb','nob');");
4039 $dbh->do("UPDATE language_descriptions SET description = 'Norsk bokm&#229;l' WHERE subtag = 'nb' AND lang = 'nb';");
4040 $dbh->do("UPDATE language_descriptions SET description = 'Norwegian bokm&#229;l' WHERE subtag = 'nb' AND lang = 'en';");
4041 $dbh->do("UPDATE language_descriptions SET description = 'Norvégien bokm&#229;l' WHERE subtag = 'nb' AND lang = 'fr';");
4042 # Add nynorsk
4043 $dbh->do("INSERT INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'nn', 'language', 'Norwegian nynorsk','2011-02-14' )");
4044 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'nn','nno')");
4045 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'nn', 'language', 'nb', 'Norsk nynorsk')");
4046 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'nn', 'language', 'nn', 'Norsk nynorsk')");
4047 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'nn', 'language', 'en', 'Norwegian nynorsk')");
4048 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'nn', 'language', 'fr', 'Norvégien nynorsk')");
4049 print "Upgrade to $DBversion done (Correct language descriptions for Norwegian)\n";
4050 SetVersion ($DBversion);
4053 $DBversion = '3.03.00.020';
4054 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4055 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to patrons with fines greater than noissuescharge.','0','YesNo')");
4056 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override every fine, even if it is below noissuescharge.','0','YesNo')");
4057 print "Upgrade to $DBversion done (Bug 5811: Add sysprefs controlling overriding fines)\n";
4058 SetVersion($DBversion);
4061 $DBversion = '3.03.00.021';
4062 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.05.001")) {
4063 $dbh->do("ALTER TABLE items MODIFY enumchron TEXT");
4064 $dbh->do("ALTER TABLE deleteditems MODIFY enumchron TEXT");
4065 print "Upgrade to $DBversion done (bug 5642: longer serial enumeration)\n";
4066 SetVersion ($DBversion);
4069 $DBversion = '3.03.00.022';
4070 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4071 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AuthoritiesLog','0','If ON, log edit/create/delete actions on authorities.','','YesNo');");
4072 print "Upgrade to $DBversion done (Add AuthoritiesLog syspref)\n";
4073 SetVersion ($DBversion);
4076 # due to a mismatch in kohastructure.sql some koha will have missing columns in aqbasketgroup
4077 # this attempts to fix that
4078 $DBversion = '3.03.00.023';
4079 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.05.002")) {
4080 my $sth = $dbh->prepare("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'aqbasketgroups' AND COLUMN_NAME = 'billingplace'");
4081 $sth->execute;
4082 $dbh->do("ALTER TABLE aqbasketgroups ADD billingplace VARCHAR(10)") if ! $sth->fetchrow_hashref;
4083 $sth = $dbh->prepare("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'aqbasketgroups' AND COLUMN_NAME = 'deliveryplace'");
4084 $sth->execute;
4085 $dbh->do("ALTER TABLE aqbasketgroups ADD deliveryplace VARCHAR(10)") if ! $sth->fetchrow_hashref;
4086 $sth = $dbh->prepare("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'aqbasketgroups' AND COLUMN_NAME = 'deliverycomment'");
4087 $sth->execute;
4088 $dbh->do("ALTER TABLE aqbasketgroups ADD deliverycomment VARCHAR(255)") if ! $sth->fetchrow_hashref;
4089 print "Upgrade to $DBversion done (Reconcile aqbasketgroups)\n";
4090 SetVersion ($DBversion);
4093 $DBversion = '3.03.00.024';
4094 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4095 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('TraceCompleteSubfields','0','Force subject tracings to only match complete subfields.','0','YesNo')");
4096 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('UseAuthoritiesForTracings','1','Use authority record numbers for subject tracings instead of heading strings.','0','YesNo')");
4097 print "Upgrade to $DBversion done (Add syspref to force whole-subfield matching on subject tracings)\n";
4098 SetVersion($DBversion);
4101 $DBversion = "3.03.00.025";
4102 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4103 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OPACAllowUserToChooseBranch', 1, 'Allow the user to choose the branch they want to pickup their hold from','1','YesNo')");
4104 print "Upgrade to $DBversion done (Add syspref to control if user can choose pickup branch for holds)\n";
4105 SetVersion ($DBversion);
4108 $DBversion = '3.03.00.026';
4109 if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.05.003")) {
4110 $dbh->do("UPDATE `message_attributes` SET message_name='Item Due' WHERE message_attribute_id=1 AND message_name LIKE 'Item DUE'");
4111 print "Upgrade to $DBversion done ( fix capitalization in message type )\n";
4112 SetVersion ($DBversion);
4115 $DBversion = '3.03.00.027';
4116 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4117 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('displayFacetCount', '0', NULL, NULL, 'YesNo')");
4118 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('maxRecordsForFacets', '20', NULL, NULL, 'Integer')");
4119 print "Upgrade to $DBversion done (Preferences for facet count)\n";
4120 SetVersion ($DBversion);
4123 $DBversion = "3.03.00.028";
4124 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4125 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('FacetLabelTruncationLength', 20, 'Truncate facets length to','','free')");
4126 print "Upgrade to $DBversion done (Add FacetLabelTruncationLength syspref to control facets displayed length)\n";
4127 SetVersion ($DBversion);
4130 $DBversion = "3.03.00.029";
4131 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4132 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('AllowPurchaseSuggestionBranchChoice', 0, 'Allow user to choose branch when making a purchase suggestion','1','YesNo')");
4133 print "Upgrade to $DBversion done (Add syspref to control if user can choose branch when making purchase suggestion)\n";
4134 SetVersion ($DBversion);
4137 $DBversion = "3.03.00.030";
4138 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4139 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacFavicon','','Enter a complete URL to an image to replace the default Koha favicon on the OPAC','','free')");
4140 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('IntranetFavicon','','Enter a complete URL to an image to replace the default Koha favicon on the Staff client','','free')");
4141 print "Upgrade to $DBversion done (Add sysprefs to control custom favicons)\n";
4142 SetVersion ($DBversion);
4145 $DBversion = "3.03.00.031";
4146 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4147 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('FineNotifyAtCheckin',0,'If ON notify librarians of overdue fines on the items they are checking in.',NULL,'YesNo');");
4148 print "Upgrade to $DBversion done (Add syspref FineNotifyAtCheckin)\n";
4149 SetVersion ($DBversion);
4152 $DBversion = '3.03.00.032';
4153 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4154 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('TraceSubjectSubdivisions', 1, 'Create searches on all subdivisions for subject tracings.','1','YesNo')");
4155 print "Upgrade to $DBversion done ( include subdivisions when generating subject tracing searches )\n";
4159 $DBversion = '3.03.00.033';
4160 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4161 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('StaffAuthorisedValueImages', '1', '', NULL, 'YesNo')");
4162 print "Upgrade to $DBversion done (System pref StaffAuthorisedValueImages)\n";
4163 SetVersion ($DBversion);
4166 $DBversion = '3.03.00.034';
4167 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4168 $dbh->do("ALTER TABLE `categories` ADD `hidelostitems` tinyint(1) NOT NULL default '0' AFTER `reservefee`");
4169 print "Upgrade to $DBversion done (Add hidelostitems preference to borrower categories)\n";
4170 SetVersion ($DBversion);
4173 $DBversion = '3.03.00.035';
4174 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4175 $dbh->do("ALTER TABLE `issuingrules` ADD hardduedate date default NULL AFTER issuelength");
4176 $dbh->do("ALTER TABLE `issuingrules` ADD hardduedatecompare tinyint NOT NULL default 0 AFTER hardduedate");
4177 my $duedate;
4178 if (C4::Context->preference("globalDueDate")) {
4179 $duedate = eval { output_pref( { dt => dt_from_string( C4::Context->preference("globalDueDate") ), dateonly => 1, dateformat => 'iso' } ); };
4180 $dbh->do("UPDATE `issuingrules` SET hardduedate = '$duedate', hardduedatecompare = 0");
4181 } elsif (C4::Context->preference("ceilingDueDate")) {
4182 $duedate = eval { output_pref( { dt => dt_from_string( C4::Context->preference("ceilingDueDate") ), dateonly => 1, dateformat => 'iso' } ); };
4183 $dbh->do("UPDATE `issuingrules` SET hardduedate = '$duedate', hardduedatecompare = -1");
4185 $dbh->do("DELETE FROM `systempreferences` WHERE variable = 'globalDueDate' OR variable = 'ceilingDueDate'");
4186 print "Upgrade to $DBversion done (Move global and ceiling due dates to Circ Rules level)\n";
4187 SetVersion ($DBversion);
4190 $DBversion = '3.03.00.036';
4191 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4192 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('COinSinOPACResults', 1, 'If ON, use COinS in OPAC search results page. NOTE: this can slow down search response time significantly','','YesNo')");
4193 print "Upgrade to $DBversion done ( Make COinS optional in OPAC search results )\n";
4194 SetVersion ($DBversion);
4197 $DBversion = '3.03.00.037';
4198 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4199 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACDisplay856uAsImage','OFF','Display the URI in the 856u field as an image, the corresponding OPACXSLT option must be on','OFF|Details|Results|Both','Choice')");
4200 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('Display856uAsImage','OFF','Display the URI in the 856u field as an image, the corresponding Staff Client XSLT option must be on','OFF|Details|Results|Both','Choice')");
4201 print "Upgrade to $DBversion done (Add 'Display856uAsImage' and 'OPACDisplay856uAsImage' syspref)\n";
4202 SetVersion ($DBversion);
4205 $DBversion = '3.03.00.038';
4206 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4207 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('SelfCheckTimeout',120,'Define the number of seconds before the Web-based Self Checkout times out a patron','','Integer')");
4208 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AllowSelfCheckReturns',0,'If enabled, patrons may return items through the Web-based Self Checkout','','YesNo')");
4209 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('SelfCheckHelpMessage','','Enter HTML to include under the basic Web-based Self Checkout instructions on the Help page','70|10','Textarea')");
4210 print "Upgrade to $DBversion done ( Add Self-checkout by Login system preferences )\n";
4213 $DBversion = "3.03.00.039";
4214 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4215 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('ShowReviewer',1,'If ON, name of reviewer will be shown above comments in OPAC',NULL,'YesNo');");
4216 print "Upgrade to $DBversion done (Add syspref ShowReviewer)\n";
4219 $DBversion = "3.03.00.040";
4220 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4221 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('UseControlNumber',0,'If ON, record control number (w subfields) and control number (001) are used for linking of bibliographic records.','','YesNo');");
4222 print "Upgrade to $DBversion done (Add syspref UseControlNumber)\n";
4225 $DBversion = "3.03.00.041";
4226 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4227 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AlternateHoldingsField','','The MARC field/subfield that contains alternate holdings information for bibs taht do not have items attached (e.g. 852abchi for libraries converting from MARC Magician).',NULL,'free')");
4228 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AlternateHoldingsSeparator','','The string to use to separate subfields in alternate holdings displays.',NULL,'free')");
4229 print "Upgrade to $DBversion done (Add sysprefs to control alternate holdings information display)\n";
4230 SetVersion ($DBversion);
4233 $DBversion = '3.03.00.042';
4234 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4235 stocknumber_checker();
4236 print "Upgrade to $DBversion done (5860 Index itemstocknumber)\n";
4237 SetVersion ($DBversion);
4240 sub stocknumber_checker { #code reused later on
4241 my @row;
4242 #drop the obsolete itemSStocknumber idx if it exists
4243 @row = $dbh->selectrow_array("SHOW INDEXES FROM items WHERE key_name='itemsstocknumberidx'");
4244 $dbh->do("ALTER TABLE `items` DROP INDEX `itemsstocknumberidx`;") if @row;
4246 #check itemstocknumber idx; remove it if it is unique
4247 @row = $dbh->selectrow_array("SHOW INDEXES FROM items WHERE key_name='itemstocknumberidx' AND non_unique=0");
4248 $dbh->do("ALTER TABLE `items` DROP INDEX `itemstocknumberidx`;") if @row;
4250 #add itemstocknumber index non-unique IF it still not exists
4251 @row = $dbh->selectrow_array("SHOW INDEXES FROM items WHERE key_name='itemstocknumberidx'");
4252 $dbh->do("ALTER TABLE items ADD INDEX itemstocknumberidx (stocknumber);") unless @row;
4255 $DBversion = "3.03.00.043";
4256 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4258 $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib,lib_opac) VALUES ('YES_NO','0','No','No')");
4259 $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib,lib_opac) VALUES ('YES_NO','1','Yes','Yes')");
4261 print "Upgrade to $DBversion done ( add generic boolean YES_NO authorised_values pair )\n";
4262 SetVersion ($DBversion);
4265 $DBversion = '3.03.00.044';
4266 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4267 $dbh->do("ALTER TABLE `aqbasketgroups` ADD `freedeliveryplace` TEXT NULL AFTER `deliveryplace`;");
4268 print "Upgrade to $DBversion done (adding freedeliveryplace to basketgroups)\n";
4271 $DBversion = '3.03.00.045';
4272 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4273 #Remove obsolete columns from aqbooksellers if needed
4274 my $a = $dbh->selectall_hashref('SHOW columns from aqbooksellers','Field');
4275 my $sqldrop="ALTER TABLE aqbooksellers DROP COLUMN ";
4276 foreach(qw/deliverydays followupdays followupscancel invoicedisc nocalc specialty/) {
4277 $dbh->do($sqldrop.$_) if exists $a->{$_};
4279 #Remove obsolete column from aqbudgets if needed
4280 #The correct column is budget_notes
4281 $a = $dbh->selectall_hashref('SHOW columns from aqbudgets','Field');
4282 if(exists $a->{budget_description}) {
4283 $dbh->do("ALTER TABLE aqbudgets DROP COLUMN budget_description");
4285 print "Upgrade to $DBversion done (Remove obsolete columns from aqbooksellers and aqbudgets if needed)\n";
4286 SetVersion ($DBversion);
4289 $DBversion = "3.03.00.046";
4290 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4291 $dbh->do("ALTER TABLE overduerules ALTER delay1 SET DEFAULT NULL, ALTER delay2 SET DEFAULT NULL, ALTER delay3 SET DEFAULT NULL");
4292 print "Upgrade to $DBversion done (Setting NULL default value for delayn columns in table overduerules)\n";
4293 SetVersion($DBversion);
4296 $DBversion = '3.03.00.047';
4297 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4298 $dbh->do("ALTER TABLE borrowers ADD `state` mediumtext AFTER city;");
4299 $dbh->do("ALTER TABLE borrowers ADD `B_state` mediumtext AFTER B_city;");
4300 $dbh->do("ALTER TABLE borrowers ADD `altcontactstate` mediumtext AFTER altcontactaddress3;");
4301 $dbh->do("ALTER TABLE deletedborrowers ADD `state` mediumtext AFTER city;");
4302 $dbh->do("ALTER TABLE deletedborrowers ADD `B_state` mediumtext AFTER B_city;");
4303 $dbh->do("ALTER TABLE deletedborrowers ADD `altcontactstate` mediumtext AFTER altcontactaddress3;");
4304 print "Upgrade to $DBversion done (Add state field to patron's addresses)\n";
4307 $DBversion = '3.03.00.048';
4308 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4309 $dbh->do("ALTER TABLE branches ADD `branchstate` mediumtext AFTER `branchcity`;");
4310 print "Upgrade to $DBversion done (Add state to branch address)\n";
4311 SetVersion ($DBversion);
4314 $DBversion = '3.03.00.049';
4315 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4316 $dbh->do("ALTER TABLE `accountlines` ADD `note` text NULL default NULL");
4317 $dbh->do("ALTER TABLE `accountlines` ADD `manager_id` int( 11 ) NULL ");
4318 print "Upgrade to $DBversion done (adding note and manager_id fields in accountlines table)\n";
4319 SetVersion($DBversion);
4322 $DBversion = "3.03.00.050";
4323 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4324 $dbh->do("
4325 INSERT IGNORE INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacHiddenItems','','This syspref allows to define custom rules for hiding specific items at opac. See docs/opac/OpacHiddenItems.txt for more informations.','','Textarea');
4327 print "Upgrade to $DBversion done (Adding OpacHiddenItems syspref)\n";
4328 SetVersion($DBversion);
4331 $DBversion = "3.03.00.051";
4332 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4333 print "Upgrade to $DBversion done (Remove spaces and dashes from message_attribute names)\n";
4334 $dbh->do("UPDATE message_attributes SET message_name = 'Item_Due' WHERE message_name='Item Due'");
4335 $dbh->do("UPDATE message_attributes SET message_name = 'Advance_Notice' WHERE message_name='Advance Notice'");
4336 $dbh->do("UPDATE message_attributes SET message_name = 'Hold_Filled' WHERE message_name='Hold Filled'");
4337 $dbh->do("UPDATE message_attributes SET message_name = 'Item_Check_in' WHERE message_name='Item Check-in'");
4338 $dbh->do("UPDATE message_attributes SET message_name = 'Item_Checkout' WHERE message_name='Item Checkout'");
4339 SetVersion ($DBversion);
4342 $DBversion = "3.03.00.052";
4343 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4344 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('WaitingNotifyAtCheckin',0,'If ON, notify librarians of waiting holds for the patron whose items they are checking in.',NULL,'YesNo');");
4345 print "Upgrade to $DBversion done (Add syspref WaitingNotifyAtCheckin)\n";
4346 SetVersion ($DBversion);
4349 $DBversion = "3.04.00.000";
4350 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4351 print "Upgrade to $DBversion done Koha 3.4.0 release \n";
4352 SetVersion ($DBversion);
4355 $DBversion = "3.05.00.001";
4356 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4357 $dbh->do(qq{
4358 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('numSearchRSSResults',50,'Specify the maximum number of results to display on a RSS page of results',NULL,'Integer');
4360 print "Upgrade to $DBversion done (Adds New System preference numSearchRSSResults)\n";
4361 SetVersion($DBversion);
4364 $DBversion = '3.05.00.002';
4365 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4366 #follow up fix 5860: some installs already past 3.3.0.42
4367 stocknumber_checker();
4368 print "Upgrade to $DBversion done (Fix for stocknumber index)\n";
4369 SetVersion ($DBversion);
4372 $DBversion = "3.05.00.003";
4373 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4374 $dbh->do(qq{
4375 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacRenewalBranch','checkoutbranch','Choose how the branch for an OPAC renewal is recorded in statistics','itemhomebranch|patronhomebranch|checkoutbranch|null','Choice');
4377 print "Upgrade to $DBversion done (Adds New System preference OpacRenewalBranch)\n";
4378 SetVersion($DBversion);
4381 $DBversion = "3.05.00.004";
4382 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4383 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('ShowReviewerPhoto',1,'If ON, photo of reviewer will be shown beside comments in OPAC',NULL,'YesNo');");
4384 print "Upgrade to $DBversion done (Add syspref ShowReviewerPhoto)\n";
4385 SetVersion($DBversion);
4388 $DBversion = "3.05.00.005";
4389 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4390 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('BasketConfirmations', '1', 'When closing or reopening a basket,', 'always ask for confirmation.|do not ask for confirmation.', 'Choice');");
4391 print "Upgrade to $DBversion done (Adds pref BasketConfirmations)\n";
4392 SetVersion($DBversion);
4395 $DBversion = "3.05.00.006";
4396 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4397 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('MARCAuthorityControlField008', '|| aca||aabn | a|a d', NULL, NULL, 'Textarea')");
4398 print "Upgrade to $DBversion done (Add syspref MARCAuthorityControlField008)\n";
4399 SetVersion ($DBversion);
4402 $DBversion = "3.05.00.007";
4403 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4404 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpenLibraryCovers',0,'If ON Openlibrary book covers will be show',NULL,'YesNo');");
4405 print "Upgrade to $DBversion done (Add syspref OpenLibraryCovers)\n";
4406 SetVersion($DBversion);
4409 $DBversion = "3.05.00.008";
4410 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4411 $dbh->do("ALTER TABLE `cities` ADD `city_state` VARCHAR( 100 ) NULL DEFAULT NULL AFTER `city_name`;");
4412 $dbh->do("ALTER TABLE `cities` ADD `city_country` VARCHAR( 100 ) NULL DEFAULT NULL AFTER `city_zipcode`;");
4413 print "Add state and country to cities table corresponding to new columns in borrowers\n";
4414 SetVersion($DBversion);
4417 $DBversion = "3.05.00.009";
4418 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4419 $dbh->do("INSERT INTO old_issues (borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate)
4420 SELECT borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate FROM issues WHERE borrowernumber IS NULL");
4421 $dbh->do("DELETE FROM issues WHERE borrowernumber IS NULL");
4423 $dbh->do("INSERT INTO old_issues (borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate)
4424 SELECT borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate FROM issues WHERE itemnumber IS NULL");
4425 $dbh->do("DELETE FROM issues WHERE itemnumber IS NULL");
4427 $dbh->do("INSERT INTO old_issues (borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate)
4428 SELECT borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate FROM issues WHERE NOT EXISTS (SELECT * FROM borrowers WHERE borrowernumber = issues.borrowernumber)");
4429 $dbh->do("DELETE FROM issues WHERE NOT EXISTS (SELECT * FROM borrowers WHERE borrowernumber = issues.borrowernumber)");
4431 $dbh->do("INSERT INTO old_issues (borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate)
4432 SELECT borrowernumber, itemnumber, date_due, branchcode, issuingbranch, returndate, lastreneweddate, `return`, renewals, timestamp, issuedate FROM issues WHERE NOT EXISTS (SELECT * FROM items WHERE itemnumber = issues.itemnumber)");
4433 $dbh->do("DELETE FROM issues WHERE NOT EXISTS (SELECT * FROM items WHERE itemnumber = issues.itemnumber)");
4435 $dbh->do("ALTER TABLE issues DROP FOREIGN KEY `issues_ibfk_1`");
4436 $dbh->do("ALTER TABLE issues DROP FOREIGN KEY `issues_ibfk_2`");
4437 $dbh->do("ALTER TABLE issues ALTER COLUMN borrowernumber DROP DEFAULT");
4438 $dbh->do("ALTER TABLE issues ALTER COLUMN itemnumber DROP DEFAULT");
4439 $dbh->do("ALTER TABLE issues MODIFY COLUMN borrowernumber int(11) NOT NULL");
4440 $dbh->do("ALTER TABLE issues MODIFY COLUMN itemnumber int(11) NOT NULL");
4441 $dbh->do("ALTER TABLE issues DROP KEY `issuesitemidx`");
4442 $dbh->do("ALTER TABLE issues ADD PRIMARY KEY (`itemnumber`)");
4443 $dbh->do("ALTER TABLE issues ADD CONSTRAINT `issues_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE RESTRICT ON UPDATE CASCADE");
4444 $dbh->do("ALTER TABLE issues ADD CONSTRAINT `issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE RESTRICT ON UPDATE CASCADE");
4446 print "Upgrade to $DBversion done (issues referential integrity)\n";
4447 SetVersion ($DBversion);
4450 $DBversion = "3.05.00.010";
4451 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4452 $dbh->do("CREATE INDEX priorityfoundidx ON reserves (priority,found)");
4453 print "Create an index on reserves to speed up holds awaiting pickup report bug 5866\n";
4454 SetVersion($DBversion);
4458 $DBversion = "3.05.00.011";
4459 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4460 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACResultsSidebar','','Define HTML to be included on the search results page, underneath the facets sidebar','70|10','Textarea')");
4461 print "Upgrade to $DBversion done (add OPACResultsSidebar syspref (enh 6165))\n";
4462 SetVersion($DBversion);
4465 $DBversion = "3.05.00.012";
4466 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4467 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('RecordLocalUseOnReturn',0,'If ON, statistically record returns of unissued items as local use, instead of return',NULL,'YesNo')");
4468 print "Upgrade to $DBversion done (add RecordLocalUseOnReturn syspref (enh 6403))\n";
4469 SetVersion($DBversion);
4472 $DBversion = "3.05.00.013";
4473 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4474 $dbh->do(qq|INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OpacKohaUrl','0',"Show 'Powered by Koha' text on OPAC footer.",NULL,NULL)|);
4475 print "Upgrade to $DBversion done (Add syspref 'OpacKohaUrl')\n";
4476 SetVersion($DBversion);
4479 $DBversion = "3.05.00.014";
4480 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4481 $dbh->do("ALTER TABLE `borrowers` MODIFY `userid` VARCHAR(75)");
4482 print "Modified userid column length into 75 in borrowers\n";
4483 SetVersion($DBversion);
4486 $DBversion = "3.05.00.015";
4487 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4488 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('NovelistSelectEnabled',0,'Enable Novelist Select content. Requires Novelist Profile and Password',NULL,'YesNo')");
4489 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('NovelistSelectProfile',NULL,'Novelist Select user Password',NULL,'free')");
4490 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('NovelistSelectPassword',NULL,'Enable Novelist user Profile',NULL,'free')");
4491 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('NovelistSelectView','tab','Where to display Novelist Select content','tab|above|below|right','Choice')");
4492 print "Upgrade to $DBversion done (Add support for EBSCO's NoveList Select (enh 6902))\n";
4493 SetVersion($DBversion);
4496 $DBversion = '3.05.00.016';
4497 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4498 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('EasyAnalyticalRecords','0','If on, display in the catalogue screens tools to easily setup analytical record relationships','','YesNo');");
4499 print "Upgrade to $DBversion done (Add EasyAnalyticalRecords syspref)\n";
4500 SetVersion ($DBversion);
4503 $DBversion = '3.05.00.017';
4504 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4505 if (C4::Context->preference("marcflavour") eq 'MARC21' ||
4506 C4::Context->preference("marcflavour") eq 'NORMARC'){
4507 $dbh->do("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 ('773', '0', 'Host Biblionumber', 'Host Biblionumber', 0, 0, NULL, 7, NULL, NULL, '', NULL, -6, '', '', '', NULL)");
4508 $dbh->do("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 ('773', '9', 'Host Itemnumber', 'Host Itemnumber', 0, 0, NULL, 7, NULL, NULL, '', NULL, -6, '', '', '', NULL)");
4509 print "Upgrade to $DBversion done (Add 773 subfield 9 and 0 to default framework)\n";
4510 SetVersion ($DBversion);
4511 } elsif (C4::Context->preference("marcflavour") eq 'UNIMARC'){
4512 $dbh->do("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 ('461', '9', 'Host Itemnumber', 'Host Itemnumber', 0, 0, NULL, 7, NULL, NULL, '', NULL, -6, '', '', '', NULL)");
4513 print "Upgrade to $DBversion done (Add 461 subfield 9 to default framework)\n";
4514 SetVersion ($DBversion);
4518 $DBversion = "3.05.00.018";
4519 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4520 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacNavBottom','','Links after OpacNav links','70|10','Textarea')");
4521 print "Upgrade to $DBversion done (add OpacNavBottom syspref (enh 6825): if appropriate, you can split OpacNav into OpacNav and OpacNavBottom)\n";
4522 SetVersion($DBversion);
4525 $DBversion = "3.05.00.019";
4526 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4527 $dbh->do("UPDATE itemtypes SET imageurl = 'vokal/Book.png' WHERE imageurl = 'vokal/BOOK.png'");
4528 $dbh->do("UPDATE itemtypes SET imageurl = 'vokal/Book-32px.png' WHERE imageurl = 'vokal/BOOK-32px.png'");
4529 $dbh->do("UPDATE authorised_values SET imageurl = 'vokal/Book.png' WHERE imageurl = 'vokal/BOOK.png'");
4530 $dbh->do("UPDATE authorised_values SET imageurl = 'vokal/Book-32px.png' WHERE imageurl = 'vokal/BOOK-32px.png'");
4531 print "Upgrade to $DBversion done (remove duplicate VOKAL Book icons, bug 6862)\n";
4532 SetVersion($DBversion);
4535 $DBversion = "3.05.00.020";
4536 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4537 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('AcqViewBaskets','user','user|branch|all','Define which baskets a user is allowed to view: his own only, any within his branch or all','Choice')");
4538 print "Upgrade to $DBversion done (Add syspref AcqViewBaskets)\n";
4539 SetVersion($DBversion);
4542 $DBversion = "3.05.00.021";
4543 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4544 $dbh->do("ALTER TABLE borrower_attribute_types ADD COLUMN display_checkout TINYINT(1) NOT NULL DEFAULT '0';");
4545 print "Upgrade to $DBversion done (Added a display_checkout field in borrower_attribute_types table)\n";
4546 SetVersion($DBversion);
4549 $DBversion = "3.05.00.022";
4550 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4551 $dbh->do("CREATE TABLE need_merge_authorities (id int NOT NULL auto_increment PRIMARY KEY, authid bigint NOT NULL, done tinyint DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=utf8");
4552 print "Upgrade to $DBversion done (6094: Fixing ModAuthority problems, add a need_merge_authorities table)\n";
4553 SetVersion($DBversion);
4556 $DBversion = "3.05.00.023";
4557 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4558 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowRecentComments',0,'If ON a link to recent comments will appear in the OPAC masthead',NULL,'YesNo');");
4559 print "Upgrade to $DBversion done (Add syspref OpacShowRecentComments. When the preference is turned on a link to recent comments will appear in the OPAC masthead. )\n";
4560 SetVersion($DBversion);
4563 $DBversion = "3.06.00.000";
4564 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4565 print "Upgrade to $DBversion done Koha 3.6.0 release \n";
4566 SetVersion ($DBversion);
4569 $DBversion = "3.07.00.001";
4570 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4571 my $borrowers = $dbh->selectcol_arrayref( "SELECT borrowernumber from borrowers where debarred =1;", { Columns => [1] } );
4572 $dbh->do("ALTER TABLE borrowers MODIFY debarred DATE DEFAULT NULL;");
4573 $dbh->do( "UPDATE borrowers set debarred='9999-12-31' where borrowernumber IN (" . join( ",", @$borrowers ) . ");" ) if ($borrowers and scalar(@$borrowers)>0);
4574 $dbh->do("ALTER TABLE borrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;");
4575 $dbh->do("ALTER TABLE deletedborrowers MODIFY debarred DATE DEFAULT NULL;");
4576 $dbh->do("ALTER TABLE deletedborrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;");
4577 print "Upgrade done (Change borrowers.debarred into Date )\n";
4578 SetVersion($DBversion);
4581 $DBversion = "3.07.00.002";
4582 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4583 $dbh->do("UPDATE borrowers SET debarred=NULL WHERE debarred='0000-00-00';");
4584 print "Setting NULL to debarred where 0000-00-00 is stored (bug 7272)\n";
4585 SetVersion($DBversion);
4588 $DBversion = "3.07.00.003";
4589 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4590 $dbh->do(" UPDATE `message_attributes` SET message_name='Item_Due' WHERE message_name='Item_DUE'");
4591 print "Updating message_name in message_attributes\n";
4592 SetVersion($DBversion);
4595 $DBversion = "3.07.00.004";
4596 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4597 $dbh->do("ALTER TABLE `suggestions` ADD `patronreason` TEXT NULL AFTER `reason`");
4598 print "Upgrade to $DBversion done (Add column to suggestions table to store patrons' reasons for submitting a suggestion. )\n";
4599 SetVersion($DBversion);
4602 $DBversion = "3.07.00.005";
4603 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4604 $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')");
4605 print "Upgrade to $DBversion done (BorrowerUnwantedField syspref)\n";
4606 SetVersion ($DBversion);
4609 $DBversion = "3.07.00.006";
4610 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4611 $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');");
4612 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";
4613 SetVersion($DBversion);
4616 $DBversion = "3.07.00.007";
4617 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4618 $dbh->do("ALTER TABLE items MODIFY materials text;");
4619 print "Upgrade to $DBversion done alter items.material from varchar(10) to text \n";
4620 SetVersion($DBversion);
4623 $DBversion = '3.07.00.008';
4624 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4625 if (C4::Context->preference("marcflavour") eq 'MARC21') {
4626 if (C4::Context->preference("opaclanguages") eq "de") {
4627 $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, '');");
4628 } else {
4629 $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, '');");
4632 print "Upgrade to $DBversion done (add MARC21 field 545 to framework)\n";
4633 SetVersion ($DBversion);
4636 $DBversion = "3.07.00.009";
4637 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4638 $dbh->do("ALTER TABLE `aqorders` ADD COLUMN `claims_count` INT(11) DEFAULT 0, ADD COLUMN `claimed_date` DATE DEFAULT NULL AFTER `claims_count`");
4639 print "Upgrade to $DBversion done (Add claims_count and claimed_date fields in aqorders table)\n";
4640 SetVersion($DBversion);
4643 $DBversion = "3.07.00.010";
4644 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4645 $dbh->do(
4646 q|CREATE TABLE `biblioimages` (
4647 `imagenumber` int(11) NOT NULL AUTO_INCREMENT,
4648 `biblionumber` int(11) NOT NULL,
4649 `mimetype` varchar(15) NOT NULL,
4650 `imagefile` mediumblob NOT NULL,
4651 `thumbnail` mediumblob NOT NULL,
4652 PRIMARY KEY (`imagenumber`),
4653 CONSTRAINT `bibliocoverimage_fk1` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE
4654 ) ENGINE=InnoDB DEFAULT CHARSET=utf8|
4656 $dbh->do(
4657 q|INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACLocalCoverImages','0','Display local cover images on OPAC search and details pages.','1','YesNo')|
4659 $dbh->do(
4660 q|INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('LocalCoverImages','0','Display local cover images on intranet search and details pages.','1','YesNo')|
4662 $dbh->do(
4663 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')|
4665 $dbh->do(
4666 q|INSERT INTO permissions (module_bit, code, description) VALUES (13, 'upload_local_cover_images', 'Upload local cover images')|
4668 print "Upgrade to $DBversion done (Added support for local cover images)\n";
4669 SetVersion($DBversion);
4672 $DBversion = "3.07.00.011";
4673 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4674 $dbh->do(<<ENDOFRENEWAL);
4675 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('BorrowerRenewalPeriodBase', 'now', 'Set whether the borrower renewal date should be counted from the dateexpiry or from the current date ','dateexpiry|now','Choice');
4676 ENDOFRENEWAL
4677 print "Upgrade to $DBversion done (Added a system preference to allow renewal of Patron account either from todays date or from existing expiry date in the patrons account.)\n";
4678 SetVersion($DBversion);
4681 $DBversion = "3.07.00.012";
4682 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4683 $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')");
4684 print "Upgrade to $DBversion add 'AllowItemsOnHoldCheckout' syspref \n";
4685 SetVersion ($DBversion);
4688 $DBversion = "3.07.00.013";
4689 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4690 $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');");
4691 print "Upgrade to $DBversion done (Bug 7345: Add system preference OpacExportOptions.)\n";
4692 SetVersion ($DBversion);
4695 $DBversion = "3.07.00.014";
4696 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4697 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";
4698 SetVersion($DBversion);
4701 $DBversion = "3.07.00.015";
4702 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4703 my $sth = $dbh->prepare(q|
4704 SELECT COUNT(*) FROM marc_subfield_structure where kohafield="biblioitems.editionstatement"
4706 $sth->execute;
4707 my $already_exists = $sth->fetchrow;
4708 if ( not $already_exists ) {
4709 my $field = C4::Context->preference("marcflavour") eq "UNIMARC" ? "205" : "250";
4710 my $subfield = "a";
4711 my $sth = $dbh->prepare( q|
4712 UPDATE marc_subfield_structure SET kohafield = "biblioitems.editionstatement"
4713 WHERE tagfield = ? AND tagsubfield = ?
4715 $sth->execute( $field, $subfield );
4716 print "Upgrade to $DBversion done (Added a mapping for biblioitems.editionstatement.)\n";
4717 } else {
4718 print "Upgrade to $DBversion done (Added a mapping for biblioitems.editionstatement (already exists, nothing to do).)\n";
4720 SetVersion($DBversion);
4723 $DBversion = "3.07.00.016";
4724 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4725 $dbh->do("ALTER TABLE items ADD KEY `itemcallnumber` (itemcallnumber)");
4726 print "Upgrade to $DBversion done (Added index on items.itemcallnumber)\n";
4727 SetVersion($DBversion);
4730 $DBversion = "3.07.00.017";
4731 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4732 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('TransferWhenCancelAllWaitingHolds','0','Transfer items when cancelling all waiting holds',NULL,'YesNo')");
4733 print "Upgrade to $DBversion done (Add sysprefs to control transfer when cancel all waiting holds)\n";
4734 SetVersion ($DBversion);
4737 $DBversion = "3.07.00.018";
4738 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4739 $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;");
4740 print "Upgrade to $DBversion done ( adding offline operations table )\n";
4741 SetVersion($DBversion);
4744 $DBversion = "3.07.00.019";
4745 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4746 $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");
4747 $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");
4748 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";
4749 SetVersion($DBversion);
4752 $DBversion = "3.07.00.020";
4753 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4754 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OPACpatronimages',0,'Enable patron images in the OPAC',NULL,'YesNo');");
4755 print "Upgrade to $DBversion done (Bug 3516: Add the option to show patron images in the OPAC.)\n";
4756 SetVersion($DBversion);
4759 $DBversion = "3.07.00.021";
4760 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4761 $dbh->do(
4762 "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('LinkerModule','Default','Chooses which linker module to use (see documentation).','Default|FirstMatchLastMatch','Choice');"
4764 $dbh->do(
4765 "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('LinkerOptions','','A pipe-separated list of options for the linker.','','free');"
4767 $dbh->do(
4768 "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');"
4770 $dbh->do(
4771 "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');"
4773 $dbh->do(
4774 "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AutoCreateAuthorities',0,'Automatically create authorities that do not exist when cataloging records.',NULL,'YesNo');"
4776 $dbh->do(
4777 "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');"
4779 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";
4780 SetVersion($DBversion);
4783 $DBversion = "3.07.00.022";
4784 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4785 $dbh->do("DELETE FROM reviews WHERE biblionumber NOT IN (SELECT biblionumber from biblio)");
4786 $dbh->do("UPDATE reviews SET borrowernumber = NULL WHERE borrowernumber NOT IN (SELECT borrowernumber FROM borrowers)");
4787 $dbh->do("ALTER TABLE reviews ADD CONSTRAINT reviews_ibfk_2 FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE");
4788 $dbh->do("ALTER TABLE reviews ADD CONSTRAINT reviews_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber ) ON UPDATE CASCADE ON DELETE SET NULL");
4789 print "Upgrade to $DBversion done (Bug 7493 - Add constraint linking OPAC comment biblionumber to biblio, OPAC comment borrowernumber to borrowers.)\n";
4790 SetVersion($DBversion);
4793 $DBversion = "3.07.00.023";
4794 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4795 $dbh->do("ALTER TABLE `message_transports` DROP FOREIGN KEY `message_transports_ibfk_3`");
4796 $dbh->do("ALTER TABLE `letter` DROP PRIMARY KEY");
4797 $dbh->do("ALTER TABLE `letter` ADD `branchcode` varchar(10) default NULL AFTER `code`");
4798 $dbh->do("ALTER TABLE `letter` ADD PRIMARY KEY (`module`,`code`, `branchcode`)");
4799 $dbh->do("ALTER TABLE `message_transports` ADD `branchcode` varchar(10) NOT NULL default ''");
4800 $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");
4801 $dbh->do("ALTER TABLE `letter` ADD `is_html` tinyint(1) default 0 AFTER `name`");
4803 $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html)
4804 VALUES ('circulation','ISSUESLIP','Issue Slip','Issue Slip', '<h3><<branches.branchname>></h3>
4805 Checked out to <<borrowers.title>> <<borrowers.firstname>> <<borrowers.initials>> <<borrowers.surname>> <br />
4806 (<<borrowers.cardnumber>>) <br />
4808 <<today>><br />
4810 <h4>Checked Out</h4>
4811 <checkedout>
4813 <<biblio.title>> <br />
4814 Barcode: <<items.barcode>><br />
4815 Date due: <<issues.date_due>><br />
4816 </p>
4817 </checkedout>
4819 <h4>Overdues</h4>
4820 <overdue>
4822 <<biblio.title>> <br />
4823 Barcode: <<items.barcode>><br />
4824 Date due: <<issues.date_due>><br />
4825 </p>
4826 </overdue>
4828 <hr>
4830 <h4 style=\"text-align: center; font-style:italic;\">News</h4>
4831 <news>
4832 <div class=\"newsitem\">
4833 <h5 style=\"margin-bottom: 1px; margin-top: 1px\"><b><<opac_news.title>></b></h5>
4834 <p style=\"margin-bottom: 1px; margin-top: 1px\"><<opac_news.new>></p>
4835 <p class=\"newsfooter\" style=\"font-size: 8pt; font-style:italic; margin-bottom: 1px; margin-top: 1px\">Posted on <<opac_news.timestamp>></p>
4836 <hr />
4837 </div>
4838 </news>', 1)");
4839 $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html)
4840 VALUES ('circulation','ISSUEQSLIP','Issue Quick Slip','Issue Quick Slip', '<h3><<branches.branchname>></h3>
4841 Checked out to <<borrowers.title>> <<borrowers.firstname>> <<borrowers.initials>> <<borrowers.surname>> <br />
4842 (<<borrowers.cardnumber>>) <br />
4844 <<today>><br />
4846 <h4>Checked Out Today</h4>
4847 <checkedout>
4849 <<biblio.title>> <br />
4850 Barcode: <<items.barcode>><br />
4851 Date due: <<issues.date_due>><br />
4852 </p>
4853 </checkedout>', 1)");
4854 $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html)
4855 VALUES ('circulation','RESERVESLIP','Reserve Slip','Reserve Slip', '<h5>Date: <<today>></h5>
4857 <h3> Transfer to/Hold in <<branches.branchname>></h3>
4859 <h3><<borrowers.surname>>, <<borrowers.firstname>></h3>
4861 <ul>
4862 <li><<borrowers.cardnumber>></li>
4863 <li><<borrowers.phone>></li>
4864 <li> <<borrowers.address>><br />
4865 <<borrowers.address2>><br />
4866 <<borrowers.city >> <<borrowers.zipcode>>
4867 </li>
4868 <li><<borrowers.email>></li>
4869 </ul>
4870 <br />
4871 <h3>ITEM ON HOLD</h3>
4872 <h4><<biblio.title>></h4>
4873 <h5><<biblio.author>></h5>
4874 <ul>
4875 <li><<items.barcode>></li>
4876 <li><<items.itemcallnumber>></li>
4877 <li><<reserves.waitingdate>></li>
4878 </ul>
4879 <p>Notes:
4880 <pre><<reserves.reservenotes>></pre>
4881 </p>', 1)");
4882 $dbh->do("INSERT INTO `letter` (module, code, name, title, content, is_html)
4883 VALUES ('circulation','TRANSFERSLIP','Transfer Slip','Transfer Slip', '<h5>Date: <<today>></h5>
4884 <h3>Transfer to <<branches.branchname>></h3>
4886 <h3>ITEM</h3>
4887 <h4><<biblio.title>></h4>
4888 <h5><<biblio.author>></h5>
4889 <ul>
4890 <li><<items.barcode>></li>
4891 <li><<items.itemcallnumber>></li>
4892 </ul>', 1)");
4894 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('NoticeCSS','','Notices CSS url.',NULL,'free')");
4895 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('SlipCSS','','Slips CSS url.',NULL,'free')");
4897 $dbh->do("UPDATE `letter` SET content = replace(content, '<<title>>', '<<biblio.title>>') WHERE code = 'HOLDPLACED'");
4899 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";
4900 SetVersion($DBversion);
4903 $DBversion = "3.07.00.024";
4904 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4905 $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')");
4906 $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')");
4907 print "Upgrade to $DBversion done (Added system preference ExpireReservesMaxPickUpDelay, system preference ExpireReservesMaxPickUpDelayCharge, add reseves.charge_if_expired)\n";
4910 $DBversion = "3.07.00.025";
4911 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4912 if (TableExists('bibliocoverimage')) {
4913 $dbh->do( q|DROP TABLE bibliocoverimage;| );
4914 $dbh->do(
4915 q|CREATE TABLE biblioimages (
4916 imagenumber int(11) NOT NULL AUTO_INCREMENT,
4917 biblionumber int(11) NOT NULL,
4918 mimetype varchar(15) NOT NULL,
4919 imagefile mediumblob NOT NULL,
4920 thumbnail mediumblob NOT NULL,
4921 PRIMARY KEY (imagenumber),
4922 CONSTRAINT bibliocoverimage_fk1 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE
4923 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;|
4926 print "Upgrade to $DBversion done (Correct table name for local cover images if needed. )\n";
4927 SetVersion($DBversion);
4930 $DBversion = "3.07.00.026";
4931 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
4932 $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');");
4933 print "Upgrade to $DBversion done (Add syspref CalendarFirstDayOfWeek used to select the first day of week to use in the calendar. )\n";
4934 SetVersion($DBversion);
4937 $DBversion = "3.07.00.027";
4938 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4939 $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');});
4940 print "Upgrade to $DBversion done (Added system preference RoutingListNote for adding a general note to all routing lists.)\n";
4941 SetVersion($DBversion);
4944 $DBversion = "3.07.00.028";
4945 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4946 $dbh->do(qq{
4947 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');
4949 print "Upgrade to $DBversion done (Bug 6296 New System preference AllowPKIAuth)\n";
4952 $DBversion = "3.07.00.029";
4953 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4954 $dbh->do(q{DROP TABLE IF EXISTS `oai_sets_descriptions`;});
4955 $dbh->do(q{DROP TABLE IF EXISTS `oai_sets_mappings`;});
4956 $dbh->do(q{DROP TABLE IF EXISTS `oai_sets_biblios`;});
4957 $dbh->do(q{DROP TABLE IF EXISTS `oai_sets`;});
4959 $dbh->do(q{
4960 CREATE TABLE `oai_sets` (
4961 `id` int(11) NOT NULL auto_increment,
4962 `spec` varchar(80) NOT NULL UNIQUE,
4963 `name` varchar(80) NOT NULL,
4964 PRIMARY KEY (`id`)
4965 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4968 $dbh->do(q{
4969 CREATE TABLE `oai_sets_descriptions` (
4970 `set_id` int(11) NOT NULL,
4971 `description` varchar(255) NOT NULL,
4972 CONSTRAINT `oai_sets_descriptions_ibfk_1` FOREIGN KEY (`set_id`) REFERENCES `oai_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
4973 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4976 $dbh->do(q{
4977 CREATE TABLE `oai_sets_mappings` (
4978 `set_id` int(11) NOT NULL,
4979 `marcfield` char(3) NOT NULL,
4980 `marcsubfield` char(1) NOT NULL,
4981 `marcvalue` varchar(80) NOT NULL,
4982 CONSTRAINT `oai_sets_mappings_ibfk_1` FOREIGN KEY (`set_id`) REFERENCES `oai_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
4983 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4986 $dbh->do(q{
4987 CREATE TABLE `oai_sets_biblios` (
4988 `biblionumber` int(11) NOT NULL,
4989 `set_id` int(11) NOT NULL,
4990 PRIMARY KEY (`biblionumber`, `set_id`),
4991 CONSTRAINT `oai_sets_biblios_ibfk_1` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
4992 CONSTRAINT `oai_sets_biblios_ibfk_2` FOREIGN KEY (`set_id`) REFERENCES `oai_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
4993 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4996 $dbh->do(q{
4997 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');
5000 print "Upgrade to $DBversion done (Atomic update for OAI-PMH sets management)\n";
5001 SetVersion($DBversion);
5004 $DBversion = "3.07.00.030";
5005 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5006 $dbh->do("ALTER TABLE default_circ_rules ADD
5007 COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`");
5008 $dbh->do("ALTER TABLE branch_item_rules ADD
5009 COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`");
5010 $dbh->do("ALTER TABLE default_branch_circ_rules ADD
5011 COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`");
5012 $dbh->do("ALTER TABLE default_branch_item_rules ADD
5013 COLUMN `returnbranch` varchar(15) default NULL AFTER `holdallowed`");
5014 # set the default rule to the current value of HomeOrHoldingBranchReturn (default to 'homebranch' if need be)
5015 my $homeorholdingbranchreturn = C4::Context->preference('HomeOrHoldingBranchReturn') || 'homebranch';
5016 $dbh->do("UPDATE default_circ_rules SET returnbranch = '$homeorholdingbranchreturn'");
5017 print "Upgrade to $DBversion done (Atomic update for OAI-PMH sets management)\n";
5018 SetVersion($DBversion);
5021 $DBversion = "3.07.00.031";
5022 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5023 $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')");
5024 print "Upgrade to $DBversion done (Add syspref to tell Koha if ICU indexing is in use for Zebra or not.)\n";
5025 SetVersion ($DBversion);
5028 $DBversion = "3.07.00.032";
5029 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5030 $dbh->do("ALTER TABLE virtualshelves MODIFY COLUMN owner int"); #should have been int already (fk to borrowers)
5031 $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
5032 $dbh->do("DELETE FROM virtualshelves WHERE owner IS NULL and category=1"); #delete private lists without owner (cascades to shelfcontents)
5033 $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");
5034 $dbh->do("UPDATE virtualshelves SET allow_add=0, allow_delete_own=1, allow_delete_other=0 WHERE category=1");
5035 $dbh->do("UPDATE virtualshelves SET allow_add=0, allow_delete_own=1, allow_delete_other=0 WHERE category=2");
5036 $dbh->do("UPDATE virtualshelves SET allow_add=1, allow_delete_own=1, allow_delete_other=1 WHERE category=3");
5037 $dbh->do("UPDATE virtualshelves SET category=2 WHERE category=3");
5039 $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");
5040 $dbh->do("UPDATE virtualshelfcontents co LEFT JOIN virtualshelves sh USING (shelfnumber) SET co.borrowernumber=sh.owner");
5042 $dbh->do("CREATE TABLE virtualshelfshares
5043 (id int AUTO_INCREMENT PRIMARY KEY, shelfnumber int NOT NULL,
5044 borrowernumber int, invitekey varchar(10), sharedate datetime,
5045 CONSTRAINT `virtualshelfshares_ibfk_1` FOREIGN KEY (`shelfnumber`) REFERENCES `virtualshelves` (`shelfnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
5046 CONSTRAINT `virtualshelfshares_ibfk_2` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE SET NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8");
5048 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAllowPublicListCreation',1,'If set, allows opac users to create public lists',NULL,'YesNo');");
5049 $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');");
5051 print "Upgrade to $DBversion done (BZ7310: Improving list permissions)\n";
5052 SetVersion($DBversion);
5055 $DBversion = "3.07.00.033";
5056 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5057 $dbh->do("ALTER TABLE branches ADD opac_info text;");
5058 print "Upgrade to $DBversion done add opac_info to branches \n";
5059 SetVersion($DBversion);
5062 $DBversion = "3.07.00.034";
5063 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5064 $dbh->do("ALTER TABLE borrower_attribute_types ADD COLUMN category_code VARCHAR(10) NULL DEFAULT NULL AFTER `display_checkout`");
5065 $dbh->do("ALTER TABLE borrower_attribute_types ADD COLUMN class VARCHAR(255) NOT NULL DEFAULT '' AFTER `category_code`");
5066 $dbh->do("ALTER TABLE borrower_attribute_types ADD CONSTRAINT category_code_fk FOREIGN KEY (category_code) REFERENCES categories(categorycode)");
5067 print "Upgrade to $DBversion done (New fields category_code and class in borrower_attribute_types table)\n";
5068 SetVersion($DBversion);
5071 $DBversion = "3.07.00.035";
5072 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5073 $dbh->do("ALTER TABLE issues CHANGE date_due date_due datetime");
5074 $dbh->do("UPDATE issues SET date_due = CONCAT(SUBSTR(date_due,1,11),'23:59:00')");
5075 $dbh->do("ALTER TABLE issues CHANGE returndate returndate datetime");
5076 $dbh->do("ALTER TABLE issues CHANGE lastreneweddate lastreneweddate datetime");
5077 $dbh->do("ALTER TABLE issues CHANGE issuedate issuedate datetime");
5078 $dbh->do("ALTER TABLE old_issues CHANGE date_due date_due datetime");
5079 $dbh->do("ALTER TABLE old_issues CHANGE returndate returndate datetime");
5080 $dbh->do("ALTER TABLE old_issues CHANGE lastreneweddate lastreneweddate datetime");
5081 $dbh->do("ALTER TABLE old_issues CHANGE issuedate issuedate datetime");
5082 $dbh->do("UPDATE accountlines SET description = CONCAT(description,' 23:59') WHERE accounttype='F' OR accounttype='FU'"); #BUG-8253
5083 print "Upgrade to $DBversion done (Setting up issues and accountlines tables for hourly loans)\n";
5084 SetVersion($DBversion);
5087 $DBversion = "3.07.00.036";
5088 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5089 $dbh->do(qq{
5090 ALTER TABLE z3950servers ADD timeout INT( 11 ) NOT NULL DEFAULT '0' AFTER syntax;
5092 print "Upgrade to $DBversion done (New timeout field in z3950servers)\n";
5095 $DBversion = "3.07.00.037";
5096 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5097 $dbh->do("
5098 ALTER TABLE `marc_subfield_structure` ADD `maxlength` INT( 4 ) NOT NULL DEFAULT '9999';
5100 $dbh->do("
5101 UPDATE `marc_subfield_structure` SET maxlength=24 WHERE tagfield='000';
5103 $dbh->do("
5104 UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='MARC21','40','9999') WHERE tagfield='008';
5106 $dbh->do("
5107 UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='NORMARC','40','9999') WHERE tagfield='008';
5109 $dbh->do("
5110 UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='UNIMARC','36','9999') WHERE tagfield='100';
5112 print "Upgrade to $DBversion done (Add new field maxlength to marc_subfield_structure)\n";
5113 SetVersion($DBversion);
5116 $DBversion = "3.07.00.038";
5117 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5118 $dbh->do(qq{
5119 INSERT INTO systempreferences(variable,value,explanation,options,type)
5120 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')
5122 print "Upgrade to $DBversion done (Added system preference 'UniqueItemFields')\n";
5123 SetVersion($DBversion);
5126 $DBversion = "3.07.00.039";
5127 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5128 $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')} );
5129 $dbh->do( qq{CREATE TABLE IF NOT EXISTS social_data
5130 ( isbn VARCHAR(30),
5131 num_critics INT,
5132 num_critics_pro INT,
5133 num_quotations INT,
5134 num_videos INT,
5135 score_avg DECIMAL(5,2),
5136 num_scores INT,
5137 PRIMARY KEY (isbn)
5138 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
5139 } );
5140 $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')} );
5141 print "Upgrade to $DBversion done (added syspref and table for babeltheque (Babeltheque_url_js, babeltheque))\n";
5142 SetVersion($DBversion);
5145 $DBversion = "3.07.00.040";
5146 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5147 $dbh->do( qq{INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('SocialNetworks','0','Enable/Disable social networks links in opac detail','','YesNo')} );
5148 print "Upgrade to $DBversion done (added syspref SocialNetworks, to display facebook/ggl+ and other buttons)\n";
5149 SetVersion($DBversion);
5154 $DBversion = "3.07.00.041";
5155 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5156 $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')");
5157 print "Upgrade to $DBversion done (Add system preference SubscriptionDuplicateDroppedInput)\n";
5158 SetVersion($DBversion);
5161 $DBversion = "3.07.00.042";
5162 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5163 $dbh->do("ALTER TABLE reserves ADD suspend BOOLEAN NOT NULL DEFAULT 0");
5164 $dbh->do("ALTER TABLE old_reserves ADD suspend BOOLEAN NOT NULL DEFAULT 0");
5166 $dbh->do("ALTER TABLE reserves ADD suspend_until DATETIME NULL DEFAULT NULL");
5167 $dbh->do("ALTER TABLE old_reserves ADD suspend_until DATETIME NULL DEFAULT NULL");
5169 $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')");
5171 print "Upgrade to $DBversion done (Add suspend fields to reserves table, add syspref AutoResumeSuspendedHolds)\n";
5172 SetVersion ($DBversion);
5175 $DBversion = "3.07.00.043";
5176 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5177 my $countXSLTDetailsDisplay = 0;
5178 my $valueXSLTDetailsDisplay = "";
5179 my $valueXSLTResultsDisplay = "";
5180 my $valueOPACXSLTDetailsDisplay = "";
5181 my $valueOPACXSLTResultsDisplay = "";
5182 #the line below test if database comes from a BibLibre's branch
5183 $countXSLTDetailsDisplay = $dbh->do('SELECT 1 FROM systempreferences WHERE variable="IntranetXSLTDetailsDisplay"');
5184 if ($countXSLTDetailsDisplay > 0)
5186 #the two lines below will only be used to update the databases from the BibLibre's branch. They will not affect the others
5187 $dbh->do(q|UPDATE systempreferences SET variable="XSLTDetailsDisplay" WHERE variable="IntranetXSLTDetailsDisplay"|);
5188 $dbh->do(q|UPDATE systempreferences SET variable="XSLTResultsDisplay" WHERE variable="IntranetXSLTResultsDisplay"|);
5190 else
5192 $valueXSLTDetailsDisplay = "default" if (C4::Context->preference("XSLTDetailsDisplay"));
5193 $valueXSLTResultsDisplay = "default" if (C4::Context->preference("XSLTResultsDisplay"));
5194 $valueOPACXSLTDetailsDisplay = "default" if (C4::Context->preference("OPACXSLTDetailsDisplay"));
5195 $valueOPACXSLTResultsDisplay = "default" if (C4::Context->preference("OPACXSLTResultsDisplay"));
5196 $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueXSLTDetailsDisplay\" WHERE variable='XSLTDetailsDisplay'");
5197 $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueXSLTResultsDisplay\" WHERE variable='XSLTResultsDisplay'");
5198 $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueOPACXSLTDetailsDisplay\" WHERE variable='OPACXSLTDetailsDisplay'");
5199 $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueOPACXSLTResultsDisplay\" WHERE variable='OPACXSLTResultsDisplay'");
5201 print "Upgrade to $DBversion done (XSLT systempreference takes a path to file rather than YesNo)\n";
5202 SetVersion($DBversion);
5205 $DBversion = "3.07.00.044";
5206 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5207 $dbh->do("ALTER TABLE aqbooksellers ADD deliverytime INT DEFAULT NULL");
5208 print "Upgrade to $DBversion done (Add deliverytime field in aqbooksellers table)";
5209 SetVersion($DBversion);
5212 $DBversion = "3.07.00.045";
5213 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5214 $dbh->do("ALTER TABLE import_batches MODIFY COLUMN batch_type ENUM('batch','z3950','webservice') NOT NULL default 'batch'");
5215 print "Upgrade to $DBversion done (Add 'webservice' to batch_type enum)\n";
5216 SetVersion ($DBversion);
5219 $DBversion = "3.07.00.046";
5220 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5221 $dbh->do("ALTER TABLE issuingrules ADD COLUMN lengthunit varchar(10) DEFAULT 'days' AFTER issuelength");
5222 print "Upgrade to $DBversion done (Setting up issues tables for hourly loans (lengthunit fix))\n";
5223 SetVersion($DBversion);
5226 $DBversion = "3.07.00.047";
5227 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5228 $dbh->do("CREATE INDEX items_location ON items(location)");
5229 $dbh->do("CREATE INDEX items_ccode ON items(ccode)");
5230 print "Upgrade to $DBversion done (items_location and items_ccode indexes added for ShelfBrowser)\n";
5231 SetVersion($DBversion);
5234 $DBversion = "3.07.00.048";
5235 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5236 $dbh->do(
5237 q | CREATE TABLE ratings (
5238 borrowernumber int(11) NOT NULL,
5239 biblionumber int(11) NOT NULL,
5240 rating_value tinyint(1) NOT NULL,
5241 timestamp timestamp NOT NULL default CURRENT_TIMESTAMP,
5242 PRIMARY KEY (borrowernumber,biblionumber),
5243 CONSTRAINT ratings_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
5244 CONSTRAINT ratings_ibfk_2 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE
5245 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
5248 $dbh->do(
5249 q /INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacStarRatings','disable',NULL,'disable|all|details','Choice') /
5252 print
5253 "Upgrade to $DBversion done (Add 'ratings' table and 'OpacStarRatings' syspref)\n";
5254 SetVersion($DBversion);
5257 $DBversion = "3.07.00.049";
5258 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5259 $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')");
5260 print "Upgrade to $DBversion done (Add system preference OpacBrowseResults ))\n";
5261 SetVersion($DBversion);
5264 $DBversion = "3.08.00.000";
5265 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5266 print "Upgrade to $DBversion done\n";
5267 SetVersion($DBversion);
5270 $DBversion = "3.09.00.001";
5271 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5272 $dbh->do("ALTER TABLE borrower_attribute_types MODIFY category_code VARCHAR( 1 ) NULL DEFAULT NULL");
5273 print "Upgrade to $DBversion done. (Bug 8002: Update patron attribute types table to allow NULL category_code)\n";
5274 SetVersion($DBversion);
5277 $DBversion = "3.09.00.002";
5278 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5279 $dbh->do("ALTER TABLE saved_sql
5280 ADD (
5281 cache_expiry INT NOT NULL DEFAULT 300,
5282 public BOOLEAN NOT NULL DEFAULT FALSE
5285 print "Upgrade to $DBversion done (Added cache_expiry and public fields in
5286 saved_reports table.)\n";
5287 SetVersion($DBversion);
5290 $DBversion = "3.09.00.003";
5291 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5292 $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');");
5293 print "Upgrade to $DBversion done (Added SvcMaxReportRows syspref)\n";
5294 SetVersion($DBversion);
5297 $DBversion = "3.09.00.004";
5298 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5299 $dbh->do("INSERT IGNORE INTO permissions (module_bit, code, description) VALUES('13', 'edit_patrons', 'Perform batch modifivation of patrons')");
5300 print "Upgrade to $DBversion done (Adds permissions flag for access to the patron modifications tool)\n";
5301 SetVersion($DBversion);
5304 $DBversion = "3.09.00.005";
5305 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5306 unless (TableExists('quotes')) {
5307 $dbh->do( qq{
5308 CREATE TABLE `quotes` (
5309 `id` int(11) NOT NULL AUTO_INCREMENT,
5310 `source` text DEFAULT NULL,
5311 `text` mediumtext NOT NULL,
5312 `timestamp` datetime NOT NULL,
5313 PRIMARY KEY (`id`)
5314 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
5317 $dbh->do( qq{
5318 INSERT IGNORE INTO permissions VALUES (13, "edit_quotes","Edit quotes for quote-of-the-day feature");
5320 $dbh->do( qq{
5321 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');
5323 print "Upgrade to $DBversion done (Adding Quote of the Day Option.)\n";
5324 SetVersion($DBversion);
5327 $DBversion = "3.09.00.006";
5328 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5329 $dbh->do("UPDATE systempreferences SET
5330 variable = 'OPACShowHoldQueueDetails',
5331 value = CASE value WHEN '1' THEN 'priority' ELSE 'none' END,
5332 options = 'none|priority|holds|holds_priority',
5333 explanation = 'Show holds details in OPAC',
5334 type = 'Choice'
5335 WHERE variable = 'OPACDisplayRequestPriority'");
5336 print "Upgrade to $DBversion done (Changed system preference OPACDisplayRequestPriority -> OPACShowHoldQueueDetails)\n";
5337 SetVersion($DBversion);
5340 $DBversion = "3.09.00.007";
5341 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5342 unless(C4::Context->preference('ReservesControlBranch')){
5343 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights.','Choice')");
5345 print "Upgrade to $DBversion done (Insert ReservesControlBranch systempreference into systempreferences table )\n";
5346 SetVersion($DBversion);
5349 $DBversion = "3.09.00.008";
5350 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5351 $dbh->do("ALTER TABLE sessions ADD PRIMARY KEY (id);");
5352 $dbh->do("ALTER TABLE sessions DROP INDEX `id`;");
5353 print "Upgrade to $DBversion done (redefine the field id as PRIMARY KEY of sessions)\n";
5354 SetVersion($DBversion);
5357 $DBversion = "3.09.00.009";
5358 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5359 $dbh->do("ALTER TABLE branches ADD PRIMARY KEY (branchcode);");
5360 $dbh->do("ALTER TABLE branches DROP INDEX branchcode;");
5361 print "Upgrade to $DBversion done (redefine the field branchcode as PRIMARY KEY of branches)\n";
5362 SetVersion ($DBversion);
5365 $DBversion = "3.09.00.010";
5366 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5367 $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')");
5368 print "Upgrade to $DBversion done (Add system preference issuelostitem ))\n";
5369 SetVersion($DBversion);
5372 $DBversion = "3.09.00.011";
5373 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5374 $dbh->do("ALTER TABLE `biblioitems` ADD `ean` VARCHAR( 13 ) NULL AFTER issn");
5375 $dbh->do("CREATE INDEX `ean` ON biblioitems (`ean`) ");
5376 $dbh->do("ALTER TABLE `deletedbiblioitems` ADD `ean` VARCHAR( 13 ) NULL AFTER issn");
5377 if (C4::Context->preference("marcflavour") eq 'UNIMARC') {
5378 $dbh->do("UPDATE marc_subfield_structure SET kohafield='biblioitems.ean' WHERE tagfield='073' and tagsubfield='a'");
5380 print "Upgrade to $DBversion done (Adding ean in biblioitems and deletedbiblioitems)\n";
5381 print "If you have records with ean, please run misc/batchRebuildBiblioTables.pl to populate bibliotems.ean\n" if (C4::Context->preference("marcflavour") eq 'UNIMARC');
5382 SetVersion($DBversion);
5385 $DBversion = "3.09.00.012";
5386 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5387 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsIntranet', '1', NULL , 'Allow holds to be suspended from the intranet.', 'YesNo')");
5388 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsOpac', '1', NULL , 'Allow holds to be suspended from the OPAC.', 'YesNo')");
5389 print "Upgrade to $DBversion done (Add system preference OpacBrowseResults ))\n";
5390 SetVersion($DBversion);
5393 $DBversion ="3.09.00.013";
5394 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5395 $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');");
5396 print "Upgrade to $DBversion done (Add system preference DefaultLanguageField008))\n";
5397 SetVersion($DBversion);
5400 $DBversion ="3.09.00.014";
5401 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5402 # add phone message transport type
5403 $dbh->do("INSERT INTO message_transport_types (message_transport_type) VALUES ('phone')");
5405 # adds HOLD_PHONE and PREDUE_PHONE letters (as placeholders)
5406 $dbh->do("INSERT INTO letter (module, code, name, title, content) VALUES
5407 ('reserves', 'HOLD_PHONE', 'Item Available for Pick-up (phone notice)', 'Item Available for Pick-up (phone notice)', 'Your item is available for pickup'),
5408 ('circulation', 'PREDUE_PHONE', 'Advance Notice of Item Due (phone notice)', 'Advance Notice of Item Due (phone notice)', 'Your item is due soon'),
5409 ('circulation', 'OVERDUE_PHONE', 'Overdue Notice (phone notice)', 'Overdue Notice (phone notice)', 'Your item is overdue')
5412 # add phone notifications to patron message preferences options
5413 $dbh->do("INSERT INTO message_transports
5414 (message_attribute_id, message_transport_type, is_digest, letter_module, letter_code) VALUES
5415 (4, 'phone', 0, 'reserves', 'HOLD_PHONE'),
5416 (2, 'phone', 0, 'circulation', 'PREDUE_PHONE')
5419 # add TalkingTechItivaPhoneNotification syspref
5420 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('TalkingTechItivaPhoneNotification',0,'If ON, enables Talking Tech I-tiva phone notifications',NULL,'YesNo');");
5422 print "Upgrade done (Support for Talking Tech i-tiva phone notification system)\n";
5423 SetVersion($DBversion);
5426 $DBversion = "3.09.00.015";
5427 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5428 $dbh->do(qq{
5429 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')
5431 print "Upgrade to $DBversion done (Add System preference StatisticsFields)\n";
5432 SetVersion($DBversion);
5435 $DBversion = "3.09.00.016";
5436 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5437 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACShowBarcode','0','Show items barcode in holding tab','','YesNo')");
5438 print "Upgrade to $DBversion done (Add syspref OPACShowBarcode)\n";
5439 SetVersion ($DBversion);
5442 $DBversion = "3.09.00.017";
5443 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5444 $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');");
5445 print "Upgrade to $DBversion done (Add customizable OpacNavRight region to the OPAC main page)\n";
5446 SetVersion ($DBversion);
5449 $DBversion = "3.09.00.018";
5450 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5451 $dbh->do("DROP TABLE IF EXISTS aqbudgetborrowers");
5452 $dbh->do("
5453 CREATE TABLE aqbudgetborrowers (
5454 budget_id int(11) NOT NULL,
5455 borrowernumber int(11) NOT NULL,
5456 PRIMARY KEY (budget_id, borrowernumber),
5457 CONSTRAINT aqbudgetborrowers_ibfk_1 FOREIGN KEY (budget_id)
5458 REFERENCES aqbudgets (budget_id)
5459 ON DELETE CASCADE ON UPDATE CASCADE,
5460 CONSTRAINT aqbudgetborrowers_ibfk_2 FOREIGN KEY (borrowernumber)
5461 REFERENCES borrowers (borrowernumber)
5462 ON DELETE CASCADE ON UPDATE CASCADE
5463 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5465 $dbh->do("
5466 INSERT INTO permissions (module_bit, code, description)
5467 VALUES (11, 'budget_manage_all', 'Manage all budgets')
5469 print "Upgrade to $DBversion done (Add aqbudgetborrowers table)\n";
5470 SetVersion($DBversion);
5473 $DBversion = "3.09.00.019";
5474 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5475 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OPACShowUnusedAuthorities','1','','Show authorities that are not being used in the OPAC.','YesNo')");
5476 print "Upgrade to $DBversion done (Add OPACShowUnusedAuthorities system preference)\n";
5477 SetVersion ($DBversion);
5480 $DBversion = "3.09.00.020";
5481 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5482 $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')");
5483 $dbh->do("
5484 CREATE TABLE IF NOT EXISTS borrower_files (
5485 file_id int(11) NOT NULL AUTO_INCREMENT,
5486 borrowernumber int(11) NOT NULL,
5487 file_name varchar(255) NOT NULL,
5488 file_type varchar(255) NOT NULL,
5489 file_description varchar(255) DEFAULT NULL,
5490 file_content longblob NOT NULL,
5491 date_uploaded timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
5492 PRIMARY KEY (file_id),
5493 KEY borrowernumber (borrowernumber)
5494 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5496 $dbh->do("ALTER TABLE borrower_files ADD CONSTRAINT borrower_files_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE");
5498 print "Upgrade to $DBversion done (Added borrow_files table, EnableBorrowerFiles syspref)\n";
5499 SetVersion($DBversion);
5502 $DBversion = "3.09.00.021";
5503 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5504 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UpdateTotalIssuesOnCirc','0','Whether to update the totalissues field in the biblio on each circ.',NULL,'YesNo');");
5505 print "Upgrade to $DBversion done (Add syspref UpdateTotalIssuesOnCirc)\n";
5506 SetVersion($DBversion);
5509 $DBversion = "3.09.00.022";
5510 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5511 $dbh->do("ALTER TABLE search_history MODIFY COLUMN query_cgi text NOT NULL");
5512 print "Upgrade to $DBversion done (Change search_history.query_cgi type to text. bug 5981)\n";
5513 SetVersion($DBversion);
5516 $DBversion = "3.09.00.023";
5517 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5518 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('SearchEngine','Zebra','Solr|Zebra','Search Engine','Choice')");
5519 print "Upgrade to $DBversion done (Add system preference SearchEngine )\n";
5520 SetVersion($DBversion);
5523 $DBversion ="3.09.00.024";
5524 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5525 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('IntranetSlipPrinterJS','','Use this JavaScript for printing slips. Define at least function printThenClose(). For use e.g. with Firefox PlugIn jsPrintSetup, see http://jsprintsetup.mozdev.org/','','Free')");
5526 print "Upgrade to $DBversion done (Add system preference IntranetSlipPrinterJS))\n";
5527 SetVersion($DBversion);
5530 $DBversion = "3.09.00.025";
5531 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5532 $dbh->do('START TRANSACTION');
5533 $dbh->do('CREATE TABLE tmp_reserves AS SELECT * FROM old_reserves LIMIT 0');
5534 $dbh->do('ALTER TABLE tmp_reserves ADD reserve_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST');
5535 $dbh->do("
5536 INSERT INTO tmp_reserves (
5537 borrowernumber, reservedate, biblionumber,
5538 constrainttype, branchcode, notificationdate,
5539 reminderdate, cancellationdate, reservenotes,
5540 priority, found, timestamp, itemnumber,
5541 waitingdate, expirationdate, lowestPriority,
5542 suspend, suspend_until
5543 ) SELECT
5544 borrowernumber, reservedate, biblionumber,
5545 constrainttype, branchcode, notificationdate,
5546 reminderdate, cancellationdate, reservenotes,
5547 priority, found, timestamp, itemnumber,
5548 waitingdate, expirationdate, lowestPriority,
5549 suspend, suspend_until
5550 FROM old_reserves ORDER BY reservedate
5552 $dbh->do('SET @ai = ( SELECT MAX( reserve_id ) FROM tmp_reserves )');
5553 $dbh->do('TRUNCATE old_reserves');
5554 $dbh->do('ALTER TABLE old_reserves ADD reserve_id INT( 11 ) NOT NULL PRIMARY KEY FIRST');
5555 $dbh->do('INSERT INTO old_reserves SELECT * FROM tmp_reserves WHERE reserve_id <= @ai');
5556 $dbh->do("
5557 INSERT INTO tmp_reserves (
5558 borrowernumber, reservedate, biblionumber,
5559 constrainttype, branchcode, notificationdate,
5560 reminderdate, cancellationdate, reservenotes,
5561 priority, found, timestamp, itemnumber,
5562 waitingdate, expirationdate, lowestPriority,
5563 suspend, suspend_until
5564 ) SELECT
5565 borrowernumber, reservedate, biblionumber,
5566 constrainttype, branchcode, notificationdate,
5567 reminderdate, cancellationdate, reservenotes,
5568 priority, found, timestamp, itemnumber,
5569 waitingdate, expirationdate, lowestPriority,
5570 suspend, suspend_until
5571 FROM reserves ORDER BY reservedate
5573 $dbh->do('TRUNCATE reserves');
5574 $dbh->do('ALTER TABLE reserves ADD reserve_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST');
5575 $dbh->do('INSERT INTO reserves SELECT * FROM tmp_reserves WHERE reserve_id > COALESCE(@ai, 0)');
5576 $dbh->do('DROP TABLE tmp_reserves');
5577 $dbh->do('COMMIT');
5579 my $sth = $dbh->prepare("
5580 SELECT COUNT( * ) AS count
5581 FROM information_schema.COLUMNS
5582 WHERE COLUMN_NAME = 'reserve_id'
5583 AND (
5584 TABLE_NAME LIKE 'reserves'
5586 TABLE_NAME LIKE 'old_reserves'
5589 $sth->execute();
5590 my $row = $sth->fetchrow_hashref();
5591 die("Failed to add reserve_id to reserves tables, please refresh the page to try again.") unless ( $row->{'count'} );
5593 print "Upgrade to $DBversion done (add reserve_id to reserves & old_reserves tables)\n";
5594 SetVersion($DBversion);
5597 $DBversion = "3.09.00.026";
5598 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5599 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES
5600 ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'),
5601 ( 3, 'manage_circ_rules', 'manage circulation rules')");
5602 $dbh->do("INSERT INTO user_permissions (borrowernumber, module_bit, code)
5603 SELECT borrowernumber, 3, 'parameters_remaining_permissions'
5604 FROM borrowers WHERE flags & (1 << 3)");
5605 # Give new subpermissions to all users that have 'parameters' permission flag (bit 3) set
5606 # see userflags table
5607 $dbh->do("INSERT INTO user_permissions (borrowernumber, module_bit, code)
5608 SELECT borrowernumber, 3, 'manage_circ_rules'
5609 FROM borrowers WHERE flags & (1 << 3)");
5610 print "Upgrade to $DBversion done (Added parameters subpermissions)\n";
5611 SetVersion($DBversion);
5614 $DBversion = '3.09.00.027';
5615 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5616 $dbh->do("ALTER TABLE issuingrules ADD overduefinescap decimal(28,6) DEFAULT NULL");
5617 my $maxfine = C4::Context->preference('MaxFine');
5618 if ($maxfine && $maxfine < 900) { # an arbitrary value that tells us it's not "some huge value"
5619 $dbh->do("UPDATE issuingrules SET overduefinescap=?",undef,$maxfine);
5620 $dbh->do("UPDATE systempreferences SET value = NULL WHERE variable = 'MaxFine'");
5622 $dbh->do("UPDATE systempreferences SET explanation = 'Maximum fine a patron can have for all late returns at one moment. Single item caps are specified in the circulation rules matrix.' WHERE variable = 'MaxFine'");
5623 print "Upgrade to $DBversion done (Bug 7420 add overduefinescap to circulation matrix)\n";
5624 SetVersion ($DBversion);
5627 $DBversion = "3.09.00.028";
5628 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5629 unless ( C4::Context->preference('marcflavour') eq 'UNIMARC' ) {
5630 my %referencetypes = ( '00' => 'PERSO_NAME',
5631 '10' => 'CORPO_NAME',
5632 '11' => 'MEETI_NAME',
5633 '30' => 'UNIF_TITLE',
5634 '48' => 'CHRON_TERM',
5635 '50' => 'TOPIC_TERM',
5636 '51' => 'GEOGR_NAME',
5637 '55' => 'GENRE/FORM'
5639 my $query = q{SELECT DISTINCT authtypecode, tagfield
5640 FROM auth_subfield_structure
5641 WHERE (tagfield BETWEEN '400' AND '455' OR
5642 tagfield BETWEEN '500' and '555') AND tagsubfield='a' AND
5643 frameworkcode = '' AND ROW(authtypecode, tagfield) NOT IN
5644 (SELECT authtypecode, tagfield FROM auth_subfield_structure
5645 WHERE tagsubfield ='9' )};
5646 $sth = $dbh->prepare($query);
5647 $sth->execute;
5648 my $sth2 = $dbh->prepare(q{INSERT INTO auth_subfield_structure
5649 (authtypecode, tagfield, tagsubfield, liblibrarian, libopac,
5650 repeatable, mandatory, tab, authorised_value, value_builder,
5651 seealso, isurl, hidden, linkid, kohafield, frameworkcode)
5652 VALUES (?, ?, '9', '9 (RLIN)', '9 (RLIN)', 0, 0, ?, NULL, NULL,
5653 NULL, 0, 1, '', '', '')});
5654 my $sth3 = $dbh->prepare(q{UPDATE auth_subfield_structure SET
5655 frameworkcode = ? WHERE authtypecode = ? AND
5656 tagfield = ? AND tagsubfield = 'a'});
5657 while (my $row = $sth->fetchrow_arrayref()) {
5658 my ($authtypecode, $field) = @$row;
5659 $sth2->execute($authtypecode, $field, substr($field, 0, 1));
5660 my $authtypemarker = substr $field, 1, 2;
5661 if ($authtypemarker && $referencetypes{$authtypemarker}) {
5662 $sth3->execute($referencetypes{$authtypemarker}, $authtypecode, $field);
5667 print "Upgrade to $DBversion done (Add thesaurus links for MARC21/NORMARC)\n";
5668 SetVersion($DBversion);
5671 $DBversion = "3.09.00.029"; # FIXME
5672 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5673 $dbh->do("UPDATE systempreferences SET options=concat(options,'|EAN13') WHERE variable='itemBarcodeInputFilter' AND options NOT LIKE '%EAN13%'");
5674 print "Upgrade to $DBversion done (Add itemBarcodeInputFilter choice EAN13)\n";
5676 $dbh->do("UPDATE systempreferences SET options = concat(options,'|EAN13'), explanation = concat(explanation,'; EAN13 - incremental') WHERE variable = 'autoBarcode' AND options NOT LIKE '%EAN13%'");
5677 print "Upgrade to $DBversion done ( Added EAN13 barcode autogeneration sequence )\n";
5678 SetVersion($DBversion);
5681 $DBversion ="3.09.00.030";
5682 if(C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5683 my $query = "SELECT value FROM systempreferences WHERE variable='opacstylesheet'";
5684 my $remote= $dbh->selectrow_arrayref($query);
5685 $dbh->do("DELETE from systempreferences WHERE variable='opacstylesheet'");
5686 if($remote && $remote->[0]) {
5687 $query="UPDATE systempreferences SET value=? WHERE variable='opaclayoutstylesheet'";
5688 $dbh->do($query,undef,$remote->[0]);
5689 print "NOTE: The URL of your remote opac css file has been moved to preference opaclayoutstylesheet.\n";
5691 print "Upgrade to $DBversion done (BZ 8263: Make OPAC stylesheet preferences more consistent)\n";
5692 SetVersion($DBversion);
5695 $DBversion = "3.09.00.031";
5696 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5697 $dbh->do("DELETE FROM systempreferences WHERE variable='AmazonReviews'");
5698 $dbh->do("DELETE FROM systempreferences WHERE variable='AmazonSimilarItems'");
5699 $dbh->do("DELETE FROM systempreferences WHERE variable='AWSAccessKeyID'");
5700 $dbh->do("DELETE FROM systempreferences WHERE variable='AWSPrivateKey'");
5701 $dbh->do("DELETE FROM systempreferences WHERE variable='OPACAmazonReviews'");
5702 $dbh->do("DELETE FROM systempreferences WHERE variable='OPACAmazonSimilarItems'");
5703 $dbh->do("DELETE FROM systempreferences WHERE variable='AmazonEnabled'");
5704 $dbh->do("DELETE FROM systempreferences WHERE variable='OPACAmazonEnabled'");
5705 print "Upgrade to $DBversion done ('Remove preferences controlling broken Amazon features (Bug 8679')\n";
5706 SetVersion ($DBversion);
5709 $DBversion = "3.09.00.032";
5710 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5711 $dbh->do("UPDATE systempreferences SET value = 'call_number' WHERE variable = 'defaultSortField' AND value = 'callnumber'");
5712 $dbh->do("UPDATE systempreferences SET value = 'call_number' WHERE variable = 'OPACdefaultSortField' AND value = 'callnumber'");
5713 print "Upgrade to $DBversion done (Bug 8657 - Default sort by call number does not work. Correcting system preference value.)\n";
5714 SetVersion ($DBversion);
5718 $DBversion = '3.09.00.033';
5719 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5720 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacSuppressionByIPRange','','Restrict the suppression to IP adresses outside of the IP range','','free');");
5721 print "Upgrade to $DBversion done (Add OpacSuppressionByIPRange syspref)\n";
5722 SetVersion ($DBversion);
5725 $DBversion ="3.09.00.034";
5726 if(C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5727 $dbh->do("UPDATE auth_subfield_structure SET frameworkcode = 'PERSO_NAME' WHERE frameworkcode = 'PERSO_CODE'");
5728 $dbh->do("UPDATE auth_subfield_structure SET frameworkcode = 'CORPO_NAME' WHERE frameworkcode = 'ORGO_CODE'");
5729 print "Upgrade to $DBversion done (Bug 8207: correct typo in authority types)\n";
5730 SetVersion ($DBversion);
5733 $DBversion = "3.09.00.035";
5734 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5735 $dbh->do("
5736 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('PrefillItem','0','When a new item is added, should it be prefilled with last created item values?','','YesNo');
5738 $dbh->do(
5739 "INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SubfieldsToUseWhenPrefill','','Define a list of subfields to use when prefilling items (separated by space)','','Free');
5741 print "Upgrade to $DBversion done (Adding PrefillItem and SubfieldsToUseWhenPrefill sysprefs)\n";
5742 SetVersion ($DBversion);
5745 $DBversion = "3.09.00.036";
5746 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5747 # biblioitems changes
5748 $dbh->do("ALTER TABLE biblioitems ADD COLUMN agerestriction VARCHAR(255) DEFAULT NULL AFTER cn_sort");
5749 $dbh->do("ALTER TABLE deletedbiblioitems ADD COLUMN agerestriction VARCHAR(255) DEFAULT NULL AFTER cn_sort");
5750 # preferences changes
5751 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AgeRestrictionMarker','','Markers for age restriction indication, e.g. FSK|PEGI|Age|. See: http://wiki.koha-community.org/wiki/Age_restriction',NULL,'free')");
5752 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AgeRestrictionOverride',0,'Allow staff to check out an item with age restriction.',NULL,'YesNo')");
5754 print "Upgrade to $DBversion done (Add colum agerestriction to biblioitems and deletedbiblioitems, add system preferences AgeRestrictionMarker and AgeRestrictionOverride)\n";
5755 SetVersion ($DBversion);
5758 $DBversion = "3.09.00.037";
5759 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5760 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('UseTransportCostMatrix',0,'Use Transport Cost Matrix when filling holds','','YesNo')");
5762 $dbh->do("CREATE TABLE `transport_cost` (
5763 `frombranch` varchar(10) NOT NULL,
5764 `tobranch` varchar(10) NOT NULL,
5765 `cost` decimal(6,2) NOT NULL,
5766 `disable_transfer` tinyint(1) NOT NULL DEFAULT 0,
5767 CHECK ( `frombranch` <> `tobranch` ), -- a dud check, mysql does not support that
5768 PRIMARY KEY (`frombranch`, `tobranch`),
5769 CONSTRAINT `transport_cost_ibfk_1` FOREIGN KEY (`frombranch`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE,
5770 CONSTRAINT `transport_cost_ibfk_2` FOREIGN KEY (`tobranch`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
5771 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
5773 print "Upgrade to $DBversion done (creating `transport_cost` table; adding UseTransportCostMatrix systempref, in circulation)\n";
5774 SetVersion($DBversion);
5777 $DBversion ="3.09.00.038";
5778 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5779 $dbh->do("ALTER TABLE borrower_attributes CHANGE attribute attribute VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
5780 print "Upgrade to $DBversion done (Increase the maximum size of a borrower attribute value)\n";
5781 SetVersion($DBversion);
5784 $DBversion ="3.09.00.039";
5785 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5786 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,type) VALUES('DidYouMeanFromAuthorities','0','Suggest searches based on authority file.','YesNo');");
5787 print "Upgrade to $DBversion done (Add system preference DidYouMeanFromAuthorities)\n";
5788 SetVersion($DBversion);
5791 $DBversion = "3.09.00.040";
5792 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5793 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('IncludeSeeFromInSearches','0','','Include see-from references in searches.','YesNo');");
5794 print "Upgrade to $DBversion done (Add IncludeSeeFromInSearches system preference)\n";
5795 SetVersion ($DBversion);
5798 $DBversion = "3.09.00.041";
5799 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5800 $dbh->do(qq{
5801 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('ExportRemoveFields','','List of fields for non export in circulation.pl (separated by a space)','','');
5803 print "Upgrade to $DBversion done (Add system preference ExportRemoveFields)\n";
5804 SetVersion($DBversion);
5807 $DBversion = "3.09.00.042";
5808 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5809 $dbh->do(qq{
5810 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('ExportWithCsvProfile','','Set a profile name for CSV export','','');
5812 print "Upgrade to $DBversion done (Adds New System preference ExportWithCsvProfile)\n";
5813 SetVersion($DBversion)
5816 $DBversion = "3.09.00.043";
5817 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5818 $dbh->do("
5819 ALTER TABLE aqorders
5820 ADD parent_ordernumber int(11) DEFAULT NULL
5822 $dbh->do("
5823 UPDATE aqorders
5824 SET parent_ordernumber = ordernumber;
5826 print "Upgrade to $DBversion done (Adding parent_ordernumber in aqorders)\n";
5827 SetVersion($DBversion);
5830 $DBversion = '3.09.00.044';
5831 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5832 $dbh->do("ALTER TABLE statistics ADD COLUMN ccode VARCHAR ( 10 ) NULL AFTER associatedborrower");
5833 $dbh->do("UPDATE statistics SET statistics.ccode = ( SELECT items.ccode FROM items WHERE statistics.itemnumber = items.itemnumber )");
5834 $dbh->do("UPDATE statistics SET statistics.ccode = (
5835 SELECT deleteditems.ccode FROM deleteditems
5836 WHERE statistics.itemnumber = deleteditems.itemnumber
5837 ) WHERE statistics.ccode IS NULL");
5838 print "Upgrade done ( Added Collection Code to Statistics table. )\n";
5839 SetVersion ($DBversion);
5842 $DBversion = "3.09.00.045";
5843 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5844 $dbh->do("ALTER TABLE borrower_attribute_types MODIFY category_code VARCHAR( 10 ) NULL DEFAULT NULL");
5845 print "Upgrade to $DBversion done. (Bug 8002: Update patron attribute types table from varchar(1) to varchar(10) category_code)\nWarning to Koha System Administrators: If you use borrower attributes defined by borrower categories, you have to check your configuration. A bug may have removed your attribute links to borrower categories.\nPlease check, and fix it if necessary.";
5846 SetVersion($DBversion);
5849 $DBversion = "3.09.00.046";
5850 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5851 $dbh->do("ALTER TABLE `accountlines` ADD `accountlines_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
5852 print "Upgrade to $DBversion done (adding accountlines_id field in accountlines table)\n";
5853 SetVersion($DBversion);
5856 $DBversion = "3.09.00.047";
5857 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5858 # to preserve default behaviour as best as possible, set this new preference differently depending on whether IndependantBranches is set or not
5859 my $prefvalue = 'anywhere';
5860 if (C4::Context->preference("IndependantBranches")) { $prefvalue = 'homeorholdingbranch';}
5861 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowReturnToBranch', '$prefvalue', 'Where an item may be returned', 'anywhere|homebranch|holdingbranch|homeorholdingbranch', 'Choice');");
5863 print "Upgrade to $DBversion done: adding AllowReturnToBranch syspref (bug 6151)";
5864 SetVersion($DBversion);
5867 $DBversion = "3.09.00.048";
5868 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5869 $dbh->do("ALTER TABLE authorised_values MODIFY lib varchar(200)");
5870 $dbh->do("ALTER TABLE authorised_values MODIFY lib_opac varchar(200)");
5872 print "Upgrade to $DBversion done (Raise the length of Authorised Values descriptions)\n";
5873 SetVersion($DBversion);
5876 $DBversion ="3.09.00.049";
5877 if(C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5878 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OPACMobileUserCSS','','Include the following CSS for the mobile view on all pages in the OPAC:',NULL,'free');");
5879 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacMainUserBlockMobile','','Show the following HTML in its own column on the main page of the OPAC (mobile version):',NULL,'free');");
5880 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowLibrariesPulldownMobile','1','Show the libraries pulldown on the mobile version of the OPAC.',NULL,'YesNo');");
5881 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowFiltersPulldownMobile','1','Show the search filters pulldown on the mobile version of the OPAC.',NULL,'YesNo');");
5882 print "Upgrade to $DBversion done (Add OPACMobileUserCSS, OpacMainUserBlockMobile, OpacShowLibrariesPulldownMobile and OpacShowFiltersPulldownMobile sysprefs)\n";
5883 SetVersion($DBversion);
5886 $DBversion = "3.09.00.050";
5887 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5888 $dbh->do("ALTER TABLE authorised_values MODIFY category varchar(16) NOT NULL DEFAULT '';");
5889 $dbh->do("INSERT INTO authorised_values (category, authorised_value, lib) VALUES
5890 ('REPORT_GROUP', 'CIRC', 'Circulation'),
5891 ('REPORT_GROUP', 'CAT', 'Catalog'),
5892 ('REPORT_GROUP', 'PAT', 'Patrons'),
5893 ('REPORT_GROUP', 'ACQ', 'Acquisitions'),
5894 ('REPORT_GROUP', 'ACC', 'Accounts');");
5896 $dbh->do("ALTER TABLE reports_dictionary ADD report_area varchar(6) DEFAULT NULL;");
5897 $dbh->do("UPDATE reports_dictionary SET report_area = CASE area
5898 WHEN 1 THEN 'CIRC'
5899 WHEN 2 THEN 'CAT'
5900 WHEN 3 THEN 'PAT'
5901 WHEN 4 THEN 'ACQ'
5902 WHEN 5 THEN 'ACC'
5903 END;");
5904 $dbh->do("ALTER TABLE reports_dictionary DROP area;");
5905 $dbh->do("ALTER TABLE reports_dictionary ADD KEY dictionary_area_idx (report_area);");
5907 $dbh->do("ALTER TABLE saved_sql ADD report_area varchar(6) DEFAULT NULL;");
5908 $dbh->do("ALTER TABLE saved_sql ADD report_group varchar(80) DEFAULT NULL;");
5909 $dbh->do("ALTER TABLE saved_sql ADD report_subgroup varchar(80) DEFAULT NULL;");
5910 $dbh->do("ALTER TABLE saved_sql ADD KEY sql_area_group_idx (report_group, report_subgroup);");
5912 print "Upgrade to $DBversion done saved_sql new fields report_group and report_area; authorised_values.category 16 char \n";
5913 SetVersion($DBversion);
5916 $DBversion = "3.09.00.051";
5917 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5918 $dbh->do("
5919 CREATE TABLE aqinvoices (
5920 invoiceid int(11) NOT NULL AUTO_INCREMENT,
5921 invoicenumber mediumtext NOT NULL,
5922 booksellerid int(11) NOT NULL,
5923 shipmentdate date default NULL,
5924 billingdate date default NULL,
5925 closedate date default NULL,
5926 shipmentcost decimal(28,6) default NULL,
5927 shipmentcost_budgetid int(11) default NULL,
5928 PRIMARY KEY (invoiceid),
5929 CONSTRAINT aqinvoices_fk_aqbooksellerid FOREIGN KEY (booksellerid) REFERENCES aqbooksellers (id) ON DELETE CASCADE ON UPDATE CASCADE,
5930 CONSTRAINT aqinvoices_fk_shipmentcost_budgetid FOREIGN KEY (shipmentcost_budgetid) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
5931 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
5934 # Fill this new table with existing invoices
5935 my $sth = $dbh->prepare("
5936 SELECT aqorders.booksellerinvoicenumber AS invoicenumber, aqbasket.booksellerid, aqorders.datereceived
5937 FROM aqorders
5938 LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
5939 WHERE aqorders.booksellerinvoicenumber IS NOT NULL
5940 AND aqorders.booksellerinvoicenumber != ''
5941 GROUP BY aqorders.booksellerinvoicenumber
5943 $sth->execute;
5944 my $results = $sth->fetchall_arrayref({});
5945 $sth = $dbh->prepare("
5946 INSERT INTO aqinvoices (invoicenumber, booksellerid, shipmentdate) VALUES (?,?,?)
5948 foreach(@$results) {
5949 $sth->execute($_->{invoicenumber}, $_->{booksellerid}, $_->{datereceived});
5952 # Add the column in aqorders, fill it with correct value
5953 # and then drop booksellerinvoicenumber column
5954 $dbh->do("
5955 ALTER TABLE aqorders
5956 ADD COLUMN invoiceid int(11) default NULL AFTER booksellerinvoicenumber,
5957 ADD CONSTRAINT aqorders_ibfk_3 FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE SET NULL ON UPDATE CASCADE
5960 $dbh->do("
5961 UPDATE aqorders, aqinvoices
5962 SET aqorders.invoiceid = aqinvoices.invoiceid
5963 WHERE aqorders.booksellerinvoicenumber = aqinvoices.invoicenumber
5966 $dbh->do("
5967 ALTER TABLE aqorders
5968 DROP COLUMN booksellerinvoicenumber
5971 print "Upgrade to $DBversion done (Add aqinvoices table) \n";
5972 SetVersion ($DBversion);
5975 $DBversion = "3.09.00.052";
5976 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5977 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('decreaseLoanHighHolds', NULL, '', 'Decreases the loan period for items with number of holds above the threshold specified in decreaseLoanHighHoldsValue', 'YesNo');");
5978 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('decreaseLoanHighHoldsValue', NULL, '', 'Specifies a threshold for the minimum number of holds needed to trigger a reduction in loan duration (used with decreaseLoanHighHolds)', 'Integer');");
5979 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('decreaseLoanHighHoldsDuration', NULL, '', 'Specifies a number of days that a loan is reduced to when used in conjunction with decreaseLoanHighHolds', 'Integer');");
5980 print "Upgrade to $DBversion done (Add systempreferences to decrease loan length on high demand items decreaseLoanHighHolds, decreaseLoanHighHoldsValue and decreaseLoanHighHoldsDuration) \n";
5981 SetVersion ($DBversion);
5984 $DBversion = "3.09.00.053";
5985 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
5986 $dbh->do(
5987 q|CREATE TABLE `import_auths` (
5988 import_record_id int(11) NOT NULL,
5989 matched_authid int(11) default NULL,
5990 control_number varchar(25) default NULL,
5991 authorized_heading varchar(128) default NULL,
5992 original_source varchar(25) default NULL,
5993 CONSTRAINT import_auths_ibfk_1 FOREIGN KEY (import_record_id)
5994 REFERENCES import_records (import_record_id) ON DELETE CASCADE ON UPDATE CASCADE,
5995 KEY matched_authid (matched_authid)
5996 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;|
5998 $dbh->do("ALTER TABLE import_batches
5999 CHANGE COLUMN num_biblios num_records int(11) NOT NULL default 0,
6000 ADD COLUMN record_type enum('biblio', 'auth', 'holdings') NOT NULL default 'biblio'");
6001 $dbh->do("UPDATE import_batches SET record_type='auth' WHERE import_batch_id IN
6002 (SELECT import_batch_id FROM import_records WHERE record_type='auth')");
6004 print "Upgrade to $DBversion done (Added support for staging authorities)\n";
6005 SetVersion ($DBversion);
6008 $DBversion = "3.09.00.054";
6009 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6010 $dbh->do("ALTER TABLE aqorders CHANGE COLUMN gst gstrate DECIMAL(6,4) DEFAULT NULL");
6011 print "Upgrade to $DBversion done (Change column name in aqorders gst --> gstrate)\n";
6012 SetVersion($DBversion);
6015 $DBversion = "3.09.00.055";
6016 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6017 $dbh->do("ALTER TABLE aqorders ADD discount float(6,4) DEFAULT NULL AFTER gstrate");
6018 print "Upgrade to $DBversion done (Add discount field in aqorders table)\n";
6019 SetVersion($DBversion);
6022 $DBversion ="3.09.00.056";
6023 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6024 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('AuthDisplayHierarchy','0','Display authority hierarchies','','YesNo')");
6025 print "Upgrade to $DBversion done (Add system preference AuthDisplayHierarchy)\n";
6026 SetVersion($DBversion);
6029 $DBversion = "3.09.00.057";
6030 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6031 $dbh->do("ALTER TABLE aqbasket ADD deliveryplace VARCHAR(10) default NULL AFTER basketgroupid;");
6032 $dbh->do("ALTER TABLE aqbasket ADD billingplace VARCHAR(10) default NULL AFTER deliveryplace;");
6033 print "Upgrade to $DBversion done (Bug 5356: Added billingplace, deliveryplace to the aqbasket table)\n";
6034 SetVersion($DBversion);
6037 $DBversion ="3.09.00.058";
6038 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6039 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,type) VALUES('OPACdidyoumean',NULL,'Did you mean? configuration for the OPAC. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free');");
6040 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,type) VALUES('INTRAdidyoumean',NULL,'Did you mean? configuration for the Intranet. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free');");
6041 print "Upgrade to $DBversion done (Add Did You Mean? configuration)\n";
6042 SetVersion($DBversion);
6045 $DBversion ="3.09.00.059";
6046 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6047 $dbh->do("INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('BlockReturnOfWithdrawnItems', '1', '0', 'If enabled, items that are marked as withdrawn cannot be returned.', 'YesNo');");
6048 print "Upgrade to $DBversion done (Add system preference BlockReturnOfWithdrawnItems)\n";
6049 SetVersion($DBversion);
6052 $DBversion = "3.09.00.060";
6053 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6054 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HoldsToPullStartDate','2','Set the default start date for the Holds to pull list to this many days ago',NULL,'Integer')");
6055 print "Upgrade to $DBversion done (Added HoldsToPullStartDate syspref)\n";
6056 SetVersion($DBversion);
6059 $DBversion = "3.09.00.061";
6060 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6061 $dbh->do("UPDATE systempreferences set value=0 WHERE variable='OPACItemsResultsDisplay' AND value='statuses'");
6062 $dbh->do("UPDATE systempreferences set value=1 WHERE variable='OPACItemsResultsDisplay' AND value='itemdetails'");
6063 $dbh->do("UPDATE systempreferences SET explanation='If No, show only the status of items in result list. If Yes, show full location of items (branchlocation+callnumber) as in staff interface',options=NULL,type='YesNo' WHERE variable='OPACItemsResultsDisplay'");
6064 print "Upgrade to $DBversion done (Fixes Bug 5409, Set the syspref value to 1 if it is itemdetails and 0 if it is statuses, leaving it alone if it is already 1 or 0 and change the type of the syspref to YesNo.)\n";
6065 SetVersion ($DBversion);
6068 $DBversion = "3.09.00.062";
6069 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6070 $dbh->do("UPDATE systempreferences SET value=0 WHERE variable='NoZebra'");
6071 $dbh->do("UPDATE systempreferences SET value=0 WHERE variable='QueryRemoveStopwords'");
6072 print "Upgrade to $DBversion done (Disable obsolete NoZebra and QueryRemoveStopwords sysprefs)\n";
6073 SetVersion ($DBversion);
6076 $DBversion = "3.09.00.063";
6077 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6078 my $gst_booksellers = $dbh->selectcol_arrayref("SELECT DISTINCT(gstrate) FROM aqbooksellers");
6079 my $gist_syspref = C4::Context->preference("gist");
6080 # remove the undef values and construct and array with the syspref and the supplier values
6081 my @gstrates = map { defined $_ ? $_ : () } @$gst_booksellers;
6082 push @gstrates, split ('\|', $gist_syspref);
6083 # we want to compare integer (or float)
6084 $_ = $_ + 0 for @gstrates;
6085 use List::MoreUtils qw/uniq/;
6086 # remove duplicate values
6087 @gstrates = uniq sort @gstrates;
6088 my $new_syspref_value = join '|', @gstrates;
6089 # update the syspref with the new values
6090 my $sth = $dbh->prepare("UPDATE systempreferences set value=? WHERE variable='gist'");
6091 $sth->execute( $new_syspref_value );
6093 print "Upgrade to $DBversion done (Bug 8832, Set the syspref gist with the existing values)\n";
6094 SetVersion ($DBversion);
6097 $DBversion = "3.09.00.064";
6098 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6099 $dbh->do('ALTER TABLE items ADD coded_location_qualifier varchar(10) default NULL AFTER itemcallnumber');
6100 print "Upgrade to $DBversion done (Bug 6428: Added coded_location_qualifier to the items table)\n";
6101 SetVersion ($DBversion);
6104 $DBversion = "3.09.00.065";
6105 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6106 $dbh->do('ALTER TABLE deleteditems ADD coded_location_qualifier varchar(10) default NULL AFTER itemcallnumber');
6107 print "Upgrade to $DBversion done (Bug 6428: Added coded_location_qualifier to the deleteditems table)\n";
6108 SetVersion ($DBversion);
6111 $DBversion = "3.09.00.066";
6112 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6113 $dbh->do("DELETE FROM systempreferences WHERE variable='DidYouMeanFromAuthorities'");
6114 print "Upgrade to $DBversion done (Bug 9107: remove DidYouMeanFromAuthorities syspref)\n";
6115 SetVersion ($DBversion);
6118 $DBversion = "3.09.00.067";
6119 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6120 $dbh->do("ALTER TABLE statistics CHANGE COLUMN ccode ccode varchar(10) NULL");
6121 print "Upgrade to $DBversion done (Bug 9064: statistics.ccode potentially wrongly defined)\n";
6122 SetVersion ($DBversion);
6125 $DBversion = "3.10.00.00";
6126 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6127 print "Upgrade to $DBversion done (release tag)\n";
6128 SetVersion ($DBversion);
6131 $DBversion = "3.11.00.001";
6132 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6133 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('alphabet','A B C D E F G H I J K L M N O P Q R S T U V W X Y Z','Alphabet that can be expanded into browse links, e.g. on Home > Patrons',NULL,'free')");
6134 print "Upgrade to $DBversion done (Bug 2832 - Add alphabet syspref)\n";
6137 $DBversion = "3.11.00.002";
6138 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6139 $dbh->do(q{
6140 DELETE from aqorders_items where ordernumber NOT IN (SELECT ordernumber FROM aqorders);
6142 $dbh->do(q{
6143 ALTER TABLE aqorders_items
6144 ADD CONSTRAINT aqorders_items_ibfk_1 FOREIGN KEY (ordernumber) REFERENCES aqorders (ordernumber)
6145 ON DELETE CASCADE ON UPDATE CASCADE;
6147 print "Upgrade to $DBversion done (Bug 9030: Add constraint on aqorders_items.ordernumber)\n";
6148 SetVersion ($DBversion);
6151 $DBversion = "3.11.00.003";
6152 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6153 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('RefundLostItemFeeOnReturn', '1', 'If enabled, the lost item fee charged to a borrower will be refunded when the lost item is returned.', NULL, 'YesNo')");
6154 print "Upgrade to $DBversion done (Bug 7189: Add system preference RefundLostItemFeeOnReturn)\n";
6155 SetVersion($DBversion);
6158 $DBversion = "3.11.00.004";
6159 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6160 $dbh->do(qq{
6161 ALTER TABLE subscription ADD COLUMN closed INT(1) NOT NULL DEFAULT 0 AFTER enddate;
6164 print "Upgrade to $DBversion done (Bug 8782: Add field subscription.closed)\n";
6165 SetVersion($DBversion);
6168 $DBversion = "3.11.00.005";
6169 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6170 $dbh->do(qq{CREATE TABLE borrower_attribute_types_branches(bat_code VARCHAR(10), b_branchcode VARCHAR(10),FOREIGN KEY (bat_code) REFERENCES borrower_attribute_types(code) ON DELETE CASCADE,FOREIGN KEY (b_branchcode) REFERENCES branches(branchcode) ON DELETE CASCADE ) ENGINE=INNODB DEFAULT CHARSET=utf8;});
6172 $dbh->do(qq{CREATE TABLE categories_branches(categorycode VARCHAR(10), branchcode VARCHAR(10), FOREIGN KEY (categorycode) REFERENCES categories(categorycode) ON DELETE CASCADE, FOREIGN KEY (branchcode) REFERENCES branches(branchcode) ON DELETE CASCADE ) ENGINE=INNODB DEFAULT CHARSET=utf8;});
6174 $dbh->do(qq{CREATE TABLE authorised_values_branches(av_id INTEGER, branchcode VARCHAR(10), FOREIGN KEY (av_id) REFERENCES authorised_values(id) ON DELETE CASCADE, FOREIGN KEY (branchcode) REFERENCES branches(branchcode) ON DELETE CASCADE ) ENGINE=INNODB DEFAULT CHARSET=utf8;});
6176 print "Upgrade to $DBversion done (Bug 7919: Display of values depending on the connexion library)\n";
6177 SetVersion($DBversion);
6180 $DBversion = "3.11.00.006";
6181 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6182 $dbh->do(q{
6183 UPDATE virtualshelves SET sortfield="copyrightdate" where sortfield="year";
6185 print "Upgrade to $DBversion done (Bug 9167: Update the virtualshelves.sortfield column with 'copyrightdate' if needed)\n";
6186 SetVersion($DBversion);
6189 $DBversion = "3.11.00.007";
6190 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6191 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ar', 'language', 'de', 'Arabisch')");
6192 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'hy', 'language', 'de', 'Armenisch')");
6193 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'bg', 'language', 'de', 'Bulgarisch')");
6194 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'zh', 'language', 'de', 'Chinesisch')");
6195 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'cs', 'language', 'de', 'Tschechisch')");
6196 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'da', 'language', 'de', 'Dänisch')");
6197 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'nl', 'language', 'de', 'Niederländisch')");
6198 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'en', 'language', 'de', 'Englisch')");
6199 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'fi', 'language', 'de', 'Finnisch')");
6200 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'fr', 'language', 'de', 'Französisch')");
6201 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'lo', 'language', 'fr', 'Laotien')");
6202 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'lo', 'language', 'de', 'Laotisch')");
6203 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'el', 'language', 'de', 'Griechisch (Nach 1453)')");
6204 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'he', 'language', 'de', 'Hebräisch')");
6205 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'hi', 'language', 'de', 'Hindi')");
6206 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'hu', 'language', 'de', 'Ungarisch')");
6207 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'id', 'language', 'de', 'Indonesisch')");
6208 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'it', 'language', 'de', 'Italienisch')");
6209 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ja', 'language', 'de', 'Japanisch')");
6210 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ko', 'language', 'de', 'Koreanisch')");
6211 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'la', 'language', 'de', 'Latein')");
6212 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'gl', 'language', 'fr', 'Galicien')");
6213 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'gl', 'language', 'de', 'Galizisch')");
6214 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'nb', 'language', 'de', 'Norwegisch bokm&#229;l')");
6215 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'nn', 'language', 'de', 'Norwegisch nynorsk')");
6216 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'fa', 'language', 'de', 'Persisch')");
6217 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'pl', 'language', 'de', 'Polnisch')");
6218 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'pt', 'language', 'de', 'Portugiesisch')");
6219 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ro', 'language', 'de', 'Rumänisch')");
6220 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ru', 'language', 'de', 'Russisch')");
6221 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'sr', 'language', 'fr', 'Serbe')");
6222 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'sr', 'language', 'de', 'Serbisch')");
6223 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'es', 'language', 'de', 'Spanisch')");
6224 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'sv', 'language', 'de', 'Schwedisch')");
6225 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'tet', 'language', 'fr', 'Tétoum')");
6226 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'tet', 'language', 'de', 'Tetum')");
6227 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'th', 'language', 'de', 'Thailändisch')");
6228 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'tr', 'language', 'de', 'Türkisch')");
6229 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'uk', 'language', 'de', 'Ukrainisch')");
6230 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ur', 'language', 'fr', 'Ourdou')");
6231 $dbh->do("INSERT INTO language_descriptions (subtag, type, lang, description) VALUES( 'ur', 'language', 'de', 'Urdu')");
6232 print "Upgrade to $DBversion done (Bug 9056: add German and a couple of French translations to language_descriptions)\n";
6233 SetVersion ($DBversion);
6236 $DBversion = "3.11.00.008";
6237 if (CheckVersion($DBversion)) {
6238 $dbh->do("
6239 CREATE TABLE IF NOT EXISTS `borrower_modifications` (
6240 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
6241 `verification_token` varchar(255) NOT NULL DEFAULT '',
6242 `borrowernumber` int(11) NOT NULL DEFAULT '0',
6243 `cardnumber` varchar(16) DEFAULT NULL,
6244 `surname` mediumtext,
6245 `firstname` text,
6246 `title` mediumtext,
6247 `othernames` mediumtext,
6248 `initials` text,
6249 `streetnumber` varchar(10) DEFAULT NULL,
6250 `streettype` varchar(50) DEFAULT NULL,
6251 `address` mediumtext,
6252 `address2` text,
6253 `city` mediumtext,
6254 `state` text,
6255 `zipcode` varchar(25) DEFAULT NULL,
6256 `country` text,
6257 `email` mediumtext,
6258 `phone` text,
6259 `mobile` varchar(50) DEFAULT NULL,
6260 `fax` mediumtext,
6261 `emailpro` text,
6262 `phonepro` text,
6263 `B_streetnumber` varchar(10) DEFAULT NULL,
6264 `B_streettype` varchar(50) DEFAULT NULL,
6265 `B_address` varchar(100) DEFAULT NULL,
6266 `B_address2` text,
6267 `B_city` mediumtext,
6268 `B_state` text,
6269 `B_zipcode` varchar(25) DEFAULT NULL,
6270 `B_country` text,
6271 `B_email` text,
6272 `B_phone` mediumtext,
6273 `dateofbirth` date DEFAULT NULL,
6274 `branchcode` varchar(10) DEFAULT NULL,
6275 `categorycode` varchar(10) DEFAULT NULL,
6276 `dateenrolled` date DEFAULT NULL,
6277 `dateexpiry` date DEFAULT NULL,
6278 `gonenoaddress` tinyint(1) DEFAULT NULL,
6279 `lost` tinyint(1) DEFAULT NULL,
6280 `debarred` date DEFAULT NULL,
6281 `debarredcomment` varchar(255) DEFAULT NULL,
6282 `contactname` mediumtext,
6283 `contactfirstname` text,
6284 `contacttitle` text,
6285 `guarantorid` int(11) DEFAULT NULL,
6286 `borrowernotes` mediumtext,
6287 `relationship` varchar(100) DEFAULT NULL,
6288 `ethnicity` varchar(50) DEFAULT NULL,
6289 `ethnotes` varchar(255) DEFAULT NULL,
6290 `sex` varchar(1) DEFAULT NULL,
6291 `password` varchar(30) DEFAULT NULL,
6292 `flags` int(11) DEFAULT NULL,
6293 `userid` varchar(75) DEFAULT NULL,
6294 `opacnote` mediumtext,
6295 `contactnote` varchar(255) DEFAULT NULL,
6296 `sort1` varchar(80) DEFAULT NULL,
6297 `sort2` varchar(80) DEFAULT NULL,
6298 `altcontactfirstname` varchar(255) DEFAULT NULL,
6299 `altcontactsurname` varchar(255) DEFAULT NULL,
6300 `altcontactaddress1` varchar(255) DEFAULT NULL,
6301 `altcontactaddress2` varchar(255) DEFAULT NULL,
6302 `altcontactaddress3` varchar(255) DEFAULT NULL,
6303 `altcontactstate` text,
6304 `altcontactzipcode` varchar(50) DEFAULT NULL,
6305 `altcontactcountry` text,
6306 `altcontactphone` varchar(50) DEFAULT NULL,
6307 `smsalertnumber` varchar(50) DEFAULT NULL,
6308 `privacy` int(11) DEFAULT NULL,
6309 PRIMARY KEY (`verification_token`,`borrowernumber`),
6310 KEY `verification_token` (`verification_token`),
6311 KEY `borrowernumber` (`borrowernumber`)
6312 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6315 $dbh->do("
6316 INSERT INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES
6317 ('PatronSelfRegistration', '0', NULL, 'If enabled, patrons will be able to register themselves via the OPAC.', 'YesNo'),
6318 ('PatronSelfRegistrationVerifyByEmail', '0', NULL, 'If enabled, any patron attempting to register themselves via the OPAC will be required to verify themselves via email to activate his or her account.', 'YesNo'),
6319 ('PatronSelfRegistrationDefaultCategory', '', '', 'A patron registered via the OPAC will receive a borrower category code set in this system preference.', 'free'),
6320 ('PatronSelfRegistrationExpireTemporaryAccountsDelay', '0', NULL, 'If PatronSelfRegistrationDefaultCategory is enabled, this system preference controls how long a patron can have a temporary status before the account is deleted automatically. It is an integer value representing a number of days to wait before deleting a temporary patron account. Setting it to 0 disables the deleting of temporary accounts.', 'Integer'),
6321 ('PatronSelfRegistrationBorrowerMandatoryField', 'surname|firstname', NULL , 'Choose the mandatory fields for a patron''s account, when registering via the OPAC.', 'free'),
6322 ('PatronSelfRegistrationBorrowerUnwantedField', '', NULL , 'Name the fields you don''t want to display when registering a new patron via the OPAC.', 'free');
6325 $dbh->do("
6326 INSERT INTO letter ( `module`, `code`, `branchcode`, `name`, `is_html`, `title`, `content` )
6327 VALUES ( 'members', 'OPAC_REG_VERIFY', '', 'Opac Self-Registration Verification Email', '1', 'Verify Your Account', 'Hello!
6329 Your library account has been created. Please verify your email address by clicking this link to complete the signup process:
6331 http://<<OPACBaseURL>>/cgi-bin/koha/opac-registration-verify.pl?token=<<borrower_modifications.verification_token>>
6333 If you did not initiate this request, you may safely ignore this one-time message. The request will expire shortly.'
6334 )");
6336 print "Upgrade to $DBversion done (Bug 7067: Add Patron Self Registration)\n";
6337 SetVersion ($DBversion);
6340 $DBversion = "3.11.00.009";
6341 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6342 $dbh->do("
6343 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES
6344 ('SeparateHoldings', '0', 'Separate current branch holdings from other holdings', NULL, 'YesNo'),
6345 ('SeparateHoldingsBranch', 'homebranch', 'Branch used to separate holdings', 'homebranch|holdingbranch', 'Choice'),
6346 ('OpacSeparateHoldings', '0', 'Separate current branch holdings from other holdings (OPAC)', NULL, 'YesNo'),
6347 ('OpacSeparateHoldingsBranch', 'homebranch', 'Branch used to separate holdings (OPAC)', 'homebranch|holdingbranch', 'Choice')
6350 print "Upgrade to $DBversion done (Bug 7674: Add systempreferences SeparateHoldings, SeparateHoldingsBranch, OpacSeparateHoldings and OpacSeparateHoldingsBranch) \n";
6351 SetVersion ($DBversion);
6354 $DBversion = "3.11.00.010";
6355 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
6356 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('RenewalSendNotice', '0', '', NULL, 'YesNo')");
6357 $dbh->do(q{
6358 INSERT INTO `letter` (`module`, `code`, `name`, `title`, `content`) VALUES
6359 ('circulation','RENEWAL','Item Renewals','Item Renewals','The following items have been renewed:\r\n----\r\n<<biblio.title>>\r\n----\r\nThank you for visiting <<branches.branchname>>.');
6361 print "Upgrade to $DBversion done (Bug 9151 - Renewal notice according to patron alert preferences)\n";
6362 SetVersion($DBversion);
6365 $DBversion = "3.11.00.011";
6366 if ( CheckVersion($DBversion) ) {
6367 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HTML5MediaEnabled','not','Show a HTML5 media player in a tab on opac-detail.pl for media files catalogued in field 856.','not|opac|staff|both','Choice');");
6368 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HTML5MediaExtensions','webm|ogg|ogv|oga|vtt','Media file extensions','','free');");
6369 print "Upgrade to $DBversion done (Bug 8377: Add HTML5MediaEnabled and HTML5MediaExtensions sysprefs)\n";
6370 SetVersion ($DBversion);
6373 $DBversion = "3.11.00.012";
6374 if ( CheckVersion($DBversion) ) {
6375 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldsOnPatronsPossessions', '1', 'Allow holds on records that patron have items of it',NULL,'YesNo')");
6376 print "Upgrade to $DBversion done (Bug 9206: Only allow place holds in records that the patron don't have in his possession)\n";
6377 SetVersion($DBversion);
6380 $DBversion = "3.11.00.013";
6381 if ( CheckVersion($DBversion) ) {
6382 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('NotesBlacklist','','List of notes fields that should not appear in the title notes/description separator of details',NULL,'free')");
6383 print "Upgrade to $DBversion done (Bug 9162 - Add a system preference to set which notes fields appears on title notes/description separator)\n";
6384 SetVersion($DBversion);
6387 $DBversion = "3.11.00.014";
6388 if ( CheckVersion($DBversion) ) {
6389 $dbh->do("INSERT INTO systempreferences ( variable, value, explanation, type ) VALUES ( 'SCOUserCSS', '', 'Add CSS to be included in the SCO module in an embedded <style> tag.', 'free' )");
6390 $dbh->do("INSERT INTO systempreferences ( variable, value, explanation, type ) VALUES ( 'SCOUserJS', '', 'Define custom javascript for inclusion in the SCO module', 'free' )");
6391 print "Upgrade to $DBversion done (Bug 9009: Add SCOUserCSS and SCOUserJS sysprefs)\n";
6394 $DBversion = "3.11.00.015";
6395 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6396 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('RentalsInNoissuesCharge', '1', 'Rental charges block checkouts (added to noissuescharge).',NULL,'YesNo');");
6397 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('ManInvInNoissuesCharge', '1', 'MANUAL_INV charges block checkouts (added to noissuescharge).',NULL,'YesNo');");
6398 print "Upgrade to $DBversion done (Add sysprefs RentalsInNoissuesCharge and ManInvInNoissuesCharge.)\n";
6399 SetVersion($DBversion);
6402 $DBversion = "3.11.00.016";
6403 if ( CheckVersion($DBversion) ) {
6404 $dbh->do(q{
6405 UPDATE userflags SET flagdesc="<b>Required for staff login.</b> Staff access, allows viewing of catalogue in staff client." where flagdesc="Modify login / permissions for staff users";
6407 $dbh->do(q{
6408 UPDATE userflags SET flagdesc="Edit Authorities" where flagdesc="Allow to edit authorities";
6410 $dbh->do(q{
6411 UPDATE userflags SET flagdesc="Allow access to the reports module" where flagdesc="Allow to access to the reports module";
6413 $dbh->do(q{
6414 UPDATE userflags SET flagdesc="Set library management parameters (deprecated)" where flagdesc="Set library management parameters";
6416 $dbh->do(q{
6417 UPDATE userflags SET flagdesc="Manage serial subscriptions" where flagdesc="Allow to manage serials subscriptions";
6419 $dbh->do(q{
6420 UPDATE userflags SET flagdesc="Manage patrons fines and fees" where flagdesc="Update borrower charges";
6422 $dbh->do(q{
6423 UPDATE userflags SET flagdesc="Check out and check in items" where flagdesc="Circulate books";
6425 $dbh->do(q{
6426 UPDATE userflags SET flagdesc="Manage Koha system settings (Administration panel)" where flagdesc="Set Koha system parameters";
6428 $dbh->do(q{
6429 UPDATE userflags SET flagdesc="Add or modify patrons" where flagdesc="Add or modify borrowers";
6431 $dbh->do(q{
6432 UPDATE userflags SET flagdesc="Use all tools (expand for granular tools permissions)" where flagdesc="Use tools (export, import, barcodes)";
6434 $dbh->do(q{
6435 UPDATE userflags SET flagdesc="Allow staff members to modify permissions for other staff members" where flagdesc="Set user permissions";
6437 $dbh->do(q{
6438 UPDATE permissions SET description="Perform batch modification of patrons" where description="Perform batch modifivation of patrons";
6441 print "Upgrade to $DBversion done (Bug 9382 (updated with bug 9745) - refresh permission descriptions to make more sense)\n";
6442 SetVersion ($DBversion);
6445 $DBversion ="3.11.00.017";
6446 if ( CheckVersion($DBversion) ) {
6447 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('IDreamBooksReviews','0','Display book review snippets from IDreamBooks.com','','YesNo');");
6448 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('IDreamBooksReadometer','0','Display Readometer from IDreamBooks.com','','YesNo');");
6449 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('IDreamBooksResults','0','Display IDreamBooks.com rating in search results','','YesNo');");
6450 print "Upgrade to $DBversion done (Add IDreamBooks enhanced content)\n";
6451 SetVersion($DBversion);
6454 $DBversion = "3.11.00.018";
6455 if ( CheckVersion($DBversion) ) {
6456 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OPACNumbersPreferPhrase','0', NULL, 'Control the use of phr operator in callnumber and standard number OPAC searches', 'YesNo')");
6457 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('IntranetNumbersPreferPhrase','0', NULL, 'Control the use of phr operator in callnumber and standard number staff client searches', 'YesNo')");
6458 print "Upgrade to $DBversion done (Bug 9395: Problem with callnumber and standard number search in OPAC and Staff Client)\n";
6459 SetVersion ($DBversion);
6462 $DBversion = "3.11.00.019";
6463 if ( CheckVersion($DBversion) ) {
6464 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('UNIMARCAuthorityField100', 'afrey50 ba0', NULL, NULL, 'Textarea')");
6465 print "Upgrade to $DBversion done (Bug 9145 - Add syspref UNIMARCAuthorityField100)\n";
6466 SetVersion ($DBversion);
6469 $DBversion = "3.11.00.020";
6470 if ( CheckVersion($DBversion) ) {
6471 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UNIMARCField100Language', 'fre','UNIMARC field 100 default language',NULL,'short')");
6472 print "Upgrade to $DBversion done (Bug 8347 - Koha forces UNIMARC 100 field code language to 'fre')\n";
6473 SetVersion($DBversion);
6476 $DBversion ="3.11.00.021";
6477 if ( CheckVersion($DBversion) ) {
6478 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OPACPopupAuthorsSearch','0','Display the list of authors when clicking on one author.','','YesNo');");
6479 print "Upgrade to $DBversion done (Bug 5888 - Subject search pop-up for the OPAC)\n";
6480 SetVersion($DBversion);
6483 $DBversion = "3.11.00.022";
6484 if ( CheckVersion($DBversion) ) {
6485 $dbh->do(
6486 "INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('Persona',0,'Use Mozilla Persona for login','','YesNo')"
6488 print "Upgrade to $DBversion done (Bug 9587 - Allow login via Persona)\n";
6489 SetVersion($DBversion);
6492 $DBversion = "3.11.00.023";
6493 if ( CheckVersion($DBversion) ) {
6494 $dbh->do("UPDATE z3950servers SET host = 'lx2.loc.gov', port = 210, db = 'LCDB', syntax = 'USMARC', encoding = 'utf8' WHERE name = 'LIBRARY OF CONGRESS'");
6495 print "Upgrade to $DBversion done (Bug 9520 - Update default LOC Z39.50 target)\n";
6496 SetVersion($DBversion);
6499 $DBversion = "3.11.00.024";
6500 if ( CheckVersion($DBversion) ) {
6501 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacItemLocation','callnum','Show the shelving location of items in the opac','callnum|ccode|location','Choice');");
6502 print "Upgrade to $DBversion done (Bug 5079: Add OpacItemLocation syspref)\n";
6503 SetVersion ($DBversion);
6506 $DBversion = "3.11.00.025";
6507 if ( CheckVersion($DBversion) ) {
6508 $dbh->do(
6509 "CREATE TABLE linktracker (
6510 id int(11) NOT NULL AUTO_INCREMENT,
6511 biblionumber int(11) DEFAULT NULL,
6512 itemnumber int(11) DEFAULT NULL,
6513 borrowernumber int(11) DEFAULT NULL,
6514 url text,
6515 timeclicked datetime DEFAULT NULL,
6516 PRIMARY KEY (id),
6517 KEY bibidx (biblionumber),
6518 KEY itemidx (itemnumber),
6519 KEY borridx (borrowernumber),
6520 KEY dateidx (timeclicked)
6521 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
6523 $dbh->do( "
6524 INSERT INTO systempreferences (variable,value,explanation,options,type)
6525 VALUES('TrackClicks','0','Track links clicked',NULL,'Integer')" );
6526 print
6527 "Upgrade to $DBversion done (Adds feature Bug 8917, the ability to track links clicked)\n";
6528 SetVersion($DBversion);
6531 $DBversion = "3.11.00.026";
6532 if ( CheckVersion($DBversion) ) {
6533 $dbh->do(qq{
6534 ALTER TABLE import_records ADD INDEX batch_id_record_type ( import_batch_id, record_type );
6536 print "Upgrade to $DBversion done (Bug 9207: Add new index batch_id_record_type to import_records)\n";
6537 SetVersion($DBversion);
6540 $DBversion = "3.11.00.027";
6541 if ( CheckVersion($DBversion) ) {
6542 $dbh->do(q{
6543 INSERT INTO permissions ( module_bit, code, description )
6544 VALUES ( '1', 'overdues_report', 'Execute overdue items report' )
6546 # add new permission for users with all report permissions and circulation remaining permission
6547 $dbh->do(q{
6548 INSERT INTO user_permissions (borrowernumber, module_bit, code)
6549 SELECT user_permissions.borrowernumber, 1, 'overdues_report'
6550 FROM user_permissions
6551 LEFT JOIN borrowers USING(borrowernumber)
6552 WHERE borrowers.flags & (1 << 16)
6553 AND user_permissions.code = 'circulate_remaining_permissions'
6555 print "Upgrade to $DBversion done ( Add circ permission overdues_report )\n";
6556 SetVersion($DBversion);
6559 $DBversion = "3.11.00.028";
6560 if ( CheckVersion($DBversion) ) {
6561 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('PatronSelfRegistrationAdditionalInstructions', '', NULL , 'A free text field to display additional instructions to newly self registered patrons.', 'free' );");
6562 print "Upgrade to $DBversion done (Bug 9756 - Patron self registration missing the system preference PatronSelfRegistrationAdditionalInstructions)\n";
6563 SetVersion($DBversion);
6566 $DBversion = "3.11.00.029";
6567 if (CheckVersion($DBversion)) {
6568 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UseQueryParser', '0', 'If enabled, try to use QueryParser for queries.', NULL, 'YesNo')");
6569 print "Upgrade to $DBversion done (Bug 9239: Make it possible for Koha to use QueryParser)\n";
6570 SetVersion ($DBversion);
6573 $DBversion = "3.11.00.030";
6574 if ( CheckVersion($DBversion) ) {
6575 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('FinesIncludeGracePeriod','1','If enabled, fines calculations will include the grace period.',NULL,'YesNo');");
6576 print "Upgrade to $DBversion done (Add system preference FinesIncludeGracePeriod)\n";
6577 SetVersion($DBversion);
6580 $DBversion = "3.11.00.100";
6581 if ( CheckVersion($DBversion) ) {
6582 print "Upgrade to $DBversion done (3.12-alpha release)\n";
6583 SetVersion ($DBversion);
6586 $DBversion = "3.11.00.101";
6587 if ( CheckVersion($DBversion) ) {
6588 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('UNIMARCAuthorsFacetsSeparator',', ', 'UNIMARC authors facets separator', NULL, 'short')");
6589 print "Upgrade to $DBversion done (Bug 9341: Problem with UNIMARC authors facets)\n";
6590 SetVersion ($DBversion);
6593 $DBversion = "3.11.00.102";
6594 if ( CheckVersion($DBversion) ) {
6595 $dbh->do(q{
6596 DELETE FROM systempreferences WHERE variable='NoZebra'
6598 $dbh->do(q{
6599 DELETE FROM systempreferences WHERE variable='QueryRemoveStopwords'
6601 print "Upgrade to $DBversion done (Remove deprecated NoZebra and QueryRemoveStopwords sysprefs)\n";
6602 SetVersion($DBversion);
6605 $DBversion = "3.11.00.103";
6606 if ( CheckVersion($DBversion) ) {
6607 $dbh->do("DELETE FROM systempreferences WHERE variable = 'insecure';");
6608 print "Upgrade to $DBversion done (Bug 9827 - Remove 'insecure' system preference)\n";
6609 SetVersion($DBversion);
6612 $DBversion = "3.11.00.104";
6613 if ( CheckVersion($DBversion) ) {
6614 print "Upgrade to $DBversion done (3.12-alpha2 release)\n";
6615 SetVersion ($DBversion);
6618 $DBversion = "3.11.00.105";
6619 if ( CheckVersion($DBversion) ) {
6620 if ( C4::Context->preference("marcflavour") eq 'MARC21' ) {
6621 $sth = $dbh->prepare(
6622 "SELECT frameworkcode FROM marc_tag_structure WHERE tagfield = '029'"
6624 $sth->execute;
6625 my $frameworkcodes = $sth->fetchall_hashref('frameworkcode');
6627 for my $frameworkcode ( keys %$frameworkcodes ) {
6628 $dbh->do( "
6629 INSERT IGNORE INTO marc_subfield_structure (tagfield, tagsubfield, liblibrarian,
6630 libopac, repeatable, mandatory, kohafield, tab, authorised_value, authtypecode,
6631 value_builder, isurl, hidden, frameworkcode, seealso, link, defaultvalue) VALUES
6632 ('029', 'a', 'OCLC library identifier', 'OCLC library identifier', 0, 0, '', 0, '', '', '', 0, -6, '$frameworkcode', '', '', NULL),
6633 ('029', 'b', 'System control number', 'System control number', 0, 0, '', 0, '', '', '', 0, -6, '$frameworkcode', '', '', NULL),
6634 ('029', 'c', 'OAI set name', 'OAI set name', 0, 0, '', 0, '', '', '', 0, -6, '$frameworkcode', '', '', NULL),
6635 ('029', 't', 'Content type identifier', 'Content type identifier', 0, 0, '', 0, '', '', '', 0, -6, '$frameworkcode', '', '', NULL)
6636 " );
6639 for my $tag ( '863', '864', '865' ) {
6640 $sth = $dbh->prepare(
6641 "SELECT frameworkcode FROM marc_tag_structure WHERE tagfield = '$tag'"
6643 $sth->execute;
6644 my $frameworkcodes = $sth->fetchall_hashref('frameworkcode');
6646 for my $frameworkcode ( keys %$frameworkcodes ) {
6647 $dbh->do( "
6648 INSERT IGNORE INTO marc_subfield_structure (tagfield, tagsubfield, liblibrarian,
6649 libopac, repeatable, mandatory, kohafield, tab, authorised_value, authtypecode,
6650 value_builder, isurl, hidden, frameworkcode, seealso, link, defaultvalue) VALUES
6651 ('$tag', '6', 'Linkage', 'Linkage', 0, 0, '', 8, '', '', '', NULL, 5, '$frameworkcode', '', '', NULL),
6652 ('$tag', '8', 'Field link and sequence number', 'Field link and sequence number', 0, 0, '', 8, '', '', '', NULL, 5, '$frameworkcode', '', '', NULL),
6653 ('$tag', 'a', 'First level of enumeration', 'First level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6654 ('$tag', 'b', 'Second level of enumeration', 'Second level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6655 ('$tag', 'c', 'Third level of enumeration', 'Third level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6656 ('$tag', 'd', 'Fourth level of enumeration', 'Fourth level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6657 ('$tag', 'e', 'Fifth level of enumeration', 'Fifth level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6658 ('$tag', 'f', 'Sixth level of enumeration', 'Sixth level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6659 ('$tag', 'g', 'Alternative numbering scheme, first level of enumeration', 'Alternative numbering scheme, first level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6660 ('$tag', 'h', 'Alternative numbering scheme, second level of enumeration', 'Alternative numbering scheme, second level of enumeration', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6661 ('$tag', 'i', 'First level of chronology', 'First level of chronology', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6662 ('$tag', 'j', 'Second level of chronology', 'Second level of chronology', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6663 ('$tag', 'k', 'Third level of chronology', 'Third level of chronology', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6664 ('$tag', 'l', 'Fourth level of chronology', 'Fourth level of chronology', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6665 ('$tag', 'm', 'Alternative numbering scheme, chronology', 'Alternative numbering scheme, chronology', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6666 ('$tag', 'n', 'Converted Gregorian year', 'Converted Gregorian year', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6667 ('$tag', 'o', 'Type of unit', 'Type of unit', 1, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6668 ('$tag', 'p', 'Piece designation', 'Piece designation', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6669 ('$tag', 'q', 'Piece physical condition', 'Piece physical condition', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6670 ('$tag', 's', 'Copyright article-fee code', 'Copyright article-fee code', 1, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6671 ('$tag', 't', 'Copy number', 'Copy number', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6672 ('$tag', 'v', 'Issuing date', 'Issuing date', 1, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6673 ('$tag', 'w', 'Break indicator', 'Break indicator', 0, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6674 ('$tag', 'x', 'Nonpublic note', 'Nonpublic note', 1, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL),
6675 ('$tag', 'z', 'Public note', 'Public note', 1, 0, '', 8, '', '', '', 0, 5, '$frameworkcode', '', '', NULL)
6676 " );
6680 print "Upgrade to $DBversion done (Bug 9353: Missing subfields on MARC21 frameworks)\n";
6681 SetVersion($DBversion);
6685 $DBversion = "3.11.00.106";
6686 if ( CheckVersion($DBversion) ) {
6687 $dbh->do("INSERT INTO userflags (bit, flag, flagdesc, defaulton) VALUES ('19', 'plugins', 'Koha plugins', '0')");
6688 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES
6689 ('19', 'manage', 'Manage plugins ( install / uninstall )'),
6690 ('19', 'tool', 'Use tool plugins'),
6691 ('19', 'report', 'Use report plugins'),
6692 ('19', 'configure', 'Configure plugins')
6694 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UseKohaPlugins','0','Enable or disable the ability to use Koha Plugins.','','YesNo')");
6696 $dbh->do("
6697 CREATE TABLE IF NOT EXISTS plugin_data (
6698 plugin_class varchar(255) NOT NULL,
6699 plugin_key varchar(255) NOT NULL,
6700 plugin_value text,
6701 PRIMARY KEY (plugin_class,plugin_key)
6702 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6705 print "Upgrade to $DBversion done (Bug 7804: Added plugin system.)\n";
6706 SetVersion($DBversion);
6709 $DBversion = "3.11.00.107";
6710 if ( CheckVersion($DBversion) ) {
6711 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('TimeFormat','24hr','12hr|24hr','Defines the global time format for visual output.','Choice')");
6712 print "Upgrade to $DBversion done (Bug 9014: Add syspref TimeFormat)\n";
6713 SetVersion ($DBversion);
6716 $DBversion = "3.11.00.108";
6717 if ( CheckVersion($DBversion) ) {
6718 $dbh->do("ALTER TABLE action_logs CHANGE timestamp timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;");
6719 $dbh->do("UPDATE action_logs SET info=(SELECT itemnumber FROM items WHERE biblionumber= action_logs.info LIMIT 1) WHERE module='CIRCULATION' AND action in ('ISSUE','RETURN');");
6720 $dbh->do("ALTER TABLE action_logs CHANGE timestamp timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;");
6721 print "Upgrade to $DBversion done (Bug 7241: Fix on circulation logs)\n";
6722 print "WARNING about bug 7241: to partially correct the broken logs, the log history is filled with the first found item for each biblio.\n";
6723 SetVersion($DBversion);
6726 $DBversion = "3.11.00.109";
6727 if ( CheckVersion($DBversion) ) {
6728 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('DisplayIconsXSLT', '1', '', 'If ON, displays the format, audience, and material type icons in XSLT MARC21 results and detail pages.', 'YesNo');");
6729 print "Upgrade to $DBversion done (Bug 9403: Add DisplayIconsXSLT)\n";
6730 SetVersion ($DBversion);
6733 $DBversion = "3.11.00.110";
6734 if ( CheckVersion($DBversion) ) {
6735 $dbh->do("ALTER TABLE pending_offline_operations CHANGE barcode barcode VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
6736 $dbh->do("ALTER TABLE pending_offline_operations ADD amount DECIMAL( 28, 6 ) NULL DEFAULT NULL");
6737 print "Upgrade to $DBversion done (Bug 8220 - Allow koc uploads to go to process queue)\n";
6738 SetVersion ($DBversion);
6741 $DBversion = "3.11.00.111";
6742 if ( CheckVersion($DBversion) ) {
6743 my $sth = $dbh->prepare("
6744 SELECT module, code, branchcode, content
6745 FROM letter
6746 WHERE content LIKE '%<fine>%'
6748 $sth->execute;
6749 my $sth_update = $dbh->prepare("UPDATE letter SET content = ? WHERE module = ? AND code = ? AND branchcode = ?");
6750 while(my $row = $sth->fetchrow_hashref){
6751 $row->{content} =~ s/<fine>\w+<\/fine>/<<items.fine>>/;
6752 $sth_update->execute($row->{content}, $row->{module}, $row->{code}, $row->{branchcode});
6754 print "Upgrade to $DBversion done (use new <<items.fine>> syntax in notices)\n";
6755 SetVersion($DBversion);
6758 $DBversion = "3.11.00.112";
6759 if ( CheckVersion($DBversion) ) {
6760 $dbh->do(qq{
6761 ALTER TABLE issuingrules ADD COLUMN renewalperiod int(4) DEFAULT NULL AFTER renewalsallowed
6763 $dbh->do(qq{
6764 UPDATE issuingrules SET renewalperiod = issuelength
6766 print "Upgrade to $DBversion done (Bug 8365: Add colum issuingrules.renewalperiod)\n";
6767 SetVersion ($DBversion);
6770 $DBversion = "3.11.00.113";
6771 if ( CheckVersion($DBversion) ) {
6772 $dbh->do(q{
6773 ALTER TABLE branchcategories ADD show_in_pulldown BOOLEAN NOT NULL DEFAULT '0',
6774 ADD INDEX ( show_in_pulldown )
6776 print "Upgrade to $DBversion done (Bug 9257 - Add groups to normal search pulldown)\n";
6777 SetVersion ($DBversion);
6780 $DBversion = "3.11.00.115";
6781 if ( CheckVersion($DBversion) ) {
6782 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('HighlightOwnItemsOnOPAC','0','','If on, and a patron is logged into the OPAC, items from his or her home library will be emphasized and shown first in search results and item details.','YesNo')");
6783 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('HighlightOwnItemsOnOPACWhich','PatronBranch','PatronBranch|OpacURLBranch','Decides which branch''s items to emphasize. If PatronBranch, emphasize the logged in user''s library''s items. If OpacURLBranch, highlight the items of the Apache var BRANCHCODE defined in Koha''s Apache configuration file.','Choice')");
6784 print "Upgrade to $DBversion done (Bug 7740: Add syspref HighlightOwnItemsOnOPAC)\n";
6785 SetVersion ($DBversion);
6788 $DBversion = "3.11.00.116";
6789 if ( CheckVersion($DBversion) ) {
6790 $dbh->do(q{ALTER TABLE aqorders DROP COLUMN serialid;});
6791 $dbh->do(q{ALTER TABLE aqorders DROP COLUMN subscription;});
6792 $dbh->do(q{ALTER TABLE aqorders ADD COLUMN subscriptionid INT(11) DEFAULT NULL;});
6793 $dbh->do(q{ALTER TABLE aqorders ADD CONSTRAINT aqorders_subscriptionid FOREIGN KEY (subscriptionid) REFERENCES subscription (subscriptionid) ON DELETE CASCADE ON UPDATE CASCADE;});
6794 $dbh->do(q{ALTER TABLE subscription ADD COLUMN reneweddate DATE DEFAULT NULL;});
6795 print "Upgrade to $DBversion done (Bug 5343: table aqorders: DROP serialid and subscription fields and ADD subscriptionid, table subscription: ADD reneweddate)\n";
6796 SetVersion ($DBversion);
6799 $DBversion = "3.11.00.200";
6800 if ( CheckVersion($DBversion) ) {
6801 print "Upgrade to $DBversion done (3.12-beta1 release)\n";
6802 SetVersion ($DBversion);
6805 $DBversion = "3.11.00.201";
6806 if ( CheckVersion($DBversion) ) {
6807 $dbh->do("UPDATE z3950servers SET encoding = 'ISO_8859-1' WHERE name = 'BIBSYS' AND host LIKE 'z3950.bibsys.no'");
6808 $dbh->do("UPDATE z3950servers SET encoding = 'ISO_8859-1' WHERE name = 'NORBOK' AND host LIKE 'z3950.nb.no'");
6809 $dbh->do("UPDATE z3950servers SET encoding = 'ISO_8859-1' WHERE name = 'SAMBOK' AND host LIKE 'z3950.nb.no'");
6810 $dbh->do("UPDATE z3950servers SET encoding = 'ISO_8859-1' WHERE name = 'DEICHMAN' AND host like 'z3950.deich.folkebibl.no'");
6811 print "Upgrade to $DBversion done (Bug 9498 - Update encoding for Norwegian sample Z39.50 servers)\n";
6812 SetVersion($DBversion);
6815 $DBversion = "3.11.00.202";
6816 if ( CheckVersion($DBversion) ) {
6817 $dbh->do("INSERT INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ca', 'language', 'Catalan','2013-01-12' )");
6818 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'ca','cat')");
6819 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'ca', 'language', 'es', 'Catalán')");
6820 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'ca', 'language', 'en', 'Catalan')");
6821 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'ca', 'language', 'fr', 'Catalan')");
6822 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'ca', 'language', 'ca', 'Català')");
6823 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'ca', 'language', 'de', 'Katalanisch')");
6824 print "Upgrade to $DBversion done (Bug 9381: Add Catalan laguage)\n";
6825 SetVersion ($DBversion);
6828 $DBversion = "3.11.00.203";
6829 if ( CheckVersion($DBversion) ) {
6830 $dbh->do(q{ALTER TABLE suggestions CHANGE COLUMN title title VARCHAR(255) DEFAULT NULL;});
6831 print "Upgrade to $DBversion done (Bug 2046 - increasing title column length for suggestions)\n";
6832 SetVersion ($DBversion);
6835 $DBversion = "3.11.00.300";
6836 if ( CheckVersion($DBversion) ) {
6837 print "Upgrade to $DBversion done (3.12-beta3 release)\n";
6838 SetVersion ($DBversion);
6841 $DBversion = "3.11.00.301";
6842 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6843 #issues
6844 $dbh->do(q{
6845 ALTER TABLE `issues`
6846 ADD KEY `itemnumber_idx` (`itemnumber`),
6847 ADD KEY `branchcode_idx` (`branchcode`),
6848 ADD KEY `issuingbranch_idx` (`issuingbranch`)
6850 $dbh->do(q{
6851 ALTER TABLE `old_issues`
6852 ADD KEY `branchcode_idx` (`branchcode`),
6853 ADD KEY `issuingbranch_idx` (`issuingbranch`)
6855 #items
6856 $dbh->do(q{
6857 ALTER TABLE `items` ADD KEY `itype_idx` (`itype`)
6859 $dbh->do(q{
6860 ALTER TABLE `deleteditems` ADD KEY `itype_idx` (`itype`)
6862 # biblioitems
6863 $dbh->do(q{
6864 ALTER TABLE `biblioitems` ADD KEY `itemtype_idx` (`itemtype`)
6866 $dbh->do(q{
6867 ALTER TABLE `deletedbiblioitems` ADD KEY `itemtype_idx` (`itemtype`)
6869 # statistics
6870 $dbh->do(q{
6871 ALTER TABLE `statistics`
6872 ADD KEY `branch_idx` (`branch`),
6873 ADD KEY `proccode_idx` (`proccode`),
6874 ADD KEY `type_idx` (`type`),
6875 ADD KEY `usercode_idx` (`usercode`),
6876 ADD KEY `itemnumber_idx` (`itemnumber`),
6877 ADD KEY `itemtype_idx` (`itemtype`),
6878 ADD KEY `borrowernumber_idx` (`borrowernumber`),
6879 ADD KEY `associatedborrower_idx` (`associatedborrower`),
6880 ADD KEY `ccode_idx` (`ccode`)
6883 print "Upgrade to $DBversion done (Bug 9681: Add some database indexes)\n";
6884 SetVersion($DBversion);
6887 $DBversion = "3.12.00.000";
6888 if ( CheckVersion($DBversion) ) {
6889 print "Upgrade to $DBversion done (3.12.0 release)\n";
6890 SetVersion ($DBversion);
6893 $DBversion = '3.13.00.000';
6894 if ( CheckVersion($DBversion) ) {
6895 print "Upgrade to $DBversion done (start the journey to Koha Pi)\n";
6896 SetVersion ($DBversion);
6899 $DBversion = "3.13.00.001";
6900 if ( CheckVersion($DBversion) ) {
6901 $dbh->do("INSERT INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('UseCourseReserves', '0', NULL, 'Enable the course reserves feature.', 'YesNo')");
6902 $dbh->do("INSERT INTO userflags (bit,flag,flagdesc,defaulton) VALUES ('18','coursereserves','Course Reserves','0')");
6903 $dbh->do("
6904 CREATE TABLE `courses` (
6905 `course_id` int(11) NOT NULL AUTO_INCREMENT,
6906 `department` varchar(20) DEFAULT NULL,
6907 `course_number` varchar(255) DEFAULT NULL,
6908 `section` varchar(255) DEFAULT NULL,
6909 `course_name` varchar(255) DEFAULT NULL,
6910 `term` varchar(20) DEFAULT NULL,
6911 `staff_note` mediumtext,
6912 `public_note` mediumtext,
6913 `students_count` varchar(20) DEFAULT NULL,
6914 `enabled` enum('yes','no') NOT NULL DEFAULT 'yes',
6915 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
6916 PRIMARY KEY (`course_id`)
6917 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6920 $dbh->do("
6921 CREATE TABLE `course_instructors` (
6922 `course_id` int(11) NOT NULL,
6923 `borrowernumber` int(11) NOT NULL,
6924 PRIMARY KEY (`course_id`,`borrowernumber`),
6925 KEY `borrowernumber` (`borrowernumber`)
6926 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6929 $dbh->do("
6930 ALTER TABLE `course_instructors`
6931 ADD CONSTRAINT `course_instructors_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`),
6932 ADD CONSTRAINT `course_instructors_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE;
6935 $dbh->do("
6936 CREATE TABLE `course_items` (
6937 `ci_id` int(11) NOT NULL AUTO_INCREMENT,
6938 `itemnumber` int(11) NOT NULL,
6939 `itype` varchar(10) DEFAULT NULL,
6940 `ccode` varchar(10) DEFAULT NULL,
6941 `holdingbranch` varchar(10) DEFAULT NULL,
6942 `location` varchar(80) DEFAULT NULL,
6943 `enabled` enum('yes','no') NOT NULL DEFAULT 'no',
6944 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
6945 PRIMARY KEY (`ci_id`),
6946 UNIQUE KEY `itemnumber` (`itemnumber`),
6947 KEY `holdingbranch` (`holdingbranch`)
6948 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6951 $dbh->do("
6952 ALTER TABLE `course_items`
6953 ADD CONSTRAINT `course_items_ibfk_2` FOREIGN KEY (`holdingbranch`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE,
6954 ADD CONSTRAINT `course_items_ibfk_1` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE;
6957 $dbh->do("
6958 CREATE TABLE `course_reserves` (
6959 `cr_id` int(11) NOT NULL AUTO_INCREMENT,
6960 `course_id` int(11) NOT NULL,
6961 `ci_id` int(11) NOT NULL,
6962 `staff_note` mediumtext,
6963 `public_note` mediumtext,
6964 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
6965 PRIMARY KEY (`cr_id`),
6966 UNIQUE KEY `pseudo_key` (`course_id`,`ci_id`),
6967 KEY `course_id` (`course_id`)
6968 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6971 $dbh->do("
6972 ALTER TABLE `course_reserves`
6973 ADD CONSTRAINT `course_reserves_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`);
6976 $dbh->do("
6977 INSERT INTO permissions (module_bit, code, description) VALUES
6978 (18, 'manage_courses', 'Add, edit and delete courses'),
6979 (18, 'add_reserves', 'Add course reserves'),
6980 (18, 'delete_reserves', 'Remove course reserves')
6985 print "Upgrade to $DBversion done (Add Course Reserves ( system preference UseCourseReserves ))\n";
6986 SetVersion($DBversion);
6989 $DBversion = "3.13.00.002";
6990 if ( CheckVersion($DBversion) ) {
6991 $dbh->do("UPDATE systempreferences SET variable = 'IndependentBranches' WHERE variable = 'IndependantBranches'");
6992 print "Upgrade to $DBversion done (Bug 10080 - Change system pref IndependantBranches to IndependentBranches)\n";
6993 SetVersion ($DBversion);
6996 $DBversion = '3.13.00.003';
6997 if ( CheckVersion($DBversion) ) {
6998 $dbh->do("ALTER TABLE serial DROP itemnumber");
6999 print "Upgrade to $DBversion done (Bug 7718 - Remove itemnumber column from serials table)\n";
7000 SetVersion($DBversion);
7003 $DBversion = "3.13.00.004";
7004 if(CheckVersion($DBversion)) {
7005 $dbh->do(
7006 "INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowHoldNotes',0,'Show hold notes on OPAC','','YesNo')"
7008 print "Upgrade to $DBversion done (Bug 9722: Allow users to add notes when placing a hold in OPAC)\n";
7009 SetVersion($DBversion);
7012 $DBversion = "3.13.00.005";
7013 if(CheckVersion($DBversion)) {
7014 my $intra= C4::Context->preference("intranetstylesheet");
7015 #if this pref is not blank or starting with http, https or / [root], then
7016 #add an additional / to the front
7017 if($intra && $intra !~ /^(\/|https?)/) {
7018 $dbh->do("UPDATE systempreferences SET value=? WHERE variable=?",
7019 undef,('/'.$intra,"intranetstylesheet"));
7020 print "WARNING: Your system preference intranetstylesheet has been prefixed with a slash to make it an absolute path.\n";
7022 print "Upgrade to $DBversion done (Bug 10052: Make intranetstylesheet and intranetcolorstylesheet behave exactly like their opac counterparts)\n";
7023 SetVersion ($DBversion);
7026 $DBversion = "3.13.00.006";
7027 if ( CheckVersion($DBversion) ) {
7028 $dbh->do(q{
7029 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
7030 VALUES ('CalculateFinesOnReturn','1','Switch to control if overdue fines are calculated on return or not', '', 'YesNo')
7032 print "Upgrade to $DBversion done (Bug 10120: Fines on item return controlled by a systempreference)\n";
7033 SetVersion($DBversion);
7036 $DBversion = "3.13.00.007";
7037 if ( CheckVersion($DBversion) ) {
7038 $dbh->do("UPDATE systempreferences SET variable='OpacHoldNotes' WHERE variable='OpacShowHoldNotes'");
7039 print "Upgrade to $DBversion done (Bug 10343: Rename OpacShowHoldNotes to OpacHoldNotes)\n";
7040 SetVersion($DBversion);
7043 $DBversion = "3.13.00.008";
7044 if ( CheckVersion($DBversion) ) {
7045 $dbh->do("
7046 CREATE TABLE IF NOT EXISTS borrower_files (
7047 file_id int(11) NOT NULL AUTO_INCREMENT,
7048 borrowernumber int(11) NOT NULL,
7049 file_name varchar(255) NOT NULL,
7050 file_type varchar(255) NOT NULL,
7051 file_description varchar(255) DEFAULT NULL,
7052 file_content longblob NOT NULL,
7053 date_uploaded timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
7054 PRIMARY KEY (file_id),
7055 KEY borrowernumber (borrowernumber),
7056 CONSTRAINT borrower_files_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE
7057 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7059 print "Upgrade to $DBversion done (Bug 10443: make sure borrower_files table exists)\n";
7060 SetVersion($DBversion);
7063 $DBversion = "3.13.00.009";
7064 if ( CheckVersion($DBversion) ) {
7065 $dbh->do("ALTER TABLE aqorders DROP COLUMN biblioitemnumber");
7066 print "Upgrade to $DBversion done (Bug 9987 - Drop column aqorders.biblioitemnumber)\n";
7067 SetVersion($DBversion);
7070 $DBversion = "3.13.00.010";
7071 if ( CheckVersion($DBversion) ) {
7072 $dbh->do(
7074 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('AcqWarnOnDuplicateInvoice','0','Warn librarians when they try to create a duplicate invoice', '', 'YesNo');
7077 print
7078 "Upgrade to $DBversion done (Bug 10366 - Add system preference to enabling warning librarian when invoice is duplicated)\n";
7079 SetVersion($DBversion);
7082 $DBversion = "3.13.00.011";
7083 if ( CheckVersion($DBversion) ) {
7084 $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code='ita' WHERE rfc4646_subtag='it'");
7085 print "Upgrade to $DBversion done (Bug 9519: Wrong language code for Italian in the advanced search language limitations)\n";
7086 SetVersion($DBversion);
7089 $DBversion = "3.13.00.012";
7090 if ( CheckVersion($DBversion) ) {
7091 $dbh->do("ALTER TABLE issuingrules MODIFY COLUMN overduefinescap decimal(28,6) DEFAULT NULL;");
7092 print "Upgrade to $DBversion done (Bug 10490: Correct datatype for overduefinescap in issuingrules)\n";
7093 SetVersion($DBversion);
7096 $DBversion ="3.13.00.013";
7097 if ( CheckVersion($DBversion) ) {
7098 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('AllowTooManyOverride', '1', 'If on, allow staff to override and check out items when the patron has reached the maximum number of allowed checkouts', '', 'YesNo');");
7099 print "Upgrade to $DBversion done (Bug 9576: add AllowTooManyOverride syspref to enable or disable issue limit confirmation)\n";
7100 SetVersion($DBversion);
7103 $DBversion = "3.13.00.014";
7104 if ( CheckVersion($DBversion) ) {
7105 $dbh->do("ALTER TABLE courses MODIFY COLUMN department varchar(80) DEFAULT NULL;");
7106 $dbh->do("ALTER TABLE courses MODIFY COLUMN term varchar(80) DEFAULT NULL;");
7107 print "Upgrade to $DBversion done (Bug 10604: correct width of courses.department and courses.term)\n";
7108 SetVersion($DBversion);
7111 $DBversion = "3.13.00.015";
7112 if ( CheckVersion($DBversion) ) {
7113 $dbh->do(
7114 "INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('itemBarcodeFallbackSearch','','If set, enables the automatic use of a keyword catalog search if the phrase entered as a barcode on the checkout page does not turn up any results during an item barcode search',NULL,'YesNo')"
7116 print "Upgrade to $DBversion done (Bug 7494: Add itemBarcodeFallbackSearch syspref)\n";
7117 SetVersion($DBversion);
7120 $DBversion = "3.13.00.016";
7121 if ( CheckVersion($DBversion) ) {
7122 $dbh->do(q{
7123 ALTER TABLE items CHANGE wthdrawn withdrawn TINYINT( 1 ) NOT NULL DEFAULT '0'
7126 $dbh->do(q{
7127 ALTER TABLE deleteditems CHANGE wthdrawn withdrawn TINYINT( 1 ) NOT NULL DEFAULT '0'
7130 $dbh->do(q{
7131 UPDATE saved_sql SET savedsql = REPLACE(savedsql, 'wthdrawn', 'withdrawn')
7134 $dbh->do(q{
7135 UPDATE marc_subfield_structure SET kohafield = 'items.withdrawn' WHERE kohafield = 'items.wthdrawn'
7138 print "Upgrade to $DBversion done (Bug 10550 - Fix database typo wthdrawn)\n";
7139 SetVersion($DBversion);
7142 $DBversion = "3.13.00.017";
7143 if ( CheckVersion($DBversion) ) {
7144 $dbh->do(
7145 "INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OverDriveClientKey','','Client key for OverDrive integration','30','Free')"
7147 $dbh->do(
7148 "INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OverDriveClientSecret','','Client key for OverDrive integration','30','YesNo')"
7150 $dbh->do(
7151 "INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OverDriveLibraryID','','Library ID for OverDrive integration','','Integer')"
7153 print "Upgrade to $DBversion done (Bug 10320 - Show results from library's OverDrive collection in OPAC search)\n";
7154 SetVersion($DBversion);
7157 $DBversion = "3.13.00.018";
7158 if ( CheckVersion($DBversion) ) {
7159 $dbh->do(qq{DROP TABLE IF EXISTS aqorders_transfers;});
7160 $dbh->do(qq{
7161 CREATE TABLE aqorders_transfers (
7162 ordernumber_from int(11) NULL,
7163 ordernumber_to int(11) NULL,
7164 timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
7165 UNIQUE KEY ordernumber_from (ordernumber_from),
7166 UNIQUE KEY ordernumber_to (ordernumber_to),
7167 CONSTRAINT aqorders_transfers_ordernumber_from FOREIGN KEY (ordernumber_from) REFERENCES aqorders (ordernumber) ON DELETE SET NULL ON UPDATE CASCADE,
7168 CONSTRAINT aqorders_transfers_ordernumber_to FOREIGN KEY (ordernumber_to) REFERENCES aqorders (ordernumber) ON DELETE SET NULL ON UPDATE CASCADE
7169 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7171 print "Upgrade to $DBversion done (Bug 5349: Add aqorders_transfers table)\n";
7172 SetVersion($DBversion);
7175 $DBversion = "3.13.00.019";
7176 if ( CheckVersion($DBversion) ) {
7177 $dbh->do("ALTER TABLE itemtypes ADD COLUMN checkinmsg VARCHAR(255) AFTER summary;");
7178 $dbh->do("ALTER TABLE itemtypes ADD COLUMN checkinmsgtype CHAR(16) DEFAULT 'message' NOT NULL AFTER checkinmsg;");
7179 print "Upgrade to $DBversion done (Bug 10513 - Light up a warning/message when returning a chosen item type)\n";
7180 SetVersion($DBversion);
7183 $DBversion = "3.13.00.020";
7184 if ( CheckVersion($DBversion) ) {
7185 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('WhenLostForgiveFine','0',NULL,'If ON, Forgives the fines on an item when it is lost.','YesNo')");
7186 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('WhenLostChargeReplacementFee','1',NULL,'If ON, Charge the replacement price when a patron loses an item.','YesNo')");
7187 print "Upgrade to $DBversion done (Bug 7639: system preferences to forgive fines on lost items)\n";
7188 SetVersion($DBversion);
7191 $DBversion ="3.13.00.021";
7192 if ( CheckVersion($DBversion) ) {
7193 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('ConfirmFutureHolds','0','Number of days for confirming future holds','','Integer');");
7194 print "Upgrade to $DBversion done (Bug 9761: Add ConfirmFutureHolds pref)\n";
7195 SetVersion($DBversion);
7198 $DBversion = "3.13.00.022";
7199 if ( CheckVersion($DBversion) ) {
7200 $dbh->do("DELETE from auth_tag_structure WHERE tagfield IN ('68a','68b')");
7201 $dbh->do("DELETE from auth_subfield_structure WHERE tagfield IN ('68a','68b')");
7202 print "Upgrade to $DBversion done (Bug 10687 - Delete erroneous tags 68a and 68b on default MARC21 auth framework)\n";
7203 SetVersion($DBversion);
7206 $DBversion = "3.13.00.023";
7207 if ( CheckVersion($DBversion) ) {
7208 $dbh->do("ALTER TABLE borrowers CHANGE password password VARCHAR(60);");
7209 print "Upgrade to $DBversion done (Bug 9611 upgrading password storage system)\n";
7210 SetVersion($DBversion);
7213 $DBversion = "3.13.00.024";
7214 if ( CheckVersion($DBversion) ) {
7215 $dbh->do(q{ALTER TABLE z3950servers ADD COLUMN recordtype VARCHAR(45) NOT NULL DEFAULT 'biblio' AFTER description;});
7216 print "Upgrade to $DBversion done (Bug 10096 - Add a Z39.50 interface for authority searching)\n";
7219 $DBversion = "3.13.00.025";
7220 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
7221 $dbh->do("ALTER TABLE oai_sets_mappings ADD COLUMN operator varchar(8) NOT NULL default 'equal' AFTER marcsubfield;");
7222 print "Upgrade to $DBversion done (Bug 9295: OAI notequal: add operator column to OAI mappings table)\n";
7223 SetVersion ($DBversion);
7226 $DBversion = "3.13.00.026";
7227 if ( CheckVersion($DBversion) ) {
7228 $dbh->do(q|
7229 ALTER TABLE auth_subfield_structure ADD COLUMN defaultvalue TEXT DEFAULT NULL AFTER frameworkcode
7231 print "Upgrade to $DBversion done (Bug 10602: Add the column auth_subfield_structure.defaultvalue)\n";
7232 SetVersion($DBversion);
7235 $DBversion = "3.13.00.027";
7236 if ( CheckVersion($DBversion) ) {
7237 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('AllowOfflineCirculation','0','','If on, enables HTML5 offline circulation functionality.','YesNo')");
7238 print "Upgrade to $DBversion done (Bug 10240: Add syspref AllowOfflineCirculation)\n";
7239 SetVersion ($DBversion);
7242 $DBversion = "3.13.00.028";
7243 if ( CheckVersion($DBversion) ) {
7244 $dbh->do(q{
7245 ALTER TABLE export_format ADD type VARCHAR(255) DEFAULT 'marc' AFTER encoding
7247 $dbh->do(q{
7248 ALTER TABLE export_format CHANGE marcfields content mediumtext NOT NULL
7250 print "Upgrade to $DBversion done (Bug 10853: Add new field export_format.type and rename export_format.marcfields with export_format.content)\n";
7251 SetVersion($DBversion);
7254 $DBversion = "3.13.00.029";
7255 if ( CheckVersion($DBversion) ) {
7256 $dbh->do(q{
7257 INSERT IGNORE INTO export_format( profile, description, content, csv_separator, type )
7258 VALUES ( "issues to claim", "Default CSV export for serial issue claims",
7259 "SUPPLIER=aqbooksellers.name|TITLE=subscription.title|ISSUE NUMBER=serial.serialseq|LATE SINCE=serial.planneddate",
7260 ",", "sql" )
7262 print "Upgrade to $DBversion done (Bug 10854: Add the default CSV profile for claiming issues)\n";
7263 SetVersion($DBversion);
7266 $DBversion = "3.13.00.030";
7267 if ( CheckVersion($DBversion) ) {
7268 $dbh->do(qq{
7269 DELETE FROM patronimage WHERE NOT EXISTS (SELECT * FROM borrowers WHERE borrowers.cardnumber = patronimage.cardnumber)
7272 $dbh->do(qq{
7273 ALTER TABLE patronimage ADD borrowernumber INT( 11 ) NULL FIRST
7276 $dbh->{AutoCommit} = 0;
7277 $dbh->{RaiseError} = 1;
7279 eval {
7280 $dbh->do(qq{
7281 UPDATE patronimage LEFT JOIN borrowers USING ( cardnumber ) SET patronimage.borrowernumber = borrowers.borrowernumber
7283 $dbh->commit();
7286 if ($@) {
7287 print "Upgrade to $DBversion done (Bug 10636 - patronimage should have borrowernumber as PK, not cardnumber) failed! Transaction aborted because $@\n";
7288 eval { $dbh->rollback };
7290 else {
7291 $dbh->do(qq{
7292 ALTER TABLE patronimage DROP FOREIGN KEY patronimage_fk1
7294 $dbh->do(qq{
7295 ALTER TABLE patronimage DROP PRIMARY KEY, ADD PRIMARY KEY( borrowernumber )
7297 $dbh->do(qq{
7298 ALTER TABLE patronimage DROP cardnumber
7300 $dbh->do(qq{
7301 ALTER TABLE patronimage ADD FOREIGN KEY ( borrowernumber ) REFERENCES borrowers ( borrowernumber ) ON DELETE CASCADE ON UPDATE CASCADE
7304 print "Upgrade to $DBversion done (Bug 10636 - patronimage should have borrowernumber as PK, not cardnumber)\n";
7305 SetVersion($DBversion);
7308 $dbh->{AutoCommit} = 1;
7309 $dbh->{RaiseError} = 0;
7312 $DBversion = "3.13.00.031";
7313 if ( CheckVersion($DBversion) ) {
7315 $dbh->do(q{
7316 CREATE TABLE IF NOT EXISTS `patron_lists` (
7317 patron_list_id int(11) NOT NULL AUTO_INCREMENT,
7318 name varchar(255) CHARACTER SET utf8 NOT NULL,
7319 owner int(11) NOT NULL,
7320 PRIMARY KEY (patron_list_id),
7321 KEY owner (owner)
7322 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7325 $dbh->do(q{
7326 ALTER TABLE `patron_lists`
7327 ADD CONSTRAINT patron_lists_ibfk_1 FOREIGN KEY (`owner`) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE;
7330 $dbh->do(q{
7331 CREATE TABLE patron_list_patrons (
7332 patron_list_patron_id int(11) NOT NULL AUTO_INCREMENT,
7333 patron_list_id int(11) NOT NULL,
7334 borrowernumber int(11) NOT NULL,
7335 PRIMARY KEY (patron_list_patron_id),
7336 KEY patron_list_id (patron_list_id),
7337 KEY borrowernumber (borrowernumber)
7338 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7341 $dbh->do(q{
7342 ALTER TABLE `patron_list_patrons`
7343 ADD CONSTRAINT patron_list_patrons_ibfk_1 FOREIGN KEY (patron_list_id) REFERENCES patron_lists (patron_list_id) ON DELETE CASCADE ON UPDATE CASCADE,
7344 ADD CONSTRAINT patron_list_patrons_ibfk_2 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE;
7347 $dbh->do(q{
7348 INSERT INTO permissions (module_bit, code, description) VALUES
7349 (13, 'manage_patron_lists', 'Add, edit and delete patron lists and their contents')
7352 print "Upgrade to $DBversion done (Bug 10565 - Add a 'Patron List' feature for storing and manipulating collections of patrons)\n";
7353 SetVersion($DBversion);
7356 $DBversion = "3.13.00.032";
7357 if ( CheckVersion($DBversion) ) {
7358 $dbh->do("ALTER TABLE aqorders ADD COLUMN orderstatus varchar(16) DEFAULT 'new' AFTER parent_ordernumber");
7359 $dbh->do("UPDATE aqorders SET orderstatus='ordered' WHERE basketno IN (SELECT basketno FROM aqbasket WHERE closedate IS NOT NULL)");
7360 $dbh->do(q{
7361 UPDATE aqorders SET orderstatus='partial'
7362 WHERE quantity > quantityreceived
7363 AND quantityreceived > 0
7364 AND ordernumber IN (
7365 SELECT parent_ordernumber
7366 FROM (
7367 SELECT DISTINCT(parent_ordernumber)
7368 FROM aqorders
7369 WHERE ordernumber != parent_ordernumber
7370 ) AS aq
7372 AND basketno IN (SELECT basketno FROM aqbasket WHERE closedate IS NOT NULL)
7374 $dbh->do("UPDATE aqorders SET orderstatus='complete' WHERE quantity=quantityreceived");
7375 $dbh->do("UPDATE aqorders SET orderstatus='cancelled' WHERE datecancellationprinted IS NOT NULL");
7376 print "Upgrade to $DBversion done (Bug 5336: Add the new column aqorders.orderstatus)\n";
7377 SetVersion($DBversion);
7380 $DBversion = "3.13.00.033";
7381 if ( CheckVersion($DBversion) ) {
7382 $dbh->do(qq|
7383 DROP TABLE IF EXISTS subscription_frequencies
7385 $dbh->do(qq|
7386 CREATE TABLE subscription_frequencies (
7387 id INTEGER NOT NULL AUTO_INCREMENT,
7388 description TEXT NOT NULL,
7389 displayorder INT DEFAULT NULL,
7390 unit ENUM('day','week','month','year') DEFAULT NULL,
7391 unitsperissue INTEGER NOT NULL DEFAULT '1',
7392 issuesperunit INTEGER NOT NULL DEFAULT '1',
7393 PRIMARY KEY (id)
7394 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
7397 $dbh->do(qq|
7398 DROP TABLE IF EXISTS subscription_numberpatterns
7400 $dbh->do(qq|
7401 CREATE TABLE subscription_numberpatterns (
7402 id INTEGER NOT NULL AUTO_INCREMENT,
7403 label VARCHAR(255) NOT NULL,
7404 displayorder INTEGER DEFAULT NULL,
7405 description TEXT NOT NULL,
7406 numberingmethod VARCHAR(255) NOT NULL,
7407 label1 VARCHAR(255) DEFAULT NULL,
7408 add1 INTEGER DEFAULT NULL,
7409 every1 INTEGER DEFAULT NULL,
7410 whenmorethan1 INTEGER DEFAULT NULL,
7411 setto1 INTEGER DEFAULT NULL,
7412 numbering1 VARCHAR(255) DEFAULT NULL,
7413 label2 VARCHAR(255) DEFAULT NULL,
7414 add2 INTEGER DEFAULT NULL,
7415 every2 INTEGER DEFAULT NULL,
7416 whenmorethan2 INTEGER DEFAULT NULL,
7417 setto2 INTEGER DEFAULT NULL,
7418 numbering2 VARCHAR(255) DEFAULT NULL,
7419 label3 VARCHAR(255) DEFAULT NULL,
7420 add3 INTEGER DEFAULT NULL,
7421 every3 INTEGER DEFAULT NULL,
7422 whenmorethan3 INTEGER DEFAULT NULL,
7423 setto3 INTEGER DEFAULT NULL,
7424 numbering3 VARCHAR(255) DEFAULT NULL,
7425 PRIMARY KEY (id)
7426 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
7429 $dbh->do(qq|
7430 INSERT INTO subscription_frequencies (description, unit, unitsperissue, issuesperunit, displayorder)
7431 VALUES
7432 ('2/day', 'day', 1, 2, 1),
7433 ('1/day', 'day', 1, 1, 2),
7434 ('3/week', 'week', 1, 3, 3),
7435 ('1/week', 'week', 1, 1, 4),
7436 ('1/2 weeks', 'week', 2, 1, 5),
7437 ('1/3 weeks', 'week', 3, 1, 6),
7438 ('1/month', 'month', 1, 1, 7),
7439 ('1/2 months', 'month', 2, 1, 8),
7440 ('1/3 months', 'month', 3, 1, 9),
7441 ('2/year', 'month', 6, 1, 10),
7442 ('1/year', 'year', 1, 1, 11),
7443 ('1/2 year', 'year', 2, 1, 12),
7444 ('Irregular', NULL, 1, 1, 13)
7447 # Used to link existing subscription to newly created frequencies
7448 my $frequencies_mapping = { # keys are old frequency numbers, values are the new ones
7449 1 => 2, # daily (n/week)
7450 2 => 4, # 1/week
7451 3 => 5, # 1/2 weeks
7452 4 => 6, # 1/3 weeks
7453 5 => 7, # 1/month
7454 6 => 8, # 1/2 months (6/year)
7455 7 => 9, # 1/3 months (1/quarter)
7456 8 => 9, # 1/quarter (seasonal)
7457 9 => 10, # 2/year
7458 10 => 11, # 1/year
7459 11 => 12, # 1/2 years
7460 12 => 1, # 2/day
7461 16 => 13, # Without periodicity
7462 32 => 13, # Irregular
7463 48 => 13 # Unknown
7466 $dbh->do(qq|
7467 INSERT INTO subscription_numberpatterns
7468 (label, displayorder, description, numberingmethod,
7469 label1, add1, every1, whenmorethan1, setto1, numbering1,
7470 label2, add2, every2, whenmorethan2, setto2, numbering2,
7471 label3, add3, every3, whenmorethan3, setto3, numbering3)
7472 VALUES
7473 ('Number', 1, 'Simple Numbering method', 'No.{X}',
7474 'Number', 1, 1, 99999, 1, NULL,
7475 NULL, NULL, NULL, NULL, NULL, NULL,
7476 NULL, NULL, NULL, NULL, NULL, NULL),
7478 ('Volume, Number, Issue', 2, 'Volume Number Issue 1', 'Vol.{X}, Number {Y}, Issue {Z}',
7479 'Volume', 1, 48, 99999, 1, NULL,
7480 'Number', 1, 4, 12, 1, NULL,
7481 'Issue', 1, 1, 4, 1, NULL),
7483 ('Volume, Number', 3, 'Volume Number 1', 'Vol {X}, No {Y}',
7484 'Volume', 1, 12, 99999, 1, NULL,
7485 'Number', 1, 1, 12, 1, NULL,
7486 NULL, NULL, NULL, NULL, NULL, NULL),
7488 ('Seasonal', 4, 'Season Year', '{X} {Y}',
7489 'Season', 1, 1, 3, 0, 'season',
7490 'Year', 1, 4, 99999, 1, NULL,
7491 NULL, NULL, NULL, NULL, NULL, NULL)
7494 $dbh->do(qq|
7495 ALTER TABLE subscription
7496 MODIFY COLUMN numberpattern INTEGER DEFAULT NULL,
7497 MODIFY COLUMN periodicity INTEGER DEFAULT NULL
7500 # Update existing subscriptions
7502 my $query = qq|
7503 SELECT subscriptionid, periodicity, numberingmethod,
7504 add1, every1, whenmorethan1, setto1,
7505 add2, every2, whenmorethan2, setto2,
7506 add3, every3, whenmorethan3, setto3
7507 FROM subscription
7508 ORDER BY subscriptionid
7510 my $sth = $dbh->prepare($query);
7511 $sth->execute;
7512 my $insert_numberpatterns_sth = $dbh->prepare(qq|
7513 INSERT INTO subscription_numberpatterns
7514 (label, displayorder, description, numberingmethod,
7515 label1, add1, every1, whenmorethan1, setto1, numbering1,
7516 label2, add2, every2, whenmorethan2, setto2, numbering2,
7517 label3, add3, every3, whenmorethan3, setto3, numbering3)
7518 VALUES
7519 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
7521 my $check_numberpatterns_sth = $dbh->prepare(qq|
7522 SELECT * FROM subscription_numberpatterns
7523 WHERE (add1 = ? OR (add1 IS NULL AND ? IS NULL)) AND (add2 = ? OR (add2 IS NULL AND ? IS NULL))
7524 AND (add3 = ? OR (add3 IS NULL AND ? IS NULL)) AND (every1 = ? OR (every1 IS NULL AND ? IS NULL))
7525 AND (every2 = ? OR (every2 IS NULL AND ? IS NULL)) AND (every3 = ? OR (every3 IS NULL AND ? IS NULL))
7526 AND (whenmorethan1 = ? OR (whenmorethan1 IS NULL AND ? IS NULL)) AND (whenmorethan2 = ? OR (whenmorethan2 IS NULL AND ? IS NULL))
7527 AND (whenmorethan3 = ? OR (whenmorethan3 IS NULL AND ? IS NULL)) AND (setto1 = ? OR (setto1 IS NULL AND ? IS NULL))
7528 AND (setto2 = ? OR (setto2 IS NULL AND ? IS NULL)) AND (setto3 = ? OR (setto3 IS NULL AND ? IS NULL))
7529 AND (numberingmethod = ? OR (numberingmethod IS NULL AND ? IS NULL))
7530 LIMIT 1
7532 my $update_subscription_sth = $dbh->prepare(qq|
7533 UPDATE subscription
7534 SET numberpattern = ?,
7535 periodicity = ?
7536 WHERE subscriptionid = ?
7539 my $i = 1;
7540 while(my $sub = $sth->fetchrow_hashref) {
7541 $check_numberpatterns_sth->execute(
7542 $sub->{add1}, $sub->{add1}, $sub->{add2}, $sub->{add2}, $sub->{add3}, $sub->{add3},
7543 $sub->{every1}, $sub->{every1}, $sub->{every2}, $sub->{every2}, $sub->{every3}, $sub->{every3},
7544 $sub->{whenmorethan1}, $sub->{whenmorethan1}, $sub->{whenmorethan2}, $sub->{whenmorethan2},
7545 $sub->{whenmorethan3}, $sub->{whenmorethan3}, $sub->{setto1}, $sub->{setto1}, $sub->{setto2},
7546 $sub->{setto2}, $sub->{setto3}, $sub->{setto3}, $sub->{numberingmethod}, $sub->{numberingmethod}
7548 my $p = $check_numberpatterns_sth->fetchrow_hashref;
7549 if (defined $p) {
7550 # Pattern already exists, link to it
7551 $update_subscription_sth->execute($p->{id},
7552 $frequencies_mapping->{$sub->{periodicity}},
7553 $sub->{subscriptionid});
7554 } else {
7555 # Create a new numbering pattern for this subscription
7556 my $ok = $insert_numberpatterns_sth->execute(
7557 "Backup pattern $i", 4+$i, "Automatically created pattern by updatedatabase", $sub->{numberingmethod},
7558 "X", $sub->{add1}, $sub->{every1}, $sub->{whenmorethan1}, $sub->{setto1}, undef,
7559 "Y", $sub->{add2}, $sub->{every2}, $sub->{whenmorethan2}, $sub->{setto2}, undef,
7560 "Z", $sub->{add3}, $sub->{every3}, $sub->{whenmorethan3}, $sub->{setto3}, undef
7562 if($ok) {
7563 my $id = $dbh->last_insert_id(undef, undef, 'subscription_numberpatterns', undef);
7564 # Link to subscription_numberpatterns and subscription_frequencies
7565 $update_subscription_sth->execute($id,
7566 $frequencies_mapping->{$sub->{periodicity}},
7567 $sub->{subscriptionid});
7569 $i++;
7573 # Remove now useless columns
7574 $dbh->do(qq|
7575 ALTER TABLE subscription
7576 DROP COLUMN numberingmethod,
7577 DROP COLUMN add1,
7578 DROP COLUMN every1,
7579 DROP COLUMN whenmorethan1,
7580 DROP COLUMN setto1,
7581 DROP COLUMN add2,
7582 DROP COLUMN every2,
7583 DROP COLUMN whenmorethan2,
7584 DROP COLUMN setto2,
7585 DROP COLUMN add3,
7586 DROP COLUMN every3,
7587 DROP COLUMN whenmorethan3,
7588 DROP COLUMN setto3,
7589 DROP COLUMN dow,
7590 DROP COLUMN issuesatonce,
7591 DROP COLUMN hemisphere,
7592 ADD COLUMN countissuesperunit INTEGER NOT NULL DEFAULT 1 AFTER periodicity,
7593 ADD COLUMN skip_serialseq BOOLEAN NOT NULL DEFAULT 0 AFTER irregularity,
7594 ADD COLUMN locale VARCHAR(80) DEFAULT NULL AFTER numberpattern,
7595 ADD CONSTRAINT subscription_ibfk_1 FOREIGN KEY (periodicity) REFERENCES subscription_frequencies (id) ON DELETE SET NULL ON UPDATE CASCADE,
7596 ADD CONSTRAINT subscription_ibfk_2 FOREIGN KEY (numberpattern) REFERENCES subscription_numberpatterns (id) ON DELETE SET NULL ON UPDATE CASCADE
7599 # Set firstacquidate if not already set (firstacquidate is now mandatory)
7600 my $get_first_planneddate_sth = $dbh->prepare(qq|
7601 SELECT planneddate
7602 FROM serial
7603 WHERE subscriptionid = ?
7604 ORDER BY serialid
7605 LIMIT 1
7607 my $update_firstacquidate_sth = $dbh->prepare(qq|
7608 UPDATE subscription
7609 SET firstacquidate = ?
7610 WHERE subscriptionid = ?
7612 my $get_subscriptions_sth = $dbh->prepare(qq|
7613 SELECT subscriptionid, startdate
7614 FROM subscription
7615 WHERE firstacquidate IS NULL
7616 OR firstacquidate = '0000-00-00'
7618 $get_subscriptions_sth->execute;
7619 while ( my ($subscriptionid, $startdate) = $get_subscriptions_sth->fetchrow ) {
7620 # Try to get the planned date of the first serial
7621 $get_first_planneddate_sth->execute($subscriptionid);
7622 my ($first_planneddate) = $get_first_planneddate_sth->fetchrow;
7623 if ($first_planneddate and $first_planneddate =~ /^\d{4}-\d{2}-\d{2}$/) {
7624 $update_firstacquidate_sth->execute($first_planneddate, $subscriptionid);
7625 } else {
7626 # Defaults to subscription start date
7627 $update_firstacquidate_sth->execute($startdate, $subscriptionid);
7631 print "Upgrade to $DBversion done (Bug 7688: add subscription_frequencies and subscription_numberpatterns tables)\n";
7632 SetVersion($DBversion);
7635 $DBversion = "3.13.00.034";
7636 if ( CheckVersion($DBversion) ) {
7637 $dbh->do("
7638 ALTER TABLE `import_batches`
7639 CHANGE `item_action` `item_action`
7640 ENUM( 'always_add', 'add_only_for_matches', 'add_only_for_new', 'ignore', 'replace' )
7641 NOT NULL DEFAULT 'always_add'
7643 print "Upgrade to $DBversion done (Bug 7131 - way to overlay items in in marc import)\n";
7644 SetVersion($DBversion);
7647 $DBversion ="3.13.00.035";
7648 if ( CheckVersion($DBversion) ) {
7649 $dbh->do(q{
7650 CREATE TABLE borrower_debarments (
7651 borrower_debarment_id int(11) NOT NULL AUTO_INCREMENT,
7652 borrowernumber int(11) NOT NULL,
7653 expiration date DEFAULT NULL,
7654 `type` enum('SUSPENSION','OVERDUES','MANUAL') NOT NULL DEFAULT 'MANUAL',
7655 `comment` text,
7656 manager_id int(11) DEFAULT NULL,
7657 created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
7658 updated timestamp NULL DEFAULT NULL,
7659 PRIMARY KEY (borrower_debarment_id),
7660 KEY borrowernumber (borrowernumber) ,
7661 CONSTRAINT `borrower_debarments_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
7662 ON DELETE CASCADE ON UPDATE CASCADE
7663 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7666 # debarments with end date
7667 $dbh->do(q{
7668 INSERT INTO borrower_debarments ( borrowernumber, expiration, comment ) SELECT borrowernumber, debarred, debarredcomment FROM borrowers WHERE debarred IS NOT NULL AND debarred <> '9999-12-31'
7670 # debarments with no end date
7671 $dbh->do(q{
7672 INSERT INTO borrower_debarments ( borrowernumber, comment ) SELECT borrowernumber, debarredcomment FROM borrowers WHERE debarred = '9999-12-31'
7675 $dbh->do(q{
7676 INSERT IGNORE INTO systempreferences (variable,value,explanation,type) VALUES
7677 ('AutoRemoveOverduesRestrictions','0','Defines whether an OVERDUES debarment should be lifted automatically if all overdue items are returned by the patron.','YesNo')
7680 print "Upgrade to $DBversion done (Bug 2720 - Overdues which debar automatically should undebar automatically when returned)\n";
7681 SetVersion($DBversion);
7684 $DBversion = "3.13.00.036";
7685 if ( CheckVersion($DBversion) ) {
7686 $dbh->do(qq{
7687 INSERT INTO systempreferences (variable, value, explanation, options, type)
7688 VALUES ('StaffDetailItemSelection', '1', 'Enable item selection in record detail page', NULL, 'YesNo')
7690 print "Upgrade to $DBversion done (Add system preference StaffDetailItemSelection)\n";
7691 SetVersion($DBversion);
7694 $DBversion = "3.13.00.037";
7695 if ( CheckVersion($DBversion) ) {
7696 #add phone if it is not there already (explains the ignore option)
7697 $dbh->do("
7698 INSERT IGNORE INTO message_transport_types (message_transport_type) values ('phone');
7700 print "Upgrade to $DBversion done (Bug 10572: Add phone to message_transport_types table for new installs)\n";
7701 SetVersion($DBversion);
7704 $DBversion = "3.13.00.038";
7705 if ( CheckVersion($DBversion) ) {
7706 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES(15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependentBranches is used)')");
7707 print "Upgrade to $DBversion done (Bug 8435: Add superserials permission)\n";
7708 SetVersion($DBversion);
7711 $DBversion = "3.13.00.039";
7712 if ( CheckVersion($DBversion) ) {
7713 $dbh->do("
7714 ALTER TABLE aqbasket ADD branch varchar(10) default NULL
7716 $dbh->do("
7717 ALTER TABLE aqbasket
7718 ADD CONSTRAINT aqbasket_ibfk_4 FOREIGN KEY (branch)
7719 REFERENCES branches (branchcode)
7720 ON UPDATE CASCADE ON DELETE SET NULL
7722 $dbh->do("
7723 DROP TABLE IF EXISTS aqbasketusers
7725 $dbh->do("
7726 CREATE TABLE aqbasketusers (
7727 basketno int(11) NOT NULL,
7728 borrowernumber int(11) NOT NULL,
7729 PRIMARY KEY (basketno,borrowernumber),
7730 CONSTRAINT aqbasketusers_ibfk_1 FOREIGN KEY (basketno) REFERENCES aqbasket (basketno) ON DELETE CASCADE ON UPDATE CASCADE,
7731 CONSTRAINT aqbasketusers_ibfk_2 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE
7732 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7734 $dbh->do("
7735 INSERT INTO permissions (module_bit, code, description)
7736 VALUES (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them')
7739 print "Upgrade to $DBversion done (Add branch and users list to baskets. "
7740 . "New permission order_manage_all)\n";
7741 SetVersion($DBversion);
7744 $DBversion = "3.13.00.040";
7745 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
7746 $dbh->do("CREATE TABLE IF NOT EXISTS marc_modification_templates (
7747 template_id int(11) NOT NULL auto_increment,
7748 name text NOT NULL,
7749 PRIMARY KEY (template_id)
7750 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
7753 $dbh->do("
7754 CREATE TABLE IF NOT EXISTS marc_modification_template_actions (
7755 mmta_id int(11) NOT NULL auto_increment,
7756 template_id int(11) NOT NULL,
7757 ordering int(3) NOT NULL,
7758 action enum('delete_field','update_field','move_field','copy_field') NOT NULL,
7759 field_number smallint(6) NOT NULL default '0',
7760 from_field varchar(3) NOT NULL,
7761 from_subfield varchar(1) NULL,
7762 field_value varchar(100) default NULL,
7763 to_field varchar(3) default NULL,
7764 to_subfield varchar(1) default NULL,
7765 to_regex_search text,
7766 to_regex_replace text,
7767 to_regex_modifiers varchar(8) default '',
7768 conditional enum('if','unless') default NULL,
7769 conditional_field varchar(3) default NULL,
7770 conditional_subfield varchar(1) default NULL,
7771 conditional_comparison enum('exists','not_exists','equals','not_equals') default NULL,
7772 conditional_value text,
7773 conditional_regex tinyint(1) NOT NULL default '0',
7774 description text,
7775 PRIMARY KEY (mmta_id),
7776 CONSTRAINT `mmta_ibfk_1` FOREIGN KEY (`template_id`) REFERENCES `marc_modification_templates` (`template_id`) ON DELETE CASCADE ON UPDATE CASCADE
7777 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7780 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ('13', 'marc_modification_templates', 'Manage marc modification templates')");
7782 print "Upgrade to $DBversion done ( Bug 8015: Added tables for MARC Modification Framework )\n";
7783 SetVersion($DBversion);
7786 $DBversion = "3.13.00.041";
7787 if(CheckVersion($DBversion)) {
7788 $dbh->do(q{
7789 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AcqItemSetSubfieldsWhenReceived','','Set subfields for item when items are created when receiving (e.g. o=5|a="foo bar")','','Free');
7791 print "Upgrade to $DBversion done (Bug 10986: Added AcqItemSetSubfieldsWhenReceived syspref)\n";
7792 SetVersion($DBversion);
7795 $DBversion = "3.13.00.042";
7796 if(CheckVersion($DBversion)) {
7797 print "Upgrade to $DBversion done (Koha 3.14 beta)\n";
7798 SetVersion($DBversion);
7801 $DBversion = "3.13.00.043";
7802 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
7803 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('SearchEngine','Zebra','Solr|Zebra','Search Engine','Choice')");
7804 print "Upgrade to $DBversion done (Bug 11196: Add system preference SearchEngine if missing )\n";
7805 SetVersion($DBversion);
7808 $DBversion = "3.14.00.000";
7809 if ( CheckVersion($DBversion) ) {
7810 print "Upgrade to $DBversion done (3.14.0 release)\n";
7811 SetVersion ($DBversion);
7814 $DBversion = '3.15.00.000';
7815 if ( CheckVersion($DBversion) ) {
7816 print "Upgrade to $DBversion done (the road goes ever on)\n";
7817 SetVersion ($DBversion);
7820 $DBversion = "3.15.00.001";
7821 if ( CheckVersion($DBversion) ) {
7822 $dbh->do("UPDATE systempreferences SET value='clear' where variable = 'CircAutoPrintQuickSlip' and value = '0'");
7823 $dbh->do("UPDATE systempreferences SET value='qslip' where variable = 'CircAutoPrintQuickSlip' and value = '1'");
7824 $dbh->do("UPDATE systempreferences SET explanation = 'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window, Display a print slip window or Clear the screen.', type = 'Choice' where variable = 'CircAutoPrintQuickSlip'");
7825 print "Upgrade to $DBversion done (Bug 11040: Add option to print full slip when checking out a null barcode)\n";
7826 SetVersion($DBversion);
7829 $DBversion = "3.15.00.002";
7830 if(CheckVersion($DBversion)) {
7831 $dbh->do("ALTER TABLE deleteditems MODIFY materials text;");
7832 print "Upgrade to $DBversion done (Bug 11275: alter deleteditems.materials from varchar(10) to text)\n";
7833 SetVersion($DBversion);
7836 $DBversion = "3.15.00.003";
7837 if ( CheckVersion($DBversion) ) {
7838 $dbh->do(q{
7839 UPDATE accountlines
7840 SET description = ''
7841 WHERE description IN (
7842 ' New Card',
7843 ' Fine',
7844 ' Sundry',
7845 'Writeoff',
7846 ' Account Management fee',
7847 'Payment,thanks', 'Payment,thanks - ',
7848 ' Lost Item'
7851 print "Upgrade to $DBversion done (Bug 2546: Update fine descriptions)\n";
7852 SetVersion($DBversion);
7855 $DBversion = "3.15.00.004";
7856 if ( CheckVersion($DBversion) ) {
7857 if ( C4::Context->preference("marcflavour") eq 'MARC21' ) {
7858 $dbh->do(qq{
7859 INSERT IGNORE INTO marc_subfield_structure (tagfield, tagsubfield, liblibrarian, libopac, repeatable, mandatory,
7860 kohafield, tab, authorised_value, authtypecode, value_builder, isurl, hidden, frameworkcode, seealso, link,
7861 defaultvalue) VALUES
7862 ('015', 'q', 'Qualifying information', 'Qualifying information', 1, 0, '', 0, '', '', '', 0, 0, '', '', '', NULL),
7863 ('020', 'q', 'Qualifying information', 'Qualifying information', 1, 0, '', 0, '', '', '', 0, 0, '', '', '', NULL),
7864 ('024', 'q', 'Qualifying information', 'Qualifying information', 1, 0, '', 0, '', '', '', 0, 0, '', '', '', NULL),
7865 ('027', 'q', 'Qualifying information', 'Qualifying information', 1, 0, '', 0, '', '', '', 0, 0, '', '', '', NULL),
7866 ('800', '7', 'Control subfield', 'Control subfield', 0, 0, '', 8, '', '', '', NULL, -6, '', '', '', NULL),
7867 ('810', '7', 'Control subfield', 'Control subfield', 0, 0, '', 8, '', '', '', NULL, -6, '', '', '', NULL),
7868 ('811', '7', 'Control subfield', 'Control subfield', 0, 0, '', 8, '', '', '', NULL, -6, '', '', '', NULL),
7869 ('830', '7', 'Control subfield', 'Control subfield', 0, 0, '', 8, '', '', '', NULL, -6, '', '', '', NULL);
7871 $dbh->do(qq{
7872 INSERT IGNORE INTO auth_subfield_structure (authtypecode, tagfield, tagsubfield, liblibrarian, libopac, repeatable,
7873 mandatory, tab, authorised_value, value_builder, seealso, isurl, hidden, linkid, kohafield, frameworkcode) VALUES
7874 ('', '020', 'q', 'Qualifying information', 'Qualifying information', 1, 0, 0, NULL, NULL, NULL, 0, 0, '', '', ''),
7875 ('', '024', 'q', 'Qualifying information', 'Qualifying information', 1, 0, 0, NULL, NULL, NULL, 0, 0, '', '', '');
7878 print "Upgrade to $DBversion done (Bug 10970 - Update MARC21 frameworks to Update Nr. 17 - DB update)\n";
7879 SetVersion($DBversion);
7882 $DBversion = "3.15.00.005";
7883 if ( CheckVersion($DBversion) ) {
7884 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('AcquisitionDetails', '1', '', 'Hide/Show acquisition details on the biblio detail page.', 'YesNo');");
7885 print "Upgrade to $DBversion done (Bug 8230: Add AcquisitionDetails system preference)\n";
7886 SetVersion ($DBversion);
7889 $DBversion = "3.15.00.006";
7890 if(CheckVersion($DBversion)) {
7891 $dbh->do(q{
7892 ALTER TABLE `borrowers`
7893 ADD KEY `surname_idx` (`surname`(255)),
7894 ADD KEY `firstname_idx` (`firstname`(255)),
7895 ADD KEY `othernames_idx` (`othernames`(255))
7897 print "Upgrade to $DBversion done (Bug 11249 - Add DB indexes on borrower names)\n";
7898 SetVersion($DBversion);
7901 $DBversion = "3.15.00.007";
7902 if ( CheckVersion($DBversion) ) {
7903 $dbh->do("ALTER TABLE items ADD itemlost_on DATETIME NULL AFTER itemlost");
7904 $dbh->do("ALTER TABLE items ADD withdrawn_on DATETIME NULL AFTER withdrawn");
7905 $dbh->do("ALTER TABLE deleteditems ADD itemlost_on DATETIME NULL AFTER itemlost");
7906 $dbh->do("ALTER TABLE deleteditems ADD withdrawn_on DATETIME NULL AFTER withdrawn");
7907 print "Upgrade to $DBversion done (Bug 9673 - Track when items are marked as lost or withdrawn)\n";
7908 SetVersion ($DBversion);
7911 $DBversion = "3.15.00.008";
7912 if ( CheckVersion($DBversion) ) {
7913 $dbh->do(q{
7914 ALTER TABLE collections_tracking CHANGE ctId collections_tracking_id integer(11) NOT NULL auto_increment;
7916 print "Upgrade to $DBversion done (Bug 11384) - change name of collections_tracker.ctId column)\n";
7917 SetVersion ($DBversion);
7920 $DBversion = "3.15.00.009";
7921 if ( CheckVersion($DBversion) ) {
7922 $dbh->do(q{
7923 ALTER TABLE suggestions MODIFY suggesteddate DATE NOT NULL
7925 print "Upgrade to $DBversion done (Bug 11391) - drop default value on suggestions.suggesteddate column)\n";
7926 SetVersion ($DBversion);
7929 $DBversion = "3.15.00.010";
7930 if(CheckVersion($DBversion)) {
7931 $dbh->do("ALTER TABLE deleteditems DROP COLUMN marc");
7932 print "Upgrade to $DBversion done (Bug 6331: remove obsolete column in deleteditems.marc)\n";
7933 SetVersion ($DBversion);
7936 $DBversion = "3.15.00.011";
7937 if(CheckVersion($DBversion)) {
7938 $dbh->do("UPDATE marc_subfield_structure SET maxlength=9999 WHERE maxlength IS NULL OR maxlength=0;");
7939 print "Upgrade to $DBversion done (Bug 8018: set 9999 as default max length for subfields)\n";
7940 SetVersion ($DBversion);
7943 $DBversion = "3.15.00.012";
7944 if ( CheckVersion($DBversion) ) {
7945 $dbh->do(q{
7946 INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'force_checkout', 'Force checkout if a limitation exists')
7948 $dbh->do(q{
7949 INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'manage_restrictions', 'Manage restrictions for accounts')
7951 $dbh->do(q{
7952 INSERT INTO user_permissions (borrowernumber, module_bit, code)
7953 SELECT user_permissions.borrowernumber, 1, 'force_checkout'
7954 FROM user_permissions
7955 LEFT JOIN borrowers USING(borrowernumber)
7956 WHERE borrowers.flags & (1 << 1)
7958 $dbh->do(q{
7959 INSERT INTO user_permissions (borrowernumber, module_bit, code)
7960 SELECT user_permissions.borrowernumber, 1, 'manage_restrictions'
7961 FROM user_permissions
7962 LEFT JOIN borrowers USING(borrowernumber)
7963 WHERE borrowers.flags & (1 << 1)
7966 print "Upgrade to $DBversion done (Bug 10863 - Add permissions force_checkout and manage_restrictions)\n";
7967 SetVersion($DBversion);
7970 $DBversion = "3.15.00.013";
7971 if(CheckVersion($DBversion)) {
7972 $dbh->do(q{
7973 UPDATE systempreferences
7974 SET explanation = 'Upon receiving items, update their subfields if they were created when placing an order (e.g. o=5|a="foo bar")'
7975 WHERE variable = "AcqItemSetSubfieldsWhenReceived"
7978 $dbh->do(q{
7979 UPDATE systempreferences
7980 SET value = ''
7981 WHERE variable = "AcqItemSetSubfieldsWhenReceived"
7982 AND value = "0"
7984 print "Upgrade to $DBversion done (Bug 11237: Update explanation and default value for AcqItemSetSubfieldsWhenReceived syspref)\n";
7985 SetVersion($DBversion);
7988 $DBversion = "3.15.00.014";
7989 if (CheckVersion($DBversion)) {
7990 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('SelfCheckReceiptPrompt', '1', 'NULL', 'If ON, print receipt dialog pops up when self checkout is finished.', 'YesNo');");
7991 print "Upgrade to $DBversion done (Bug 11415: add system preference for automatic self checkout receipt printing)\n";
7992 SetVersion($DBversion);
7995 $DBversion = "3.15.00.015";
7996 if (CheckVersion($DBversion)) {
7997 $dbh->do("INSERT INTO systempreferences ( variable, value, options, explanation, type ) VALUES
7998 ('OpacSuggestionManagedBy',1,'','Show the name of the staff member who managed a suggestion in OPAC','YesNo');");
7999 print "Upgrade to $DBversion done (Bug 10907: Add OpacSuggestionManagedBy system preference)\n";
8000 SetVersion($DBversion);
8003 $DBversion = "3.15.00.016";
8004 if (CheckVersion($DBversion)) {
8005 $dbh->do("ALTER TABLE biblioitems CHANGE url url TEXT NULL DEFAULT NULL");
8006 $dbh->do("ALTER TABLE deletedbiblioitems CHANGE url url TEXT NULL DEFAULT NULL");
8007 print "Upgrade to $DBversion done (Bug 11268 - Biblioitems URL field is too small for some URLs)\n";
8008 SetVersion($DBversion);
8011 $DBversion = "3.15.00.017";
8012 if(CheckVersion($DBversion)) {
8013 $dbh->do(q{
8014 UPDATE systempreferences
8015 SET explanation = 'Define the contents of UNIMARC authority control field 100 position 08-35'
8016 WHERE variable = "UNIMARCAuthorityField100"
8018 $dbh->do(q{
8019 UPDATE systempreferences
8020 SET explanation = 'Define the contents of MARC21 authority control field 008 position 06-39'
8021 WHERE variable = "MARCAuthorityControlField008"
8023 $dbh->do(q{
8024 UPDATE systempreferences
8025 SET explanation = 'Define MARC Organization Code for MARC21 records - http://www.loc.gov/marc/organizations/orgshome.html'
8026 WHERE variable = "MARCOrgCode"
8028 print "Upgrade to $DBversion done (Bug 11611 - fix possible confusion between UNIMARC and MARC21 in some sysprefs)\n";
8029 SetVersion($DBversion);
8032 $DBversion = "3.15.00.018";
8033 if ( CheckVersion($DBversion) ) {
8034 $dbh->{AutoCommit} = 0;
8035 $dbh->{RaiseError} = 1;
8037 eval {
8038 $dbh->selectcol_arrayref(q|SELECT COUNT(*) FROM roadtype|);
8040 unless ( $@ ) {
8041 my $av_added = $dbh->do(q|
8042 INSERT INTO authorised_values(category, authorised_value, lib, lib_opac)
8043 SELECT 'ROADTYPE', roadtypeid, road_type, road_type
8044 FROM roadtype;
8047 my $rt_deleted = $dbh->do(q|
8048 DELETE FROM roadtype
8051 if ( $av_added == $rt_deleted or $rt_deleted eq "0E0" ) {
8052 $dbh->do(q|
8053 DROP TABLE roadtype;
8055 $dbh->commit;
8056 print "Upgrade to $DBversion done (Bug 7372: Move road types from the roadtype table to the ROADTYPE authorised values)\n";
8057 SetVersion($DBversion);
8058 } else {
8059 print "Upgrade to $DBversion failed (Bug 7372: Move road types from the roadtype table to the ROADTYPE authorised values.\nTransaction aborted because $@\n)";
8060 $dbh->rollback;
8063 $dbh->{AutoCommit} = 1;
8064 $dbh->{RaiseError} = 0;
8067 $DBversion = "3.15.00.019";
8068 if ( CheckVersion($DBversion) ) {
8069 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('OpacMaxItemsToDisplay','50','','Max items to display at the OPAC on a biblio detail','Integer')");
8070 print "Upgrade to $DBversion done (Bug 11256: Add system preference OpacMaxItemsToDisplay)\n";
8071 SetVersion($DBversion);
8074 $DBversion = "3.15.00.020";
8075 if ( CheckVersion($DBversion) ) {
8076 $dbh->do(q|
8077 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('MaxItemsForBatch','1000',NULL,'Max number of items record to process in a batch (modification or deletion)','Integer')
8079 print "Upgrade to $DBversion done (Bug 11343: Add system preference MaxItemsForBatch )\n";
8080 SetVersion($DBversion);
8083 $DBversion = "3.15.00.021";
8084 if(CheckVersion($DBversion)) {
8085 $dbh->do(q{
8086 ALTER TABLE `action_logs`
8087 DROP KEY timestamp,
8088 ADD KEY `timestamp_idx` (`timestamp`),
8089 ADD KEY `user_idx` (`user`),
8090 ADD KEY `module_idx` (`module`(255)),
8091 ADD KEY `action_idx` (`action`(255)),
8092 ADD KEY `object_idx` (`object`),
8093 ADD KEY `info_idx` (`info`(255))
8095 print "Upgrade to $DBversion done (Bug 3445: Add indexes to action_logs table)\n";
8096 SetVersion($DBversion);
8099 $DBversion = "3.15.00.022";
8100 if (CheckVersion($DBversion)) {
8101 $dbh->do(q|
8102 DELETE FROM systempreferences WHERE variable= "memberofinstitution"
8104 print "Upgrade to $DBversion done (Bug 11751: Remove memberofinstitytion system preference)\n";
8105 SetVersion($DBversion);
8108 $DBversion = "3.15.00.023";
8109 if ( CheckVersion($DBversion) ) {
8110 $dbh->do("
8111 INSERT INTO systempreferences (variable,value,options,explanation,type)
8112 VALUES('CardnumberLength', '', '', 'Set a length for card numbers.', 'Free');
8114 print "Upgrade to $DBversion done (Bug 10861: Add CardnumberLength syspref)\n";
8115 SetVersion ($DBversion);
8118 $DBversion = "3.15.00.024";
8119 if ( CheckVersion($DBversion) ) {
8120 $dbh->do(q{
8121 DELETE FROM systempreferences WHERE variable = 'NoZebraIndexes'
8123 print "Upgrade to $DBversion done (Bug 10012 - remove last vestiges of NoZebra)\n";
8124 SetVersion($DBversion);
8127 $DBversion = "3.15.00.025";
8128 if ( CheckVersion($DBversion) ) {
8129 $dbh->do(q{
8130 DROP TABLE aqorderdelivery;
8132 print "Upgrade to $DBversion done (Bug 11928 - remove unused table)\n";
8133 SetVersion($DBversion);
8136 $DBversion = "3.15.00.026";
8137 if ( CheckVersion($DBversion) ) {
8138 $dbh->do(q{
8139 UPDATE language_descriptions SET description = 'Հայերեն' WHERE subtag = 'hy' AND lang = 'hy';
8141 print "Upgrade to $DBversion done (Bug 11973 - Fix Armenian language description)\n";
8142 SetVersion($DBversion);
8145 $DBversion = "3.15.00.027";
8146 if (CheckVersion($DBversion)) {
8147 $dbh->do(q{
8148 ALTER TABLE opac_news ADD branchcode varchar(10) DEFAULT NULL
8149 AFTER idnew,
8150 ADD CONSTRAINT opac_news_branchcode_ibfk
8151 FOREIGN KEY (branchcode)
8152 REFERENCES branches (branchcode)
8153 ON DELETE CASCADE ON UPDATE CASCADE;
8155 print "Upgrade to $DBversion done (Bug 7567: Add branchcode to opac_news)\n";
8156 SetVersion($DBversion);
8159 $DBversion = "3.15.00.028";
8160 if(CheckVersion($DBversion)) {
8161 $dbh->do(q{
8162 ALTER TABLE issuingrules ADD norenewalbefore int(4) default NULL AFTER renewalperiod
8164 print "Upgrade to $DBversion done (Bug 7413: Allow OPAC renewal x days before due date)\n";
8165 SetVersion($DBversion);
8168 $DBversion = "3.15.00.029";
8169 if ( CheckVersion($DBversion) ) {
8170 $dbh->do(q{
8171 UPDATE borrower_debarments SET expiration = NULL WHERE expiration = '9999-12-31'
8173 print "Upgrade to $DBversion done (Bug 11846 - correct borrower_debarments with expiration 9999-12-31)\n";
8174 SetVersion($DBversion);
8177 $DBversion = "3.15.00.030";
8178 if(CheckVersion($DBversion)) {
8179 $dbh->do(q|
8180 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACMySummaryNote','','','Note to display on the patron summary page. This note only appears if the patron is connected.','Free')
8182 print "Upgrade to $DBversion done (Bug 12052: Add OPACMySummaryNote syspref)\n";
8183 SetVersion($DBversion);
8186 $DBversion = "3.15.00.031";
8187 if ( CheckVersion($DBversion) ) {
8188 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ('10', 'writeoff', 'Write off fines and fees')");
8189 $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ('10', 'remaining_permissions', 'Remaining permissions for managing fines and fees')");
8190 print "Upgrade to $DBversion done (Bug 9448 - Add separate permission for writing off fees)\n";
8191 SetVersion ($DBversion);
8194 $DBversion = "3.15.00.032";
8195 if ( CheckVersion($DBversion) ) {
8196 $dbh->do("ALTER TABLE aqorders CHANGE notes order_internalnote MEDIUMTEXT;");
8197 $dbh->do("ALTER TABLE aqorders ADD COLUMN order_vendornote MEDIUMTEXT AFTER order_internalnote;");
8198 print "Upgrade to $DBversion done (Bug 9416 - In each order, add a new note made for the vendor)\n";
8199 SetVersion ($DBversion);
8202 $DBversion = "3.15.00.033";
8203 if ( CheckVersion($DBversion) ) {
8204 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('NoLoginInstructions', '', '60|10', 'Instructions to display on the OPAC login form when a patron is not logged in', 'Textarea')");
8205 print "Upgrade to $DBversion done (Bug 10951: Add NoLoginInstructions pref)\n";
8206 SetVersion($DBversion);
8209 $DBversion = "3.15.00.034";
8210 if ( CheckVersion($DBversion) ) {
8211 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('AdvancedSearchLanguages','','','ISO 639-2 codes of languages you wish to see appear as an advanced search option. Example: eng|fra|ita','Textarea')");
8212 print "Upgrade to $DBversion done (Bug 10986: system preferences to limit languages in advanced search )\n";
8213 SetVersion ($DBversion);
8216 $DBversion = "3.15.00.035";
8217 if ( CheckVersion($DBversion) ) {
8218 #insert a notice for sharing a list and accepting a share
8219 $dbh->do("
8220 INSERT INTO letter (module, code, branchcode, name, is_html, title, content)
8221 VALUES ( 'members', 'SHARE_INVITE', '', 'Invitation for sharing a list', '0', 'Share list <<listname>>', 'Dear patron,
8223 One of our patrons, <<borrowers.firstname>> <<borrowers.surname>>, invites you to share a list <<listname>> in our library catalog.
8225 To access this shared list, please click on the following URL or copy-and-paste it into your browser address bar.
8227 <<shareurl>>
8229 In case you are not a patron in our library or do not want to accept this invitation, please ignore this mail. Note also that this invitation expires within two weeks.
8231 Thank you.
8233 Your library.'
8234 )");
8235 $dbh->do("
8236 INSERT INTO letter (module, code, branchcode, name, is_html, title, content)
8237 VALUES ( 'members', 'SHARE_ACCEPT', '', 'Notification about an accepted share', '0', 'Share on list <<listname>> accepted', 'Dear patron,
8239 We want to inform you that <<borrowers.firstname>> <<borrowers.surname>> accepted your invitation to share your list <<listname>> in our library catalog.
8241 Thank you.
8243 Your library.'
8244 )");
8245 print "Upgrade to $DBversion done (Bug 9032: Share a list)\n";
8246 SetVersion($DBversion);
8249 $DBversion = "3.15.00.036";
8250 if ( CheckVersion($DBversion) ) {
8251 $dbh->do(q{
8252 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
8253 VALUES('AllowMultipleIssuesOnABiblio',1,'Allow/Don\'t allow patrons to check out multiple items from one biblio','','YesNo')
8256 print "Upgrade to $DBversion done (Bug 10859 - Add system preference AllowMultipleIssuesOnABiblio)\n";
8257 SetVersion($DBversion);
8260 $DBversion = "3.15.00.037";
8261 if(CheckVersion($DBversion)) {
8262 $dbh->do(q{
8263 ALTER TABLE itemtypes ADD sip_media_type VARCHAR( 3 ) DEFAULT NULL AFTER checkinmsgtype
8265 $dbh->do(q{
8266 INSERT INTO authorised_values (category, authorised_value, lib) VALUES
8267 ('SIP_MEDIA_TYPE', '000', 'Other'),
8268 ('SIP_MEDIA_TYPE', '001', 'Book'),
8269 ('SIP_MEDIA_TYPE', '002', 'Magazine'),
8270 ('SIP_MEDIA_TYPE', '003', 'Bound journal'),
8271 ('SIP_MEDIA_TYPE', '004', 'Audio tape'),
8272 ('SIP_MEDIA_TYPE', '005', 'Video tape'),
8273 ('SIP_MEDIA_TYPE', '006', 'CD/CDROM'),
8274 ('SIP_MEDIA_TYPE', '007', 'Diskette'),
8275 ('SIP_MEDIA_TYPE', '008', 'Book with diskette'),
8276 ('SIP_MEDIA_TYPE', '009', 'Book with CD'),
8277 ('SIP_MEDIA_TYPE', '010', 'Book with audio tape')
8279 print "Upgrade to $DBversion done (Bug 11351 - Add support for SIP2 media type)\n";
8280 SetVersion($DBversion);
8283 $DBversion = '3.15.00.038';
8284 if ( CheckVersion($DBversion) ) {
8285 $dbh->do(q{
8286 INSERT INTO systempreferences (
8287 variable,
8288 value,
8289 options,
8290 explanation,
8291 type
8293 VALUES (
8294 'DisplayLibraryFacets', 'holding', 'home|holding|both', 'Defines which library facets to display.', 'Choice'
8297 print "Upgrade to $DBversion done (Bug 11334 - Add facet for home library)\n";
8298 SetVersion ($DBversion);
8301 $DBversion = "3.15.00.039";
8302 if ( CheckVersion($DBversion) ) {
8304 $dbh->do( q{
8305 ALTER TABLE letter ADD COLUMN message_transport_type VARCHAR(20) NOT NULL DEFAULT 'email' AFTER content
8306 } );
8308 $dbh->do( q{
8309 ALTER TABLE letter ADD CONSTRAINT message_transport_type_fk FOREIGN KEY (message_transport_type) REFERENCES message_transport_types(message_transport_type);
8310 } );
8312 $dbh->do( q{
8313 ALTER TABLE letter DROP PRIMARY KEY, ADD PRIMARY KEY (`module`,`code`,`branchcode`, message_transport_type);
8314 } );
8316 $dbh->do( q{
8317 CREATE TABLE overduerules_transport_types(
8318 id INT(11) NOT NULL AUTO_INCREMENT,
8319 branchcode varchar(10) NOT NULL DEFAULT '',
8320 categorycode VARCHAR(10) NOT NULL DEFAULT '',
8321 letternumber INT(1) NOT NULL DEFAULT 1,
8322 message_transport_type VARCHAR(20) NOT NULL DEFAULT 'email',
8323 PRIMARY KEY (id),
8324 CONSTRAINT overduerules_fk FOREIGN KEY (branchcode, categorycode) REFERENCES overduerules (branchcode, categorycode) ON DELETE CASCADE ON UPDATE CASCADE,
8325 CONSTRAINT mtt_fk FOREIGN KEY (message_transport_type) REFERENCES message_transport_types (message_transport_type) ON DELETE CASCADE ON UPDATE CASCADE
8326 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
8327 } );
8329 my $sth = $dbh->prepare( q{
8330 SELECT * FROM overduerules;
8331 } );
8333 $sth->execute;
8334 my $sth_insert_mtt = $dbh->prepare( q{
8335 INSERT INTO overduerules_transport_types (branchcode, categorycode, letternumber, message_transport_type) VALUES ( ?, ?, ?, ? )
8336 } );
8337 while ( my $row = $sth->fetchrow_hashref ) {
8338 my $branchcode = $row->{branchcode};
8339 my $categorycode = $row->{categorycode};
8340 for my $letternumber ( 1 .. 3 ) {
8341 next unless $row->{"letter$letternumber"};
8342 $sth_insert_mtt->execute(
8343 $branchcode, $categorycode, $letternumber, 'email'
8348 print "Upgrade done (Bug 9016: Adds multi transport types management for notices)\n";
8349 SetVersion($DBversion);
8352 $DBversion = "3.15.00.040";
8353 if ( CheckVersion($DBversion) ) {
8354 $dbh->do(q|
8355 UPDATE message_transports SET letter_code='HOLD' WHERE letter_code='HOLD_PHONE' OR letter_code='HOLD_PRINT'
8357 $dbh->do(q|
8358 UPDATE letter SET code='HOLD', message_transport_type='print' WHERE code='HOLD_PRINT'
8360 $dbh->do(q|
8361 UPDATE letter SET code='HOLD', message_transport_type='phone' WHERE code='HOLD_PHONE'
8363 print "Upgrade to $DBversion done (Bug 10845: Multi transport types for holds)\n";
8364 SetVersion($DBversion);
8367 $DBversion = "3.15.00.041";
8368 if ( CheckVersion($DBversion) ) {
8369 my ( $name ) = $dbh->selectrow_array(q|
8370 SELECT name FROM letter WHERE code="HOLD"
8372 $dbh->do(q|
8373 UPDATE letter
8374 SET code="HOLD",
8375 message_transport_type="phone",
8376 name= ?
8377 WHERE code="HOLD_PHONE"
8378 |, {}, $name);
8380 ( $name ) = $dbh->selectrow_array(q|
8381 SELECT name FROM letter WHERE code="PREDUE"
8383 $dbh->do(q|
8384 UPDATE letter
8385 SET code="PREDUE",
8386 message_transport_type="phone",
8387 name= ?
8388 WHERE code="PREDUE_PHONE"
8389 |, {}, $name);
8391 ( $name ) = $dbh->selectrow_array(q|
8392 SELECT name FROM letter WHERE code="OVERDUE"
8394 $dbh->do(q|
8395 UPDATE letter
8396 SET code="OVERDUE",
8397 message_transport_type="phone",
8398 name= ?
8399 WHERE code="OVERDUE_PHONE"
8400 |, {}, $name);
8402 print "Upgrade to $DBversion done (Bug 11867: Update letters *_PHONE)\n";
8403 SetVersion($DBversion);
8406 $DBversion = "3.15.00.042";
8407 if ( CheckVersion($DBversion) ) {
8408 $dbh->do(q{
8409 INSERT INTO systempreferences
8410 (variable,value,explanation,options,type)
8411 VALUES
8412 ('SpecifyReturnDate',0,'Define whether to display \"Specify Return Date\" form in Circulation','','YesNo')
8414 print "Upgrade to $DBversion done (Bug 10694 - Allow arbitrary backdating of returns)\n";
8415 SetVersion($DBversion);
8418 $DBversion = "3.15.00.043";
8419 if ( CheckVersion($DBversion) ) {
8420 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('MarcFieldsToOrder','','Set the mapping values for a new order line created from a MARC record in a staged file. In a YAML format.', NULL, 'textarea')");
8421 print "Upgrade to $DBversion done (Bug 7180: Added MarcFieldsToOrder syspref)\n";
8422 SetVersion ($DBversion);
8425 $DBversion = "3.15.00.044";
8426 if ( CheckVersion($DBversion) ) {
8427 $dbh->do("ALTER TABLE currency ADD isocode VARCHAR(5) default NULL AFTER symbol;");
8428 print "Upgrade to $DBversion done (Added isocode to the currency table)\n";
8429 SetVersion($DBversion);
8432 $DBversion = "3.15.00.045";
8433 if ( CheckVersion($DBversion) ) {
8434 $dbh->do("
8435 INSERT INTO systempreferences (variable,value,explanation,options,type)
8436 VALUES (
8437 'BlockExpiredPatronOpacActions',
8438 '0',
8439 'Set whether an expired patron can perform opac actions such as placing holds or renew books, can be overridden on a per patron-type basis',
8440 NULL,
8441 'YesNo'
8444 $dbh->do("ALTER TABLE `categories` ADD COLUMN `BlockExpiredPatronOpacActions` TINYINT(1) DEFAULT -1 NOT NULL AFTER category_type");
8445 print "Upgraded to $DBversion done (Bug 6739 - expired patrons not blocked from opac actions)\n";
8446 SetVersion ($DBversion);
8449 $DBversion = "3.15.00.046";
8450 if ( CheckVersion($DBversion) ) {
8451 $dbh->do(q|
8452 ALTER TABLE search_history ADD COLUMN type VARCHAR(16) NOT NULL DEFAULT 'biblio' AFTER query_cgi
8454 print "Upgrade to $DBversion done (Bug 10807 - Add db field search_history.type)\n";
8455 SetVersion($DBversion);
8458 $DBversion = "3.15.00.047";
8459 if ( CheckVersion($DBversion) ) {
8460 $dbh->do(q|
8461 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('EnableSearchHistory','0','','Enable or disable search history','YesNo')
8463 print "Upgrade to $DBversion done (Bug 10862: Add EnableSearchHistory syspref)\n";
8464 SetVersion($DBversion);
8467 $DBversion = "3.15.00.048";
8468 if ( CheckVersion($DBversion) ) {
8469 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacSuppressionRedirect','1','Redirect the opac detail page for suppressed records to an explanatory page (otherwise redirect to 404 error page)','','YesNo')");
8470 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacSuppressionMessage', '','Display this message on the redirect page for suppressed biblios','70|10','Textarea')");
8471 print "Upgrade to $DBversion done (Bug 10195: Records hidden with OpacSuppression can still be accessed)\n";
8472 SetVersion($DBversion);
8475 $DBversion = "3.15.00.049";
8476 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
8477 $dbh->do("ALTER TABLE biblioitems DROP INDEX isbn");
8478 $dbh->do("ALTER TABLE biblioitems DROP INDEX issn");
8479 $dbh->do("ALTER TABLE biblioitems DROP INDEX issn_idx");
8480 $dbh->do("ALTER TABLE biblioitems
8481 CHANGE isbn isbn MEDIUMTEXT NULL DEFAULT NULL,
8482 CHANGE issn issn MEDIUMTEXT NULL DEFAULT NULL
8484 $dbh->do("ALTER TABLE biblioitems
8485 ADD INDEX isbn ( isbn ( 255 ) ),
8486 ADD INDEX issn ( issn ( 255 ) )
8489 $dbh->do("ALTER TABLE deletedbiblioitems DROP INDEX isbn");
8490 $dbh->do("ALTER TABLE deletedbiblioitems
8491 CHANGE isbn isbn MEDIUMTEXT NULL DEFAULT NULL,
8492 CHANGE issn issn MEDIUMTEXT NULL DEFAULT NULL
8494 $dbh->do("ALTER TABLE deletedbiblioitems
8495 ADD INDEX isbn ( isbn ( 255 ) )
8498 print "Upgrade to $DBversion done (Bug 5377 - Biblioitems isbn and issn fields too small for multiple ISBN and ISSN)\n";
8499 SetVersion($DBversion);
8502 $DBversion = "3.15.00.050";
8503 if ( CheckVersion($DBversion) ) {
8504 $dbh->do("
8505 INSERT INTO systempreferences (
8506 variable,
8507 value,
8508 explanation,
8509 type
8510 ) VALUES (
8511 'AggressiveMatchOnISBN',
8512 '0',
8513 'If enabled, attempt to match aggressively by trying all variations of the ISBNs in the imported record as a phrase in the ISBN fields of already cataloged records when matching on ISBN with the record import tool',
8514 'YesNo'
8518 print "Upgrade to $DBversion done (Bug 10500 - Improve isbn matching when importing records)\n";
8519 SetVersion($DBversion);
8522 $DBversion = "3.15.00.051";
8523 if ( CheckVersion($DBversion) ) {
8524 print "Upgrade to $DBversion done (Koha 3.16 beta)\n";
8525 SetVersion($DBversion);
8528 $DBversion = "3.15.00.052";
8529 if ( CheckVersion($DBversion) ) {
8530 print "Upgrade to $DBversion done (Koha 3.16 RC)\n";
8531 SetVersion($DBversion);
8534 $DBversion = "3.16.00.000";
8535 if ( CheckVersion($DBversion) ) {
8536 print "Upgrade to $DBversion done (3.16.0 release)\n";
8537 SetVersion ($DBversion);
8540 $DBversion = '3.17.00.000';
8541 if ( CheckVersion($DBversion) ) {
8542 print "Upgrade to $DBversion done (there is no time to rest on our laurels)\n";
8543 SetVersion ($DBversion);
8546 $DBversion = '3.17.00.001';
8547 if ( CheckVersion($DBversion) ) {
8548 $dbh->do("UPDATE systempreferences SET variable = 'AuthoritySeparator' WHERE variable = 'authoritysep'");
8549 print "Upgrade to $DBversion done (Bug 10330 - Rename system preference authoritysep to AuthoritySeparator)\n";
8550 SetVersion ($DBversion);
8553 $DBversion = "3.17.00.002";
8554 if (CheckVersion($DBversion)) {
8555 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,type) VALUES('AcqEnableFiles','0','If enabled, allows librarians to upload and attach arbitrary files to invoice records.','YesNo')");
8556 $dbh->do("
8557 CREATE TABLE IF NOT EXISTS `misc_files` (
8558 `file_id` int(11) NOT NULL AUTO_INCREMENT,
8559 `table_tag` varchar(255) NOT NULL,
8560 `record_id` int(11) NOT NULL,
8561 `file_name` varchar(255) NOT NULL,
8562 `file_type` varchar(255) NOT NULL,
8563 `file_description` varchar(255) DEFAULT NULL,
8564 `file_content` longblob NOT NULL, -- file content
8565 `date_uploaded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
8566 PRIMARY KEY (`file_id`),
8567 KEY `table_tag` (`table_tag`),
8568 KEY `record_id` (`record_id`)
8569 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
8571 print "Upgrade to $DBversion done (Bug 3050 - Add an option to upload scanned invoices)\n";
8572 SetVersion($DBversion);
8575 $DBversion = "3.17.00.003";
8576 if (CheckVersion($DBversion)) {
8577 $dbh->do("UPDATE systempreferences SET type = 'Choice', options = '0|1|force' WHERE variable = 'OPACItemHolds'");
8578 print "Upgrade to $DBversion done (Bug 7825 - Changed OPACItemHolds syspref to Choice)\n";
8579 SetVersion($DBversion);
8582 $DBversion = "3.17.00.004";
8583 if (CheckVersion($DBversion)) {
8584 $dbh->do("ALTER TABLE categories ADD default_privacy ENUM( 'default', 'never', 'forever' ) NOT NULL DEFAULT 'default' AFTER category_type");
8585 print "Upgrade to $DBversion done (Bug 6254 - can't set patron privacy by default)\n";
8586 SetVersion($DBversion);
8589 $DBversion = "3.17.00.005";
8590 if (CheckVersion($DBversion)) {
8591 $dbh->do(q|
8592 ALTER TABLE issuingrules
8593 ADD maxsuspensiondays INT(11) DEFAULT NULL AFTER finedays;
8595 print "Upgrade to $DBversion done (Bug 12230: Add new issuing rule maxsuspensiondays)\n";
8596 SetVersion($DBversion);
8599 $DBversion = "3.17.00.006";
8600 if ( CheckVersion($DBversion) ) {
8601 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacLocationBranchToDisplay', 'holding', 'holding|home|both', 'In the OPAC, under location show which branch for Location in the record details.', 'Choice')");
8602 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacLocationBranchToDisplayShelving', 'holding', 'holding|home|both', 'In the OPAC, display the shelving location under which which column', 'Choice')");
8603 print "Upgrade to $DBversion done (Bug 7720 - Ambiguity in OPAC Details location.)\n";
8604 SetVersion($DBversion);
8607 $DBversion = "3.17.00.007";
8608 if (CheckVersion($DBversion)) {
8609 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('UpdateNotForLoanStatusOnCheckin', '', 'NULL', 'This is a list of value pairs. When an item is checked in, if the not for loan value on the left matches the items not for loan value it will be updated to the right-hand value. E.g. ''-1: 0'' will cause an item that was set to ''Ordered'' to now be available for loan. Each pair of values should be on a separate line.', 'Free');");
8610 print "Upgrade to $DBversion done (Bug 11629 - Add ability to update not for loan status on checkin)\n";
8611 SetVersion($DBversion);
8614 $DBversion = "3.17.00.008";
8615 if ( CheckVersion($DBversion) ) {
8616 $dbh->do(q|
8617 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('OPACAcquisitionDetails','0', '','Show the acquisition details at the OPAC','YesNo')
8619 print "Upgrade to $DBversion done (Bug 11169 - Add OPACAcquisitionDetails syspref)\n";
8620 SetVersion($DBversion);
8623 $DBversion = "3.17.00.009";
8624 if ( CheckVersion($DBversion) ) {
8625 $dbh->do(q{
8626 DELETE FROM systempreferences WHERE variable = 'UseTablesortForCirc'
8629 print "Upgrade to $DBversion done (Bug 11703 - Remove UseTablesortForCirc syspref)\n";
8630 SetVersion($DBversion);
8633 $DBversion = "3.17.00.010";
8634 if ( CheckVersion($DBversion) ) {
8635 $dbh->do("DELETE FROM systempreferences WHERE variable='opacsmallimage'");
8636 print "Upgrade to $DBversion done (Bug 11347 - PROG/CCSR deprecation: Remove opacsmallimage system preference)\n";
8637 SetVersion($DBversion);
8640 $DBversion = "3.17.00.011";
8641 if ( CheckVersion($DBversion) ) {
8642 $dbh->do("INSERT INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'hr', 'language', 'Croatian','2014-07-24' )");
8643 $dbh->do("INSERT INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'hr','hrv')");
8644 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'hr', 'language', 'hr', 'Hrvatski')");
8645 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'hr', 'language', 'en', 'Croatian')");
8646 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'hr', 'language', 'fr', 'Croate')");
8647 $dbh->do("INSERT INTO language_descriptions(subtag, type, lang, description) VALUES( 'hr', 'language', 'de', 'Kroatisch')");
8648 print "Upgrade to $DBversion done (Bug 12649: Add Croatian language)\n";
8649 SetVersion ($DBversion);
8652 $DBversion = "3.17.00.012";
8653 if ( CheckVersion($DBversion) ) {
8654 $dbh->do("DELETE FROM systempreferences WHERE variable='OpacShowFiltersPulldownMobile'");
8655 print "Upgrade to $DBversion done ( Bug 12512 - PROG/CCSR deprecation: Remove OpacShowFiltersPulldownMobile system preference )\n";
8656 SetVersion ($DBversion);
8659 $DBversion = "3.17.00.013";
8660 if ( CheckVersion($DBversion) ) {
8661 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('maxreserves',50,'System-wide maximum number of holds a patron can place','','Integer')");
8662 print "Upgrade to $DBversion done (Re-add system preference maxreserves)\n";
8663 SetVersion ($DBversion);
8666 $DBversion = '3.17.00.014';
8667 if ( CheckVersion($DBversion) ) {
8668 $dbh->do("
8669 INSERT INTO systempreferences (variable,value,explanation,type) VALUES
8670 ('OverdueNoticeCalendar',0,'Take calendar into consideration when working out sending overdue notices','YesNo')
8672 print "Upgrade to $DBversion done (Bug 12529 - Adding a syspref to allow the overdue notices to consider the calendar when generating notices)\n";
8673 SetVersion($DBversion);
8676 $DBversion = "3.17.00.015";
8677 if ( CheckVersion($DBversion) ) {
8678 $dbh->do(q{
8679 CREATE TABLE IF NOT EXISTS columns_settings (
8680 module varchar(255) NOT NULL,
8681 page varchar(255) NOT NULL,
8682 tablename varchar(255) NOT NULL,
8683 columnname varchar(255) NOT NULL,
8684 cannot_be_toggled int(1) NOT NULL DEFAULT 0,
8685 is_hidden int(1) NOT NULL DEFAULT 0,
8686 PRIMARY KEY(module, page, tablename, columnname)
8687 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
8689 print "Upgrade to $DBversion done (Bug 10212 - Create new table columns_settings)\n";
8690 SetVersion ($DBversion);
8693 $DBversion = "3.17.00.016";
8694 if ( CheckVersion($DBversion) ) {
8695 $dbh->do("CREATE TABLE aqcontacts (
8696 id int(11) NOT NULL auto_increment,
8697 name varchar(100) default NULL,
8698 position varchar(100) default NULL,
8699 phone varchar(100) default NULL,
8700 altphone varchar(100) default NULL,
8701 fax varchar(100) default NULL,
8702 email varchar(100) default NULL,
8703 notes mediumtext,
8704 claimacquisition BOOLEAN NOT NULL DEFAULT 0,
8705 claimissues BOOLEAN NOT NULL DEFAULT 0,
8706 acqprimary BOOLEAN NOT NULL DEFAULT 0,
8707 serialsprimary BOOLEAN NOT NULL DEFAULT 0,
8708 booksellerid int(11) not NULL,
8709 PRIMARY KEY (id),
8710 CONSTRAINT booksellerid_aqcontacts_fk FOREIGN KEY (booksellerid)
8711 REFERENCES aqbooksellers (id) ON DELETE CASCADE ON UPDATE CASCADE
8712 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;");
8713 $dbh->do("INSERT INTO aqcontacts (name, position, phone, altphone, fax,
8714 email, notes, booksellerid, claimacquisition, claimissues, acqprimary, serialsprimary)
8715 SELECT contact, contpos, contphone, contaltphone, contfax, contemail,
8716 contnotes, id, 1, 1, 1, 1 FROM aqbooksellers;");
8717 $dbh->do("ALTER TABLE aqbooksellers DROP COLUMN contact,
8718 DROP COLUMN contpos, DROP COLUMN contphone,
8719 DROP COLUMN contaltphone, DROP COLUMN contfax,
8720 DROP COLUMN contemail, DROP COLUMN contnotes;");
8721 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contact>>', '<<aqcontacts.name>>')");
8722 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contpos>>', '<<aqcontacts.position>>')");
8723 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contphone>>', '<<aqcontacts.phone>>')");
8724 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contaltphone>>', '<<aqcontacts.altphone>>')");
8725 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contfax>>', '<<aqcontacts.contfax>>')");
8726 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contemail>>', '<<aqcontacts.contemail>>')");
8727 $dbh->do("UPDATE letter SET content = replace(content, '<<aqbooksellers.contnotes>>', '<<aqcontacts.contnotes>>')");
8728 print "Upgrade to $DBversion done (Bug 10402: Move bookseller contacts to separate table)\n";
8729 SetVersion($DBversion);
8732 $DBversion = "3.17.00.017";
8733 if ( CheckVersion($DBversion) ) {
8734 # Correct invalid recordtypes (should be very exceptional)
8735 $dbh->do(q{
8736 UPDATE z3950servers set recordtype='biblio' WHERE recordtype NOT IN ('authority','biblio')
8738 # Correct invalid server types (should also be very exceptional)
8739 $dbh->do(q{
8740 UPDATE z3950servers set type='zed' WHERE type <> 'zed'
8742 # Adjust table
8743 $dbh->do(q{
8744 ALTER TABLE z3950servers
8745 DROP COLUMN icon,
8746 DROP COLUMN description,
8747 DROP COLUMN position,
8748 MODIFY COLUMN id int NOT NULL AUTO_INCREMENT FIRST,
8749 MODIFY COLUMN recordtype enum('authority','biblio') NOT NULL DEFAULT 'biblio',
8750 CHANGE COLUMN name servername mediumtext NOT NULL,
8751 CHANGE COLUMN type servertype enum('zed','sru') NOT NULL DEFAULT 'zed',
8752 ADD COLUMN sru_options varchar(255) default NULL,
8753 ADD COLUMN sru_fields mediumtext default NULL,
8754 ADD COLUMN add_xslt mediumtext default NULL
8756 print "Upgrade to $DBversion done (Bug 6536: Z3950 improvements)\n";
8757 SetVersion ($DBversion);
8760 $DBversion = "3.17.00.018";
8761 if ( CheckVersion($DBversion) ) {
8762 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('HoldsInNoissuesCharge', '0', 'Hold charges block checkouts (added to noissuescharge).',NULL,'YesNo');");
8763 print "Upgrade to $DBversion done (Bug 12205: Add HoldsInNoissuesCharge systempreference)\n";
8764 SetVersion($DBversion);
8767 $DBversion = "3.17.00.019";
8768 if ( CheckVersion($DBversion) ) {
8769 $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('NotHighlightedWords','and|or|not',NULL,'List of words to NOT highlight when OpacHighlightedWords is enabled','free')"
8771 print "Upgrade to $DBversion done (Bug 6149: Operator highlighted in search results)\n";
8772 SetVersion($DBversion);
8775 $DBversion = "3.17.00.020";
8776 if(C4::Context->preference("Version") < TransformToNum($DBversion) ) {
8777 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('ExpireReservesOnHolidays', '1', NULL, 'If false, reserves at a library will not be canceled on days the library is not open.', 'YesNo')");
8778 print "Upgrade to $DBversion done (Bug 8735 - Expire holds waiting only on days the library is open)\n";
8779 SetVersion ($DBversion);
8782 $DBversion = "3.17.00.021";
8783 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
8784 my $pref = C4::Context->preference('HomeOrHoldingBranch');
8785 $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type)
8786 VALUES ('StaffSearchResultsDisplayBranch', ?,'homebranch|holdingbranch','Controls the display of the home or holding branch for staff search results','choice')", undef, $pref);
8787 print "Upgrade to $DBversion done (Bug 12582 - Control of branch displayed in search results linked to HomeOrHoldingBranch)\n";
8788 SetVersion ($DBversion);
8791 $DBversion = '3.17.00.022';
8792 if ( CheckVersion($DBversion) ) {
8793 my @temp= $dbh->selectrow_array(qq|
8794 SELECT count(*)
8795 FROM marc_subfield_structure
8796 WHERE kohafield='permanent_location' OR kohafield='items.permanent_location'
8798 print "Upgrade to $DBversion done (Bug 7817: Check for permanent_location)\n";
8799 if( $temp[0] ) {
8800 print "WARNING for Koha administrator: Your database contains one or more mappings for permanent_location to the MARC structure. This item field however is for internal use and should not be linked to a MARC (sub)field. Please correct it. See also Bugzilla reports 7817 and 12818.\n";
8802 SetVersion($DBversion);
8805 $DBversion = "3.17.00.023";
8806 if ( CheckVersion($DBversion) ) {
8807 $dbh->do(q{
8808 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('AcqItemSetSubfieldsWhenReceiptIsCancelled','', '','Upon cancelling a receipt, update the items subfields if they were created when placing an order (e.g. o=5|a="bar foo")', 'Free')
8810 print "Upgrade to $DBversion done (Bug 11169 - Add AcqItemSetSubfieldsWhenReceiptIsCancelled syspref)\n";
8811 SetVersion($DBversion);
8814 $DBversion = "3.17.00.024";
8815 if(CheckVersion($DBversion)) {
8816 $dbh->do(q{
8817 ALTER TABLE issues ADD auto_renew BOOLEAN default FALSE AFTER renewals
8819 $dbh->do(q{
8820 ALTER TABLE old_issues ADD auto_renew BOOLEAN default FALSE AFTER renewals
8822 $dbh->do(q{
8823 ALTER TABLE issuingrules ADD auto_renew BOOLEAN default FALSE AFTER norenewalbefore
8825 print "Upgrade to $DBversion done (Bug 11577: [ENH] Automatic renewal feature)\n";
8826 SetVersion($DBversion);
8829 $DBversion = '3.17.00.025';
8830 if ( CheckVersion($DBversion) ) {
8831 $dbh->do(qq{
8832 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('StatisticsFields','location|itype|ccode','Define fields (from the items table) used for statistics members',NULL,'Free')
8834 print "Upgrade to $DBversion done (Bug 12728: Checked syspref StatisticsFields)\n";
8837 $DBversion = "3.17.00.026";
8838 if ( CheckVersion($DBversion) ) {
8839 if ( C4::Context->preference('marcflavour') eq 'MARC21' ) {
8840 $dbh->do("UPDATE marc_subfield_structure SET liblibrarian = 'Encoded bitrate', libopac = 'Encoded bitrate' WHERE tagfield = '347' AND tagsubfield = 'f'");
8841 $dbh->do("UPDATE marc_subfield_structure SET repeatable = 1 WHERE tagfield IN ('110','111','610','611','710','711','810','811') AND tagsubfield = 'c'");
8842 $dbh->do("UPDATE auth_subfield_structure SET repeatable = 1 WHERE tagfield IN ('110','111','410','411','510','511','710','711') AND tagsubfield = 'c'");
8843 print "Upgrade to $DBversion done (Bug 12435 - Update MARC21 frameworks to Update No. 18 (April 2014))\n";
8845 SetVersion($DBversion);
8848 $DBversion = "3.17.00.027";
8849 if ( CheckVersion($DBversion) ) {
8850 $dbh->do(q{
8851 DELETE FROM systempreferences WHERE variable = 'SearchEngine'
8853 print "Upgrade to $DBversion done (Bug 12538 - Remove SearchEngine syspref)\n";
8854 SetVersion($DBversion);
8857 $DBversion = "3.17.00.028";
8858 if ( CheckVersion($DBversion) ) {
8859 $dbh->do(q{
8860 INSERT INTO systempreferences (variable,value) VALUES('OpacCustomSearch','');
8862 print "Upgrade to $DBversion done (Bug 12296 - search box replaceable with a system preference)\n";
8863 SetVersion($DBversion);
8866 $DBversion = "3.17.00.029";
8867 if ( CheckVersion($DBversion) ) {
8868 $dbh->do("ALTER TABLE `items` CHANGE `cn_sort` `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8869 $dbh->do("ALTER TABLE `deleteditems` CHANGE `cn_sort` `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8870 $dbh->do("ALTER TABLE `biblioitems` CHANGE `cn_sort` `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8871 $dbh->do("ALTER TABLE `deletedbiblioitems` CHANGE `cn_sort` `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8872 print "Upgrade to $DBversion done (Bug 12424 - ddc sorting of call numbers truncates long Cutter parts)\n";
8873 SetVersion ($DBversion);
8876 $DBversion = "3.17.00.030";
8877 if ( CheckVersion($DBversion) ) {
8878 $dbh->do(
8880 INSERT INTO systempreferences (variable, value, options, explanation, type )
8881 VALUES
8882 ('UsageStatsCountry', '', NULL, 'The country where your library is located, to be shown on the Hea Koha community website', 'YesNo'),
8883 ('UsageStatsID', '', NULL, 'This preference is part of Koha but it should not be deleted or updated manually.', 'Free'),
8884 ('UsageStatsLastUpdateTime', '', NULL, 'This preference is part of Koha but it should not be deleted or updated manually.', 'Free'),
8885 ('UsageStatsLibraryName', '', NULL, 'The library name to be shown on Hea Koha community website', 'Free'),
8886 ('UsageStatsLibraryType', 'public', 'public|university', 'The library type to be shown on the Hea Koha community website', 'Choice'),
8887 ('UsageStatsLibraryUrl', '', NULL, 'The library URL to be shown on Hea Koha community website', 'Free'),
8888 ('UsageStats', 0, NULL, 'Share anonymous usage data on the Hea Koha community website.', 'YesNo')
8890 print "Upgrade to $DBversion done (Bug 11926: Add UsageStats systempreferences (HEA))\n";
8891 SetVersion ($DBversion);
8894 $DBversion = "3.17.00.031";
8895 if ( CheckVersion($DBversion) ) {
8896 $dbh->do("ALTER TABLE saved_sql CHANGE report_name report_name VARCHAR( 255 ) NOT NULL DEFAULT '' ");
8897 print "Upgrade to $DBversion done (Bug 2969: Report Name should be mandatory for saved reports)\n";
8898 SetVersion ($DBversion);
8901 $DBversion = "3.17.00.032";
8902 if ( CheckVersion($DBversion) ) {
8903 $dbh->do(
8904 "INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('ReplytoDefault', '', NULL, 'The default email address to be set as replyto.', 'Free')"
8906 $dbh->do(
8907 "INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('ReturnpathDefault', '', NULL, 'The default email address to be set as return-path', 'Free')"
8909 $dbh->do("ALTER TABLE branches ADD branchreplyto mediumtext AFTER branchemail");
8910 $dbh->do("ALTER TABLE branches ADD branchreturnpath mediumtext AFTER branchreplyto");
8911 print "Upgrade to $DBversion done (Bug 9530: Adding replyto and returnpath addresses.)\n";
8912 SetVersion($DBversion);
8915 $DBversion = "3.17.00.033";
8916 if ( CheckVersion($DBversion) ) {
8917 $dbh->do(q{
8918 INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type)
8919 VALUES('FacetMaxCount', '20','Specify the max facet count for each category',NULL,'Integer')
8921 print "Upgrade to $DBversion done (Bug 13088 - Allow the user to specify a max amount of facets to show)\n";
8922 SetVersion($DBversion);
8925 $DBversion = "3.17.00.034";
8926 if ( CheckVersion($DBversion) ) {
8927 $dbh->do(q|
8928 ALTER TABLE aqorders DROP COLUMN cancelledby;
8931 print "Upgrade to $DBversion done (Bug 11007 - DROP column aqorders.cancelledby)\n";
8932 SetVersion($DBversion);
8935 $DBversion = "3.17.00.035";
8936 if ( CheckVersion($DBversion) ) {
8937 $dbh->do(q|
8938 ALTER TABLE serial ADD COLUMN claims_count INT(11) DEFAULT 0 after claimdate
8940 $dbh->do(q|
8941 UPDATE serial
8942 SET claims_count = 1
8943 WHERE claimdate IS NOT NULL
8945 print "Upgrade to $DBversion done (Bug 5342: Add claims_count field in serial table)\n";
8946 SetVersion($DBversion);
8949 $DBversion = "3.17.00.036";
8950 if ( CheckVersion($DBversion) ) {
8951 $dbh->do("DELETE FROM systempreferences WHERE variable='OpacShowLibrariesPulldownMobile'");
8952 print "Upgrade to $DBversion done ( Bug 12513 - PROG/CCSR deprecation: Remove OpacShowLibrariesPulldownMobile system preference )\n";
8953 SetVersion ($DBversion);
8956 $DBversion = "3.17.00.037";
8957 if ( CheckVersion($DBversion) ) {
8958 $dbh->do("DELETE FROM systempreferences WHERE variable='OpacMainUserBlockMobile'");
8959 print "Upgrade to $DBversion done ( Bug 12246 - PROG/CCSR deprecation: Remove OpacMainUserBlockMobile system preference )\n";
8960 SetVersion ($DBversion);
8963 $DBversion = "3.17.00.038";
8964 if ( CheckVersion($DBversion) ) {
8965 $dbh->do("DELETE FROM systempreferences WHERE variable='OPACMobileUserCSS'");
8966 print "Upgrade to $DBversion done ( Bug 12245 - PROG/CCSR deprecation: Remove OPACMobileUserCSS system preference )\n";
8967 SetVersion ($DBversion);
8970 $DBversion = "3.17.00.039";
8971 if ( CheckVersion($DBversion) ) {
8972 $dbh->do("INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type) VALUES
8973 ('OPACFallback', 'prog', 'bootstrap|prog', 'Define the fallback theme for the OPAC interface.', 'Themes')");
8974 print "Upgrade to $DBversion done (Bug 12539 - PROG/CCSR deprecation: Remove hardcoded theme from C4/Templates.pm)\n";
8975 SetVersion ($DBversion);
8978 $DBversion = "3.17.00.040";
8979 if ( CheckVersion($DBversion) ) {
8980 my $opac_theme = C4::Context->preference( 'opacthemes' );
8981 if ( !defined $opac_theme || $opac_theme eq 'prog' || $opac_theme eq 'ccsr' ) {
8982 $dbh->do("UPDATE systempreferences SET value='bootstrap' WHERE variable='opacthemes'");
8984 print "Upgrade to $DBversion done (Bug 12223: 'prog' and 'ccsr' themes removed)\n";
8985 SetVersion($DBversion);
8988 $DBversion = "3.17.00.041";
8989 if ( CheckVersion($DBversion) ) {
8990 print "Upgrade to $DBversion done (Bug 11346: Deprecate the 'prog' and 'CCSR' themes)\n";
8991 SetVersion($DBversion);
8994 $DBversion = "3.17.00.042";
8995 if ( CheckVersion($DBversion) ) {
8996 $dbh->do("DELETE FROM systempreferences WHERE variable='yuipath'");
8997 print "Upgrade to $DBversion done (Bug 12494: Remove yuipath system preference)\n";
8998 SetVersion ($DBversion);
9001 $DBversion = "3.17.00.043";
9002 if ( CheckVersion($DBversion) ) {
9003 $dbh->do("
9004 ALTER TABLE aqorders
9005 ADD COLUMN cancellationreason TEXT DEFAULT NULL AFTER datecancellationprinted
9007 print "Upgrade to $DBversion done (Bug 7162: Add aqorders.cancellationreason)\n";
9008 SetVersion ($DBversion);
9011 $DBversion = "3.17.00.044";
9012 if ( CheckVersion($DBversion) ) {
9013 $dbh->do(q{
9014 INSERT IGNORE INTO systempreferences
9015 (variable,value,explanation,options,type)
9016 VALUES('OnSiteCheckouts','0','Enable/Disable the on-site checkouts feature','','YesNo');
9018 $dbh->do(q{
9019 INSERT IGNORE INTO systempreferences
9020 (variable,value,explanation,options,type)
9021 VALUES('OnSiteCheckoutsForce','0','Enable/Disable the on-site for all cases (Even if a user is debarred, etc.)','','YesNo');
9023 $dbh->do(q{
9024 ALTER TABLE issues ADD COLUMN onsite_checkout INT(1) NOT NULL DEFAULT 0 AFTER issuedate;
9026 $dbh->do(q{
9027 ALTER TABLE old_issues ADD COLUMN onsite_checkout INT(1) NOT NULL DEFAULT 0 AFTER issuedate;
9029 print "Upgrade to $DBversion done (Bug 10860: Add new system preference OnSiteCheckouts + fields [old_]issues.onsite_checkout)\n";
9030 SetVersion($DBversion);
9033 $DBversion = "3.17.00.045";
9034 if ( CheckVersion($DBversion) ) {
9035 $dbh->do(q{
9036 INSERT INTO systempreferences ( variable, value, options, explanation, type ) VALUES
9037 ('LocalHoldsPriority', '0', NULL, 'Enables the LocalHoldsPriority feature', 'YesNo'),
9038 ('LocalHoldsPriorityItemControl', 'holdingbranch', 'holdingbranch|homebranch', 'decides if the feature operates using the item''s home or holding library.', 'Choice'),
9039 ('LocalHoldsPriorityPatronControl', 'PickupLibrary', 'HomeLibrary|PickupLibrary', 'decides if the feature operates using the library set as the patron''s home library, or the library set as the pickup library for the given hold.', 'Choice')
9041 print "Upgrade to $DBversion done (Bug 11126 - Make the holds system optionally give precedence to local holds)\n";
9042 SetVersion($DBversion);
9045 $DBversion = "3.17.00.046";
9046 if ( CheckVersion($DBversion) ) {
9047 $dbh->do(q{
9048 CREATE TABLE IF NOT EXISTS items_search_fields (
9049 name VARCHAR(255) NOT NULL,
9050 label VARCHAR(255) NOT NULL,
9051 tagfield CHAR(3) NOT NULL,
9052 tagsubfield CHAR(1) NULL DEFAULT NULL,
9053 authorised_values_category VARCHAR(16) NULL DEFAULT NULL,
9054 PRIMARY KEY(name),
9055 CONSTRAINT items_search_fields_authorised_values_category
9056 FOREIGN KEY (authorised_values_category) REFERENCES authorised_values (category)
9057 ON DELETE SET NULL ON UPDATE CASCADE
9058 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
9060 print "Upgrade to $DBversion done (Bug 11425: Add items_search_fields table)\n";
9061 SetVersion($DBversion);
9064 $DBversion = "3.17.00.047";
9065 if ( CheckVersion($DBversion) ) {
9066 $dbh->do(q{
9067 ALTER TABLE collections
9068 CHANGE colBranchcode colBranchcode VARCHAR( 10 ) NULL DEFAULT NULL,
9069 ADD INDEX ( colBranchcode ),
9070 ADD CONSTRAINT collections_ibfk_1 FOREIGN KEY (colBranchcode) REFERENCES branches (branchcode) ON DELETE CASCADE ON UPDATE CASCADE
9072 print "Upgrade to $DBversion done (Bug 8836 - Resurrect Rotating Collections)\n";
9073 SetVersion($DBversion);
9076 $DBversion = "3.17.00.048";
9077 if ( CheckVersion($DBversion) ) {
9078 $dbh->do(q|
9079 INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('RentalFeesCheckoutConfirmation', '0', NULL , 'Allow user to confirm when checking out an item with rental fees.', 'YesNo')
9081 print "Upgrade to $DBversion done (Bug 12448 - Add RentalFeesCheckoutConfirmation syspref)\n";
9082 SetVersion($DBversion);
9085 $DBversion = "3.17.00.049";
9086 if ( CheckVersion($DBversion) ) {
9087 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'am', 'language', 'Amharic','2014-10-29')");
9088 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'am','amh')");
9089 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'am', 'language', 'am', 'አማርኛ')");
9090 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'am', 'language', 'en', 'Amharic')");
9092 $dbh->do("UPDATE language_descriptions SET description = 'لعربية' WHERE subtag = 'ar' AND type = 'language' AND lang = 'ar'");
9094 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'az', 'language', 'Azerbaijani','2014-10-30')");
9095 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'az','aze')");
9096 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'az', 'language', 'az', 'Azərbaycan dili')");
9097 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'az', 'language', 'en', 'Azerbaijani')");
9099 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'be', 'language', 'Byelorussian','2014-10-30')");
9100 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'be','bel')");
9101 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'be', 'language', 'be', 'Беларуская мова')");
9102 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'be', 'language', 'en', 'Byelorussian')");
9104 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'bn', 'language', 'Bengali','2014-10-30')");
9105 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'bn','ben')");
9106 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'bn', 'language', 'bn', 'বাংলা')");
9107 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'bn', 'language', 'en', 'Bengali')");
9109 $dbh->do("UPDATE language_descriptions SET description = 'Български' WHERE subtag = 'bg' AND type = 'language' AND lang = 'bg'");
9110 $dbh->do("UPDATE language_descriptions SET description = 'Ceština' WHERE subtag = 'cs' AND type = 'language' AND lang = 'cs'");
9111 $dbh->do("UPDATE language_descriptions SET description = 'Ελληνικά' WHERE subtag = 'el' AND type = 'language' AND lang = 'el'");
9112 $dbh->do("UPDATE language_descriptions SET description = 'Español' WHERE subtag = 'es' AND type = 'language' AND lang = 'es'");
9114 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'eu', 'language', 'Basque','2014-10-30')");
9115 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'eu','eus')");
9116 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'eu', 'language', 'eu', 'Euskera')");
9117 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'eu', 'language', 'en', 'Basque')");
9119 $dbh->do("UPDATE language_descriptions SET description = 'فارسى' WHERE subtag = 'fa' AND type = 'language' AND lang = 'fa'");
9120 $dbh->do("UPDATE language_descriptions SET description = 'Suomi' WHERE subtag = 'fi' AND type = 'language' AND lang = 'fi'");
9122 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'fo', 'language', 'Faroese','2014-10-30')");
9123 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'fo','fao')");
9124 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'fo', 'language', 'fo', 'Føroyskt')");
9125 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'fo', 'language', 'en', 'Faroese')");
9127 $dbh->do("UPDATE language_descriptions SET description = 'Français' WHERE subtag = 'fr' AND type = 'language' AND lang = 'fr'");
9128 $dbh->do("UPDATE language_descriptions SET description = 'עִבְרִית' WHERE subtag = 'he' AND type = 'language' AND lang = 'he'");
9129 $dbh->do("UPDATE language_descriptions SET description = 'हिन्दी' WHERE subtag = 'hi' AND type = 'language' AND lang = 'hi'");
9131 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'is', 'language', 'Icelandic','2014-10-30')");
9132 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'is','ice')");
9133 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'is', 'language', 'is', 'Íslenska')");
9134 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'is', 'language', 'en', 'Icelandic')");
9136 $dbh->do("UPDATE language_descriptions SET description = '日本語' WHERE subtag = 'ja' AND type = 'language' AND lang = 'ja'");
9138 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ka', 'language', 'Kannada','2014-10-30')");
9139 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'ka','kan')");
9140 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'ka', 'ಕನ್ನಡ')");
9141 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'en', 'Kannada')");
9143 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'km', 'language', 'Khmer','2014-10-30')");
9144 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES( 'km','khm')");
9145 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'km', 'language', 'km', 'ភាសាខ្មែរ')");
9146 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES( 'km', 'language', 'en', 'Khmer')");
9148 $dbh->do("UPDATE language_descriptions SET description = '한국어' WHERE subtag = 'ko' AND type = 'language' AND lang = 'ko'");
9150 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ku', 'language', 'Kurdish','2014-05-13')");
9151 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'ku','kur')");
9152 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ku', 'language', 'ku', 'کوردی')");
9153 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ku', 'language', 'en', 'Kurdish')");
9154 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ku', 'language', 'fr', 'Kurde')");
9155 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ku', 'language', 'de', 'Kurdisch')");
9156 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ku', 'language', 'es', 'Kurdo')");
9158 $dbh->do("UPDATE language_descriptions SET description = 'ພາສາລາວ' WHERE subtag = 'lo' AND type = 'language' AND lang = 'lo'");
9160 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'mi', 'language', 'Maori','2014-10-30')");
9161 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'mi','mri')");
9162 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'mi', 'language', 'mi', 'Te Reo Māori')");
9163 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'mi', 'language', 'en', 'Maori')");
9165 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'mn', 'language', 'Mongolian','2014-10-30')");
9166 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'mn','mon')");
9167 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'mn', 'language', 'mn', 'Mонгол')");
9168 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'mn', 'language', 'en', 'Mongolian')");
9170 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'mr', 'language', 'Marathi','2014-10-30')");
9171 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'mr','mar')");
9172 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'mr', 'language', 'mr', 'मराठी')");
9173 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'mr', 'language', 'en', 'Marathi')");
9175 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ms', 'language', 'Malay','2014-10-30')");
9176 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'ms','may')");
9177 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ms', 'language', 'ms', 'Bahasa melayu')");
9178 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ms', 'language', 'en', 'Malay')");
9180 $dbh->do("UPDATE language_descriptions SET description = 'Norsk bokmål' WHERE subtag = 'nb' AND type = 'language' AND lang = 'nb'");
9181 $dbh->do("UPDATE language_descriptions SET description = 'Norwegian bokmål' WHERE subtag = 'nb' AND type = 'language' AND lang = 'en'");
9182 $dbh->do("UPDATE language_descriptions SET description = 'Norvégien bokmål' WHERE subtag = 'nb' AND type = 'language' AND lang = 'fr'");
9183 $dbh->do("UPDATE language_descriptions SET description = 'Norwegisch bokmål' WHERE subtag = 'nb' AND type = 'language' AND lang = 'de'");
9185 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ne', 'language', 'Nepali','2014-10-30')");
9186 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'ne','nep')");
9187 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description)VALUES ( 'ne', 'language', 'ne', 'नेपाली')");
9188 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ne', 'language', 'en', 'Nepali')");
9190 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'pbr', 'language', 'Pangwa','2014-10-30')");
9191 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'pbr','pbr')");
9192 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'pbr', 'language', 'pbr', 'Ekipangwa')");
9193 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'pbr', 'language', 'en', 'Pangwa')");
9195 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'prs', 'language', 'Dari','2014-10-30')");
9196 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'prs','prs')");
9197 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'prs', 'language', 'prs', 'درى')");
9198 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'prs', 'language', 'en', 'Dari')");
9200 $dbh->do("UPDATE language_descriptions SET description = 'Português' WHERE subtag = 'pt' AND type = 'language' AND lang = 'pt'");
9201 $dbh->do("UPDATE language_descriptions SET description = 'Român' WHERE subtag = 'ro' AND type = 'language' AND lang = 'ro'");
9202 $dbh->do("UPDATE language_descriptions SET description = 'Русский' WHERE subtag = 'ru' AND type = 'language' AND lang = 'ru'");
9204 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'rw', 'language', 'Kinyarwanda','2014-10-30')");
9205 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'rw','kin')");
9206 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'rw', 'language', 'rw', 'Ikinyarwanda')");
9207 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'rw', 'language', 'en', 'Kinyarwanda')");
9209 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'sd', 'language', 'Sindhi','2014-10-30')");
9210 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'sd','snd')");
9211 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sd', 'language', 'sd', 'سنڌي')");
9212 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sd', 'language', 'en', 'Sindhi')");
9214 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'sk', 'language', 'Slovak','2014-10-30')");
9215 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'sk','slk')");
9216 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sk', 'language', 'sk', 'Slovenčina')");
9217 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sk', 'language', 'en', 'Slovak')");
9219 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'sl', 'language', 'Slovene','2014-10-30')");
9220 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'sl','slv')");
9221 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sl', 'language', 'sl', 'Slovenščina')");
9222 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sl', 'language', 'en', 'Slovene')");
9224 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'sq', 'language', 'Albanian','2014-10-30')");
9225 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'sq','sqi')");
9226 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sq', 'language', 'sq', 'Shqip')");
9227 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sq', 'language', 'en', 'Albanian')");
9229 $dbh->do("UPDATE language_descriptions SET description = 'Cрпски' WHERE subtag = 'sr' AND type = 'language' AND lang = 'sr'");
9231 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'sw', 'language', 'Swahili','2014-10-30')");
9232 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'sw','swa')");
9233 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sw', 'language', 'sw', 'Kiswahili')");
9234 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'sw', 'language', 'en', 'Swahili')");
9236 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ta', 'language', 'Tamil','2014-10-30')");
9237 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'ta','tam')");
9238 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ta', 'language', 'ta', 'தமிழ்')");
9239 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ta', 'language', 'en', 'Tamil')");
9241 $dbh->do("UPDATE language_descriptions SET description = 'Tetun' WHERE subtag = 'tet' AND type = 'language' AND lang = 'tet'");
9242 $dbh->do("UPDATE language_descriptions SET description = 'ภาษาไทย' WHERE subtag = 'th' AND type = 'language' AND lang = 'th'");
9244 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'tl', 'language', 'Tagalog','2014-10-30')");
9245 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'tl','tgl')");
9246 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'tl', 'language', 'tl', 'Tagalog')");
9247 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'tl', 'language', 'en', 'Tagalog')");
9249 $dbh->do("UPDATE language_descriptions SET description = 'Türkçe' WHERE subtag = 'tr' AND type = 'language' AND lang = 'tr'");
9250 $dbh->do("UPDATE language_descriptions SET description = 'Українська' WHERE subtag = 'uk' AND type = 'language' AND lang = 'uk'");
9251 $dbh->do("UPDATE language_descriptions SET description = 'اردو' WHERE subtag = 'ur' AND type = 'language' AND lang = 'ur'");
9253 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'vi', 'language', 'Vietnamese','2014-10-30')");
9254 $dbh->do("INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'vi','vie')");
9255 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'vi', 'language', 'vi', '㗂越')");
9256 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'vi', 'language', 'en', 'Vietnamese')");
9258 $dbh->do("UPDATE language_descriptions SET description = '中文' WHERE subtag = 'zh' AND type = 'language' AND lang = 'zh'");
9259 $dbh->do("UPDATE language_descriptions SET description = '' WHERE subtag = 'Arab,script' AND type = 'Arab' AND lang = 'العربية'");
9261 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'Armn', 'script', 'Armenian','2014-10-30')");
9262 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'Armn', 'script', 'Armn', 'Հայոց այբուբեն')");
9263 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES( 'Armn', 'script', 'en', 'Armenian')");
9265 $dbh->do("UPDATE language_descriptions SET description = 'Кирилица' WHERE subtag = 'Cyrl' AND type = 'script' AND lang = 'Cyrl'");
9267 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'Ethi', 'script', 'Ethiopic','2014-10-30')");
9268 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'Ethi', 'script', 'Ethi', 'ግዕዝ')");
9269 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES( 'Ethi', 'script', 'en', 'Ethiopic')");
9271 $dbh->do("UPDATE language_descriptions SET description = 'Ελληνικό αλφάβητο' WHERE subtag = 'Grek' AND type = 'script' AND lang = 'Grek'");
9272 $dbh->do("UPDATE language_descriptions SET description = '简体字' WHERE subtag = 'Hans' AND type = 'script' AND lang = 'Hans'");
9273 $dbh->do("UPDATE language_descriptions SET description = '繁體字' WHERE subtag = 'Hant' AND type = 'script' AND lang = 'Hant'");
9274 $dbh->do("UPDATE language_descriptions SET description = 'אָלֶף־בֵּית עִבְרִי' WHERE subtag = 'Hebr' AND type = 'script' AND lang = 'Hebr'");
9276 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'Jpan', 'script', 'Japanese','2014-10-30')");
9277 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'Jpan', 'script', 'Jpan', '漢字')");
9278 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES( 'Jpan', 'script', 'en', 'Japanese')");
9280 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'Knda', 'script', 'Kannada','2014-10-30')");
9281 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'Knda', 'script', 'Knda', 'ಕನ್ನಡ ಲಿಪಿ')");
9282 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES( 'Knda', 'script', 'en', 'Kannada')");
9284 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'Kore', 'script', 'Korean','2014-10-30')");
9285 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'Kore', 'script', 'Kore', '한글')");
9286 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES( 'Kore', 'script', 'en', 'Korean')");
9288 $dbh->do("UPDATE language_descriptions SET description = 'ອັກສອນລາວ' WHERE subtag = 'Laoo' AND type = 'script' AND lang = 'Laoo'");
9290 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'AL', 'region', 'Albania','2014-10-30')");
9291 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'AL', 'region', 'en', 'Albania')");
9292 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'AL', 'region', 'sq', 'Shqipërisë')");
9294 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'AZ', 'region', 'Azerbaijan','2014-10-30')");
9295 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'AZ', 'region', 'en', 'Azerbaijan')");
9296 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'AZ', 'region', 'az', 'Azərbaycan')");
9298 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'BE', 'region', 'Belgium','2014-10-30')");
9299 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'BE', 'region', 'en', 'Belgium')");
9300 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'BE', 'region', 'nl', 'België')");
9302 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'BR', 'region', 'Brazil','2014-10-30')");
9303 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'BR', 'region', 'en', 'Brazil')");
9304 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'BR', 'region', 'pt', 'Brasil')");
9306 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'BY', 'region', 'Belarus','2014-10-30')");
9307 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'BY', 'region', 'en', 'Belarus')");
9308 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'BY', 'region', 'be', 'Беларусь')");
9310 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CA', 'region', 'fr', 'Canada')");
9312 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'CH', 'region', 'Switzerland','2014-10-30')");
9313 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CH', 'region', 'en', 'Switzerland')");
9314 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CH', 'region', 'de', 'Schweiz')");
9316 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'CN', 'region', 'China','2014-10-30')");
9317 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CN', 'region', 'en', 'China')");
9318 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CN', 'region', 'zh', '中国')");
9320 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'CZ', 'region', 'Czech Republic','2014-10-30')");
9321 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CZ', 'region', 'en', 'Czech Republic')");
9322 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'CZ', 'region', 'cs', 'Česká republika')");
9324 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'DE', 'region', 'Germany','2014-10-30')");
9325 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'DE', 'region', 'en', 'Germany')");
9326 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'DE', 'region', 'de', 'Deutschland')");
9328 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'DK', 'region', 'en', 'Denmark')");
9330 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ES', 'region', 'Spain','2014-10-30')");
9331 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ES', 'region', 'en', 'Spain')");
9332 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ES', 'region', 'es', 'España')");
9334 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'FI', 'region', 'Finland','2014-10-30')");
9335 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'FI', 'region', 'en', 'Finland')");
9336 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'FI', 'region', 'fi', 'Suomi')");
9338 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'FO', 'region', 'Faroe Islands','2014-10-30')");
9339 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'FO', 'region', 'en', 'Faroe Islands')");
9340 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'FO', 'region', 'fo', 'Føroyar')");
9342 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'GR', 'region', 'Greece','2014-10-30')");
9343 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'GR', 'region', 'en', 'Greece')");
9344 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'GR', 'region', 'el', 'Ελλάδα')");
9346 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'HR', 'region', 'Croatia','2014-10-30')");
9347 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'HR', 'region', 'en', 'Croatia')");
9348 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'HR', 'region', 'hr', 'Hrvatska')");
9350 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'HU', 'region', 'Hungary','2014-10-30')");
9351 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'HU', 'region', 'en', 'Hungary')");
9352 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'HU', 'region', 'hu', 'Magyarország')");
9354 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ID', 'region', 'Indonesia','2014-10-30')");
9355 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ID', 'region', 'en', 'Indonesia')");
9356 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ID', 'region', 'id', 'Indonesia')");
9358 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'IS', 'region', 'Iceland','2014-10-30')");
9359 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'IS', 'region', 'en', 'Iceland')");
9360 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'IS', 'region', 'is', 'Ísland')");
9362 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'IT', 'region', 'Italy','2014-10-30')");
9363 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'IT', 'region', 'en', 'Italy')");
9364 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'IT', 'region', 'it', 'Italia')");
9366 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'JP', 'region', 'Japan','2014-10-30')");
9367 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'JP', 'region', 'en', 'Japan')");
9368 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'JP', 'region', 'ja', '日本')");
9370 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'KE', 'region', 'Kenya','2014-10-30')");
9371 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'KE', 'region', 'en', 'Kenya')");
9372 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'KE', 'region', 'rw', 'Kenya')");
9374 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'KH', 'region', 'Cambodia','2014-10-30')");
9375 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'KH', 'region', 'en', 'Cambodia')");
9376 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'KH', 'region', 'km', 'កម្ពុជា')");
9378 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'KP', 'region', 'North Korea','2014-10-30')");
9379 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'KP', 'region', 'en', 'North Korea')");
9380 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'KP', 'region', 'ko', '조선민주주의인민공화국')");
9382 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'LK', 'region', 'Sri Lanka','2014-10-30')");
9383 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'LK', 'region', 'en', 'Sri Lanka')");
9384 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'LK', 'region', 'ta', 'இலங்கை')");
9386 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'MY', 'region', 'Malaysia','2014-10-30')");
9387 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'MY', 'region', 'en', 'Malaysia')");
9388 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'MY', 'region', 'ms', 'Malaysia')");
9390 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'NE', 'region', 'Niger','2014-10-30')");
9391 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NE', 'region', 'en', 'Niger')");
9392 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NE', 'region', 'ne', 'Niger')");
9394 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'NL', 'region', 'Netherlands','2014-10-30')");
9395 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NL', 'region', 'en', 'Netherlands')");
9396 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NL', 'region', 'nl', 'Nederland')");
9398 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'NO', 'region', 'Norway','2014-10-30')");
9399 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NO', 'region', 'en', 'Norway')");
9400 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NO', 'region', 'ne', 'Noreg')");
9401 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'NO', 'region', 'nn', 'Noreg')");
9403 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'PH', 'region', 'Philippines','2014-10-30')");
9404 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PH', 'region', 'en', 'Philippines')");
9405 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PH', 'region', 'tl', 'Pilipinas')");
9407 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'PK', 'region', 'Pakistan','2014-10-30')");
9408 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PK', 'region', 'en', 'Pakistan')");
9409 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PK', 'region', 'sd', 'پاكستان')");
9411 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'PL', 'region', 'Poland','2014-10-30')");
9412 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PL', 'region', 'en', 'Poland')");
9413 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PL', 'region', 'pl', 'Polska')");
9415 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'PT', 'region', 'Portugal','2014-10-30')");
9416 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PT', 'region', 'en', 'Portugal')");
9417 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'PT', 'region', 'pt', 'Portugal')");
9419 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'RO', 'region', 'Romania','2014-10-30')");
9420 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'RO', 'region', 'en', 'Romania')");
9421 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'RO', 'region', 'ro', 'România')");
9423 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'RU', 'region', 'Russia','2014-10-30')");
9424 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'RU', 'region', 'en', 'Russia')");
9425 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'RU', 'region', 'ru', 'Россия')");
9427 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'RW', 'region', 'Rwanda','2014-10-30')");
9428 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'RW', 'region', 'en', 'Rwanda')");
9429 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'RW', 'region', 'rw', 'Rwanda')");
9431 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'SE', 'region', 'Sweden','2014-10-30')");
9432 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'SE', 'region', 'en', 'Sweden')");
9433 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'SE', 'region', 'sv', 'Sverige')");
9435 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'SI', 'region', 'Slovenia','2014-10-30')");
9436 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'SI', 'region', 'en', 'Slovenia')");
9437 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'SI', 'region', 'sl', 'Slovenija')");
9439 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'SK', 'region', 'Slovakia','2014-10-30')");
9440 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'SK', 'region', 'en', 'Slovakia')");
9441 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'SK', 'region', 'sk', 'Slovensko')");
9443 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'TH', 'region', 'Thailand','2014-10-30')");
9444 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'TH', 'region', 'en', 'Thailand')");
9445 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'TH', 'region', 'th', 'ประเทศไทย')");
9447 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'TR', 'region', 'Turkey','2014-10-30')");
9448 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'TR', 'region', 'en', 'Turkey')");
9449 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'TR', 'region', 'tr', 'Türkiye')");
9451 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'TW', 'region', 'Taiwan','2014-10-30')");
9452 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'TW', 'region', 'en', 'Taiwan')");
9453 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'TW', 'region', 'zh', '台灣')");
9455 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'UA', 'region', 'Ukraine','2014-10-30')");
9456 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'UA', 'region', 'en', 'Ukraine')");
9457 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'UA', 'region', 'uk', 'Україна')");
9459 $dbh->do("INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'VN', 'region', 'Vietnam','2014-10-30')");
9460 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'VN', 'region', 'en', 'Vietnam')");
9461 $dbh->do("INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'VN', 'region', 'vi', 'Việt Nam')");
9463 print "Upgrade to $DBversion done (Bug 12250: Update descriptions for languages, scripts and regions)\n";
9464 SetVersion($DBversion);
9467 $DBversion = "3.17.00.050";
9468 if ( CheckVersion($DBversion) ) {
9469 $dbh->do(q|
9470 INSERT INTO permissions (module_bit, code, description) VALUES
9471 (13, 'records_batchdel', 'Perform batch deletion of records (bibliographic or authority)')
9473 print "Upgrade to $DBversion done (Bug 12403: Add permission tools_records_batchdelitem)\n";
9474 SetVersion($DBversion);
9477 $DBversion = "3.17.00.051";
9478 if ( CheckVersion($DBversion) ) {
9479 $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('GoogleIndicTransliteration','0','','GoogleIndicTransliteration on the OPAC.','YesNo')");
9480 print "Upgrade to $DBversion done (Bug 13211: Added system preferences GoogleIndicTransliteration on the OPAC)\n";
9481 SetVersion($DBversion);
9484 $DBversion = "3.17.00.052";
9485 if ( CheckVersion($DBversion) ) {
9486 $dbh->do(q{
9487 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAdvSearchOptions','pubdate|itemtype|language|sorting|location','Show search options','pubdate|itemtype|language|subtype|sorting|location','multiple');
9490 $dbh->do(q{
9491 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAdvSearchMoreOptions','pubdate|itemtype|language|subtype|sorting|location','Show search options for the expanded view (More options)','pubdate|itemtype|language|subtype|sorting|location','multiple');
9493 print "Upgrade to $DBversion done (Bug 9043: Add system preference OpacAdvSearchOptions and OpacAdvSearchMoreOptions)\n";
9494 SetVersion ($DBversion);
9497 $DBversion = "3.17.00.053";
9498 if ( CheckVersion($DBversion) ) {
9499 $dbh->do(q{
9500 INSERT INTO permissions (module_bit, code, description) VALUES ('9', 'edit_items_restricted', 'Limit item modification to subfields defined in the SubfieldsToAllowForRestrictedEditing preference (please note that edit_item is still required)');
9503 $dbh->do(q{
9504 INSERT INTO permissions (module_bit, code, description) VALUES ('9', 'delete_all_items', 'Delete all items at once');
9507 $dbh->do(q{
9508 INSERT INTO permissions (module_bit, code, description) VALUES ('13', 'items_batchmod_restricted', 'Limit batch item modification to subfields defined in the SubfieldsToAllowForRestrictedBatchmod preference (please note that items_batchmod is still required)');
9511 # The delete_all_items permission should be added to users having the edit_items permission.
9512 $dbh->do(q{
9513 INSERT INTO user_permissions (borrowernumber, module_bit, code) SELECT borrowernumber, module_bit, "delete_all_items" FROM user_permissions WHERE code="edit_items";
9516 # Add 2 new prefs
9517 $dbh->do(q{
9518 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SubfieldsToAllowForRestrictedEditing','','Define a list of subfields for which edition is authorized when edit_items_restricted permission is enabled, separated by spaces. Example: 995\$f 995\$h 995\$j','','Free');
9521 $dbh->do(q{
9522 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SubfieldsToAllowForRestrictedBatchmod','','Define a list of subfields for which edition is authorized when items_batchmod_restricted permission is enabled, separated by spaces. Example: 995\$f 995\$h 995\$j','','Free');
9525 print "Upgrade to $DBversion done (Bug 7673: Adds 2 new prefs (SubfieldsToAllowForRestrictedEditing and SubfieldsToAllowForRestrictedBatchmod) and 3 new permissions (edit_items_restricted and delete_all_items and items_batchmod_restricted))\n";
9526 SetVersion($DBversion);
9529 $DBversion = "3.17.00.054";
9530 if (CheckVersion($DBversion)) {
9531 $dbh->do(q{
9532 INSERT INTO systempreferences ( variable, value, options, explanation, type ) VALUES
9533 ('AllowRenewalIfOtherItemsAvailable','0',NULL,'If enabled, allow a patron to renew an item with unfilled holds if other available items can fill that hold.','YesNo')
9535 print "Upgrade to $DBversion done (Bug 11634 - Allow renewal of item with unfilled holds if other available items can fill those holds)\n";
9536 SetVersion($DBversion);
9539 $DBversion = "3.17.00.055";
9540 if ( CheckVersion($DBversion) ) {
9541 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('NorwegianPatronDBEnable', '0', NULL, 'Enable communication with the Norwegian national patron database.', 'YesNo')");
9542 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('NorwegianPatronDBEndpoint', '', NULL, 'Which NL endpoint to use.', 'Free')");
9543 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('NorwegianPatronDBUsername', '', NULL, 'Username for communication with the Norwegian national patron database.', 'Free')");
9544 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('NorwegianPatronDBPassword', '', NULL, 'Password for communication with the Norwegian national patron database.', 'Free')");
9545 $dbh->do("INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('NorwegianPatronDBSearchNLAfterLocalHit','0',NULL,'Search NL if a search has already given one or more local hits?.','YesNo')");
9546 $dbh->do("
9547 CREATE TABLE borrower_sync (
9548 borrowersyncid int(11) NOT NULL AUTO_INCREMENT,
9549 borrowernumber int(11) NOT NULL,
9550 synctype varchar(32) NOT NULL,
9551 sync tinyint(1) NOT NULL DEFAULT '0',
9552 syncstatus varchar(10) DEFAULT NULL,
9553 lastsync varchar(50) DEFAULT NULL,
9554 hashed_pin varchar(64) DEFAULT NULL,
9555 PRIMARY KEY (borrowersyncid),
9556 KEY borrowernumber (borrowernumber),
9557 CONSTRAINT borrower_sync_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE
9558 ) ENGINE=InnoDB DEFAULT CHARSET=utf8"
9560 print "Upgrade to $DBversion done (Bug 11401 - Add support for Norwegian national library card)\n";
9561 SetVersion($DBversion);
9564 $DBversion = "3.17.00.056";
9565 if ( CheckVersion($DBversion) ) {
9566 $dbh->do(q{
9567 UPDATE systempreferences SET value = 'pubdate,itemtype,language,sorting,location' WHERE variable='OpacAdvSearchOptions'
9570 $dbh->do(q{
9571 UPDATE systempreferences SET value = 'pubdate,itemtype,language,subtype,sorting,location' WHERE variable='OpacAdvSearchMoreOptions'
9574 print "Upgrade to $DBversion done (Bug 9043 - Update the values for OpacAdvSearchOptions and OpacAdvSearchOptions)\n";
9575 SetVersion($DBversion);
9578 $DBversion = "3.17.00.057";
9579 if ( CheckVersion($DBversion) ) {
9580 print "Upgrade to $DBversion done (Koha 3.18 beta)\n";
9581 SetVersion ($DBversion);
9584 $DBversion = "3.17.00.058";
9585 if( CheckVersion($DBversion) ){
9586 $dbh->do("INSERT INTO systempreferences (variable, explanation, type) VALUES('DefaultLongOverdueChargeValue','Charge a lost item to the borrower account when the LOST value of the item changes to n', 'integer')");
9587 $dbh->do("INSERT INTO systempreferences (variable, explanation, type) VALUES('DefaultLongOverdueLostValue', 'Set the LOST value of an item to n when the item has been overdue for more than defaultlongoverduedays days.', 'integer')");
9588 $dbh->do("INSERT INTO systempreferences (variable, explanation, type) VALUES('DefaultLongOverdueDays', 'Set the LOST value of an item when the item has been overdue for more than n days.', 'integer')");
9589 print "Upgrade to $DBversion done (Bug 8337: System preferences for longoverdue cron)\n";
9590 SetVersion($DBversion);
9593 $DBversion = "3.17.00.059";
9594 if ( CheckVersion($DBversion) ) {
9595 $dbh->do(q{
9596 UPDATE permissions SET description = "Add and delete budgets (but can't modifiy budgets)" WHERE description = "Add and delete budgets (but cant modify budgets)";
9598 print "Upgrade to $DBversion done (Bug 10749: Fix typo in budget_add_del permission description)\n";
9599 SetVersion ($DBversion);
9602 $DBversion = "3.17.00.060";
9603 if ( CheckVersion($DBversion) ) {
9604 my $count_l = $dbh->selectcol_arrayref(q|
9605 SELECT COUNT(*) FROM letter WHERE message_transport_type='feed'
9607 my $count_mq = $dbh->selectcol_arrayref(q|
9608 SELECT COUNT(*) FROM message_queue WHERE message_transport_type='feed'
9610 my $count_ott = $dbh->selectcol_arrayref(q|
9611 SELECT COUNT(*) FROM overduerules_transport_types WHERE message_transport_type='feed'
9613 my $count_mt = $dbh->selectcol_arrayref(q|
9614 SELECT COUNT(*) FROM message_transports WHERE message_transport_type='feed'
9616 my $count_bmtp = $dbh->selectcol_arrayref(q|
9617 SELECT COUNT(*) FROM borrower_message_transport_preferences WHERE message_transport_type='feed'
9620 my $deleted = 0;
9621 if ( $count_l->[0] == 0 and $count_mq->[0] == 0 and $count_ott->[0] == 0 and $count_mt->[0] == 0 and $count_bmtp->[0] == 0 ) {
9622 $deleted = $dbh->do(q|
9623 DELETE FROM message_transport_types where message_transport_type='feed'
9625 $deleted = $deleted ne '0E0' ? 1 : 0;
9628 print "Upgrade to $DBversion done (Bug 12298: Delete the 'feed' message transport type " . ($deleted ? '(deleted!)' : '(not deleted)') . ")\n";
9629 SetVersion($DBversion);
9632 $DBversion = "3.18.00.000";
9633 if ( CheckVersion($DBversion) ) {
9634 print "Upgrade to $DBversion done (3.18.0 release)\n";
9635 SetVersion($DBversion);
9638 $DBversion = "3.19.00.000";
9639 if ( CheckVersion($DBversion) ) {
9640 print "Upgrade to $DBversion done (there's life after 3.18)\n";
9641 SetVersion ($DBversion);
9644 $DBversion = "3.19.00.001";
9645 if ( CheckVersion($DBversion) ) {
9646 $dbh->do("
9647 UPDATE systempreferences
9648 SET options = 'public|school|academic|research|private|societyAssociation|corporate|government|religiousOrg|subscription'
9649 WHERE variable = 'UsageStatsLibraryType'
9651 if ( C4::Context->preference("UsageStatsLibraryType") eq "university" ) {
9652 C4::Context->set_preference("UsageStatsLibraryType", "academic")
9654 print "Upgrade to $DBversion done (Bug 13436: Add more options to UsageStatsLibraryType)\n";
9655 SetVersion ($DBversion);
9658 $DBversion = "3.19.00.002";
9659 if ( CheckVersion($DBversion) ) {
9660 $dbh->do(q|
9661 UPDATE suggestions SET branchcode="" WHERE branchcode="__ANY__"
9663 print "upgrade to $DBversion done (Bug 10753: replace __ANY__ with empty string in suggestions.branchcode)\n";
9664 SetVersion ($DBversion);
9667 $DBversion = "3.19.00.003";
9668 if ( CheckVersion($DBversion) ) {
9669 my ($count) = $dbh->selectrow_array("SELECT COUNT(*) FROM borrowers GROUP BY userid HAVING COUNT(userid) > 1");
9671 if ( $count ) {
9672 print "Upgrade to $DBversion done (Bug 1861 - Unique patrons logins not (totally) enforced) FAILED!\n";
9673 print "Your database has users with duplicate user logins. Please have your administrator deduplicate your user logins.\n";
9674 print "Afterward, your Koha administrator should execute the following database query: ALTER TABLE borrowers DROP INDEX userid, ADD UNIQUE userid (userid)";
9675 } else {
9676 $dbh->do(q{
9677 ALTER TABLE borrowers
9678 DROP INDEX userid ,
9679 ADD UNIQUE userid (userid)
9681 print "Upgrade to $DBversion done (Bug 1861: Unique patrons logins not (totally) enforced)\n";
9683 SetVersion ($DBversion);
9686 $DBversion = "3.19.00.004";
9687 if ( CheckVersion($DBversion) ) {
9688 my $pref_value = C4::Context->preference('OpacExportOptions');
9689 $pref_value =~ s/\|/,/g; # multiple is separated by ,
9690 $dbh->do(q{
9691 UPDATE systempreferences
9692 SET value = ?,
9693 type = 'multiple'
9694 WHERE variable = 'OpacExportOptions'
9695 }, {}, $pref_value );
9696 print "Upgrade to $DBversion done (Bug 13346: OpacExportOptions is now multiple)\n";
9697 SetVersion ($DBversion);
9700 $DBversion = "3.19.00.005";
9701 if(CheckVersion($DBversion)) {
9702 $dbh->do(q{
9703 ALTER TABLE authorised_values MODIFY COLUMN category VARCHAR(32) NOT NULL DEFAULT ''
9706 $dbh->do(q{
9707 ALTER TABLE borrower_attribute_types MODIFY COLUMN authorised_value_category VARCHAR(32) DEFAULT NULL
9710 print "Upgrade to $DBversion done (Bug 13379: Modify authorised_values.category to varchar(32))\n";
9711 SetVersion($DBversion);
9714 $DBversion = "3.19.00.006";
9715 if ( CheckVersion($DBversion) ) {
9716 $dbh->do(q|SET foreign_key_checks = 0|);
9717 my $sth = $dbh->table_info( '','','','TABLE' );
9718 my ( $cat, $schema, $name, $type, $remarks );
9719 while ( ( $cat, $schema, $name, $type, $remarks ) = $sth->fetchrow_array ) {
9720 my $table_sth = $dbh->prepare(qq|SHOW CREATE TABLE $name|);
9721 $table_sth->execute;
9722 my @table = $table_sth->fetchrow_array;
9723 unless ( $table[1] =~ /COLLATE=utf8mb4_unicode_ci/ ) { #catches utf8mb4 collated tables
9724 if ( $name eq 'marc_subfield_structure' ) {
9725 $dbh->do(q|
9726 ALTER TABLE marc_subfield_structure
9727 MODIFY COLUMN tagfield varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
9728 MODIFY COLUMN tagsubfield varchar(1) COLLATE utf8_bin NOT NULL DEFAULT '',
9729 MODIFY COLUMN liblibrarian varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
9730 MODIFY COLUMN libopac varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
9731 MODIFY COLUMN kohafield varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
9732 MODIFY COLUMN authorised_value varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
9733 MODIFY COLUMN authtypecode varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
9734 MODIFY COLUMN value_builder varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
9735 MODIFY COLUMN frameworkcode varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
9736 MODIFY COLUMN seealso varchar(1100) COLLATE utf8_unicode_ci DEFAULT NULL,
9737 MODIFY COLUMN link varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL
9739 $dbh->do(qq|ALTER TABLE $name CHARACTER SET utf8 COLLATE utf8_unicode_ci|);
9741 else {
9742 $dbh->do(qq|ALTER TABLE $name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci|);
9746 $dbh->do(q|SET foreign_key_checks = 1|);;
9748 print "Upgrade to $DBversion done (Bug 11944: Convert DB tables to utf8_unicode_ci)\n";
9749 SetVersion($DBversion);
9752 $DBversion = "3.19.00.007";
9753 if ( CheckVersion($DBversion) ) {
9754 my $orphan_budgets = $dbh->selectall_arrayref(q|
9755 SELECT budget_id, budget_name, budget_code
9756 FROM aqbudgets
9757 WHERE budget_parent_id IS NOT NULL
9758 AND budget_parent_id NOT IN (
9759 SELECT DISTINCT budget_id FROM aqbudgets
9761 |, { Slice => {} } );
9763 if ( @$orphan_budgets ) {
9764 for my $b ( @$orphan_budgets ) {
9765 print "Fund $b->{budget_name} (code:$b->{budget_code}, id:$b->{budget_id}) does not have a parent, it may cause problem\n";
9767 print "Upgrade to $DBversion done (Bug 12905: Check budget integrity: FAIL)\n";
9768 } else {
9769 print "Upgrade to $DBversion done (Bug 12905: Check budget integrity: OK)\n";
9771 SetVersion ($DBversion);
9774 $DBversion = "3.19.00.008";
9775 if ( CheckVersion($DBversion) ) {
9776 my $number_of_orders_not_linked = $dbh->selectcol_arrayref(q|
9777 SELECT COUNT(*)
9778 FROM aqorders o
9779 WHERE NOT EXISTS (
9780 SELECT NULL
9781 FROM aqbudgets b
9782 WHERE b.budget_id = o.budget_id
9786 if ( $number_of_orders_not_linked->[0] > 0 ) {
9787 $dbh->do(q|
9788 INSERT INTO aqbudgetperiods(budget_period_startdate, budget_period_enddate, budget_period_active, budget_period_description, budget_period_total) VALUES ( CAST(NOW() AS date), CAST(NOW() AS date), 0, "WARNING: This budget has been automatically created by the updatedatabase script, please see bug 12601 for more information", 0)
9790 my $budget_period_id = $dbh->last_insert_id( undef, undef, 'aqbudgetperiods', undef );
9791 $dbh->do(qq|
9792 INSERT INTO aqbudgets(budget_code, budget_name, budget_amount, budget_period_id) VALUES ( "BACKUP_TMP", "WARNING: fund created by the updatedatabase script, please see bug 12601", 0, $budget_period_id );
9794 my $budget_id = $dbh->last_insert_id( undef, undef, 'aqbudgets', undef );
9795 $dbh->do(qq|
9796 UPDATE aqorders o
9797 SET budget_id = $budget_id
9798 WHERE NOT EXISTS (
9799 SELECT NULL
9800 FROM aqbudgets b
9801 WHERE b.budget_id = o.budget_id
9806 $dbh->do(q|
9807 ALTER TABLE aqorders
9808 ADD CONSTRAINT aqorders_budget_id_fk FOREIGN KEY (budget_id) REFERENCES aqbudgets(budget_id) ON DELETE CASCADE ON UPDATE CASCADE
9811 print "Upgrade to $DBversion done (Bug 12601: Add new foreign key aqorders.budget_id" . ( ( $number_of_orders_not_linked->[0] > 0 ) ? ' WARNING: temporary budget and fund have been created (search for "BACKUP_TMP"). At least one of your order was not linked to a budget' : '' ) . ")\n";
9812 SetVersion($DBversion);
9815 $DBversion = "3.19.00.009";
9816 if ( CheckVersion($DBversion) ) {
9817 $dbh->do(q|
9818 UPDATE suggestions s SET s.budgetid = NULL
9819 WHERE NOT EXISTS (
9820 SELECT NULL
9821 FROM aqbudgets b
9822 WHERE b.budget_id = s.budgetid
9826 $dbh->do(q|
9827 ALTER TABLE suggestions
9828 ADD CONSTRAINT suggestions_budget_id_fk FOREIGN KEY (budgetid) REFERENCES aqbudgets(budget_id) ON DELETE SET NULL ON UPDATE CASCADE
9831 print "Upgrade to $DBversion done (Bug 13007: Add new foreign key suggestions.budgetid)\n";
9832 SetVersion($DBversion);
9835 $DBversion = "3.19.00.010";
9836 if ( CheckVersion($DBversion) ) {
9837 $dbh->do(q|
9838 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
9839 VALUES('SessionRestrictionByIP','1','Check for Change in Remote IP address for Session Security. Disable when remote ip address changes frequently.','','YesNo')
9841 print "Upgrade to $DBversion done (Bug 5511: SessionRestrictionByIP)\n";
9842 SetVersion ($DBversion);
9845 $DBversion = "3.19.00.011";
9846 if ( CheckVersion($DBversion) ) {
9847 $dbh->do(q|
9848 INSERT INTO userflags (bit, flag, flagdesc, defaulton) VALUES
9849 (20, 'lists', 'Lists', 0)
9851 $dbh->do(q|
9852 INSERT INTO permissions (module_bit, code, description) VALUES
9853 (20, 'delete_public_lists', 'Delete public lists')
9855 print "Upgrade to $DBversion done (Bug 13417: Add permission to delete public lists)\n";
9856 SetVersion ($DBversion);
9859 $DBversion = "3.19.00.012";
9860 if(CheckVersion($DBversion)) {
9861 $dbh->do(q{
9862 ALTER TABLE biblioitems MODIFY COLUMN marcxml longtext
9865 $dbh->do(q{
9866 ALTER TABLE deletedbiblioitems MODIFY COLUMN marcxml longtext
9869 print "Upgrade to $DBversion done (Bug 13523 Remove NOT NULL restriction on field marcxml due to mysql STRICT_TRANS_TABLES)\n";
9870 SetVersion ($DBversion);
9873 $DBversion = "3.19.00.013";
9874 if ( CheckVersion($DBversion) ) {
9875 $dbh->do(q|
9876 INSERT INTO permissions (module_bit, code, description) VALUES
9877 (13, 'records_batchmod', 'Perform batch modification of records (biblios or authorities)')
9879 print "Upgrade to $DBversion done (Bug 11395: Add permission tools_records_batchmod)\n";
9880 SetVersion($DBversion);
9883 $DBversion = "3.19.00.014";
9884 if ( CheckVersion($DBversion) ) {
9885 $dbh->do(q|
9886 CREATE TABLE aqorder_users (
9887 ordernumber int(11) NOT NULL,
9888 borrowernumber int(11) NOT NULL,
9889 PRIMARY KEY (ordernumber, borrowernumber),
9890 CONSTRAINT aqorder_users_ibfk_1 FOREIGN KEY (ordernumber) REFERENCES aqorders (ordernumber) ON DELETE CASCADE ON UPDATE CASCADE,
9891 CONSTRAINT aqorder_users_ibfk_2 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE
9892 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
9895 $dbh->do(q|
9896 INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type)
9897 VALUES ('acquisition', 'ACQ_NOTIF_ON_RECEIV', '', 'Notification on receiving', 'Order received', 'Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\n The order <<aqorders.ordernumber>> (<<biblio.title>>) has been received.\n\nYour library.', 'email')
9899 print "Upgrade to $DBversion done (Bug 12648: Add letter ACQ_NOTIF_ON_RECEIV )\n";
9900 SetVersion ($DBversion);
9903 $DBversion = "3.19.00.015";
9904 if ( CheckVersion($DBversion) ) {
9905 $dbh->do(q|
9906 ALTER TABLE search_history ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY(id);
9908 print "Upgrade to $DBversion done (Bug 11430: Add primary key for search_history)\n";
9909 SetVersion ($DBversion);
9912 $DBversion = "3.19.00.016";
9913 if(CheckVersion($DBversion)) {
9914 my @order_cancellation_reason = $dbh->selectrow_array("SELECT count(*) FROM authorised_values WHERE category='ORDER_CANCELLATION_REASON'");
9915 if ($order_cancellation_reason[0] == 0) {
9916 $dbh->do(q{
9917 INSERT INTO authorised_values (category, authorised_value, lib) VALUES
9918 ('ORDER_CANCELLATION_REASON', 0, 'No reason provided'),
9919 ('ORDER_CANCELLATION_REASON', 1, 'Out of stock'),
9920 ('ORDER_CANCELLATION_REASON', 2, 'Restocking')
9923 my $already_existing_reasons = $dbh->selectcol_arrayref(q{
9924 SELECT DISTINCT( cancellationreason )
9925 FROM aqorders;
9926 }, { Slice => {} });
9928 my $update_orders_sth = $dbh->prepare(q{
9929 UPDATE aqorders
9930 SET cancellationreason = ?
9931 WHERE cancellationreason = ?
9934 my $insert_av_sth = $dbh->prepare(q{
9935 INSERT INTO authorised_values (category, authorised_value, lib) VALUES
9936 ('ORDER_CANCELLATION_REASON', ?, ?)
9938 my $i = 3;
9939 for my $reason ( @$already_existing_reasons ) {
9940 next unless $reason;
9941 $insert_av_sth->execute( $i, $reason );
9942 $update_orders_sth->execute( $i, $reason );
9943 $i++;
9945 print "Upgrade to $DBversion done (Bug 13380: Add the ORDER_CANCELLATION_REASON authorised value)\n";
9947 else {
9948 print "Upgrade to $DBversion done (Bug 13380: ORDER_CANCELLATION_REASON authorised value already existed from earlier update!)\n";
9951 SetVersion($DBversion);
9954 $DBversion = '3.19.00.017';
9955 if ( CheckVersion($DBversion) ) {
9956 # First create the column
9957 $dbh->do("ALTER TABLE issuingrules ADD onshelfholds tinyint(1) default 0 NOT NULL");
9958 # Now update the column
9959 if (C4::Context->preference("AllowOnShelfHolds")){
9960 # Pref is on, set allow for all rules
9961 $dbh->do("UPDATE issuingrules SET onshelfholds=1");
9962 } else {
9963 # If the preference is not set, leave off
9964 $dbh->do("UPDATE issuingrules SET onshelfholds=0");
9966 # Remove from the systempreferences table
9967 $dbh->do("DELETE FROM systempreferences WHERE variable = 'AllowOnShelfHolds'");
9969 # First create the column
9970 $dbh->do("ALTER TABLE issuingrules ADD opacitemholds char(1) DEFAULT 'N' NOT NULL");
9971 # Now update the column
9972 my $opacitemholds = C4::Context->preference("OPACItemHolds") || '';
9973 if (lc ($opacitemholds) eq 'force') {
9974 $opacitemholds = 'F';
9976 else {
9977 $opacitemholds = $opacitemholds ? 'Y' : 'N';
9979 # Set allow for all rules
9980 $dbh->do("UPDATE issuingrules SET opacitemholds='$opacitemholds'");
9982 # Remove from the systempreferences table
9983 $dbh->do("DELETE FROM systempreferences WHERE variable = 'OPACItemHolds'");
9985 print "Upgrade to $DBversion done (Bug 5786: Move AllowOnShelfHolds to circulation matrix; Move OPACItemHolds system preference to circulation matrix)\n";
9986 SetVersion ($DBversion);
9990 $DBversion = "3.19.00.018";
9991 if ( CheckVersion($DBversion) ) {
9992 $dbh->do(q|
9993 UPDATE systempreferences set variable="OpacAdditionalStylesheet" WHERE variable="opaccolorstylesheet"
9995 print "Upgrade to $DBversion done (Bug 10328: Rename opaccolorstylesheet to OpacAdditionalStylesheet\n";
9996 SetVersion ($DBversion);
9999 $DBversion = "3.19.00.019";
10000 if ( CheckVersion($DBversion) ) {
10001 $dbh->do(q{
10002 INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type)
10003 VALUES('Coce','0', 'If on, enables cover retrieval from the configured Coce server', NULL, 'YesNo')
10005 $dbh->do(q{
10006 INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type)
10007 VALUES('CoceHost', NULL, 'Coce server URL', NULL,'Free')
10009 $dbh->do(q{
10010 INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type)
10011 VALUES('CoceProviders', NULL, 'Coce providers', 'aws,gb,ol', 'multiple')
10013 print "Upgrade to $DBversion done (Bug 9580: Cover image from Coce, a remote image URL cache)\n";
10014 SetVersion($DBversion);
10017 $DBversion = "3.19.00.020";
10018 if ( CheckVersion($DBversion) ) {
10019 $dbh->do(q|
10020 ALTER TABLE aqorders DROP COLUMN supplierreference;
10023 print "Upgrade to $DBversion done (Bug 11008: DROP column aqorders.supplierreference)\n";
10024 SetVersion($DBversion);
10027 $DBversion = "3.19.00.021";
10028 if ( CheckVersion($DBversion) ) {
10029 $dbh->do(q|
10030 ALTER TABLE issues DROP COLUMN issuingbranch
10032 $dbh->do(q|
10033 ALTER TABLE old_issues DROP COLUMN issuingbranch
10035 print "Upgrade to $DBversion done (Bug 2806: Remove issuingbranch columns)\n";
10036 SetVersion ($DBversion);
10039 $DBversion = '3.19.00.022';
10040 if ( CheckVersion($DBversion) ) {
10041 $dbh->do(q{
10042 ALTER TABLE suggestions DROP COLUMN mailoverseeing;
10044 print "Upgrade to $DBversion done (Bug 13006: Drop column suggestion.mailoverseeing)\n";
10045 SetVersion($DBversion);
10048 $DBversion = "3.19.00.023";
10049 if ( CheckVersion($DBversion) ) {
10050 $dbh->do(q|
10051 DELETE FROM systempreferences where variable = 'AddPatronLists'
10053 print "Upgrade to $DBversion done (Bug 13497: Remove the AddPatronLists system preferences)\n";
10054 SetVersion ($DBversion);
10057 $DBversion = "3.19.00.024";
10058 if ( CheckVersion($DBversion) ) {
10059 $dbh->do(qq|DROP table patroncards;|);
10060 print "Upgrade to $DBversion done (Bug 13539: Remove table patroncards from database as it's no longer in use)\n";
10061 SetVersion ($DBversion);
10064 $DBversion = "3.19.00.025";
10065 if ( CheckVersion($DBversion) ) {
10066 $dbh->do(q|
10067 INSERT INTO systempreferences ( variable, value, options, explanation, type ) VALUES
10068 ('SearchWithISBNVariations','0',NULL,'If enabled, search on all variations of the ISBN','YesNo')
10070 print "Upgrade to $DBversion done (Bug 13528: Add the SearchWithISBNVariations syspref)\n";
10071 SetVersion ($DBversion);
10074 $DBversion = "3.19.00.026";
10075 if( CheckVersion($DBversion) ) {
10076 if ( C4::Context->preference('marcflavour') eq 'MARC21' ) {
10077 $dbh->do(q{
10078 INSERT IGNORE INTO auth_tag_structure (authtypecode, tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value) VALUES
10079 ('', '388', 'TIME PERIOD OF CREATION', 'TIME PERIOD OF CREATION', 1, 0, NULL);
10082 $dbh->do(q{
10083 INSERT IGNORE INTO auth_subfield_structure (authtypecode, tagfield, tagsubfield, liblibrarian, libopac, repeatable,
10084 mandatory, tab, authorised_value, value_builder, seealso, isurl, hidden, linkid, kohafield, frameworkcode) VALUES
10085 ('', '388', '0', 'Authority record control number or standard number', 'Authority record control number or standard number', 1, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''),
10086 ('', '388', '2', 'Source of term', 'Source of term', 0, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''),
10087 ('', '388', '3', 'Materials specified', 'Materials specified', 0, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''),
10088 ('', '388', '6', 'Linkage', 'Linkage', 0, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''),
10089 ('', '388', '8', 'Field link and sequence number', 'Field link and sequence number', 1, 0, 3, NULL, NULL, NULL, 0, 0, '', '', ''),
10090 ('', '388', 'a', 'Time period of creation term', 'Time period of creation term', 1, 0, 3, NULL, NULL, NULL, 0, 0, '', '', '');
10093 $dbh->do(q{
10094 UPDATE IGNORE auth_subfield_structure SET repeatable = 1 WHERE tagsubfield = 'g' AND tagfield IN
10095 ('100','110','111','130','400','410','411','430','500','510','511','530','700','710','730');
10098 $dbh->do(q{
10099 INSERT IGNORE INTO auth_subfield_structure (authtypecode, tagfield, tagsubfield, liblibrarian, libopac, repeatable,
10100 mandatory, tab, authorised_value, value_builder, seealso, isurl, hidden, linkid, kohafield, frameworkcode) VALUES
10101 ('', '150', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 1, NULL, NULL, NULL, 0, 0, '', '', ''),
10102 ('', '151', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 1, NULL, NULL, NULL, 0, 0, '', '', ''),
10103 ('', '450', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 4, NULL, NULL, NULL, 0, 0, '', '', ''),
10104 ('', '451', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 4, NULL, NULL, NULL, 0, 0, '', '', ''),
10105 ('', '550', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 5, NULL, NULL, NULL, 0, 0, '', '', ''),
10106 ('', '551', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 5, NULL, NULL, NULL, 0, 0, '', '', ''),
10107 ('', '750', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10108 ('', '751', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10109 ('', '748', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10110 ('', '755', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10111 ('', '780', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10112 ('', '781', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10113 ('', '782', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10114 ('', '785', 'i', 'Relationship information', 'Relationship information', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10115 ('', '710', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10116 ('', '730', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10117 ('', '748', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10118 ('', '750', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10119 ('', '751', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10120 ('', '755', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10121 ('', '762', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10122 ('', '780', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10123 ('', '781', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10124 ('', '782', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10125 ('', '785', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', ''),
10126 ('', '788', '4', 'Relationship code', 'Relationship code', 1, 0, 7, NULL, NULL, NULL, 0, 0, '', '', '');
10129 $dbh->do(q{
10130 UPDATE IGNORE auth_subfield_structure SET liblibrarian = 'Relationship information', libopac = 'Relationship information'
10131 WHERE tagsubfield = 'i' AND tagfield IN ('700','710','730','750','751','762');
10134 $dbh->do(q{
10135 UPDATE IGNORE auth_subfield_structure SET liblibrarian = 'Relationship code', libopac = 'Relationship code'
10136 WHERE tagsubfield = '4' AND tagfield IN ('700','710');
10139 $dbh->do(q{
10140 INSERT IGNORE INTO marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, frameworkcode) VALUES
10141 ('370', 'ASSOCIATED PLACE', 'ASSOCIATED PLACE', 1, 0, NULL, ''),
10142 ('388', 'TIME PERIOD OF CREATION', 'TIME PERIOD OF CREATION', 1, 0, NULL, '');
10145 $dbh->do(q{
10146 INSERT IGNORE INTO marc_subfield_structure (tagfield, tagsubfield, liblibrarian, libopac, repeatable, mandatory,
10147 kohafield, tab, authorised_value, authtypecode, value_builder, isurl, hidden, frameworkcode, seealso, link, defaultvalue) VALUES
10148 ('370', '0', 'Authority record control number or standard number', 'Authority record control number or standard number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10149 ('370', '2', 'Source of term', 'Source of term', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10150 ('370', '6', 'Linkage', 'Linkage', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10151 ('370', '8', 'Field link and sequence number', 'Field link and sequence number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10152 ('370', 'c', 'Associated country', 'Associated country', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10153 ('370', 'f', 'Other associated place', 'Other associated place', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10154 ('370', 'g', 'Place of origin of work', 'Place of origin of work', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10155 ('370', 's', 'Start period', 'Start period', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10156 ('370', 't', 'End period', 'End period', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10157 ('370', 'u', 'Uniform Resource Identifier', 'Uniform Resource Identifier', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10158 ('370', 'v', 'Source of information', 'Source of information', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10159 ('377', 'l', 'Language term', 'Language term', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10160 ('382', 's', 'Total number of performers', 'Total number of performers', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10161 ('388', '0', 'Authority record control number or standard number', 'Authority record control number or standard number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10162 ('388', '2', 'Source of term', 'Source of term', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10163 ('388', '3', ' Materials specified', ' Materials specified', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10164 ('388', '6', ' Linkage', ' Linkage', 0, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10165 ('388', '8', 'Field link and sequence number', 'Field link and sequence number', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10166 ('388', 'a', 'Time period of creation term', 'Time period of creation term', 1, 0, '', 3, '', '', '', NULL, -6, '', '', '', NULL),
10167 ('650', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, '', 6, '', '', '', 0, -1, '', '', '', NULL),
10168 ('651', 'g', 'Miscellaneous information', 'Miscellaneous information', 1, 0, '', 6, '', '', '', 0, -1, '', '', '', NULL);
10171 $dbh->do(q{
10172 UPDATE IGNORE marc_subfield_structure SET repeatable = 1 WHERE tagsubfield = 'g' AND
10173 tagfield IN ('100','110','111','130','240','243','246','247','600','610','611','630','700','710','711','730','800','810','811','830');
10177 print "Upgrade to $DBversion done (Bug 13322: Update MARC21 frameworks to Update No. 19 - October 2014)\n";
10178 SetVersion($DBversion);
10181 $DBversion = '3.19.00.027';
10182 if ( CheckVersion($DBversion) ) {
10183 $dbh->do("ALTER TABLE items ADD COLUMN itemnotes_nonpublic MEDIUMTEXT AFTER itemnotes");
10184 $dbh->do("ALTER TABLE deleteditems ADD COLUMN itemnotes_nonpublic MEDIUMTEXT AFTER itemnotes");
10185 print "Upgrade to $DBversion done (Bug 4222: Nonpublic note not appearing in the staff client) <b>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 </b>)\n";
10186 SetVersion($DBversion);
10189 $DBversion = "3.19.00.028";
10190 if( CheckVersion($DBversion) ) {
10191 eval {
10192 local $dbh->{PrintError} = 0;
10193 $dbh->do(q{
10194 ALTER TABLE issues DROP PRIMARY KEY
10198 $dbh->do(q{
10199 ALTER TABLE old_issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
10202 $dbh->do(q{
10203 ALTER TABLE old_issues CHANGE issue_id issue_id INT( 11 ) NOT NULL
10206 $dbh->do(q{
10207 ALTER TABLE issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
10210 $dbh->do(q{
10211 UPDATE issues SET issue_id = issue_id + ( SELECT COUNT(*) FROM old_issues ) ORDER BY issue_id DESC
10214 my $max_issue_id = $schema->resultset('Issue')->get_column('issue_id')->max();
10215 if ($max_issue_id) {
10216 $max_issue_id++;
10217 $dbh->do(qq{
10218 ALTER TABLE issues AUTO_INCREMENT = $max_issue_id
10222 print "Upgrade to $DBversion done (Bug 13790: Add unique id issue_id to issues and oldissues tables)\n";
10223 SetVersion($DBversion);
10226 $DBversion = "3.19.00.029";
10227 if ( CheckVersion($DBversion) ) {
10228 $dbh->do(q|
10229 ALTER TABLE sessions CHANGE COLUMN a_session a_session MEDIUMTEXT
10231 print "Upgrade to $DBversion done (Bug 13606: Upgrade sessions.a_session to MEDIUMTEXT)\n";
10232 SetVersion($DBversion);
10235 $DBversion = "3.19.00.030";
10236 if ( CheckVersion($DBversion) ) {
10237 $dbh->do(q|
10238 UPDATE language_subtag_registry SET subtag = 'kn' WHERE subtag = 'ka' AND description = 'Kannada';
10240 $dbh->do(q|
10241 UPDATE language_rfc4646_to_iso639 SET rfc4646_subtag = 'kn' WHERE rfc4646_subtag = 'ka' AND iso639_2_code = 'kan';
10243 $dbh->do(q|
10244 UPDATE language_descriptions SET subtag = 'kn', lang = 'kn' WHERE subtag = 'ka' AND lang = 'ka' AND description = 'ಕನ್ನಡ';
10246 $dbh->do(q|
10247 UPDATE language_descriptions SET subtag = 'kn' WHERE subtag = 'ka' AND description = 'Kannada';
10249 $dbh->do(q|
10250 INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added) VALUES ( 'ka', 'language', 'Georgian','2015-04-20');
10252 $dbh->do(q|
10253 DELETE FROM language_subtag_registry
10254 WHERE NOT id IN
10255 (SELECT id FROM
10256 (SELECT MIN(id) as id,subtag,type,description,added
10257 FROM language_subtag_registry
10258 GROUP BY subtag,type,description,added)
10259 AS subtable);
10261 $dbh->do(q|
10262 INSERT IGNORE INTO language_rfc4646_to_iso639(rfc4646_subtag,iso639_2_code) VALUES ( 'ka', 'geo');
10264 $dbh->do(q|
10265 DELETE FROM language_rfc4646_to_iso639
10266 WHERE NOT id IN
10267 (SELECT id FROM
10268 (SELECT MIN(id) as id,rfc4646_subtag,iso639_2_code
10269 FROM language_rfc4646_to_iso639
10270 GROUP BY rfc4646_subtag,iso639_2_code)
10271 AS subtable);
10273 $dbh->do(q|
10274 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'ka', 'ქართული');
10276 $dbh->do(q|
10277 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'en', 'Georgian');
10279 $dbh->do(q|
10280 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'fr', 'Géorgien');
10282 $dbh->do(q|
10283 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'de', 'Georgisch');
10285 $dbh->do(q|
10286 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description) VALUES ( 'ka', 'language', 'es', 'Georgiano');
10288 $dbh->do(q|
10289 DELETE FROM language_descriptions
10290 WHERE NOT id IN
10291 (SELECT id FROM
10292 (SELECT MIN(id) as id,subtag,type,lang,description
10293 FROM language_descriptions GROUP BY subtag,type,lang,description)
10294 AS subtable);
10296 print "Upgrade to $DBversion done (Bug 14030: Add Georgian language and fix Kannada language code)\n";
10297 SetVersion($DBversion);
10300 $DBversion = "3.19.00.031";
10301 if ( CheckVersion($DBversion) ) {
10302 $dbh->do(q{
10303 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
10304 VALUES('IdRef','0','Disable/enable the IdRef webservice from the OPAC detail page.',NULL,'YesNo')
10306 print "Upgrade to $DBversion done (Bug 8992: Add system preference IdRef))\n";
10307 SetVersion($DBversion);
10310 $DBversion = "3.19.00.032";
10311 if ( CheckVersion($DBversion) ) {
10312 $dbh->do(q|
10313 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
10314 VALUES('AddressFormat','us','Choose format to display postal addresses','','Choice')
10316 print "Upgrade to $DBversion done (Bug 4041: Address Format as a I18N/L10N system preference\n";
10317 SetVersion ($DBversion);
10320 $DBversion = "3.19.00.033";
10321 if ( CheckVersion($DBversion) ) {
10322 $dbh->do(q|
10323 ALTER TABLE auth_header
10324 CHANGE COLUMN datemodified modification_time TIMESTAMP NOT NULL default CURRENT_TIMESTAMP
10326 $dbh->do(q|
10327 ALTER TABLE auth_header
10328 CHANGE COLUMN modification_time modification_time TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
10330 print "Upgrade to $DBversion done (Bug 11165: Update auth_header.datemodified when updated)\n";
10331 SetVersion ($DBversion);
10334 $DBversion = "3.19.00.034";
10335 if ( CheckVersion($DBversion) ) {
10336 $dbh->do(q|
10337 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
10338 VALUES('CardnumberLength', '', '', 'Set a length for card numbers.', 'Free')
10340 print "Upgrade to $DBversion done (Bug 13984: CardnumberLength syspref missing on some setups\n";
10341 SetVersion ($DBversion);
10344 $DBversion = "3.19.00.035";
10345 if ( CheckVersion($DBversion) ) {
10346 $dbh->do(q|
10347 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('useDischarge','','Allows librarians to discharge borrowers and borrowers to request a discharge','','YesNo')
10349 $dbh->do(q|
10350 INSERT IGNORE INTO letter (module, code, name, title, content) VALUES('members', 'DISCHARGE', 'Discharge', 'Discharge for <<borrowers.firstname>> <<borrowers.surname>>', '<h1>Discharge</h1>\r\n\r\nThe library <<borrowers.branchcode>> certifies that the following borrower :\r\n\r\n <<borrowers.firstname>> <<borrowers.surname>>\r\n Cardnumber : <<borrowers.cardnumber>>\r\n\r\nreturned all his documents.')
10353 $dbh->do(q|
10354 ALTER TABLE borrower_debarments CHANGE type type ENUM('SUSPENSION','OVERDUES','MANUAL','DISCHARGE') NOT NULL DEFAULT 'MANUAL'
10357 $dbh->do(q|
10358 CREATE TABLE discharges (
10359 borrower int(11) DEFAULT NULL,
10360 needed timestamp NULL DEFAULT NULL,
10361 validated timestamp NULL DEFAULT NULL,
10362 KEY borrower_discharges_ibfk1 (borrower),
10363 CONSTRAINT borrower_discharges_ibfk1 FOREIGN KEY (borrower) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE
10364 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
10367 print "Upgrade to $DBversion done (Bug 8007: Add System Preferences useDischarge, the discharge notice and the new table discharges)\n";
10368 SetVersion($DBversion);
10371 $DBversion = "3.19.00.036";
10372 if ( CheckVersion($DBversion) ) {
10373 $dbh->do(q|
10374 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
10375 VALUES ('CronjobLog','0',NULL,'If ON, log information from cron jobs.','YesNo')
10377 print "Upgrade to $DBversion done (Bug 13889: Add cron jobs information to system log)\n";
10378 SetVersion ($DBversion);
10381 $DBversion = "3.19.00.037";
10382 if ( CheckVersion($DBversion) ) {
10383 $dbh->do(q|
10384 ALTER TABLE marc_subfield_structure
10385 MODIFY COLUMN tagsubfield varchar(1) COLLATE utf8_bin NOT NULL DEFAULT ''
10387 print "Upgrade to $DBversion done (Bug 13810: Change collate for tagsubfield (utf8_bin))\n";
10388 SetVersion ($DBversion);
10391 $DBversion = "3.19.00.038";
10392 if ( CheckVersion($DBversion) ) {
10393 $dbh->do(q|
10394 ALTER TABLE virtualshelves
10395 ADD COLUMN created_on DATETIME NOT NULL AFTER lastmodified
10397 # Set created_on = lastmodified
10398 # I would say it's better than 0000-00-00
10399 # Set modified to the existing value (do not get the current ts!)
10400 $dbh->do(q|
10401 UPDATE virtualshelves
10402 SET created_on = lastmodified, lastmodified = lastmodified
10404 print "Upgrade to $DBversion done (Bug 13421: Add DB field virtualshelves.created_on)\n";
10405 SetVersion ($DBversion);
10408 $DBversion = "3.19.00.039";
10409 if ( CheckVersion($DBversion) ) {
10410 print "Upgrade to $DBversion done (Koha 3.20 beta)\n";
10411 SetVersion ($DBversion);
10414 $DBversion = "3.19.00.040";
10415 if ( CheckVersion($DBversion) ) {
10416 $dbh->do(q|
10417 ALTER TABLE aqorders DROP COLUMN totalamount
10419 print "Upgrade to $DBversion done (Bug 11006: Drop column aqorders.totalamount)\n";
10420 SetVersion ($DBversion);
10423 $DBversion = "3.19.00.041";
10424 if ( CheckVersion($DBversion) ) {
10425 unless ( index_exists( 'suggestions', 'status' ) ) {
10426 $dbh->do(q|
10427 ALTER TABLE suggestions ADD KEY status (STATUS)
10430 unless ( index_exists( 'suggestions', 'biblionumber' ) ) {
10431 $dbh->do(q|
10432 ALTER TABLE suggestions ADD KEY biblionumber (biblionumber)
10435 unless ( index_exists( 'suggestions', 'branchcode' ) ) {
10436 $dbh->do(q|
10437 ALTER TABLE suggestions ADD KEY branchcode (branchcode)
10440 print "Upgrade to $DBversion done (Bug 14132: suggestions table is missing indexes)\n";
10441 SetVersion ($DBversion);
10444 $DBversion = "3.19.00.042";
10445 if ( CheckVersion($DBversion) ) {
10446 $dbh->do(q{
10447 DELETE ass.*
10448 FROM auth_subfield_structure AS ass
10449 LEFT JOIN auth_types USING(authtypecode)
10450 WHERE auth_types.authtypecode IS NULL
10453 unless ( foreign_key_exists( 'auth_subfield_structure', 'auth_subfield_structure_ibfk_1' ) ) {
10454 $dbh->do(q{
10455 ALTER TABLE auth_subfield_structure
10456 ADD CONSTRAINT auth_subfield_structure_ibfk_1
10457 FOREIGN KEY (authtypecode) REFERENCES auth_types(authtypecode)
10458 ON DELETE CASCADE ON UPDATE CASCADE
10462 print "Upgrade to $DBversion done (Bug 8480: Add foreign key on auth_subfield_structure.authtypecode)\n";
10463 SetVersion($DBversion);
10466 $DBversion = "3.19.00.043";
10467 if ( CheckVersion($DBversion) ) {
10468 $dbh->do(q|
10469 INSERT IGNORE INTO authorised_values (category, authorised_value, lib) VALUES
10470 ('REPORT_GROUP', 'SER', 'Serials')
10473 print "Upgrade to $DBversion done (Bug 5338: Add Serial to the report groups if does not exist)\n";
10474 SetVersion ($DBversion);
10477 $DBversion = "3.20.00.000";
10478 if ( CheckVersion($DBversion) ) {
10479 print "Upgrade to $DBversion done (Koha 3.20)\n";
10480 SetVersion ($DBversion);
10483 $DBversion = "3.21.00.000";
10484 if ( CheckVersion($DBversion) ) {
10485 print "Upgrade to $DBversion done (El tiempo vuela, un nuevo ciclo comienza.)\n";
10486 SetVersion ($DBversion);
10489 $DBversion = "3.21.00.001";
10490 if ( CheckVersion($DBversion) ) {
10491 $dbh->do(q|
10492 UPDATE systempreferences SET variable='IntranetUserJS' where variable='intranetuserjs'
10494 print "Upgrade to $DBversion done (Bug 12160: Rename intranetuserjs to IntranetUserJS)\n";
10495 SetVersion ($DBversion);
10498 $DBversion = "3.21.00.002";
10499 if ( CheckVersion($DBversion) ) {
10500 $dbh->do(q|
10501 UPDATE systempreferences SET variable='OPACUserJS' where variable='opacuserjs'
10503 print "Upgrade to $DBversion done (Bug 12160: Rename opacuserjs to OPACUserJS)\n";
10504 SetVersion ($DBversion);
10507 $DBversion = "3.21.00.003";
10508 if ( CheckVersion($DBversion) ) {
10509 $dbh->do(q|
10510 INSERT IGNORE INTO language_subtag_registry( subtag, type, description, added)
10511 VALUES ( 'IN', 'region', 'India','2015-05-28');
10513 $dbh->do(q|
10514 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description)
10515 VALUES ( 'IN', 'region', 'en', 'India');
10517 $dbh->do(q|
10518 INSERT IGNORE INTO language_descriptions(subtag, type, lang, description)
10519 VALUES ( 'IN', 'region', 'bn', 'ভারত');
10521 print "Upgrade to $DBversion done (Bug 14285: Add new region India)\n";
10522 SetVersion ($DBversion);
10525 $DBversion = '3.21.00.004';
10526 if ( CheckVersion($DBversion) ) {
10527 my $OPACBaseURL = C4::Context->preference('OPACBaseURL');
10528 if (defined($OPACBaseURL) && substr($OPACBaseURL,0,4) ne "http") {
10529 my $explanation = q{Specify the Base URL of the OPAC, e.g., http://opac.mylibrary.com, including the protocol (http:// or https://). Otherwise, the http:// will be added automatically by Koha upon saving.};
10530 $OPACBaseURL = 'http://' . $OPACBaseURL;
10531 my $sth_OPACBaseURL = $dbh->prepare( q{
10532 UPDATE systempreferences SET value=?,explanation=?
10533 WHERE variable='OPACBaseURL'; } );
10534 $sth_OPACBaseURL->execute($OPACBaseURL,$explanation);
10536 if (defined($OPACBaseURL)) {
10537 $dbh->do( q{ UPDATE letter
10538 SET content=replace(content,
10539 'http://<<OPACBaseURL>>',
10540 '<<OPACBaseURL>>')
10541 WHERE content LIKE "%http://<<OPACBaseURL>>%"; } );
10544 print "Upgrade to $DBversion done (Bug 5010: Fix OPACBaseURL to include protocol)\n";
10545 SetVersion($DBversion);
10548 $DBversion = "3.21.00.005";
10549 if ( CheckVersion($DBversion) ) {
10550 $dbh->do(q|
10551 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
10552 VALUES ('ReportsLog','0',NULL,'If ON, log information about reports.','YesNo')
10554 print "Upgrade to $DBversion done (Bug 14024: Add reports to action logs)\n";
10555 SetVersion ($DBversion);
10558 $DBversion = "3.21.00.006";
10559 if ( CheckVersion($DBversion) ) {
10560 # Remove the borrow permission flag (bit 7)
10561 $dbh->do(q|
10562 UPDATE borrowers
10563 SET flags = flags - ( flags & (1<<7) )
10564 WHERE flags IS NOT NULL
10565 AND flags > 0
10567 $dbh->do(q|
10568 DELETE FROM userflags WHERE bit=7;
10570 print "Upgrade to $DBversion done (Bug 7976: Remove the 'borrow' permission)\n";
10571 SetVersion($DBversion);
10574 $DBversion = "3.21.00.007";
10575 if ( CheckVersion($DBversion) ) {
10576 unless ( index_exists( 'aqbasket', 'authorisedby' ) ) {
10577 $dbh->do(q|
10578 ALTER TABLE aqbasket
10579 ADD KEY authorisedby (authorisedby)
10582 unless ( index_exists( 'aqbooksellers', 'name' ) ) {
10583 $dbh->do(q|
10584 ALTER TABLE aqbooksellers
10585 ADD KEY name (name(255))
10588 unless ( index_exists( 'aqbudgets', 'budget_parent_id' ) ) {
10589 $dbh->do(q|
10590 ALTER TABLE aqbudgets
10591 ADD KEY budget_parent_id (budget_parent_id)|);
10593 unless ( index_exists( 'aqbudgets', 'budget_code' ) ) {
10594 $dbh->do(q|
10595 ALTER TABLE aqbudgets
10596 ADD KEY budget_code (budget_code)|);
10598 unless ( index_exists( 'aqbudgets', 'budget_branchcode' ) ) {
10599 $dbh->do(q|
10600 ALTER TABLE aqbudgets
10601 ADD KEY budget_branchcode (budget_branchcode)|);
10603 unless ( index_exists( 'aqbudgets', 'budget_period_id' ) ) {
10604 $dbh->do(q|
10605 ALTER TABLE aqbudgets
10606 ADD KEY budget_period_id (budget_period_id)|);
10608 unless ( index_exists( 'aqbudgets', 'budget_owner_id' ) ) {
10609 $dbh->do(q|
10610 ALTER TABLE aqbudgets
10611 ADD KEY budget_owner_id (budget_owner_id)|);
10613 unless ( index_exists( 'aqbudgets_planning', 'budget_period_id' ) ) {
10614 $dbh->do(q|
10615 ALTER TABLE aqbudgets_planning
10616 ADD KEY budget_period_id (budget_period_id)|);
10618 unless ( index_exists( 'aqorders', 'parent_ordernumber' ) ) {
10619 $dbh->do(q|
10620 ALTER TABLE aqorders
10621 ADD KEY parent_ordernumber (parent_ordernumber)|);
10623 unless ( index_exists( 'aqorders', 'orderstatus' ) ) {
10624 $dbh->do(q|
10625 ALTER TABLE aqorders
10626 ADD KEY orderstatus (orderstatus)|);
10628 print "Upgrade to $DBversion done (Bug 14053: Acquisition db tables are missing indexes)\n";
10629 SetVersion ($DBversion);
10632 $DBversion = "3.21.00.008";
10633 if ( CheckVersion($DBversion) ) {
10634 $dbh->do(q{
10635 DELETE IGNORE FROM systempreferences
10636 WHERE variable = 'HomeOrHoldingBranchReturn';
10638 print "Upgrade to $DBversion done (Bug 7981: Transfer message on return. HomeOrHoldingBranchReturn syspref removed in favour of circulation rules.)\n";
10639 SetVersion($DBversion);
10642 $DBversion = "3.21.00.009";
10643 if ( CheckVersion($DBversion) ) {
10644 $dbh->do(q|
10645 UPDATE aqorders SET orderstatus='cancelled'
10646 WHERE (datecancellationprinted IS NOT NULL OR
10647 datecancellationprinted<>'0000-00-00');
10649 print "Upgrade to $DBversion done (Bug 13993: Correct orderstatus for transferred orders)\n";
10650 SetVersion($DBversion);
10653 $DBversion = "3.21.00.010";
10654 if ( CheckVersion($DBversion) ) {
10655 $dbh->do(q|
10656 ALTER TABLE message_queue
10657 DROP message_id
10659 $dbh->do(q|
10660 ALTER TABLE message_queue
10661 ADD message_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
10663 print "Upgrade to $DBversion done (Bug 7793: redefine the field message_id as PRIMARY KEY of message_queue)\n";
10664 SetVersion ($DBversion);
10667 $DBversion = "3.21.00.011";
10668 if ( CheckVersion($DBversion) ) {
10669 $dbh->do(q{
10670 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
10671 VALUES ('OpacLangSelectorMode','footer','top|both|footer','Select the location to display the language selector','Choice')
10673 print "Upgrade to $DBversion done (Bug 14252: Make the OPAC language switcher available in the masthead navbar, footer, or both)\n";
10674 SetVersion ($DBversion);
10677 $DBversion = "3.21.00.012";
10678 if ( CheckVersion($DBversion) ) {
10679 $dbh->do(q|
10680 INSERT INTO letter (module, code, name, title, content, message_transport_type)
10681 VALUES
10682 ('suggestions','TO_PROCESS','Notify fund owner', 'A suggestion is ready to be processed','Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\nA new suggestion is ready to be processed: <<suggestions.title>> by <<suggestions.autho r>>.\n\nThank you,\n\n<<branches.branchname>>', 'email')
10684 print "Upgrade to $DBversion done (Bug 13014: Add the TO_PROCESS letter code)\n";
10685 SetVersion($DBversion);
10688 $DBversion = "3.21.00.013";
10689 if ( CheckVersion($DBversion) ) {
10690 my $msg;
10691 if ( C4::Context->preference('OPACPrivacy') ) {
10692 if ( my $anonymous_patron = C4::Context->preference('AnonymousPatron') ) {
10693 my $anonymous_patron_exists = $dbh->selectcol_arrayref(q|
10694 SELECT COUNT(*)
10695 FROM borrowers
10696 WHERE borrowernumber=?
10697 |, {}, $anonymous_patron);
10698 unless ( $anonymous_patron_exists->[0] ) {
10699 $msg = "Configuration WARNING: OPACPrivacy is set but AnonymousPatron is not linked to an existing patron";
10702 else {
10703 $msg = "Configuration WARNING: OPACPrivacy is set but AnonymousPatron is not";
10706 else {
10707 my $patrons_have_required_anonymity = $dbh->selectcol_arrayref(q|
10708 SELECT COUNT(*)
10709 FROM borrowers
10710 WHERE privacy = 2
10711 |, {} );
10712 if ( $patrons_have_required_anonymity->[0] ) {
10713 $msg = "Configuration WARNING: OPACPrivacy is not set but $patrons_have_required_anonymity->[0] patrons have required anonymity (perhaps in a previous configuration). You should fix that asap.";
10717 $msg //= "Privacy is correctly set";
10718 print "Upgrade to $DBversion done (Bug 9942: $msg)\n";
10719 SetVersion ($DBversion);
10722 $DBversion = "3.21.00.014";
10723 if ( CheckVersion($DBversion) ) {
10724 $dbh->do(q{
10725 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
10726 VALUES ('OAI-PMH:DeletedRecord','persistent','Koha\'s deletedbiblio table will never be deleted (persistent) or might be deleted (transient)','transient|persistent','Choice')
10729 if ( foreign_key_exists( 'oai_sets_biblios', 'oai_sets_biblios_ibfk_1' ) ) {
10730 $dbh->do(q|
10731 ALTER TABLE oai_sets_biblios DROP FOREIGN KEY oai_sets_biblios_ibfk_1
10734 print "Upgrade to $DBversion done (Bug 3206: OAI repository deleted record support)\n";
10735 SetVersion ($DBversion);
10738 $DBversion = "3.21.00.015";
10739 if ( CheckVersion($DBversion) ) {
10740 $dbh->do(q{
10741 UPDATE systempreferences SET value='0' WHERE variable='CalendarFirstDayOfWeek' AND value='Sunday';
10743 $dbh->do(q{
10744 UPDATE systempreferences SET value='1' WHERE variable='CalendarFirstDayOfWeek' AND value='Monday';
10746 $dbh->do(q{
10747 UPDATE systempreferences SET options='0|1|2|3|4|5|6' WHERE variable='CalendarFirstDayOfWeek';
10750 print "Upgrade to $DBversion done (Bug 12137: Extend functionality of CalendarFirstDayOfWeek to be any day)\n";
10751 SetVersion($DBversion);
10754 $DBversion = "3.21.00.016";
10755 if ( CheckVersion($DBversion) ) {
10756 my $rs = $schema->resultset('Systempreference');
10757 $rs->find_or_create(
10759 variable => 'DumpTemplateVarsIntranet',
10760 value => 0,
10761 explanation => 'If enabled, dump all Template Toolkit variable to a comment in the html source for the staff intranet.',
10762 type => 'YesNo',
10765 $rs->find_or_create(
10767 variable => 'DumpTemplateVarsOpac',
10768 value => 0,
10769 explanation => 'If enabled, dump all Template Toolkit variable to a comment in the html source for the opac.',
10770 type => 'YesNo',
10773 print "Upgrade to $DBversion done (Bug 13948: Add ability to dump template toolkit variables to html comment)\n";
10774 SetVersion($DBversion);
10777 $DBversion = "3.21.00.017";
10778 if ( CheckVersion($DBversion) ) {
10779 $dbh->do("
10780 CREATE TABLE uploaded_files (
10781 id int(11) NOT NULL AUTO_INCREMENT,
10782 hashvalue CHAR(40) NOT NULL,
10783 filename TEXT NOT NULL,
10784 dir TEXT NOT NULL,
10785 filesize int(11),
10786 dtcreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
10787 categorycode tinytext,
10788 owner int(11),
10789 PRIMARY KEY (id)
10790 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
10793 print "Upgrade to $DBversion done (Bug 6874: New cataloging plugin upload.pl)\n";
10794 print "This plugin comes with a new config variable (upload_path) and a new table (uploaded_files)\n";
10795 print "To use it, set 'upload_path' config variable and 'OPACBaseURL' system preference and link this plugin to a subfield (856\$u for instance)\n";
10796 SetVersion($DBversion);
10799 $DBversion = "3.21.00.018";
10800 if ( CheckVersion($DBversion) ) {
10801 $dbh->do(q{
10802 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
10803 VALUES
10804 ('RestrictedPageLocalIPs','',NULL,'Beginning of IP addresses considered as local (comma separated ex: \"127.0.0,127.0.2\")','Free'),
10805 ('RestrictedPageContent','',NULL,'HTML content of the restricted page','TextArea'),
10806 ('RestrictedPageTitle','',NULL,'Title of the restricted page (breadcrumb and header)','Free')
10808 print "Upgrade to $DBversion done (Bug 13485: Add a page to display links to restricted sites)\n";
10809 SetVersion ($DBversion);
10812 $DBversion = "3.21.00.019";
10813 if ( CheckVersion($DBversion) ) {
10814 if ( column_exists( 'reserves', 'constrainttype' ) ) {
10815 $dbh->do(q{
10816 ALTER TABLE reserves DROP constrainttype
10818 $dbh->do(q{
10819 ALTER TABLE old_reserves DROP constrainttype
10822 $dbh->do(q{
10823 DROP TABLE IF EXISTS reserveconstraints
10825 print "Upgrade to $DBversion done (Bug 9809: Get rid of reserveconstraints)\n";
10826 SetVersion ($DBversion);
10829 $DBversion = "3.21.00.020";
10830 if ( CheckVersion($DBversion) ) {
10831 $dbh->do(q{
10832 INSERT IGNORE INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`)
10833 VALUES ('FeeOnChangePatronCategory','1','','If set, when a patron changes to a category with enrolment fee, a fee is charged','YesNo')
10835 print "Upgrade to $DBversion done (Bug 13697: Option to don't charge a fee, if the patron changes to a category with enrolment fee)\n";
10836 SetVersion($DBversion);
10839 $DBversion = "3.21.00.021";
10840 if ( CheckVersion($DBversion) ) {
10841 $dbh->do(q{
10842 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
10843 VALUES ('UseWYSIWYGinSystemPreferences','0','','Show WYSIWYG editor when editing certain HTML system preferences.','YesNo')
10845 print "Upgrade to $DBversion done (Bug 11584: Add wysiwyg editor to system preferences dealing with HTML)\n";
10846 SetVersion($DBversion);
10849 $DBversion = "3.21.00.022";
10850 if ( CheckVersion($DBversion) ) {
10851 $dbh->do(q{
10852 DELETE cr.*
10853 FROM course_reserves AS cr
10854 LEFT JOIN course_items USING(ci_id)
10855 WHERE course_items.ci_id IS NULL
10858 my ($print_error) = $dbh->{PrintError};
10859 $dbh->{RaiseError} = 0;
10860 $dbh->{PrintError} = 0;
10861 if ( foreign_key_exists('course_reserves', 'course_reserves_ibfk_2') ) {
10862 $dbh->do(q{ALTER TABLE course_reserves DROP FOREIGN KEY course_reserves_ibfk_2});
10863 $dbh->do(q{ALTER TABLE course_reserves DROP INDEX course_reserves_ibfk_2});
10865 $dbh->{PrintError} = $print_error;
10867 $dbh->do(q{
10868 ALTER TABLE course_reserves
10869 ADD CONSTRAINT course_reserves_ibfk_2
10870 FOREIGN KEY (ci_id) REFERENCES course_items (ci_id)
10871 ON DELETE CASCADE ON UPDATE CASCADE
10873 print "Upgrade to $DBversion done (Bug 14205: Deleting an Item/Record does not remove link to course reserve)\n";
10874 SetVersion($DBversion);
10877 $DBversion = "3.21.00.023";
10878 if ( CheckVersion($DBversion) ) {
10879 $dbh->do(q{
10880 UPDATE borrowers SET debarred=NULL WHERE debarred='0000-00-00'
10882 $dbh->do(q{
10883 UPDATE borrowers SET dateexpiry=NULL where dateexpiry='0000-00-00'
10885 $dbh->do(q{
10886 UPDATE borrowers SET dateofbirth=NULL where dateofbirth='0000-00-00'
10888 $dbh->do(q{
10889 UPDATE borrowers SET dateenrolled=NULL where dateenrolled='0000-00-00'
10891 print "Upgrade to $DBversion done (Bug 14717: Prevent 0000-00-00 dates in patron data)\n";
10892 SetVersion($DBversion);
10895 $DBversion = "3.21.00.024";
10896 if ( CheckVersion($DBversion) ) {
10897 $dbh->do(q{
10898 ALTER TABLE marc_modification_template_actions
10899 MODIFY COLUMN action
10900 ENUM('delete_field','update_field','move_field','copy_field','copy_and_replace_field')
10901 NOT NULL
10903 print "Upgrade to $DBversion done (Bug 14098: Regression in Marc Modification Templates)\n";
10904 SetVersion($DBversion);
10907 $DBversion = "3.21.00.025";
10908 if ( CheckVersion($DBversion) ) {
10909 $dbh->do(q{
10910 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
10911 VALUES ('RisExportAdditionalFields', '', NULL , 'Define additional RIS tags to export from MARC records in YAML format as an associative array with either a marc tag/subfield combination as the value, or a list of tag/subfield combinations.', 'textarea')
10913 $dbh->do(q{
10914 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
10915 VALUES ('BibtexExportAdditionalFields', '', NULL , 'Define additional BibTex tags to export from MARC records in YAML format as an associative array with either a marc tag/subfield combination as the value, or a list of tag/subfield combinations.', 'textarea')
10917 print "Upgrade to $DBversion done (Bug 12357: Enhancements to RIS and BibTeX exporting)\n";
10918 SetVersion($DBversion);
10921 $DBversion = "3.21.00.026";
10922 if ( CheckVersion($DBversion) ) {
10923 $dbh->do(q{
10924 UPDATE matchpoints
10925 SET search_index='issn'
10926 WHERE matcher_id IN (SELECT matcher_id FROM marc_matchers WHERE code = 'ISSN')
10928 print "Upgrade to $DBversion done (Bug 14472: Wrong ISSN search index in record matching rules)\n";
10929 SetVersion($DBversion);
10932 $DBversion = "3.21.00.027";
10933 if ( CheckVersion($DBversion) ) {
10934 $dbh->do(q|
10935 INSERT IGNORE INTO permissions (module_bit, code, description)
10936 VALUES (1, 'self_checkout', 'Perform self checkout at the OPAC. It should be used for the patron matching the AutoSelfCheckID')
10939 my $AutoSelfCheckID = C4::Context->preference('AutoSelfCheckID');
10941 $dbh->do(q|
10942 UPDATE borrowers
10943 SET flags=0
10944 WHERE userid=?
10945 |, undef, $AutoSelfCheckID);
10947 $dbh->do(q|
10948 DELETE FROM user_permissions
10949 WHERE borrowernumber=(SELECT borrowernumber FROM borrowers WHERE userid=?)
10950 |, undef, $AutoSelfCheckID);
10952 $dbh->do(q|
10953 INSERT INTO user_permissions(borrowernumber, module_bit, code)
10954 SELECT borrowernumber, 1, 'self_checkout' FROM borrowers WHERE userid=?
10955 |, undef, $AutoSelfCheckID);
10956 print "Upgrade to $DBversion done (Bug 14298: AutoSelfCheckID user should only be able to access SCO)\n";
10957 SetVersion($DBversion);
10960 $DBversion = "3.21.00.028";
10961 if ( CheckVersion($DBversion) ) {
10962 unless ( column_exists('uploaded_files', 'public') ) {
10963 $dbh->do(q{
10964 ALTER TABLE uploaded_files
10965 ADD COLUMN public tinyint,
10966 ADD COLUMN permanent tinyint
10968 $dbh->do(q{
10969 UPDATE uploaded_files SET public=1, permanent=1
10971 $dbh->do(q{
10972 ALTER TABLE uploaded_files
10973 CHANGE COLUMN categorycode uploadcategorycode tinytext
10976 print "Upgrade to $DBversion done (Bug 14321: Merge UploadedFile and UploadedFiles into Koha::Upload)\n";
10977 SetVersion($DBversion);
10980 $DBversion = "3.21.00.029";
10981 if ( CheckVersion($DBversion) ) {
10982 unless ( column_exists('discharges', 'discharge_id') ) {
10983 $dbh->do(q{
10984 ALTER TABLE discharges
10985 ADD COLUMN discharge_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
10988 print "Upgrade to $DBversion done (Bug 14368: Add discharges history)\n";
10989 SetVersion($DBversion);
10992 $DBversion = "3.21.00.030";
10993 if ( CheckVersion($DBversion) ) {
10994 $dbh->do(q{
10995 UPDATE marc_subfield_structure
10996 SET value_builder='marc21_leader.pl'
10997 WHERE value_builder='marc21_leader_book.pl'
10999 $dbh->do(q{
11000 UPDATE marc_subfield_structure
11001 SET value_builder='marc21_leader.pl'
11002 WHERE value_builder='marc21_leader_computerfile.pl'
11004 $dbh->do(q{
11005 UPDATE marc_subfield_structure
11006 SET value_builder='marc21_leader.pl'
11007 WHERE value_builder='marc21_leader_video.pl'
11009 print "Upgrade to $DBversion done (Bug 14201: Remove unused code or template from some MARC21 leader plugins )\n";
11010 SetVersion($DBversion);
11013 $DBversion = "3.21.00.031";
11014 if ( CheckVersion($DBversion) ) {
11015 $dbh->do(q{
11016 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
11017 VALUES
11018 ('SMSSendPassword', '', '', 'Password used to send SMS messages', 'free'),
11019 ('SMSSendUsername', '', '', 'Username/Login used to send SMS messages', 'free')
11021 print "Upgrade to $DBversion done (Bug 14820: SMSSendUsername and SMSSendPassword are not listed in the system preferences)\n";
11022 SetVersion($DBversion);
11025 $DBversion = "3.21.00.032";
11026 if ( CheckVersion($DBversion) ) {
11027 $dbh->do(q{
11028 CREATE TABLE additional_fields (
11029 id int(11) NOT NULL AUTO_INCREMENT,
11030 tablename varchar(255) NOT NULL DEFAULT '',
11031 name varchar(255) NOT NULL DEFAULT '',
11032 authorised_value_category varchar(16) NOT NULL DEFAULT '',
11033 marcfield varchar(16) NOT NULL DEFAULT '',
11034 searchable tinyint(1) NOT NULL DEFAULT '0',
11035 PRIMARY KEY (id),
11036 UNIQUE KEY fields_uniq (tablename,name)
11037 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
11039 $dbh->do(q{
11040 CREATE TABLE additional_field_values (
11041 id int(11) NOT NULL AUTO_INCREMENT,
11042 field_id int(11) NOT NULL,
11043 record_id int(11) NOT NULL,
11044 value varchar(255) NOT NULL DEFAULT '',
11045 PRIMARY KEY (id),
11046 UNIQUE KEY field_record (field_id,record_id),
11047 CONSTRAINT afv_fk FOREIGN KEY (field_id) REFERENCES additional_fields (id) ON DELETE CASCADE ON UPDATE CASCADE
11048 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
11050 print "Upgrade to $DBversion done (Bug 10855: Additional fields for subscriptions)\n";
11051 SetVersion($DBversion);
11054 $DBversion = "3.21.00.033";
11055 if ( CheckVersion($DBversion) ) {
11057 my $done = 0;
11058 my $count_ethnicity = $dbh->selectrow_arrayref(q|
11059 SELECT COUNT(*) FROM ethnicity
11061 my $count_borrower_modifications = $dbh->selectrow_arrayref(q|
11062 SELECT COUNT(*)
11063 FROM borrower_modifications
11064 WHERE ethnicity IS NOT NULL
11065 OR ethnotes IS NOT NULL
11067 my $count_borrowers = $dbh->selectrow_arrayref(q|
11068 SELECT COUNT(*)
11069 FROM borrowers
11070 WHERE ethnicity IS NOT NULL
11071 OR ethnotes IS NOT NULL
11073 # We don't care about the ethnicity of the deleted borrowers, right?
11074 if ( $count_ethnicity->[0] == 0
11075 and $count_borrower_modifications->[0] == 0
11076 and $count_borrowers->[0] == 0
11078 $dbh->do(q|
11079 DROP TABLE ethnicity
11081 $dbh->do(q|
11082 ALTER TABLE borrower_modifications
11083 DROP COLUMN ethnicity,
11084 DROP COLUMN ethnotes
11086 $dbh->do(q|
11087 ALTER TABLE borrowers
11088 DROP COLUMN ethnicity,
11089 DROP COLUMN ethnotes
11091 $dbh->do(q|
11092 ALTER TABLE deletedborrowers
11093 DROP COLUMN ethnicity,
11094 DROP COLUMN ethnotes
11096 $done = 1;
11098 if ( $done ) {
11099 print "Upgrade to $DBversion done (Bug 10020: Drop table ethnicity and columns ethnicity and ethnotes)\n";
11101 else {
11102 print "Upgrade to $DBversion done (Bug 10020: This database contains data related to 'ethnicity'. No change will be done on the DB structure but note that the Koha codebase does not use it)\n";
11105 SetVersion ($DBversion);
11108 $DBversion = "3.21.00.034";
11109 if ( CheckVersion($DBversion) ) {
11110 $dbh->do(q{
11111 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11112 VALUES('MembershipExpiryDaysNotice',NULL,'Send an account expiration notice that a patron''s card is about to expire after',NULL,'Integer')
11114 $dbh->do(q{
11115 INSERT IGNORE INTO letter (module, code, branchcode, name, title, content, message_transport_type)
11116 VALUES('members','MEMBERSHIP_EXPIRY','','Account expiration','Account expiration','Dear <<borrowers.title>> <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nYour library card will expire soon, on:\r\n\r\n<<borrowers.dateexpiry>>\r\n\r\nThank you,\r\n\r\nLibrarian\r\n\r\n<<branches.branchname>>', 'email')
11118 print "Upgrade to $DBversion done (Bug 6810: Send membership expiry reminder notices)\n";
11119 SetVersion($DBversion);
11122 $DBversion = "3.21.00.035";
11123 if ( CheckVersion($DBversion) ) {
11124 $dbh->do(q|
11125 ALTER TABLE branch_borrower_circ_rules ADD COLUMN maxonsiteissueqty int(4) DEFAULT NULL AFTER maxissueqty;
11127 $dbh->do(q|
11128 UPDATE branch_borrower_circ_rules SET maxonsiteissueqty = maxissueqty;
11130 $dbh->do(q|
11131 ALTER TABLE default_borrower_circ_rules ADD COLUMN maxonsiteissueqty int(4) DEFAULT NULL AFTER maxissueqty;
11133 $dbh->do(q|
11134 UPDATE default_borrower_circ_rules SET maxonsiteissueqty = maxissueqty;
11136 $dbh->do(q|
11137 ALTER TABLE default_branch_circ_rules ADD COLUMN maxonsiteissueqty int(4) DEFAULT NULL AFTER maxissueqty;
11139 $dbh->do(q|
11140 UPDATE default_branch_circ_rules SET maxonsiteissueqty = maxissueqty;
11142 $dbh->do(q|
11143 ALTER TABLE default_circ_rules ADD COLUMN maxonsiteissueqty int(4) DEFAULT NULL AFTER maxissueqty;
11145 $dbh->do(q|
11146 UPDATE default_circ_rules SET maxonsiteissueqty = maxissueqty;
11148 $dbh->do(q|
11149 ALTER TABLE issuingrules ADD COLUMN maxonsiteissueqty int(4) DEFAULT NULL AFTER maxissueqty;
11151 $dbh->do(q|
11152 UPDATE issuingrules SET maxonsiteissueqty = maxissueqty;
11154 $dbh->do(q|
11155 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11156 VALUES ('ConsiderOnSiteCheckoutsAsNormalCheckouts','1',NULL,'Consider on-site checkouts as normal checkouts','YesNo');
11159 print "Upgrade to $DBversion done (Bug 14045: Add DB fields maxonsiteissueqty and pref ConsiderOnSiteCheckoutsAsNormalCheckouts)\n";
11160 SetVersion ($DBversion);
11163 $DBversion = "3.21.00.036";
11164 if ( CheckVersion($DBversion) ) {
11165 $dbh->do(q{
11166 ALTER TABLE authorised_values_branches
11167 DROP FOREIGN KEY authorised_values_branches_ibfk_1,
11168 DROP FOREIGN KEY authorised_values_branches_ibfk_2
11170 $dbh->do(q{
11171 ALTER TABLE authorised_values_branches
11172 MODIFY av_id INT( 11 ) NOT NULL,
11173 MODIFY branchcode VARCHAR( 10 ) NOT NULL,
11174 ADD FOREIGN KEY (`av_id`) REFERENCES `authorised_values` (`id`) ON DELETE CASCADE,
11175 ADD FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE
11177 print "Upgrade to $DBversion done (Bug 10363: There is no package for authorised values)\n";
11178 SetVersion($DBversion);
11181 $DBversion = "3.21.00.037";
11182 if ( CheckVersion($DBversion) ) {
11183 $dbh->do(q{
11184 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11185 VALUES ('OverduesBlockRenewing','allow','If any of a patron checked out documents is late, should renewal be allowed, blocked only on overdue items or blocked on whatever checked out document','allow|blockitem|block','Choice')
11187 $dbh->do(q{
11188 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11189 VALUES ('RestrictionBlockRenewing','0','If patron is restricted, should renewal be allowed or blocked',NULL,'YesNo')
11191 print "Upgrade to $DBversion done (Bug 8236: Prevent renewing if overdue or restriction)\n";
11192 SetVersion($DBversion);
11195 $DBversion = "3.21.00.038";
11196 if ( CheckVersion($DBversion) ) {
11197 $dbh->do(q|
11198 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
11199 VALUES ('BatchCheckouts','0','','Enable or disable batch checkouts','YesNo')
11201 $dbh->do(q|
11202 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
11203 VALUES ('BatchCheckoutsValidCategories','',NULL,'Patron categories allowed to checkout in a batch','Free')
11205 print "Upgrade to $DBversion done (Bug 11759: Add the batch checkout feature)\n";
11206 SetVersion($DBversion);
11209 $DBversion = "3.21.00.039";
11210 if ( CheckVersion($DBversion) ) {
11211 $dbh->do(q|
11212 ALTER TABLE creator_layouts ADD COLUMN oblique_title INT(1) NULL DEFAULT 1 AFTER guidebox
11214 print "Upgrade to $DBversion done (Bug 12194: Add column oblique_title to layouts)\n";
11215 SetVersion($DBversion);
11218 $DBversion = "3.21.00.040";
11219 if ( CheckVersion($DBversion) ) {
11220 $dbh->do(q{
11221 ALTER TABLE itemtypes
11222 ADD hideinopac TINYINT(1) NOT NULL DEFAULT 0
11223 AFTER sip_media_type,
11224 ADD searchcategory VARCHAR(80) DEFAULT NULL
11225 AFTER hideinopac;
11227 print "Upgrade to $DBversion done (Bug 10937: Option to hide and group itemtypes from advanced search)\n";
11228 SetVersion($DBversion);
11231 $DBversion = "3.21.00.041";
11232 if ( CheckVersion($DBversion) ) {
11233 $dbh->do(q|
11234 ALTER TABLE issuingrules
11235 ADD chargeperiod_charge_at BOOLEAN NOT NULL DEFAULT '0' AFTER chargeperiod
11237 print "Upgrade to $DBversion done (Bug 13590: Add ability to charge fines at start of charge period)\n";
11238 SetVersion($DBversion);
11241 $DBversion = "3.21.00.042";
11242 if ( CheckVersion($DBversion) ) {
11243 $dbh->do(q|
11244 ALTER TABLE items_search_fields
11245 MODIFY COLUMN authorised_values_category VARCHAR(32) DEFAULT NULL
11247 print "Upgrade to $DBversion done (Bug 15069: items_search_fields.authorised_values_category is still a varchar(32))\n";
11248 SetVersion($DBversion);
11251 $DBversion = "3.21.00.043";
11252 if ( CheckVersion($DBversion) ) {
11253 $dbh->do(q|
11254 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
11255 VALUES ('EnableAdvancedCatalogingEditor','0','','Enable the Rancor advanced cataloging editor','YesNo')
11257 print "Upgrade to $DBversion done (Bug 11559: Professional cataloger's interface)\n";
11258 SetVersion($DBversion);
11261 $DBversion = "3.21.00.044";
11262 if ( CheckVersion($DBversion) ) {
11263 $dbh->do(q|
11264 CREATE TABLE localization (
11265 localization_id int(11) NOT NULL AUTO_INCREMENT,
11266 entity varchar(16) COLLATE utf8_unicode_ci NOT NULL,
11267 code varchar(64) COLLATE utf8_unicode_ci NOT NULL,
11268 lang varchar(25) COLLATE utf8_unicode_ci NOT NULL,
11269 translation text COLLATE utf8_unicode_ci,
11270 PRIMARY KEY (localization_id),
11271 UNIQUE KEY entity_code_lang (entity,code,lang)
11272 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
11274 print "Upgrade to $DBversion done (Bug 14100: Generic solution for language overlay)\n";
11275 SetVersion($DBversion);
11278 $DBversion = "3.21.00.045";
11279 if ( CheckVersion($DBversion) ) {
11280 $dbh->do(q|
11281 ALTER TABLE opac_news
11282 ADD borrowernumber int(11) default NULL
11283 AFTER number
11285 $dbh->do(q|
11286 ALTER TABLE opac_news
11287 ADD CONSTRAINT borrowernumber_fk
11288 FOREIGN KEY (borrowernumber)
11289 REFERENCES borrowers (borrowernumber)
11290 ON DELETE SET NULL ON UPDATE CASCADE
11292 print "Upgrade to $DBversion done (Bug 14246: (newsauthor) Add borrowernumber to koha_news)\n";
11293 SetVersion($DBversion);
11296 $DBversion = "3.21.00.046";
11297 if ( CheckVersion($DBversion) ) {
11298 $dbh->do(q{
11299 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
11300 VALUES ('NewsAuthorDisplay','none','none|opac|staff|both','Display the author name for news items.','Choice')
11302 print "Upgrade to $DBversion done (Bug 14247: (newsauthor) System preference for news author display)\n";
11303 SetVersion($DBversion);
11306 $DBversion = "3.21.00.047";
11307 if(CheckVersion($DBversion)) {
11308 $dbh->do(q{
11309 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11310 VALUES ('IndependentBranchesPatronModifications','0','Show only modification request for the logged in branch','','YesNo')
11312 print "Upgrade to $DBversion done (Bug 10904: Limit patron update request management by branch)\n";
11313 SetVersion($DBversion);
11316 $DBversion = '3.21.00.048';
11317 if ( CheckVersion($DBversion) ) {
11318 my $create_table_issues = @{ $dbh->selectall_arrayref(q|SHOW CREATE TABLE issues|) }[0]->[1];
11319 if ($create_table_issues !~ m|UNIQUE KEY.*itemnumber| ) {
11320 $dbh->do(q|ALTER TABLE issues ADD CONSTRAINT UNIQUE KEY (itemnumber)|);
11322 print "Upgrade to $DBversion done (Bug 14978: Make sure issues.itemnumber is a unique key)\n";
11323 SetVersion($DBversion);
11326 $DBversion = "3.21.00.049";
11327 if ( CheckVersion($DBversion) ) {
11328 $dbh->do(q{UPDATE systempreferences SET variable = 'AudioAlerts' WHERE variable = 'soundon'});
11330 $dbh->do(q{
11331 CREATE TABLE audio_alerts (
11332 id int(11) NOT NULL AUTO_INCREMENT,
11333 precedence smallint(5) unsigned NOT NULL,
11334 selector varchar(255) NOT NULL,
11335 sound varchar(255) NOT NULL,
11336 PRIMARY KEY (id),
11337 KEY precedence (precedence)
11338 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
11341 $dbh->do(q{
11342 INSERT IGNORE INTO audio_alerts VALUES
11343 (1, 1, '.audio-alert-action', 'opening.ogg'),
11344 (2, 2, '.audio-alert-warning', 'critical.ogg'),
11345 (3, 3, '.audio-alert-success', 'beep.ogg');
11348 print "Upgrade to $DBversion done (Bug 11431: Add additional sound options for warnings)\n";
11349 SetVersion($DBversion);
11352 $DBversion = "3.21.00.050";
11353 if(CheckVersion($DBversion)) {
11354 $dbh->do(q{
11355 INSERT INTO letter ( module, code, branchcode, name, is_html, title, content, message_transport_type )
11356 VALUES ( 'circulation', 'OVERDUES_SLIP', '', 'Overdues Slip', '0', 'OVERDUES_SLIP', 'The following item(s) is/are currently overdue:
11358 <item>"<<biblio.title>>" by <<biblio.author>>, <<items.itemcallnumber>>, Barcode: <<items.barcode>> Fine: <<items.fine>></item>
11359 ', 'print' )
11361 print "Upgrade to $DBversion done (Bug 12933: Add ability to print overdue slip from staff intranet)\n";
11362 SetVersion($DBversion);
11365 $DBversion = "3.21.00.051";
11366 if ( CheckVersion($DBversion) ) {
11367 $dbh->do(q{
11368 ALTER TABLE virtualshelves
11369 CHANGE COLUMN sortfield sortfield VARCHAR(16) DEFAULT 'title'
11371 $dbh->do(q{
11372 UPDATE virtualshelves
11373 SET sortfield='title'
11374 WHERE sortfield IS NULL;
11376 print "Upgrade to $DBversion done (Bug 14544: Move the list related code to Koha::Virtualshelves)\n";
11377 SetVersion($DBversion);
11380 $DBversion = "3.21.00.052";
11381 if ( CheckVersion($DBversion) ) {
11382 $dbh->do(q{
11383 ALTER TABLE serial
11384 ADD COLUMN publisheddatetext VARCHAR(100) DEFAULT NULL AFTER publisheddate
11386 print "Upgrade to $DBversion done (Bug 8296: Add descriptive (text) published date field for serials)\n";
11387 SetVersion($DBversion);
11390 $DBversion = "3.21.00.053";
11391 if ( CheckVersion($DBversion) ) {
11392 my $query = q{ SELECT * FROM itemtypes ORDER BY description };
11393 my $sth = C4::Context->dbh->prepare($query);
11394 $sth->execute;
11395 my $suggestion_formats = $sth->fetchall_arrayref( {} );
11397 foreach my $format (@$suggestion_formats) {
11398 $dbh->do(
11400 INSERT IGNORE INTO authorised_values (category, authorised_value, lib, lib_opac, imageurl)
11401 VALUES (?, ?, ?, ?, ?)
11402 |, {},
11403 'SUGGEST_FORMAT', $format->{itemtype}, $format->{description}, $format->{description},
11404 $format->{imageurl}
11407 print "Upgrade to $DBversion done (Bug 9468: create new SUGGEST_FORMAT authorised_value list)\n";
11408 SetVersion($DBversion);
11411 $DBversion = "3.21.00.054";
11412 if(CheckVersion($DBversion)) {
11413 $dbh->do(q{
11414 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11415 VALUES('MergeReportFields','','Displayed fields for deleted MARC records after merge',NULL,'Free')
11417 print "Upgrade to $DBversion done (Bug 8064: Merge several biblio records)\n";
11418 SetVersion($DBversion);
11421 $DBversion = "3.21.00.055";
11422 if ( CheckVersion($DBversion) ) {
11423 print "Upgrade to $DBversion done (Koha 3.22 beta)\n";
11424 SetVersion($DBversion);
11427 $DBversion = "3.21.00.056";
11428 if(CheckVersion($DBversion)) {
11429 $dbh->do(q{
11430 UPDATE systempreferences
11432 options='metric|us|iso|dmydot',
11433 explanation='Define global date format (us mm/dd/yyyy, metric dd/mm/yyy, ISO yyyy-mm-dd, DMY separated by dots dd.mm.yyyy)'
11434 WHERE variable='dateformat'
11436 print "Upgrade to $DBversion done (Bug 12072: New dateformat dd.mm.yyyy)\n";
11437 SetVersion($DBversion);
11440 $DBversion = "3.22.00.000";
11441 if ( CheckVersion($DBversion) ) {
11442 print "Upgrade to $DBversion done (Koha 3.22)\n";
11443 SetVersion($DBversion);
11446 $DBversion = "3.23.00.000";
11447 if ( CheckVersion($DBversion) ) {
11448 print "Upgrade to $DBversion done (The year of the monkey will be here soon.)\n";
11449 SetVersion ($DBversion);
11452 $DBversion = "3.23.00.001";
11453 if(CheckVersion($DBversion)) {
11454 $dbh->do(q{
11455 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
11456 VALUES (
11457 'DefaultToLoggedInLibraryCircRules', '0', NULL , 'If enabled, circ rules editor will default to the logged in library''s rules, rather than the ''all libraries'' rules.', 'YesNo'
11458 ), (
11459 'DefaultToLoggedInLibraryNoticesSlips', '0', NULL , 'If enabled,slips and notices editor will default to the logged in library''s rules, rather than the ''all libraries'' rules.', 'YesNo'
11463 print "Upgrade to $DBversion done (Bug 11625 - Add pref DefaultToLoggedInLibraryCircRules and DefaultToLoggedInLibraryNoticesSlips)\n";
11464 SetVersion($DBversion);
11467 $DBversion = "3.23.00.002";
11468 if(CheckVersion($DBversion)) {
11469 $dbh->do(q{
11470 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
11471 VALUES ('DefaultToLoggedInLibraryOverdueTriggers', '0', NULL, 'If enabled, overdue status triggers editor will default to the logged in library''s rules, rather than the ''default'' rules.', 'YesNo')
11474 print "Upgrade to $DBversion done (Bug 11747 - add pref DefaultToLoggedInLibraryOverdueTriggers)\n";
11475 SetVersion($DBversion);
11478 $DBversion = "3.23.00.003";
11479 if(CheckVersion($DBversion)) {
11480 $dbh->do(q{
11481 UPDATE letter SET name = "Hold Slip" WHERE name = "Reserve Slip"
11483 $dbh->do(q{
11484 UPDATE letter SET title = "Hold Slip" WHERE title = "Reserve Slip";
11487 print "Upgrade to $DBversion done (Bug 8085 - Rename 'Reserve slip' to 'Hold slip')\n";
11488 SetVersion($DBversion);
11491 $DBversion = "3.23.00.004";
11492 if ( CheckVersion($DBversion) ) {
11493 $dbh->do(q{
11494 DROP TABLE IF EXISTS `stopwords`;
11496 print "Upgrade to $DBversion done (Bug 9819 - stopwords related code should be removed)\n";
11497 SetVersion($DBversion);
11500 $DBversion = "3.23.00.005";
11501 if ( CheckVersion($DBversion) ) {
11502 $dbh->do(q{
11503 UPDATE permissions SET description = 'Manage circulation rules' WHERE description = 'manage circulation rules'
11505 $dbh->do(q{
11506 UPDATE permissions SET description = 'Manage staged MARC records, including completing and reversing imports' WHERE description = 'Managed staged MARC records, including completing and reversing imports'
11508 print "Upgrade to $DBversion done (Bug 11569 - Typo in userpermissions.sql)\n";
11509 SetVersion($DBversion);
11511 $DBversion = "3.23.00.006";
11512 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
11513 $dbh->do("
11514 ALTER TABLE serial
11515 ADD serialseq_x VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq,
11516 ADD serialseq_y VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_x,
11517 ADD serialseq_z VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_y
11520 my $sth = $dbh->prepare("SELECT * FROM subscription");
11521 $sth->execute();
11523 my $sth2 = $dbh->prepare("SELECT * FROM subscription_numberpatterns WHERE id = ?");
11525 my $sth3 = $dbh->prepare("UPDATE serial SET serialseq_x = ?, serialseq_y = ?, serialseq_z = ? WHERE serialid = ?");
11527 foreach my $subscription ( $sth->fetchrow_hashref() ) {
11528 next if !defined($subscription);
11529 $sth2->execute( $subscription->{numberpattern} );
11530 my $number_pattern = $sth2->fetchrow_hashref();
11532 my $numbering_method = $number_pattern->{numberingmethod};
11533 # Get all the data between the enumeration values, we need
11534 # to split each enumeration string based on these values.
11535 my @splits = split( /\{[XYZ]\}/, $numbering_method );
11536 # Get the order in which the X Y and Z values are used
11537 my %indexes;
11538 foreach my $i (qw(X Y Z)) {
11539 $indexes{$i} = index( $numbering_method, "{$i}" );
11540 delete $indexes{$i} if $indexes{$i} == -1;
11542 my @indexes = sort { $indexes{$a} <=> $indexes{$b} } keys(%indexes);
11544 my @serials = @{
11545 $dbh->selectall_arrayref(
11546 "SELECT * FROM serial WHERE subscriptionid = $subscription->{subscriptionid}",
11547 { Slice => {} }
11551 foreach my $serial (@serials) {
11552 my $serialseq = $serial->{serialseq};
11553 my %enumeration_data;
11555 ## We cannot split on multiple values at once,
11556 ## so let's replace each of those values with __SPLIT__
11557 if (@splits) {
11558 for my $split_item (@splits) {
11559 my $quoted_split = quotemeta($split_item);
11560 $serialseq =~ s/$quoted_split/__SPLIT__/;
11563 undef,
11564 $enumeration_data{ $indexes[0] // q{} },
11565 $enumeration_data{ $indexes[1] // q{} },
11566 $enumeration_data{ $indexes[2] // q{} }
11567 ) = split( /__SPLIT__/, $serialseq );
11569 else
11570 { ## Nothing to split on means the only thing in serialseq is a single placeholder e.g. {X}
11571 $enumeration_data{ $indexes[0] } = $serialseq;
11574 $sth3->execute(
11575 $enumeration_data{'X'},
11576 $enumeration_data{'Y'},
11577 $enumeration_data{'Z'},
11578 $serial->{serialid},
11583 print "Upgrade to $DBversion done ( Bug 8956 - Split serials enumeration data into separate fields )\n";
11584 SetVersion($DBversion);
11587 $DBversion = "3.23.00.007";
11588 if ( CheckVersion($DBversion) ) {
11589 $dbh->do("SET FOREIGN_KEY_CHECKS=0");
11590 $dbh->do("ALTER TABLE overduerules RENAME old_overduerules");
11591 $dbh->do("CREATE TABLE overduerules (
11592 `overduerules_id` int(11) NOT NULL AUTO_INCREMENT,
11593 `branchcode` varchar(10) NOT NULL DEFAULT '',
11594 `categorycode` varchar(10) NOT NULL DEFAULT '',
11595 `delay1` int(4) DEFAULT NULL,
11596 `letter1` varchar(20) DEFAULT NULL,
11597 `debarred1` varchar(1) DEFAULT '0',
11598 `delay2` int(4) DEFAULT NULL,
11599 `debarred2` varchar(1) DEFAULT '0',
11600 `letter2` varchar(20) DEFAULT NULL,
11601 `delay3` int(4) DEFAULT NULL,
11602 `letter3` varchar(20) DEFAULT NULL,
11603 `debarred3` int(1) DEFAULT '0',
11604 PRIMARY KEY (`overduerules_id`),
11605 UNIQUE KEY `overduerules_branch_cat` (`branchcode`,`categorycode`)
11606 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
11607 $dbh->do("INSERT INTO overduerules(branchcode, categorycode, delay1, letter1, debarred1, delay2, debarred2, letter2, delay3, letter3, debarred3) SELECT * FROM old_overduerules");
11608 $dbh->do("DROP TABLE old_overduerules");
11609 $dbh->do("ALTER TABLE overduerules_transport_types
11610 ADD COLUMN overduerules_id int(11) NOT NULL");
11611 my $mtts = $dbh->selectall_arrayref("SELECT * FROM overduerules_transport_types", { Slice => {} });
11612 $dbh->do("DELETE FROM overduerules_transport_types");
11613 $dbh->do("ALTER TABLE overduerules_transport_types
11614 DROP FOREIGN KEY overduerules_fk,
11615 ADD FOREIGN KEY overduerules_transport_types_fk (overduerules_id) REFERENCES overduerules (overduerules_id) ON DELETE CASCADE ON UPDATE CASCADE,
11616 DROP COLUMN branchcode,
11617 DROP COLUMN categorycode");
11618 my $s = $dbh->prepare("INSERT INTO overduerules_transport_types (overduerules_id, id, letternumber, message_transport_type) "
11619 ." VALUES((SELECT overduerules_id FROM overduerules WHERE branchcode = ? AND categorycode = ?),?,?,?)");
11620 foreach my $mtt(@$mtts){
11621 $s->execute($mtt->{branchcode}, $mtt->{categorycode}, $mtt->{id}, $mtt->{letternumber}, $mtt->{message_transport_type} );
11623 $dbh->do("SET FOREIGN_KEY_CHECKS=1");
11625 print "Upgrade to $DBversion done (Bug 13624 - Remove columns branchcode, categorytype from table overduerules_transport_types)\n";
11626 SetVersion($DBversion);
11629 $DBversion = "3.23.00.008";
11630 if ( CheckVersion($DBversion) ) {
11632 $dbh->do(q{ALTER TABLE borrowers ADD privacy_guarantor_checkouts BOOLEAN NOT NULL DEFAULT '0' AFTER privacy});
11634 $dbh->do(q{ALTER TABLE deletedborrowers ADD privacy_guarantor_checkouts BOOLEAN NOT NULL DEFAULT '0' AFTER privacy});
11636 $dbh->do(q{
11637 INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type )
11638 VALUES (
11639 'AllowStaffToSetCheckoutsVisibilityForGuarantor', '0', NULL,
11640 'If enabled, library staff can set a patron''s checkouts to be visible to linked patrons from the opac.', 'YesNo'
11641 ), (
11642 'AllowPatronToSetCheckoutsVisibilityForGuarantor', '0', NULL,
11643 'If enabled, the patron can set checkouts to be visible to his or her guarantor', 'YesNo'
11647 print "Upgrade to $DBversion done (Bug 9303 - relative's checkouts in the opac)\n";
11648 SetVersion($DBversion);
11651 $DBversion = "3.23.00.009";
11652 if ( CheckVersion($DBversion) ) {
11653 $dbh->do(q{
11654 INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type ) VALUES
11655 ( 'EnablePayPalOpacPayments', '0', NULL , 'Enables the ability to pay fees and fines from the OPAC via PayPal', 'YesNo' ),
11656 ( 'PayPalChargeDescription', 'Koha fee payment', NULL , 'This preference defines what the user will see the charge listed as in PayPal', 'Free' ),
11657 ( 'PayPalPwd', '', NULL , 'Your PayPal API password', 'Free' ),
11658 ( 'PayPalSandboxMode', '1', NULL , 'If enabled, the system will use PayPal''s sandbox server for testing, rather than the production server.', 'YesNo' ),
11659 ( 'PayPalSignature', '', NULL , 'Your PayPal API signature', 'Free' ),
11660 ( 'PayPalUser', '', NULL , 'Your PayPal API username ( email address )', 'Free' )
11663 print "Upgrade to $DBversion done (Bug 11622 - Add ability to pay fees and fines from OPAC via PayPal)\n";
11664 SetVersion($DBversion);
11667 $DBversion = "3.23.00.010";
11668 if ( CheckVersion($DBversion) ) {
11669 $dbh->do(q{
11670 ALTER TABLE issuingrules ADD cap_fine_to_replacement_price BOOLEAN NOT NULL DEFAULT '0' AFTER overduefinescap
11673 print "Upgrade to $DBversion done (Bug 9129 - Add the ability to set the maximum fine for an item to its replacement price)\n";
11674 SetVersion($DBversion);
11677 $DBversion = "3.23.00.011";
11678 if ( CheckVersion($DBversion) ) {
11679 $dbh->do(q{
11680 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('HoldFeeMode','not_always','always|not_always','Set the hold fee mode','Choice')
11683 print "Upgrade to $DBversion done (Bug 13592 - Hold fee not being applied on placing a hold)\n";
11684 SetVersion($DBversion);
11687 $DBversion = "3.23.00.012";
11688 if ( CheckVersion($DBversion) ) {
11689 $dbh->do(q{
11690 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `explanation`, `options`, `type` ) VALUES('MaxSearchResultsItemsPerRecordStatusCheck','20','Max number of items per record for which to check transit and hold status','','Integer')
11693 print "Upgrade to $DBversion done (Bug 15380 - Move the authority types related code to Koha::Authority::Type[s] - part 1)\n";
11694 SetVersion($DBversion);
11697 $DBversion = "3.23.00.013";
11698 if ( CheckVersion($DBversion) ) {
11699 $dbh->do(q{
11700 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('StoreLastBorrower','0','','If ON, the last borrower to return an item will be stored in items.last_returned_by','YesNo')
11702 $dbh->do(q{
11703 CREATE TABLE IF NOT EXISTS `items_last_borrower` (
11704 `id` int(11) NOT NULL AUTO_INCREMENT,
11705 `itemnumber` int(11) NOT NULL,
11706 `borrowernumber` int(11) NOT NULL,
11707 `created_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
11708 PRIMARY KEY (`id`),
11709 UNIQUE KEY `itemnumber` (`itemnumber`),
11710 KEY `borrowernumber` (`borrowernumber`),
11711 CONSTRAINT `items_last_borrower_ibfk_2` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
11712 CONSTRAINT `items_last_borrower_ibfk_1` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE
11713 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
11716 print "Upgrade to $DBversion done (Bug 14945 - Add the ability to store the last patron to return an item)\n";
11717 SetVersion($DBversion);
11721 $DBversion = "3.23.00.014";
11722 if ( CheckVersion($DBversion) ) {
11723 $dbh->do(q{
11724 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` )
11725 VALUES ('ClaimsBccCopy','0','','Bcc the ClaimAcquisition and ClaimIssues alerts','YesNo')
11728 print "Upgrade to $DBversion done (Bug 10076 - Add Bcc syspref for claimacquisition and clamissues)\n";
11729 SetVersion($DBversion);
11732 $DBversion = "3.23.00.015";
11733 if ( CheckVersion($DBversion) ) {
11734 $dbh->do(q{
11735 UPDATE letter SET code = "HOLD_SLIP" WHERE code = "RESERVESLIP";
11738 print "Upgrade to $DBversion done (Bug 15443 - Re-code RESERVESLIP as HOLD_SLIP)\n";
11739 SetVersion($DBversion);
11742 $DBversion = "3.23.00.016";
11743 if ( CheckVersion($DBversion) ) {
11744 $dbh->do(q{
11745 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
11746 VALUES ('OpacResetPassword', '0','','Shows the ''Forgot your password?'' link in the OPAC','YesNo');
11748 $dbh->do(q{
11749 CREATE TABLE IF NOT EXISTS borrower_password_recovery (
11750 borrowernumber int(11) NOT NULL,
11751 uuid varchar(128) NOT NULL,
11752 valid_until timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
11753 PRIMARY KEY (borrowernumber),
11754 KEY borrowernumber (borrowernumber)
11755 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
11757 $dbh->do(q{
11758 INSERT IGNORE INTO `letter` (module, code, branchcode, name, is_html, title, content, message_transport_type)
11759 VALUES ('members','PASSWORD_RESET','','Online password reset',1,'Koha password recovery','<html>\r\n<p>This email has been sent in response to your password recovery request for the account <strong><<user>></strong>.\r\n</p>\r\n<p>\r\nYou can now create your new password using the following link:\r\n<br/><a href=\"<<passwordreseturl>>\"><<passwordreseturl>></a>\r\n</p>\r\n<p>This link will be valid for 2 days from this email\'s reception, then you must reapply if you do not change your password.</p>\r\n<p>Thank you.</p>\r\n</html>\r\n','email');
11763 print "Upgrade to $DBversion done (Bug 8753 - Add forgot password link to OPAC)\n";
11764 SetVersion($DBversion);
11767 $DBversion = "3.23.00.017";
11768 if ( CheckVersion($DBversion) ) {
11770 $dbh->do(q{
11771 DELETE FROM uploaded_files
11772 WHERE COALESCE(permanent,0)=0 AND dir='koha_upload'
11775 my $tmp= File::Spec->tmpdir.'/koha_upload';
11776 remove_tree( $tmp ) if -d $tmp;
11778 print "Upgrade to $DBversion done (Bug 14893 - Separate temporary storage per instance in Upload.pm)\n";
11779 SetVersion($DBversion);
11783 $DBversion = "3.23.00.018";
11784 if ( CheckVersion($DBversion) ) {
11785 $dbh->do(q{
11786 UPDATE systempreferences SET value="0" where type="YesNo" and value="";
11789 print "Upgrade to $DBversion done (Bug 15446 - Fix systempreferences rows where type=YesNo and value='')\n";
11790 SetVersion($DBversion);
11793 $DBversion = "3.23.00.019";
11794 if ( CheckVersion($DBversion) ) {
11795 $dbh->do(q{
11796 UPDATE `authorised_values` SET `lib`='Non-fiction' WHERE `lib`='Non Fiction';
11799 print "Upgrade to $DBversion done (Bug 15411 - Change Non Fiction to Non-fiction in authorised_values)\n";
11800 SetVersion($DBversion);
11803 $DBversion = "3.23.00.020";
11804 if ( CheckVersion($DBversion) ) {
11805 $dbh->do(q{
11806 CREATE TABLE sms_providers (
11807 id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
11808 name VARCHAR( 255 ) NOT NULL ,
11809 domain VARCHAR( 255 ) NOT NULL ,
11810 UNIQUE (
11811 name
11813 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
11816 $dbh->do(q{
11817 ALTER TABLE borrowers ADD sms_provider_id INT( 11 ) NULL DEFAULT NULL AFTER smsalertnumber;
11819 $dbh->do(q{
11820 ALTER TABLE borrowers ADD FOREIGN KEY ( sms_provider_id ) REFERENCES sms_providers ( id ) ON UPDATE CASCADE ON DELETE SET NULL;
11822 $dbh->do(q{
11823 ALTER TABLE deletedborrowers ADD sms_provider_id INT( 11 ) NULL DEFAULT NULL AFTER smsalertnumber;
11826 print "Upgrade to $DBversion done (Bug 9021 - Add SMS via email as an alternative to SMS services via SMS::Send drivers)\n";
11827 SetVersion($DBversion);
11830 $DBversion = "3.23.00.021";
11831 if ( CheckVersion($DBversion) ) {
11832 $dbh->do(q{
11833 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('ShowAllCheckins', '0', '', 'Show all checkins', 'YesNo');
11836 print "Upgrade to $DBversion done (Bug 15736 - Add a preference to control whether all items should be shown in checked-in items list)\n";
11837 SetVersion($DBversion);
11840 $DBversion = "3.23.00.022";
11841 if ( CheckVersion($DBversion) ) {
11842 $dbh->do(q{ ALTER TABLE tags_all MODIFY COLUMN borrowernumber INT(11) });
11843 $dbh->do(q{ ALTER TABLE tags_all drop FOREIGN KEY tags_borrowers_fk_1 });
11844 $dbh->do(q{ ALTER TABLE tags_all ADD CONSTRAINT `tags_borrowers_fk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE });
11845 $dbh->do(q{ ALTER TABLE tags_approval DROP FOREIGN KEY tags_approval_borrowers_fk_1 });
11846 $dbh->do(q{ ALTER TABLE tags_approval ADD CONSTRAINT `tags_approval_borrowers_fk_1` FOREIGN KEY (`approved_by`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE });
11848 print "Upgrade to $DBversion done (Bug 13534 - Deleting staff patron will delete tags approved by this patron)\n";
11849 SetVersion($DBversion);
11852 $DBversion = "3.23.00.023";
11853 if ( CheckVersion($DBversion) ) {
11854 $dbh->do(q{
11855 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11856 VALUES('OpenLibrarySearch','0','If Yes Open Library search results will show in OPAC',NULL,'YesNo');
11859 print "Upgrade to $DBversion done (Bug 6624 - Allow Koha to use the new read API from OpenLibrary)\n";
11860 SetVersion($DBversion);
11863 $DBversion = "3.23.00.024";
11864 if ( CheckVersion($DBversion) ) {
11865 $dbh->do(q{
11866 ALTER TABLE deletedborrowers MODIFY COLUMN userid VARCHAR(75) DEFAULT NULL;
11869 $dbh->do(q{
11870 ALTER TABLE deletedborrowers MODIFY COLUMN password VARCHAR(60) DEFAULT NULL;
11873 print "Upgrade to $DBversion done (Bug 15517 - Tables borrowers and deletedborrowers differ again)\n";
11874 SetVersion($DBversion);
11877 $DBversion = "3.23.00.025";
11878 if ( CheckVersion($DBversion) ) {
11879 $dbh->do(q{
11880 DROP TABLE IF EXISTS nozebra;
11883 print "Upgrade to $DBversion done (Bug 15526 - Drop nozebra database table)\n";
11884 SetVersion($DBversion);
11887 $DBversion = "3.23.00.026";
11888 if ( CheckVersion($DBversion) ) {
11889 $dbh->do(q{
11890 UPDATE systempreferences SET value = CONCAT_WS('|', IF(value='', NULL, value), "password") WHERE variable="PatronSelfRegistrationBorrowerUnwantedField" AND value NOT LIKE "%password%";
11893 print "Upgrade to $DBversion done (Bug 15343 - Allow patrons to choose their own password on self registration)\n";
11894 SetVersion($DBversion);
11897 $DBversion = "3.23.00.027";
11898 if ( CheckVersion($DBversion) ) {
11899 my ( $db_value ) = $dbh->selectrow_array(q|SELECT count(*) FROM branches|);
11900 my $pref_value = C4::Context->preference("singleBranchMode") || 0;
11901 if ( $db_value > 1 and $pref_value == 1 ) {
11902 warn "WARNING: You have more than 1 libraries in your branches tables but the singleBranchMode system preference is on.\n";
11903 warn "This configuration does not make sense. The system preference is going to be deleted,\n";
11904 warn "and this parameter will be based on the number of libraries defined.\n";
11906 $dbh->do(q|DELETE FROM systempreferences WHERE variable="singleBranchMode"|);
11908 print "Upgrade to $DBversion done (Bug 4941 - Can't set branch in staff client when singleBranchMode is enabled)\n";
11909 SetVersion($DBversion);
11912 $DBversion = "3.23.00.028";
11913 if ( CheckVersion($DBversion) ) {
11914 $dbh->do(q{
11915 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) SELECT 'PatronSelfModificationBorrowerUnwantedField',value,NULL,'Name the fields you don\'t want to display when a patron is editing their information via the OPAC.','free' FROM systempreferences WHERE variable = 'PatronSelfRegistrationBorrowerUnwantedField';
11918 print "Upgrade to $DBversion done (Bug 14658 - Split PatronSelfRegistrationBorrowerUnwantedField into two preferences for creating and editing)\n";
11919 SetVersion($DBversion);
11922 $DBversion = "3.23.00.029";
11923 if ( CheckVersion($DBversion) ) {
11925 # move marc21_field_003.pl 040c and 040d to marc21_orgcode.pl
11926 $dbh->do(q{
11927 update marc_subfield_structure set value_builder='marc21_orgcode.pl' where value_builder IN ( 'marc21_field_003.pl', 'marc21_field_040c.pl', 'marc21_field_040d.pl' );
11929 $dbh->do(q{
11930 update auth_subfield_structure set value_builder='marc21_orgcode.pl' where value_builder IN ( 'marc21_field_003.pl', 'marc21_field_040c.pl', 'marc21_field_040d.pl' );
11933 print "Upgrade to $DBversion done (Bug 14199 - Unify all organization code plugins)\n";
11934 SetVersion($DBversion);
11937 $DBversion = "3.23.00.030";
11938 if(CheckVersion($DBversion)) {
11939 $dbh->do(q{
11940 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
11941 VALUES ('OpacMaintenanceNotice','','','A user-defined block of HTML to appear on screen when OpacMaintenace is enabled','Textarea')
11944 print "Upgrade to $DBversion done (Bug 15311: Let libraries set text to display when OpacMaintenance = on)\n";
11945 SetVersion($DBversion);
11948 $DBversion = "3.23.00.031";
11949 if(CheckVersion($DBversion)) {
11950 $dbh->do(q{
11951 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
11952 VALUES ('NoRenewalBeforePrecision', 'date', 'Calculate "No renewal before" based on date or exact time. Only relevant for loans calculated in days, hourly loans are not affected.', 'date|exact_time', 'Choice')
11955 print "Upgrade to $DBversion done (Bug 14395 - Two different ways to calculate 'No renewal before')\n";
11956 SetVersion($DBversion);
11959 $DBversion = "3.23.00.032";
11960 if ( CheckVersion($DBversion) ) {
11961 $dbh->do(q{
11962 -- Add issue_id to accountlines table
11963 ALTER TABLE accountlines ADD issue_id INT(11) NULL DEFAULT NULL AFTER accountlines_id;
11966 ## Close out any accruing fines with no current issue
11967 $dbh->do(q{
11968 UPDATE accountlines LEFT JOIN issues USING ( itemnumber, borrowernumber ) SET accounttype = 'F' WHERE accounttype = 'FU' and issues.issue_id IS NULL;
11971 ## Close out any extra not really accruing fines, keep only the latest accring fine
11972 $dbh->do(q{
11973 UPDATE accountlines a1
11974 LEFT JOIN (SELECT MAX(accountlines_id) AS keeper,
11975 borrowernumber,
11976 itemnumber
11977 FROM accountlines
11978 WHERE accounttype = 'FU'
11979 GROUP BY borrowernumber, itemnumber
11980 ) a2 USING ( borrowernumber, itemnumber )
11981 SET a1.accounttype = 'F'
11982 WHERE a1.accounttype = 'FU'
11983 AND a1.accountlines_id != a2.keeper;
11986 ## Update the unclosed fines to add the current issue_id to them
11987 $dbh->do(q{
11988 UPDATE accountlines LEFT JOIN issues USING ( itemnumber ) SET accountlines.issue_id = issues.issue_id WHERE accounttype = 'FU';
11991 print "Upgrade to $DBversion done (Bug 15675 - Add issue_id column to accountlines and use it for updating fines)\n";
11992 SetVersion($DBversion);
11995 $DBversion = "3.23.00.033";
11996 if ( CheckVersion($DBversion) ) {
11997 $dbh->do(q{
11998 UPDATE systempreferences SET value = CONCAT_WS('|', IF(value = '', NULL, value), 'cardnumber') WHERE variable = 'PatronSelfRegistrationBorrowerUnwantedField' AND value NOT LIKE '%cardnumber%';
12001 $dbh->do(q{
12002 UPDATE systempreferences SET value = CONCAT_WS('|', IF(value = '', NULL, value), 'categorycode') WHERE variable = 'PatronSelfRegistrationBorrowerUnwantedField' AND value NOT LIKE '%categorycode%';
12005 print "Upgrade to $DBversion done (Bug 14659 - Allow patrons to enter card number and patron category on OPAC registration page)\n";
12006 SetVersion($DBversion);
12009 $DBversion = "3.23.00.034";
12010 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12011 $dbh->do(q{
12012 ALTER TABLE `items` ADD `new` VARCHAR(32) NULL AFTER `stocknumber`;
12014 $dbh->do(q{
12015 ALTER TABLE `deleteditems` ADD `new` VARCHAR(32) NULL AFTER `stocknumber`;
12017 print "Upgrade to $DBversion done (Bug 11023: Adds field 'new' in items and deleteditems tables)\n";
12018 SetVersion($DBversion);
12021 $DBversion = "3.23.00.035";
12022 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12023 $dbh->do(q{
12024 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('HTML5MediaYouTube',0,'Embed|Don\'t embed','YouTube links as videos','YesNo');
12026 print "Upgrade to $DBversion done (Bug 14168 - enhance streaming cataloging to include youtube)\n";
12028 SetVersion($DBversion);
12031 $DBversion = "3.23.00.036";
12032 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12033 $dbh->do(q{
12034 INSERT IGNORE INTO systempreferences (variable,value,explanation,type) VALUES ('HoldsQueueSkipClosed', '0', 'If enabled, any libraries that are closed when the holds queue is built will be ignored for the purpose of filling holds.', 'YesNo');
12036 print "Upgrade to $DBversion done (Bug 12803 - Add ability to skip closed libraries when generating the holds queue)\n";
12037 SetVersion($DBversion);
12040 $DBversion = "3.23.00.037";
12041 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12042 ## Add the new currency.archived column
12043 $dbh->do(q{
12044 ALTER TABLE currency ADD column archived tinyint(1) DEFAULT 0;
12046 ## Set currency=NULL if empty (just in case)
12047 $dbh->do(q{
12048 UPDATE aqorders SET currency=NULL WHERE currency="";
12050 ## Insert the missing currency and mark them as archived before adding the FK
12051 $dbh->do(q{
12052 INSERT INTO currency(currency, archived) SELECT distinct currency, 1 FROM aqorders WHERE currency NOT IN (SELECT currency FROM currency);
12054 ## Correct the field length in aqorders before adding FK too
12055 $dbh->do(q{ ALTER TABLE aqorders MODIFY COLUMN currency varchar(10) default NULL; });
12056 ## And finally add the FK
12057 $dbh->do(q{
12058 ALTER TABLE aqorders ADD FOREIGN KEY (currency) REFERENCES currency(currency) ON DELETE SET NULL ON UPDATE SET null;
12061 print "Upgrade to $DBversion done (Bug 15084 - Move the currency related code to Koha::Acquisition::Currenc[y|ies])\n";
12062 SetVersion($DBversion);
12065 $DBversion = "3.23.00.038";
12066 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12067 $dbh->do(q{
12068 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('decreaseLoanHighHoldsControl', 'static', 'static|dynamic', "Chooses between static and dynamic high holds checking", 'Choice'), ('decreaseLoanHighHoldsIgnoreStatuses', '', 'damaged|itemlost|notforloan|withdrawn', "Ignore items with these statuses for dynamic high holds checking", 'Choice');
12070 print "Upgrade to $DBversion done (Bug 14694 - Make decreaseloanHighHolds more flexible)\n";
12071 SetVersion($DBversion);
12074 $DBversion = "3.23.00.039";
12075 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12077 $dbh->do(q{
12078 ALTER TABLE suggestions
12079 MODIFY COLUMN currency varchar(10) default NULL;
12081 $dbh->do(q{
12082 ALTER TABLE aqbooksellers
12083 MODIFY COLUMN currency varchar(10) default NULL;
12085 print "Upgrade to $DBversion done (Bug 15084 - Move the currency related code to Koha::Acquisition::Currenc[y|ies])\n";
12086 SetVersion($DBversion);
12090 $DBversion = "3.23.00.040";
12091 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12093 my $c = $dbh->selectrow_array('SELECT COUNT(*) FROM systempreferences WHERE variable="intranetcolorstylesheet" AND value="blue.css"');
12095 if ( $c ) {
12096 print "WARNING: You are using a stylesheeet which has been removed from the Koha codebase.\n";
12097 print "Update your intranetcolorstylesheet.\n";
12099 print "Upgrade to $DBversion done (Bug 16019 - Check intranetcolorstylesheet for blue.css)\n";
12100 SetVersion($DBversion);
12103 $DBversion = "3.23.00.041";
12104 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12106 my $dbh = C4::Context->dbh;
12107 my ($print_error) = $dbh->{PrintError};
12108 $dbh->{RaiseError} = 0;
12109 $dbh->{PrintError} = 0;
12110 $dbh->do("ALTER TABLE overduerules_transport_types ADD COLUMN letternumber INT(1) NOT NULL DEFAULT 1 AFTER id");
12111 $dbh->{PrintError} = $print_error;
12113 print "Upgrade to $DBversion done (Bug 16007: Make sure overduerules_transport_types.letternumber exists)\n";
12114 SetVersion($DBversion);
12117 $DBversion = "3.23.00.042";
12118 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12120 $dbh->do(q{
12121 ALTER TABLE items CHANGE new new_status VARCHAR(32) NULL;
12123 $dbh->do(q{
12124 ALTER TABLE deleteditems CHANGE new new_status VARCHAR(32) NULL;
12126 $dbh->do(q{
12127 UPDATE systempreferences SET value=REPLACE(value, '"items.new"', '"items.new_status"') WHERE variable="automatic_item_modification_by_age_configuration";
12130 print "Upgrade to $DBversion done (Bug 16004 - Replace items.new with items.new_status)\n";
12131 SetVersion($DBversion);
12134 $DBversion = "3.23.00.043";
12135 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12136 $dbh->do(q{
12137 UPDATE systempreferences SET value="" WHERE value IS NULL;
12140 print "Upgrade to $DBversion done (Bug 16070 - Empty (undef) system preferences may cause some issues in combination with memcache)\n";
12141 SetVersion($DBversion);
12144 $DBversion = "3.23.00.044";
12145 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12146 $dbh->do(q{
12147 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES
12148 ('GoogleOpenIDConnect', '0', NULL, 'if ON, allows the use of Google OpenID Connect for login', 'YesNo'),
12149 ('GoogleOAuth2ClientID', '', NULL, 'Client ID for the web app registered with Google', 'Free'),
12150 ('GoogleOAuth2ClientSecret', '', NULL, 'Client Secret for the web app registered with Google', 'Free'),
12151 ('GoogleOpenIDConnectDomain', '', NULL, 'Restrict OpenID Connect to this domain (or subdomains of this domain). Leave blank for all Google domains', 'Free');
12154 print "Upgrade to $DBversion done (Bug 10988 - Allow login via Google OAuth2 (OpenID Connect))\n";
12155 SetVersion($DBversion);
12158 $DBversion = "3.23.00.045";
12159 if ( CheckVersion($DBversion) ) {
12160 ## Holds details for vendors supplying goods by EDI
12161 $dbh->do(q{
12162 CREATE TABLE IF NOT EXISTS vendor_edi_accounts (
12163 id INT(11) NOT NULL auto_increment,
12164 description TEXT NOT NULL,
12165 host VARCHAR(40),
12166 username VARCHAR(40),
12167 password VARCHAR(40),
12168 last_activity DATE,
12169 vendor_id INT(11) REFERENCES aqbooksellers( id ),
12170 download_directory TEXT,
12171 upload_directory TEXT,
12172 san VARCHAR(20),
12173 id_code_qualifier VARCHAR(3) default '14',
12174 transport VARCHAR(6) default 'FTP',
12175 quotes_enabled TINYINT(1) not null default 0,
12176 invoices_enabled TINYINT(1) not null default 0,
12177 orders_enabled TINYINT(1) not null default 0,
12178 responses_enabled TINYINT(1) not null default 0,
12179 auto_orders TINYINT(1) not null default 0,
12180 shipment_budget INTEGER(11) REFERENCES aqbudgets( budget_id ),
12181 PRIMARY KEY (id),
12182 KEY vendorid (vendor_id),
12183 KEY shipmentbudget (shipment_budget),
12184 CONSTRAINT vfk_vendor_id FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ),
12185 CONSTRAINT vfk_shipment_budget FOREIGN KEY ( shipment_budget ) REFERENCES aqbudgets ( budget_id )
12186 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
12189 ## Hold the actual edifact messages with links to associated baskets
12190 $dbh->do(q{
12191 CREATE TABLE IF NOT EXISTS edifact_messages (
12192 id INT(11) NOT NULL auto_increment,
12193 message_type VARCHAR(10) NOT NULL,
12194 transfer_date DATE,
12195 vendor_id INT(11) REFERENCES aqbooksellers( id ),
12196 edi_acct INTEGER REFERENCES vendor_edi_accounts( id ),
12197 status TEXT,
12198 basketno INT(11) REFERENCES aqbasket( basketno),
12199 raw_msg MEDIUMTEXT,
12200 filename TEXT,
12201 deleted BOOLEAN NOT NULL DEFAULT 0,
12202 PRIMARY KEY (id),
12203 KEY vendorid ( vendor_id),
12204 KEY ediacct (edi_acct),
12205 KEY basketno ( basketno),
12206 CONSTRAINT emfk_vendor FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ),
12207 CONSTRAINT emfk_edi_acct FOREIGN KEY ( edi_acct ) REFERENCES vendor_edi_accounts ( id ),
12208 CONSTRAINT emfk_basketno FOREIGN KEY ( basketno ) REFERENCES aqbasket ( basketno )
12209 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
12212 ## invoices link back to the edifact message it was generated from
12213 $dbh->do(q{
12214 ALTER TABLE aqinvoices ADD COLUMN message_id INT(11) REFERENCES edifact_messages( id );
12217 ## clean up link on deletes
12218 $dbh->do(q{
12219 ALTER TABLE aqinvoices ADD CONSTRAINT edifact_msg_fk FOREIGN KEY ( message_id ) REFERENCES edifact_messages ( id ) ON DELETE SET NULL;
12222 ## Hold the supplier ids from quotes for ordering
12223 ## although this is an EAN-13 article number the standard says 35 characters ???
12224 $dbh->do(q{
12225 ALTER TABLE aqorders ADD COLUMN line_item_id VARCHAR(35);
12228 ## The suppliers unique reference usually a quotation line number ('QLI')
12229 ## Otherwise Suppliers unique orderline reference ('SLI')
12230 $dbh->do(q{
12231 ALTER TABLE aqorders ADD COLUMN suppliers_reference_number VARCHAR(35);
12233 $dbh->do(q{
12234 ALTER TABLE aqorders ADD COLUMN suppliers_reference_qualifier VARCHAR(3);
12236 $dbh->do(q{
12237 ALTER TABLE aqorders ADD COLUMN suppliers_report text;
12240 ## hold the EAN/SAN used in ordering
12241 $dbh->do(q{
12242 CREATE TABLE IF NOT EXISTS edifact_ean (
12243 ee_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
12244 description VARCHAR(128) NULL DEFAULT NULL,
12245 branchcode VARCHAR(10) NOT NULL REFERENCES branches (branchcode),
12246 ean VARCHAR(15) NOT NULL,
12247 id_code_qualifier VARCHAR(3) NOT NULL DEFAULT '14',
12248 CONSTRAINT efk_branchcode FOREIGN KEY ( branchcode ) REFERENCES branches ( branchcode )
12249 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
12252 ## Add a permission for managing EDI
12253 $dbh->do(q{
12254 INSERT INTO permissions (module_bit, code, description) values (11, 'edi_manage', 'Manage EDIFACT transmissions');
12257 print "Upgrade to $DBversion done (Bug 7736 - Edifact QUOTE and ORDER functionality))\n";
12258 SetVersion($DBversion);
12261 $DBversion = "3.23.00.046";
12262 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12264 $dbh->do(q{
12265 ALTER TABLE vendor_edi_accounts ADD COLUMN plugin VARCHAR(256) NOT NULL DEFAULT "";
12268 print "Upgrade to $DBversion done (Bug 15630 - Make Edifact module pluggable))\n";
12269 SetVersion($DBversion);
12272 $DBversion = "3.23.00.047";
12273 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12275 $dbh->do(q{
12276 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('IntranetReportsHomeHTML', '', 'Show the following HTML in a div on the bottom of the reports home page', NULL, 'Free');
12278 $dbh->do(q{
12279 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('IntranetCirculationHomeHTML', '', 'Show the following HTML in a div on the bottom of the reports home page', NULL, 'Free');
12282 print "Upgrade to $DBversion done (Bug 15008 - Add custom HTML areas to circulation and reports home pages)\n";
12283 SetVersion($DBversion);
12286 $DBversion = "3.23.00.048";
12287 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12288 $dbh->do(q{
12289 INSERT IGNORE INTO `systempreferences` (variable,value,options,explanation,type) SELECT 'OPACISBD', value, '70|10', 'Allows to define ISBD view in OPAC', 'Textarea' FROM `systempreferences` WHERE variable = 'ISBD';
12292 print "Upgrade to $DBversion done (Bug 5979 - Add separate OPACISBD system preference)\n";
12293 SetVersion($DBversion);
12298 $DBversion = "3.23.00.049";
12299 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
12300 my $dbh = C4::Context->dbh;
12301 my ( $column_has_been_used ) = $dbh->selectrow_array(q|
12302 SELECT COUNT(*)
12303 FROM borrower_attributes
12304 WHERE password IS NOT NULL
12307 if ( $column_has_been_used ) {
12308 print q|WARNING: The columns borrower_attribute_types.password_allowed and borrower_attributes.password have been removed from the Koha codebase. They were not used. However your installation has at least one borrower_attributes.password defined. In order not to alter your data, the columns have been kept, please save the information elsewhere and remove these columns manually.|;
12309 } else {
12310 $dbh->do(q|
12311 ALTER TABLE borrower_attribute_types DROP column password_allowed
12313 $dbh->do(q|
12314 ALTER TABLE borrower_attributes DROP column password;
12317 print "Upgrade to $DBversion done (Bug 12267 - Allow password option in Patron Attribute non functional)\n";
12318 SetVersion($DBversion);
12322 $DBversion = "3.23.00.050";
12323 if ( CheckVersion($DBversion) ) {
12324 use Koha::SearchMarcMaps;
12325 use Koha::SearchFields;
12326 use Koha::SearchEngine::Elasticsearch;
12328 $dbh->do(q|INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
12329 VALUES('SearchEngine','Zebra','Choose Search Engine','','Choice')|);
12332 $dbh->do(q|DROP TABLE IF EXISTS search_marc_to_field|);
12333 $dbh->do(q|DROP TABLE IF EXISTS search_marc_map|);
12334 $dbh->do(q|DROP TABLE IF EXISTS search_field|);
12336 # This specifies the fields that will be stored in the search engine.
12337 $dbh->do(q|
12338 CREATE TABLE `search_field` (
12339 `id` int(11) NOT NULL AUTO_INCREMENT,
12340 `name` varchar(255) NOT NULL COMMENT 'the name of the field as it will be stored in the search engine',
12341 `label` varchar(255) NOT NULL COMMENT 'the human readable name of the field, for display',
12342 `type` ENUM('', 'string', 'date', 'number', 'boolean', 'sum') NOT NULL COMMENT 'what type of data this holds, relevant when storing it in the search engine',
12343 PRIMARY KEY (`id`),
12344 UNIQUE KEY (`name`)
12345 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
12347 # This contains a MARC field specifier for a given index, marc type, and marc
12348 # field.
12349 $dbh->do(q|
12350 CREATE TABLE `search_marc_map` (
12351 id int(11) NOT NULL AUTO_INCREMENT,
12352 index_name ENUM('biblios','authorities') NOT NULL COMMENT 'what storage index this map is for',
12353 marc_type ENUM('marc21', 'unimarc', 'normarc') NOT NULL COMMENT 'what MARC type this map is for',
12354 marc_field VARCHAR(255) NOT NULL COMMENT 'the MARC specifier for this field',
12355 PRIMARY KEY(`id`),
12356 unique key( index_name, marc_field, marc_type),
12357 INDEX (`index_name`)
12358 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
12361 # This joins the two search tables together. We can have any combination:
12362 # one marc field could have many search fields (maybe you want one value
12363 # to go to 'author' and 'corporate-author) and many marc fields could go
12364 # to one search field (e.g. all the various author fields going into
12365 # 'author'.)
12367 # a note about the sort field:
12368 # * if all the entries for a mapping are 'null', nothing special is done with that mapping.
12369 # * if any of the entries are not null, then a __sort field is created in ES for this mapping. In this case:
12370 # * any mapping with sort == false WILL NOT get copied into a __sort field
12371 # * any mapping with sort == true or is null WILL get copied into a __sort field
12372 # * any sorts on the field name will be applied to $fieldname.'__sort' instead.
12373 # this means that we can have search for author that includes 1xx, 245$c, and 7xx, but the sort only applies to 1xx.
12375 $dbh->do(q|
12376 CREATE TABLE `search_marc_to_field` (
12377 search_marc_map_id int(11) NOT NULL,
12378 search_field_id int(11) NOT NULL,
12379 facet boolean DEFAULT FALSE COMMENT 'true if a facet field should be generated for this',
12380 suggestible boolean DEFAULT FALSE COMMENT 'true if this field can be used to generate suggestions for browse',
12381 sort boolean DEFAULT NULL COMMENT 'true/false creates special sort handling, null doesn''t',
12382 PRIMARY KEY(search_marc_map_id, search_field_id),
12383 FOREIGN KEY(search_marc_map_id) REFERENCES search_marc_map(id) ON DELETE CASCADE ON UPDATE CASCADE,
12384 FOREIGN KEY(search_field_id) REFERENCES search_field(id) ON DELETE CASCADE ON UPDATE CASCADE
12385 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
12388 # Insert default mappings
12389 Koha::SearchEngine::Elasticsearch->reset_elasticsearch_mappings;
12391 print "Upgrade to $DBversion done (Bug 12478 - Elasticsearch support for Koha)\n";
12392 SetVersion($DBversion);
12396 $DBversion = "3.23.00.051";
12397 if ( CheckVersion($DBversion) ) {
12398 $dbh->do(q{
12399 ALTER TABLE edifact_messages
12400 DROP FOREIGN KEY emfk_vendor,
12401 DROP FOREIGN KEY emfk_edi_acct,
12402 DROP FOREIGN KEY emfk_basketno;
12405 $dbh->do(q{
12406 ALTER TABLE edifact_messages
12407 ADD CONSTRAINT emfk_vendor FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ) ON DELETE CASCADE ON UPDATE CASCADE,
12408 ADD CONSTRAINT emfk_edi_acct FOREIGN KEY ( edi_acct ) REFERENCES vendor_edi_accounts ( id ) ON DELETE CASCADE ON UPDATE CASCADE,
12409 ADD CONSTRAINT emfk_basketno FOREIGN KEY ( basketno ) REFERENCES aqbasket ( basketno ) ON DELETE CASCADE ON UPDATE CASCADE;
12412 print "Upgrade to $DBversion done (Bug 16354 - Fix FK constraints for edifact_messages table)\n";
12413 SetVersion($DBversion);
12417 $DBversion = "3.23.00.052";
12418 if ( CheckVersion($DBversion) ) {
12419 ## Insert permission
12421 $dbh->do(q{
12422 INSERT IGNORE INTO permissions (module_bit, code, description) VALUES
12423 (13, 'upload_general_files', 'Upload any file'),
12424 (13, 'upload_manage', 'Manage uploaded files');
12426 ## Update user_permissions for current users (check count in uploaded_files)
12427 ## Note 9 == edit_catalogue and 13 == tools
12428 ## We do not insert if someone is superlibrarian, does not have edit_catalogue,
12429 ## or already has all tools
12431 $dbh->do(q{
12432 INSERT IGNORE INTO user_permissions (borrowernumber, module_bit, code)
12433 SELECT borrowernumber, 13, 'upload_general_files'
12434 FROM borrowers bo
12435 WHERE flags<>1 AND flags & POW(2,13) = 0 AND
12436 ( flags & POW(2,9) > 0 OR
12437 (SELECT COUNT(*) FROM user_permissions
12438 WHERE borrowernumber=bo.borrowernumber AND module_bit=9 ) > 0 )
12439 AND ( SELECT COUNT(*) FROM uploaded_files ) > 0
12442 print "Upgrade to $DBversion done (Bug 14686 - New menu option and permission for file uploading)\n";
12443 SetVersion($DBversion);
12446 $DBversion = "3.23.00.053";
12447 if ( CheckVersion($DBversion) ) {
12448 my $letters = $dbh->selectall_arrayref(
12450 SELECT code, name
12451 FROM letter
12452 WHERE message_transport_type="email"
12453 |, { Slice => {} }
12455 for my $letter (@$letters) {
12456 $dbh->do(
12458 UPDATE letter
12459 SET name = ?
12460 WHERE code = ?
12461 AND message_transport_type <> "email"
12462 |, undef, $letter->{name}, $letter->{code}
12466 print "Upgrade to $DBversion done (Bug 16217 - Notice' names may have diverged)\n";
12467 SetVersion($DBversion);
12470 $DBversion = "3.23.00.054";
12471 if ( CheckVersion($DBversion) ) {
12472 $dbh->do(q{
12473 ALTER TABLE branch_item_rules ADD COLUMN hold_fulfillment_policy ENUM('any', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any' AFTER holdallowed;
12475 $dbh->do(q{
12476 ALTER TABLE default_branch_circ_rules ADD COLUMN hold_fulfillment_policy ENUM('any', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any' AFTER holdallowed;
12478 $dbh->do(q{
12479 ALTER TABLE default_branch_item_rules ADD COLUMN hold_fulfillment_policy ENUM('any', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any' AFTER holdallowed;
12481 $dbh->do(q{
12482 ALTER TABLE default_circ_rules ADD COLUMN hold_fulfillment_policy ENUM('any', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any' AFTER holdallowed;
12485 print "Upgrade to $DBversion done (Bug 15532 - Add ability to allow only items whose home/holding branch matches the hold's pickup branch to fill a given hold)\n";
12486 SetVersion($DBversion);
12489 $DBversion = "3.23.00.055";
12490 if ( CheckVersion($DBversion) ) {
12491 $dbh->do(q{
12492 ALTER TABLE reserves ADD COLUMN itemtype VARCHAR(10) NULL DEFAULT NULL AFTER suspend_until;
12494 $dbh->do(q{
12495 ALTER TABLE reserves ADD KEY `itemtype` (`itemtype`);
12497 $dbh->do(q{
12498 ALTER TABLE reserves ADD CONSTRAINT `reserves_ibfk_5` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE;
12500 $dbh->do(q{
12501 ALTER TABLE old_reserves ADD COLUMN itemtype VARCHAR(10) NULL DEFAULT NULL AFTER suspend_until;
12503 $dbh->do(q{
12504 ALTER TABLE old_reserves ADD KEY `itemtype` (`itemtype`);
12506 $dbh->do(q{
12507 ALTER TABLE old_reserves ADD CONSTRAINT `old_reserves_ibfk_4` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE;
12510 $dbh->do(q{
12511 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
12512 ('AllowHoldItemTypeSelection','0','','If enabled, patrons and staff will be able to select the itemtype when placing a hold','YesNo');
12515 print "Upgrade to $DBversion done (Bug 15533 - Allow patrons and librarians to select itemtype when placing hold)\n";
12516 SetVersion($DBversion);
12519 $DBversion = "3.23.00.056";
12520 if ( CheckVersion($DBversion) ) {
12521 $dbh->do(q{
12522 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
12523 ('NoIssuesChargeGuarantees','','','Define maximum amount withstanding before check outs are blocked','Integer');
12526 print "Upgrade to $DBversion done (Bug 14577 - Allow restriction of checkouts based on fines of guarantor/guarantee)\n";
12527 SetVersion($DBversion);
12530 $DBversion = "3.23.00.057";
12531 if ( CheckVersion($DBversion) ) {
12532 $dbh->do(q{
12533 ALTER TABLE aqbasket ADD COLUMN is_standing TINYINT(1) NOT NULL DEFAULT 0 AFTER branch;
12536 print "Upgrade to $DBversion done (Bug 15531 - Add support for standing orders)\n";
12537 SetVersion($DBversion);
12540 $DBversion = "3.23.00.058";
12541 if ( CheckVersion($DBversion) ) {
12543 my ($count_imageurl) = $dbh->selectrow_array(q|
12544 SELECT COUNT(*)
12545 FROM authorised_values
12546 WHERE imageurl IS NOT NULL
12547 AND imageurl <> ""
12550 unless ($count_imageurl) {
12551 if ( C4::Context->preference('AuthorisedValueImages')
12552 or C4::Context->preference('StaffAuthorisedValueImages') )
12554 $dbh->do(q|
12555 UPDATE systempreferences
12556 SET value = 0
12557 WHERE variable = "AuthorisedValueImages"
12558 or variable = "StaffAuthorisedValueImages"
12560 warn "The system preferences AuthorisedValueImages and StaffAuthorisedValueImages have been turned off\n";
12561 warn "authorised_values.imageurl is not populated, that means you are not using this feature\n";
12564 else {
12565 warn "At least one authorised value has an icon defined (imageurl)\n";
12566 warn "The system preference AuthorisedValueImages or StaffAuthorisedValueImages could be turned off if you are not aware of this feature\n";
12569 print "Upgrade to $DBversion done (Bug 16041 - StaffAuthorisedValueImages & AuthorisedValueImages preferences - impact on search performance)\n";
12570 SetVersion($DBversion);
12573 $DBversion = "3.23.00.059";
12574 if ( CheckVersion($DBversion) ) {
12575 $dbh->do(q{
12576 DELETE FROM systempreferences WHERE variable="AuthorisedValueImages" OR variable="StaffAuthorisedValueImages";
12579 print "Upgrade to $DBversion done (Bug 16167 - Remove prefs to drive authorised value images)\n";
12580 SetVersion($DBversion);
12583 $DBversion = "3.23.00.060";
12584 if ( CheckVersion($DBversion) ) {
12585 $dbh->do(q{
12586 INSERT IGNORE INTO systempreferences ( value, variable, options, explanation,type )
12587 SELECT value ,'EnhancedMessagingPreferencesOPAC', NULL, 'If ON, allows patrons to select to receive additional messages about items due or nearly due.', 'YesNo' FROM systempreferences WHERE variable = 'EnhancedMessagingPreferences';
12590 print "Upgrade to $DBversion done (Bug 12528 - Enable staff to deny message setting access to patrons on the OPAC)\n";
12591 SetVersion($DBversion);
12594 $DBversion = "3.23.00.061";
12595 if ( CheckVersion($DBversion) ) {
12596 my ( $cnt ) = $dbh->selectrow_array( q|
12597 SELECT COUNT(*) FROM items it
12598 LEFT JOIN biblio bi ON bi.biblionumber=it.biblionumber
12599 LEFT JOIN biblioitems bii USING (biblioitemnumber)
12600 WHERE bi.biblionumber IS NULL
12602 if( $cnt ) {
12603 print "WARNING: You have corrupted data in your items table!! The table contains $cnt references to biblio records that do not exist.\nPlease correct your data IMMEDIATELY after this upgrade and manually add the foreign key constraint for biblionumber in the items table.\n";
12604 } else {
12605 # now add FK
12606 $dbh->do( q|
12607 ALTER TABLE items
12608 ADD FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE
12610 print "Upgrade to $DBversion done (Bug 16170 - Add FK for biblionumber in items)\n";
12612 SetVersion($DBversion);
12615 $DBversion = "3.23.00.062";
12616 if ( CheckVersion($DBversion) ) {
12617 $dbh->do( q|
12618 ALTER TABLE aqorders DROP COLUMN budgetgroup_id;
12620 print "Upgrade to $DBversion done (Bug 16414 - aqorders.budgetgroup_id has never been used and can be removed)\n";
12621 SetVersion($DBversion);
12624 $DBversion = "3.23.00.063";
12625 if ( CheckVersion($DBversion) ) {
12626 $dbh->do(q{
12627 UPDATE letter SET branchcode='' WHERE branchcode IS NULL;
12629 $dbh->do(q{
12630 ALTER TABLE letter MODIFY COLUMN branchcode varchar(10) NOT NULL DEFAULT ''
12632 $dbh->do(q{
12633 ALTER TABLE permissions MODIFY COLUMN code varchar(64) NOT NULL DEFAULT '';
12635 print "Upgrade to $DBversion done (Bug 16402: Fix DB structure to work on MySQL 5.7)\n";
12636 SetVersion($DBversion);
12639 $DBversion = "3.23.00.064";
12640 if ( CheckVersion($DBversion) ) {
12641 $dbh->do(q{
12642 ALTER TABLE creator_layouts MODIFY layout_name char(25) NOT NULL DEFAULT 'DEFAULT';
12644 print "Upgrade to $DBversion done (Bug 15086 - Creators layout and template sql has warnings)\n";
12645 SetVersion($DBversion);
12648 $DBversion = "16.05.00.000";
12649 if ( CheckVersion($DBversion) ) {
12650 print "Upgrade to $DBversion done (Koha 16.05)\n";
12651 SetVersion($DBversion);
12654 $DBversion = "16.06.00.000";
12655 if ( CheckVersion($DBversion) ) {
12656 print "Upgrade to $DBversion done (Koha 16.06 - starting a new dev line at KohaCon16 in Thessaloniki, Greece! Koha is great!)\n";
12657 SetVersion($DBversion);
12660 $DBversion = "16.06.00.001";
12661 if ( CheckVersion($DBversion) ) {
12662 $dbh->do(q{
12663 UPDATE accountlines SET accounttype='HE', description=itemnumber WHERE (description REGEXP '^Hold waiting too long [0-9]+') AND accounttype='F';
12666 print "Upgrade to $DBversion done (Bug 16200 - 'Hold waiting too long' fee has a translation problem)\n";
12667 SetVersion($DBversion);
12670 $DBversion = "16.06.00.002";
12671 if ( CheckVersion($DBversion) ) {
12672 unless ( column_exists('borrowers', 'updated_on') ) {
12673 $dbh->do(q{
12674 ALTER TABLE borrowers
12675 ADD COLUMN updated_on timestamp NULL DEFAULT CURRENT_TIMESTAMP
12676 ON UPDATE CURRENT_TIMESTAMP
12677 AFTER privacy_guarantor_checkouts;
12679 $dbh->do(q{
12680 ALTER TABLE deletedborrowers
12681 ADD COLUMN updated_on timestamp NULL DEFAULT CURRENT_TIMESTAMP
12682 ON UPDATE CURRENT_TIMESTAMP
12683 AFTER privacy_guarantor_checkouts;
12687 print "Upgrade to $DBversion done (Bug 10459 - borrowers should have a timestamp)\n";
12688 SetVersion($DBversion);
12691 $DBversion = "16.06.00.003";
12692 if ( CheckVersion($DBversion) ) {
12693 $dbh->do(q{
12694 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
12695 SELECT 'MaxItemsToProcessForBatchMod', value, NULL, 'Process up to a given number of items in a single item modification batch.', 'Integer' FROM systempreferences WHERE variable='MaxItemsForBatch';
12697 $dbh->do(q{
12698 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
12699 SELECT 'MaxItemsToDisplayForBatchDel', value, NULL, 'Display up to a given number of items in a single item deletionbatch.', 'Integer' FROM systempreferences WHERE variable='MaxItemsForBatch';
12701 $dbh->do(q{
12702 DELETE FROM systempreferences WHERE variable="MaxItemsForBatch";
12705 print "Upgrade to $DBversion done (Bug 11490 - MaxItemsForBatch should be split into two new prefs)\n";
12706 SetVersion($DBversion);
12709 $DBversion = '16.06.00.004';
12710 if ( CheckVersion($DBversion) ) {
12711 $dbh->do(q{
12712 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
12713 SELECT 'OPACXSLTListsDisplay', COALESCE(value,''), '', 'Enable XSLT stylesheet control over lists pages display on OPAC', 'Free'
12714 FROM systempreferences WHERE variable='OPACXSLTResultsDisplay';
12717 $dbh->do(q{
12718 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
12719 SELECT 'XSLTListsDisplay', COALESCE(value,''), '', 'Enable XSLT stylesheet control over lists pages display on intranet', 'Free'
12720 FROM systempreferences WHERE variable='XSLTResultsDisplay';
12723 print "Upgrade to $DBversion done (Bug 15485: Allow choosing different XSLTs for lists)\n";
12724 SetVersion($DBversion);
12727 $DBversion = '16.06.00.005';
12728 if ( CheckVersion($DBversion) ) {
12729 $dbh->do(q{
12730 UPDATE `systempreferences` set options = 'US|FR|CH' where variable = 'CurrencyFormat';
12733 print "Upgrade to $DBversion done (Bug 16768 - Add official number format for Switzerland: 1'234'567.89)\n";
12734 SetVersion($DBversion);
12737 $DBversion = "16.06.00.006";
12738 if ( CheckVersion($DBversion) ) {
12739 $dbh->do(q{
12740 CREATE TABLE `refund_lost_item_fee_rules` (
12741 `branchcode` varchar(10) NOT NULL default '',
12742 `refund` tinyint(1) NOT NULL default 0,
12743 PRIMARY KEY (`branchcode`)
12744 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
12746 $dbh->do(q{
12747 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
12748 VALUES( 'RefundLostOnReturnControl',
12749 'CheckinLibrary',
12750 'If a lost item is returned, choose which branch to pick rules for refunding.',
12751 'CheckinLibrary|PatronLibrary|ItemHomeBranch|ItemHoldingbranch',
12752 'Choice')
12754 # Pick the old syspref as the default rule
12755 $dbh->do(q{
12756 INSERT INTO refund_lost_item_fee_rules (branchcode,refund)
12757 SELECT '*', COALESCE(value,'1') FROM systempreferences WHERE variable='RefundLostItemFeeOnReturn'
12759 # Delete the old syspref
12760 $dbh->do(q{
12761 DELETE IGNORE FROM systempreferences
12762 WHERE variable='RefundLostItemFeeOnReturn'
12765 print "Upgrade to $DBversion done (Bug 14048: Change RefundLostItemFeeOnReturn to be branch specific)\n";
12766 SetVersion($DBversion);
12769 $DBversion = '16.06.00.007';
12770 if ( CheckVersion($DBversion) ) {
12771 $dbh->do(q{
12772 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
12773 VALUES ('PatronQuickAddFields', '', 'A list of fields separated by "|" to be displayed along with mandatory fields in the patron quick add form if chosen at patron entry', NULL, 'Free');
12776 print "Upgrade to $DBversion done (Bug 3534 - Patron quick add form)\n";
12777 SetVersion($DBversion);
12780 $DBversion = '16.06.00.008';
12781 if ( CheckVersion($DBversion) ) {
12782 $dbh->do(q{
12783 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
12784 VALUES('CheckPrevCheckout','hardno','hardyes|softyes|softno|hardno','By default, for every item checked out, should we warn if the patron has checked out that item in the past?','Choice');
12786 $dbh->do(q{
12787 ALTER TABLE categories
12788 ADD COLUMN `checkprevcheckout` varchar(7) NOT NULL default 'inherit'
12789 AFTER `default_privacy`;
12791 $dbh->do(q{
12792 ALTER TABLE borrowers
12793 ADD COLUMN `checkprevcheckout` varchar(7) NOT NULL default 'inherit'
12794 AFTER `privacy_guarantor_checkouts`;
12796 $dbh->do(q{
12797 ALTER TABLE deletedborrowers
12798 ADD COLUMN `checkprevcheckout` varchar(7) NOT NULL default 'inherit'
12799 AFTER `privacy_guarantor_checkouts`;
12802 print "Upgrade to $DBversion done (Bug 6906 - show 'Borrower has previously issued \$ITEM' alert on checkout)\n";
12803 SetVersion($DBversion);
12806 $DBversion = '16.06.00.009';
12807 if ( CheckVersion($DBversion) ) {
12808 $dbh->do(q{
12809 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
12810 VALUES ('IntranetCatalogSearchPulldown','0',NULL,'Show a search field pulldown for \"Search the catalog\" boxes. ','YesNo');
12813 print "Upgrade to $DBversion done (Bug 14902 - Add qualifier menu to staff side 'Search the Catalog')\n";
12814 SetVersion($DBversion);
12817 $DBversion = '16.06.00.010';
12818 if ( CheckVersion($DBversion) ) {
12819 $dbh->do(q{
12820 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
12821 VALUES ('MaxOpenSuggestions','',NULL,'Limit the number of open suggestions a patron can have at once, unlimited if blank','Integer')
12824 print "Upgrade to $DBversion done (Bug 15128 - Add ability to limit the number of open purchase suggestions a patron can make)\n";
12825 SetVersion($DBversion);
12828 $DBversion = '16.06.00.011';
12829 if ( CheckVersion($DBversion) ) {
12830 $dbh->do(q{
12831 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES
12832 ('NovelistSelectStaffEnabled','0',NULL,'Enable Novelist Select content to the Staff Interface (requires that you have entered in a user profile and password, which can be seen in image links)','YesNo'),
12833 ('NovelistSelectStaffView','tab','tab|above|below','Where to display Novelist Select content','Choice');
12836 print "Upgrade to $DBversion done (Bug 11606 - Novelist Select in Staff Client)\n";
12837 SetVersion($DBversion);
12840 $DBversion = '16.06.00.012';
12841 if ( CheckVersion($DBversion) ) {
12842 $dbh->do(q{
12843 ALTER TABLE virtualshelves MODIFY COLUMN created_on DATETIME not NULL;
12846 print "Upgrade to $DBversion done (Bug 16573 - Web installer fails to load structure and sample data on MySQL 5.7)\n";
12847 SetVersion($DBversion);
12850 $DBversion = '16.06.00.013';
12851 if ( CheckVersion($DBversion) ) {
12852 $dbh->do(q{
12853 INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type) VALUES
12854 ('OPACResultsLibrary', 'homebranch', 'homebranch|holdingbranch', 'Defines whether the OPAC displays the holding or home branch in search results when using XSLT', 'Choice');
12857 print "Upgrade to $DBversion done (Bug 7441 - Search results showing wrong branch)\n";
12858 SetVersion($DBversion);
12861 $DBversion = "16.06.00.014";
12862 if ( CheckVersion($DBversion) ) {
12863 $dbh->do(q{
12864 ALTER TABLE `action_logs` ADD COLUMN `interface` VARCHAR(30) DEFAULT NULL AFTER `info`;
12867 $dbh->do(q{
12868 ALTER TABLE `action_logs` ADD KEY `interface` (`interface`);
12871 print "Upgrade to $DBversion done (Bug 16829: action_logs should have an 'interface' column)\n";
12872 SetVersion($DBversion);
12875 $DBversion = "16.06.00.015";
12876 if ( CheckVersion($DBversion) ) {
12877 $dbh->do(q{
12878 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type ) VALUES
12879 ('HoldsLog','0',NULL,'If ON, log create/cancel/suspend/resume actions on holds.','YesNo');
12882 print "Upgrade to $DBversion done (Bug 14642: Add logging of hold modifications)\n";
12883 SetVersion($DBversion);
12886 $DBversion = "16.06.00.016";
12887 if ( CheckVersion($DBversion) ) {
12888 $dbh->do(q{
12889 update marc_subfield_structure set defaultvalue=REPLACE(defaultvalue, 'YYYY', '<<YYYY>>') where defaultvalue like "%YYYY%" and defaultvalue not like "%<<YYYY>>%";
12891 $dbh->do(q{
12892 update marc_subfield_structure set defaultvalue=REPLACE(defaultvalue, 'MM', '<<MM>>') where defaultvalue like "%MM%" and defaultvalue not like "%<<MM>>%";
12894 $dbh->do(q{
12895 update marc_subfield_structure set defaultvalue=REPLACE(defaultvalue, 'DD', '<<DD>>') where defaultvalue like "%DD%" and defaultvalue not like "%<<DD>>%";
12897 $dbh->do(q{
12898 update marc_subfield_structure set defaultvalue=REPLACE(defaultvalue, 'user', '<<USER>>') where defaultvalue like "%user%" and defaultvalue not like "%<<USER>>%";
12901 print "Upgrade to $DBversion done (Bug 7045 - Default-value substitution inconsistent)\n";
12902 SetVersion($DBversion);
12905 $DBversion = "16.06.00.017";
12906 if ( CheckVersion($DBversion) ) {
12907 $dbh->do(q{
12908 INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('OPACSuggestionMandatoryFields','title','','Define the mandatory fields for a patron purchase suggestions made via OPAC.','multiple');
12911 print "Upgrade to $DBversion done (Bug 10848 - Allow configuration of mandatory/required fields on the suggestion form in OPAC)\n";
12912 SetVersion($DBversion);
12915 $DBversion = "16.06.00.018";
12916 if ( CheckVersion($DBversion) ) {
12917 $dbh->do(q{
12918 ALTER TABLE issuingrules ADD COLUMN holds_per_record SMALLINT(6) NOT NULL DEFAULT 1 AFTER reservesallowed;
12921 print "Upgrade to $DBversion done (Bug 14695 - Add ability to place multiple item holds on a given record per patron)\n";
12922 SetVersion($DBversion);
12925 $DBversion = "16.06.00.019";
12926 if ( CheckVersion($DBversion) ) {
12927 $dbh->do(q{
12928 ALTER TABLE reviews CHANGE COLUMN approved approved tinyint(4) DEFAULT 0;
12930 $dbh->do(q{
12931 UPDATE reviews SET approved=0 WHERE approved IS NULL;
12934 print "Upgrade to $DBversion done (Bug 15839 - Move the reviews related code to Koha::Reviews)\n";
12935 SetVersion($DBversion);
12938 $DBversion = "16.06.00.020";
12939 if ( CheckVersion($DBversion) ) {
12940 $dbh->do(q{
12941 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('SwitchOnSiteCheckouts', '0', 'Automatically switch an on-site checkout to a normal checkout', NULL, 'YesNo');
12944 print "Upgrade to $DBversion done (Bug 16272 - Transform checkout from on-site checkout to regular checkout)\n";
12945 SetVersion($DBversion);
12948 $DBversion = "16.06.00.021";
12949 if ( CheckVersion($DBversion) ) {
12950 $dbh->do(q{
12951 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('PatronSelfRegistrationEmailMustBeUnique', '0', 'If set, the field borrowers.email will be considered as a unique field on self registering', NULL, 'YesNo');
12954 print "Upgrade to $DBversion done (Bug 16275 - Prevent patron self registration if the email already filled in borrowers.email)\n";
12955 SetVersion($DBversion);
12958 $DBversion = "16.06.00.022";
12959 if ( CheckVersion($DBversion) ) {
12960 $dbh->do(q{
12961 INSERT IGNORE INTO `permissions`
12962 (module_bit, code, description) VALUES
12963 (16, 'delete_reports', 'Delete SQL reports');
12965 $dbh->do(q{
12966 INSERT IGNORE INTO user_permissions
12967 (borrowernumber, module_bit,code)
12968 SELECT borrowernumber,module_bit,'delete_reports'
12969 FROM user_permissions
12970 WHERE module_bit=16 AND code='create_reports';
12973 print "Upgrade to $DBversion done (Bug 16978 - Add delete reports user permission)\n";
12974 SetVersion($DBversion);
12977 $DBversion = "16.06.00.023";
12978 if ( CheckVersion($DBversion) ) {
12979 my $pref = C4::Context->preference('timeout');
12980 if( !$pref || $pref eq '12000000' ) {
12981 # update if pref is null or equals old default value
12982 $dbh->do(q|
12983 UPDATE systempreferences SET value = '1d', type = 'Free'
12984 WHERE variable = 'timeout'
12986 print "Upgrade to $DBversion done (Bug 17187)\nNote: Pref value for timeout has been adjusted.\n";
12987 } else {
12988 # only update pref type
12989 $dbh->do(q|
12990 UPDATE systempreferences SET type = 'Free'
12991 WHERE variable = 'timeout'
12993 print "Upgrade to $DBversion done (Bug 17187)\nNote: Pref value for timeout has not been adjusted.\n";
12995 SetVersion($DBversion);
12998 $DBversion = "16.06.00.024";
12999 if ( CheckVersion($DBversion) ) {
13000 $dbh->do(q{
13001 UPDATE language_descriptions SET description = 'Română' WHERE subtag = 'ro' AND type = 'language' AND lang = 'ro';
13004 print "Upgrade to $DBversion done (Bug 16311 - Advanced search language limit typo for Romanian)\n";
13005 SetVersion($DBversion);
13008 $DBversion = "16.06.00.025";
13009 if ( CheckVersion($DBversion) ) {
13010 $dbh->do(q{
13011 ALTER TABLE `subscription` ADD `itemtype` VARCHAR( 10 ) NULL AFTER reneweddate, ADD `previousitemtype` VARCHAR( 10 ) NULL AFTER itemtype;
13013 $dbh->do(q{
13014 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES
13015 ('makePreviousSerialAvailable','0','make previous serial automatically available when collecting a new serial. Please note that the item-level_itypes syspref must be set to specific item.','','YesNo');
13018 print "Upgrade to $DBversion done (Bug 7677 - Subscriptions: Ability to define default itemtype and automatically change itemtype of older issues on receive of next issue)\n";
13019 SetVersion($DBversion);
13022 $DBversion = "16.06.00.026";
13023 if ( CheckVersion($DBversion) ) {
13024 $dbh->do(q{
13025 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('PatronSelfRegistrationLibraryList', '', 'Only display libraries listed. If empty, all libraries are displayed.', NULL, 'Free');
13028 print "Upgrade to $DBversion done (Bug 16274 - Make the selfregistration branchcode selection configurable)\n";
13029 SetVersion($DBversion);
13032 $DBversion = "16.06.00.027";
13033 if ( CheckVersion($DBversion) ) {
13034 unless ( column_exists('borrowers', 'lastseen') ) {
13035 $dbh->do(q{
13036 ALTER TABLE borrowers ADD COLUMN lastseen datetime default NULL AFTER updated_on;
13038 $dbh->do(q{
13039 ALTER TABLE deletedborrowers ADD COLUMN lastseen datetime default NULL AFTER updated_on;
13042 $dbh->do(q{
13043 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('TrackLastPatronActivity', '0', 'If set, the field borrowers.lastseen will be updated everytime a patron is seen', NULL, 'YesNo');
13046 print "Upgrade to $DBversion done (Bug 16274 - Make the selfregistration branchcode selection configurable)\n";
13047 SetVersion($DBversion);
13050 $DBversion = '16.06.00.028';
13051 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
13053 print "Attempting upgrade to $DBversion (Bug 17135) ...\n";
13054 my $maintenance_script = C4::Context->config("intranetdir") . "/installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl";
13055 system("perl $maintenance_script --confirm");
13057 print "Upgrade to $DBversion done (Bug 17135 - Fine for the previous overdue may get overwritten by the next one)\n";
13059 unless ($original_version < TransformToNum("3.23.00.032")) { ## Bug 15675
13060 print "WARNING: There is a possibility (= just a possibility, it's configuration dependent etc.) that - due to regression introduced by Bug 15675 - some old fine records for overdued items (items which got renewed 1+ time while being overdue) may have been overwritten in your production 16.05+ database. See Bugzilla reports for Bug 14390 and Bug 17135 for more details.\n";
13061 print "WARNING: Please note that this upgrade does not try to recover such overwitten old fine records (if any) - it's just an follow-up for Bug 14390, its sole purpose is preventing eventual further-on overwrites from happening in the future. Optional recovery of the overwritten fines (again, if any) is like, totally outside of the scope of this particular upgrade!\n";
13063 SetVersion ($DBversion);
13067 $DBversion = "16.06.00.029";
13068 if ( CheckVersion($DBversion) ) {
13069 $dbh->do(q{
13070 UPDATE systempreferences SET type="Choice" WHERE variable="UsageStatsLibraryType";
13072 $dbh->do(q{
13073 UPDATE systempreferences SET value="Canada" WHERE variable="UsageStatsCountry" AND value="CANADA";
13075 $dbh->do(q{
13076 UPDATE systempreferences SET value="Czech Republic" WHERE variable="UsageStatsCountry" AND value="CZ";
13078 $dbh->do(q{
13079 UPDATE systempreferences SET value="United Kingdom" WHERE variable="UsageStatsCountry" AND (value="England" OR value="UK");
13081 $dbh->do(q{
13082 UPDATE systempreferences SET value="Spain" WHERE variable="UsageStatsCountry" AND value="España";
13084 $dbh->do(q{
13085 UPDATE systempreferences SET value="Greece" WHERE variable="UsageStatsCountry" AND value="GR";
13087 $dbh->do(q{
13088 UPDATE systempreferences SET value="Ireland" WHERE variable="UsageStatsCountry" AND value="Irelanbd";
13090 $dbh->do(q{
13091 UPDATE systempreferences SET value="Mexico" WHERE variable="UsageStatsCountry" AND value="México";
13093 $dbh->do(q{
13094 UPDATE systempreferences SET value="Peru" WHERE variable="UsageStatsCountry" AND value="Perú";
13096 $dbh->do(q{
13097 UPDATE systempreferences SET value="Dominican Rep." WHERE variable="UsageStatsCountry" AND value="República Dominicana";
13099 $dbh->do(q{
13100 UPDATE systempreferences SET value="Trinidad & Tob." WHERE variable="UsageStatsCountry" AND value="Trinidad";
13102 $dbh->do(q{
13103 UPDATE systempreferences SET value="Turkey" WHERE variable="UsageStatsCountry" AND value="Türkiye";
13105 $dbh->do(q{
13106 UPDATE systempreferences SET value="USA" WHERE variable="UsageStatsCountry" AND (value="United States" OR value="United States of America" OR value="US");
13108 $dbh->do(q{
13109 UPDATE systempreferences SET value="Zimbabwe" WHERE variable="UsageStatsCountry" AND value="Zimbabbwe";
13112 print "Upgrade to $DBversion done (Bug 14707 - Change UsageStatsCountry from free text to a dropdown list)\n";
13113 SetVersion($DBversion);
13116 $DBversion = "16.06.00.030";
13117 if ( CheckVersion($DBversion) ) {
13118 $dbh->do(q{
13119 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
13120 ('OPACHoldingsDefaultSortField','first_column','first_column|homebranch|holdingbranch','Default sort field for the holdings table at the OPAC','choice');
13123 print "Upgrade to $DBversion done (Bug 16552 - Add the ability to change the default holdings sort)\n";
13124 SetVersion($DBversion);
13127 $DBversion = "16.06.00.031";
13128 if ( CheckVersion($DBversion) ) {
13129 $dbh->do(q{
13130 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('PatronSelfRegistrationPrefillForm', '1', 'Display password and prefill login form after a patron has self registered', NULL, 'YesNo');
13133 print "Upgrade to $DBversion done (Bug 16273 - Prevent selfregistration from printing the borrower password and filling the logging form)\n";
13134 SetVersion($DBversion);
13137 $DBversion = "16.06.00.032";
13138 if ( CheckVersion($DBversion) ) {
13139 $dbh->do(q{
13140 UPDATE marc_subfield_structure SET authorised_value="WITHDRAWN" WHERE authorised_value="WTHDRAWN";
13143 print "Upgrade to $DBversion done (Bug 17357 - WTHDRAWN is still used in installer files)\n";
13144 SetVersion($DBversion);
13148 $DBversion = "16.06.00.033";
13149 if ( CheckVersion($DBversion) ) {
13150 $dbh->do(q{
13151 CREATE TABLE authorised_value_categories (
13152 category_name VARCHAR(32) NOT NULL,
13153 primary key (category_name)
13154 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13156 ## Add authorised value categories
13157 $dbh->do(q{
13158 INSERT INTO authorised_value_categories (category_name )
13159 SELECT DISTINCT category FROM authorised_values;
13162 ## Add special categories
13163 $dbh->do(q{
13164 INSERT IGNORE INTO authorised_value_categories( category_name )
13165 VALUES
13166 ('Asort1'),
13167 ('Asort2'),
13168 ('Bsort1'),
13169 ('Bsort2'),
13170 ('SUGGEST'),
13171 ('DAMAGED'),
13172 ('LOST'),
13173 ('REPORT_GROUP'),
13174 ('REPORT_SUBGROUP'),
13175 ('DEPARTMENT'),
13176 ('TERM'),
13177 ('SUGGEST_STATUS'),
13178 ('ITEMTYPECAT');
13181 ## Add very special categories
13182 $dbh->do(q{
13183 INSERT IGNORE INTO authorised_value_categories( category_name )
13184 VALUES
13185 ('branches'),
13186 ('itemtypes'),
13187 ('cn_source');
13190 $dbh->do(q{
13191 INSERT IGNORE INTO authorised_value_categories( category_name )
13192 VALUES
13193 ('WITHDRAWN'),
13194 ('RESTRICTED'),
13195 ('NOT_LOAN'),
13196 ('CCODE'),
13197 ('LOC'),
13198 ('STACK');
13201 ## Update the FK
13202 $dbh->do(q{
13203 ALTER TABLE items_search_fields
13204 DROP FOREIGN KEY items_search_fields_authorised_values_category;
13207 $dbh->do(q{
13208 ALTER TABLE items_search_fields
13209 ADD CONSTRAINT `items_search_fields_authorised_values_category` FOREIGN KEY (`authorised_values_category`) REFERENCES `authorised_value_categories` (`category_name`) ON DELETE SET NULL ON UPDATE CASCADE;
13212 $dbh->do(q{
13213 ALTER TABLE authorised_values
13214 ADD CONSTRAINT `authorised_values_authorised_values_category` FOREIGN KEY (`category`) REFERENCES `authorised_value_categories` (`category_name`) ON DELETE CASCADE ON UPDATE CASCADE;
13217 $dbh->do(q{
13218 INSERT IGNORE INTO authorised_value_categories( category_name ) SELECT DISTINCT(authorised_value) FROM marc_subfield_structure;
13221 $dbh->do(q{
13222 UPDATE marc_subfield_structure SET authorised_value = NULL WHERE authorised_value = '';
13225 # If the DB has been created before 3.19.00.006, the default collate for marc_subfield_structure if not set to utf8_unicode_ci and the new FK will not be create (MariaDB or MySQL will raise err 150)
13226 my $table_sth = $dbh->prepare(qq|SHOW CREATE TABLE marc_subfield_structure|);
13227 $table_sth->execute;
13228 my @table = $table_sth->fetchrow_array;
13229 if ( $table[1] !~ /COLLATE=utf8_unicode_ci/ and $table[1] !~ /COLLATE=utf8mb4_unicode_ci/ ) { #catches utf8mb4 collated tables
13230 $dbh->do(qq|ALTER TABLE marc_subfield_structure CHARACTER SET utf8 COLLATE utf8_unicode_ci|);
13232 $dbh->do(q{
13233 ALTER TABLE marc_subfield_structure
13234 MODIFY COLUMN authorised_value VARCHAR(32) DEFAULT NULL,
13235 ADD CONSTRAINT marc_subfield_structure_ibfk_1 FOREIGN KEY (authorised_value) REFERENCES authorised_value_categories (category_name) ON UPDATE CASCADE ON DELETE SET NULL;
13238 print "Upgrade to $DBversion done (Bug 17216 - Add a new table to store authorized value categories)\n";
13239 SetVersion($DBversion);
13242 $DBversion = "16.06.00.034";
13243 if ( CheckVersion($DBversion) ) {
13244 $dbh->do(q{
13245 ALTER TABLE biblioitems DROP COLUMN marc;
13247 $dbh->do(q{
13248 ALTER TABLE deletedbiblioitems DROP COLUMN marc;
13251 print "Upgrade to $DBversion done (Bug 10455 - remove redundant 'biblioitems.marc' field)\n";
13252 SetVersion($DBversion);
13255 $DBversion = '16.06.00.035';
13256 if ( CheckVersion($DBversion) ) {
13257 $dbh->do(q{
13258 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
13259 SELECT 'AllowItemsOnHoldCheckoutSCO',COALESCE(value,0),'','Do not generate RESERVE_WAITING and RESERVED warning in the SCO module when checking out items reserved to someone else. This allows self checkouts for those items.','YesNo'
13260 FROM systempreferences WHERE variable='AllowItemsOnHoldCheckout';
13263 print "Upgrade to $DBversion done (Bug 15131: Give SCO separate control for AllowItemsOnHoldCheckout)\n";
13264 SetVersion($DBversion);
13267 $DBversion = '16.06.00.036';
13268 if ( CheckVersion($DBversion) ) {
13269 $dbh->do(q{
13270 CREATE TABLE IF NOT EXISTS `housebound_profile` (
13271 `borrowernumber` int(11) NOT NULL, -- Number of the borrower associated with this profile.
13272 `day` text NOT NULL, -- The preferred day of the week for delivery.
13273 `frequency` text NOT NULL, -- The Authorised_Value definining the pattern for delivery.
13274 `fav_itemtypes` text default NULL, -- Free text describing preferred itemtypes.
13275 `fav_subjects` text default NULL, -- Free text describing preferred subjects.
13276 `fav_authors` text default NULL, -- Free text describing preferred authors.
13277 `referral` text default NULL, -- Free text indicating how the borrower was added to the service.
13278 `notes` text default NULL, -- Free text for additional notes.
13279 PRIMARY KEY (`borrowernumber`),
13280 CONSTRAINT `housebound_profile_bnfk`
13281 FOREIGN KEY (`borrowernumber`)
13282 REFERENCES `borrowers` (`borrowernumber`)
13283 ON UPDATE CASCADE ON DELETE CASCADE
13284 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13286 $dbh->do(q{
13287 CREATE TABLE IF NOT EXISTS `housebound_visit` (
13288 `id` int(11) NOT NULL auto_increment, -- ID of the visit.
13289 `borrowernumber` int(11) NOT NULL, -- Number of the borrower, & the profile, linked to this visit.
13290 `appointment_date` date default NULL, -- Date of visit.
13291 `day_segment` varchar(10), -- Rough time frame: 'morning', 'afternoon' 'evening'
13292 `chooser_brwnumber` int(11) default NULL, -- Number of the borrower to choose items for delivery.
13293 `deliverer_brwnumber` int(11) default NULL, -- Number of the borrower to deliver items.
13294 PRIMARY KEY (`id`),
13295 CONSTRAINT `houseboundvisit_bnfk`
13296 FOREIGN KEY (`borrowernumber`)
13297 REFERENCES `housebound_profile` (`borrowernumber`)
13298 ON UPDATE CASCADE ON DELETE CASCADE,
13299 CONSTRAINT `houseboundvisit_bnfk_1`
13300 FOREIGN KEY (`chooser_brwnumber`)
13301 REFERENCES `borrowers` (`borrowernumber`)
13302 ON UPDATE CASCADE ON DELETE CASCADE,
13303 CONSTRAINT `houseboundvisit_bnfk_2`
13304 FOREIGN KEY (`deliverer_brwnumber`)
13305 REFERENCES `borrowers` (`borrowernumber`)
13306 ON UPDATE CASCADE ON DELETE CASCADE
13307 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13309 $dbh->do(q{
13310 CREATE TABLE IF NOT EXISTS `housebound_role` (
13311 `borrowernumber_id` int(11) NOT NULL, -- borrowernumber link
13312 `housebound_chooser` tinyint(1) NOT NULL DEFAULT 0, -- set to 1 to indicate this patron is a housebound chooser volunteer
13313 `housebound_deliverer` tinyint(1) NOT NULL DEFAULT 0, -- set to 1 to indicate this patron is a housebound deliverer volunteer
13314 PRIMARY KEY (`borrowernumber_id`),
13315 CONSTRAINT `houseboundrole_bnfk`
13316 FOREIGN KEY (`borrowernumber_id`)
13317 REFERENCES `borrowers` (`borrowernumber`)
13318 ON UPDATE CASCADE ON DELETE CASCADE
13319 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13321 $dbh->do(q{
13322 INSERT IGNORE INTO systempreferences
13323 (variable,value,options,explanation,type) VALUES
13324 ('HouseboundModule',0,'',
13325 'If ON, enable housebound module functionality.','YesNo');
13327 $dbh->do(q{
13328 INSERT IGNORE INTO authorised_value_categories( category_name ) VALUES
13329 ('HSBND_FREQ');
13331 $dbh->do(q{
13332 INSERT IGNORE INTO authorised_values (category, authorised_value, lib) VALUES
13333 ('HSBND_FREQ','EW','Every week');
13336 print "Upgrade to $DBversion done (Bug 5670 - Housebound Readers Module)\n";
13337 SetVersion($DBversion);
13340 $DBversion = "16.06.00.037";
13341 if ( CheckVersion($DBversion) ) {
13342 $dbh->do(q{
13343 ALTER TABLE `issuingrules` ADD `article_requests` ENUM( 'no', 'yes', 'bib_only', 'item_only' ) NOT NULL DEFAULT 'no' AFTER `opacitemholds`;
13345 $dbh->do(q{
13346 INSERT INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`) VALUES
13347 ('ArticleRequests', '0', NULL, 'Enables the article request feature', 'YesNo'),
13348 ('ArticleRequestsMandatoryFields', '', NULL, 'Comma delimited list of required fields for bibs where article requests rule = ''yes''', 'multiple'),
13349 ('ArticleRequestsMandatoryFieldsItemsOnly', '', NULL, 'Comma delimited list of required fields for bibs where article requests rule = ''item_only''', 'multiple'),
13350 ('ArticleRequestsMandatoryFieldsRecordOnly', '', NULL, 'Comma delimited list of required fields for bibs where article requests rule = ''bib_only''', 'multiple');
13352 $dbh->do(q{
13353 CREATE TABLE IF NOT EXISTS `article_requests` (
13354 `id` int(11) NOT NULL AUTO_INCREMENT,
13355 `borrowernumber` int(11) NOT NULL,
13356 `biblionumber` int(11) NOT NULL,
13357 `itemnumber` int(11) DEFAULT NULL,
13358 `branchcode` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
13359 `title` text,
13360 `author` text,
13361 `volume` text,
13362 `issue` text,
13363 `date` text,
13364 `pages` text,
13365 `chapters` text,
13366 `patron_notes` text,
13367 `status` enum('PENDING','PROCESSING','COMPLETED','CANCELED') NOT NULL DEFAULT 'PENDING',
13368 `notes` text,
13369 `created_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
13370 `updated_on` timestamp NULL DEFAULT NULL,
13371 PRIMARY KEY (`id`),
13372 KEY `borrowernumber` (`borrowernumber`),
13373 KEY `biblionumber` (`biblionumber`),
13374 KEY `itemnumber` (`itemnumber`),
13375 KEY `branchcode` (`branchcode`),
13376 CONSTRAINT `article_requests_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
13377 CONSTRAINT `article_requests_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
13378 CONSTRAINT `article_requests_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE CASCADE,
13379 CONSTRAINT `article_requests_ibfk_4` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE
13380 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13382 $dbh->do(q{
13383 INSERT INTO `letter` (`module`, `code`, `branchcode`, `name`, `is_html`, `title`, `content`, `message_transport_type`) VALUES
13384 ('circulation', 'AR_CANCELED', '', 'Article Request - Email - Canceled', 0, 'Article Request Canceled', '<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)\r\n\r\nYour request for an article from <<biblio.title>> (<<items.barcode>>) has been canceled for the following reason:\r\n\r\n<<article_requests.notes>>\r\n\r\nArticle requested:\r\nTitle: <<article_requests.title>>\r\nAuthor: <<article_requests.author>>\r\nVolume: <<article_requests.volume>>\r\nIssue: <<article_requests.issue>>\r\nDate: <<article_requests.date>>\r\nPages: <<article_requests.pages>>\r\nChapters: <<article_requests.chapters>>\r\nNotes: <<article_requests.patron_notes>>\r\n', 'email'),
13385 ('circulation', 'AR_COMPLETED', '', 'Article Request - Email - Completed', 0, 'Article Request Completed', '<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)\r\n\r\nWe are have completed your request for an article from <<biblio.title>> (<<items.barcode>>).\r\n\r\nArticle requested:\r\nTitle: <<article_requests.title>>\r\nAuthor: <<article_requests.author>>\r\nVolume: <<article_requests.volume>>\r\nIssue: <<article_requests.issue>>\r\nDate: <<article_requests.date>>\r\nPages: <<article_requests.pages>>\r\nChapters: <<article_requests.chapters>>\r\nNotes: <<article_requests.patron_notes>>\r\n\r\nYou may pick your article up at <<branches.branchname>>.\r\n\r\nThank you!', 'email'),
13386 ('circulation', 'AR_PENDING', '', 'Article Request - Email - Open', 0, 'Article Request Received', '<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)\r\n\r\nWe have received your request for an article from <<biblio.title>> (<<items.barcode>>).\r\n\r\nArticle requested:\r\nTitle: <<article_requests.title>>\r\nAuthor: <<article_requests.author>>\r\nVolume: <<article_requests.volume>>\r\nIssue: <<article_requests.issue>>\r\nDate: <<article_requests.date>>\r\nPages: <<article_requests.pages>>\r\nChapters: <<article_requests.chapters>>\r\nNotes: <<article_requests.patron_notes>>\r\n\r\n\r\nThank you!', 'email'),
13387 ('circulation', 'AR_SLIP', '', 'Article Request - Print Slip', 0, 'Test', 'Article Request:\r\n\r\n<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)\r\n\r\nTitle: <<biblio.title>>\r\nBarcode: <<items.barcode>>\r\n\r\nArticle requested:\r\nTitle: <<article_requests.title>>\r\nAuthor: <<article_requests.author>>\r\nVolume: <<article_requests.volume>>\r\nIssue: <<article_requests.issue>>\r\nDate: <<article_requests.date>>\r\nPages: <<article_requests.pages>>\r\nChapters: <<article_requests.chapters>>\r\nNotes: <<article_requests.patron_notes>>\r\n', 'print'),
13388 ('circulation', 'AR_PROCESSING', '', 'Article Request - Email - Processing', 0, 'Article Request Processing', '<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)\r\n\r\nWe are now processing your request for an article from <<biblio.title>> (<<items.barcode>>).\r\n\r\nArticle requested:\r\nTitle: <<article_requests.title>>\r\nAuthor: <<article_requests.author>>\r\nVolume: <<article_requests.volume>>\r\nIssue: <<article_requests.issue>>\r\nDate: <<article_requests.date>>\r\nPages: <<article_requests.pages>>\r\nChapters: <<article_requests.chapters>>\r\nNotes: <<article_requests.patron_notes>>\r\n\r\nThank you!', 'email');
13391 print "Upgrade to $DBversion done (Bug 14610 - Add ability to place article requests in Koha)\n";
13392 SetVersion($DBversion);
13395 $DBversion = '16.06.00.038';
13396 if ( CheckVersion($DBversion) ) {
13397 $dbh->do(q{
13398 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('DefaultPatronSearchFields','surname,firstname,othernames,cardnumber,userid',NULL,'Comma separated list defining the default fields to be used during a patron search','free');
13401 print "Upgrade to $DBversion done (Bug 14874 - Add ability to search for patrons by date of birth from checkout and patron quick searches)\n";
13402 SetVersion($DBversion);
13405 $DBversion = "16.06.00.039";
13406 if ( CheckVersion($DBversion) ) {
13408 my $sth = $dbh->prepare(q{
13409 SELECT s.itemnumber, i.itype, b.itemtype
13410 FROM
13411 ( SELECT DISTINCT itemnumber
13412 FROM statistics
13413 WHERE ( type = "return" OR type = "localuse" ) AND
13414 itemtype IS NULL
13416 LEFT JOIN
13417 ( SELECT itemnumber,biblionumber, itype
13418 FROM items
13419 UNION
13420 SELECT itemnumber,biblionumber, itype
13421 FROM deleteditems
13423 ON (s.itemnumber=i.itemnumber)
13424 LEFT JOIN
13425 ( SELECT biblionumber, itemtype
13426 FROM biblioitems
13427 UNION
13428 SELECT biblionumber, itemtype
13429 FROM deletedbiblioitems
13431 ON (i.biblionumber=b.biblionumber);
13433 $sth->execute();
13435 my $update_sth = $dbh->prepare(q{
13436 UPDATE statistics
13437 SET itemtype=?
13438 WHERE itemnumber=? AND itemtype IS NULL
13440 my $ilevel_itypes = C4::Context->preference('item-level_itypes');
13442 while ( my ($itemnumber,$item_itype,$biblio_itype) = $sth->fetchrow_array ) {
13444 my $effective_itemtype = $ilevel_itypes
13445 ? $item_itype // $biblio_itype
13446 : $biblio_itype;
13447 warn "item-level_itypes set but no itype defined for item ($itemnumber)"
13448 if $ilevel_itypes and !defined $item_itype;
13449 $update_sth->execute( $effective_itemtype, $itemnumber );
13452 print "Upgrade to $DBversion done (Bug 14598: itemtype is not set on statistics by C4::Circulation::AddReturn)\n";
13453 SetVersion($DBversion);
13456 $DBversion = '16.06.00.040';
13457 if ( CheckVersion($DBversion) ) {
13458 $dbh->do(q{
13459 ALTER TABLE `aqcontacts` ADD `orderacquisition` BOOLEAN NOT NULL DEFAULT 0 AFTER `notes`;
13461 $dbh->do(q{
13462 INSERT IGNORE INTO `letter` (module, code, name, title, content, message_transport_type) VALUES
13463 ('orderacquisition','ACQORDER','Acquisition order','Order','<<aqbooksellers.name>>\r\n<<aqbooksellers.address1>>\r\n<<aqbooksellers.address2>>\r\n<<aqbooksellers.address3>>\r\n<<aqbooksellers.address4>>\r\n<<aqbooksellers.phone>>\r\n\r\nPlease order for the library:\r\n\r\n<order>Ordernumber <<aqorders.ordernumber>> (<<biblio.title>>) (quantity: <<aqorders.quantity>>) ($<<aqorders.listprice>> each).</order>\r\n\r\nThank you,\n\n<<branches.branchname>>', 'email');
13466 print "Upgrade to $DBversion done (Bug 5260 - Add option to send an order by e-mail to the acquisition module)\n";
13467 SetVersion($DBversion);
13470 $DBversion = '16.06.00.041';
13471 if ( CheckVersion($DBversion) ) {
13472 $dbh->do(q{
13473 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('AggressiveMatchOnISSN','0','If enabled, attempt to match aggressively by trying all variations of the ISSNs in the imported record as a phrase in the ISSN fields of already cataloged records when matching on ISSN with the record import tool','','YesNo')
13476 print "Upgrade to $DBversion done (Bug 14629 - Add aggressive ISSN matching feature equivalent to the aggressive ISBN matcher)\n";
13477 SetVersion($DBversion);
13480 $DBversion = '16.06.00.042';
13481 if ( CheckVersion($DBversion) ) {
13482 $dbh->do(q|
13483 ALTER TABLE aqorders
13484 ADD COLUMN unitprice_tax_excluded decimal(28,6) default NULL AFTER unitprice,
13485 ADD COLUMN unitprice_tax_included decimal(28,6) default NULL AFTER unitprice_tax_excluded,
13486 ADD COLUMN rrp_tax_excluded decimal(28,6) default NULL AFTER rrp,
13487 ADD COLUMN rrp_tax_included decimal(28,6) default NULL AFTER rrp_tax_excluded,
13488 ADD COLUMN ecost_tax_excluded decimal(28,6) default NULL AFTER ecost,
13489 ADD COLUMN ecost_tax_included decimal(28,6) default NULL AFTER ecost_tax_excluded,
13490 ADD COLUMN tax_value decimal(6,4) default NULL AFTER gstrate
13493 # rename gstrate with tax_rate
13494 $dbh->do(q|ALTER TABLE aqorders CHANGE COLUMN gstrate tax_rate decimal(6,4) DEFAULT NULL|);
13495 $dbh->do(q|ALTER TABLE aqbooksellers CHANGE COLUMN gstrate tax_rate decimal(6,4) DEFAULT NULL|);
13497 # Fill the new columns
13498 my $orders = $dbh->selectall_arrayref(q|
13499 SELECT * FROM aqorders
13500 |, { Slice => {} } );
13502 my $sth_update_order = $dbh->prepare(q|
13503 UPDATE aqorders
13504 SET unitprice_tax_excluded = ?,
13505 unitprice_tax_included = ?,
13506 rrp_tax_excluded = ?,
13507 rrp_tax_included = ?,
13508 ecost_tax_excluded = ?,
13509 ecost_tax_included = ?,
13510 tax_value = ?
13511 WHERE ordernumber = ?
13514 my $sth_get_bookseller = $dbh->prepare(q|
13515 SELECT aqbooksellers.*
13516 FROM aqbooksellers
13517 LEFT JOIN aqbasket ON aqbasket.booksellerid = aqbooksellers.id
13518 LEFT JOIN aqorders ON aqorders.basketno = aqbasket.basketno
13519 WHERE ordernumber = ?
13522 require Koha::Number::Price;
13523 for my $order ( @$orders ) {
13524 $sth_get_bookseller->execute( $order->{ordernumber} );
13525 my ( $bookseller ) = $sth_get_bookseller->fetchrow_hashref;
13526 $order->{rrp} = Koha::Number::Price->new( $order->{rrp} )->round;
13527 $order->{ecost} = Koha::Number::Price->new( $order->{ecost} )->round;
13528 $order->{tax_rate} ||= 0 ; # tax_rate can be NULL in DB
13529 # Ordering
13530 if ( $bookseller->{listincgst} ) {
13531 $order->{rrp_tax_included} = $order->{rrp};
13532 $order->{rrp_tax_excluded} = Koha::Number::Price->new(
13533 $order->{rrp_tax_included} / ( 1 + $order->{tax_rate} ) )->round;
13534 $order->{ecost_tax_included} = $order->{ecost};
13535 $order->{ecost_tax_excluded} = Koha::Number::Price->new(
13536 $order->{ecost} / ( 1 + $order->{tax_rate} ) )->round;
13538 else {
13539 $order->{rrp_tax_excluded} = $order->{rrp};
13540 $order->{rrp_tax_included} = Koha::Number::Price->new(
13541 $order->{rrp} * ( 1 + $order->{tax_rate} ) )->round;
13542 $order->{ecost_tax_excluded} = $order->{ecost};
13543 $order->{ecost_tax_included} = Koha::Number::Price->new(
13544 $order->{ecost} * ( 1 + $order->{tax_rate} ) )->round;
13547 #receiving
13548 if ( $bookseller->{listincgst} ) {
13549 $order->{unitprice_tax_included} = Koha::Number::Price->new( $order->{unitprice} )->round;
13550 $order->{unitprice_tax_excluded} = Koha::Number::Price->new(
13551 $order->{unitprice_tax_included} / ( 1 + $order->{tax_rate} ) )->round;
13553 else {
13554 $order->{unitprice_tax_excluded} = Koha::Number::Price->new( $order->{unitprice} )->round;
13555 $order->{unitprice_tax_included} = Koha::Number::Price->new(
13556 $order->{unitprice_tax_excluded} * ( 1 + $order->{tax_rate} ) )->round;
13559 # If the order is received, the tax is calculated from the unit price
13560 if ( $order->{orderstatus} eq 'complete' ) {
13561 $order->{tax_value} = Koha::Number::Price->new(
13562 ( $order->{unitprice_tax_included} - $order->{unitprice_tax_excluded} )
13563 * $order->{quantity} )->round;
13564 } else {
13565 # otherwise the ecost is used
13566 $order->{tax_value} = Koha::Number::Price->new(
13567 ( $order->{ecost_tax_included} - $order->{ecost_tax_excluded} ) *
13568 $order->{quantity} )->round;
13571 $sth_update_order->execute(
13572 $order->{unitprice_tax_excluded},
13573 $order->{unitprice_tax_included},
13574 $order->{rrp_tax_excluded},
13575 $order->{rrp_tax_included},
13576 $order->{ecost_tax_excluded},
13577 $order->{ecost_tax_included},
13578 $order->{tax_value},
13579 $order->{ordernumber},
13583 print "Upgrade to $DBversion done (Bug 13321 - Tax and prices calculation need to be fixed)\n";
13584 SetVersion($DBversion);
13587 $DBversion = '16.06.00.043';
13588 if ( CheckVersion($DBversion) ) {
13589 # Add the new columns
13590 $dbh->do(q|
13591 ALTER TABLE aqorders
13592 ADD COLUMN tax_rate_on_ordering decimal(6,4) default NULL AFTER tax_rate,
13593 ADD COLUMN tax_rate_on_receiving decimal(6,4) default NULL AFTER tax_rate_on_ordering,
13594 ADD COLUMN tax_value_on_ordering decimal(28,6) default NULL AFTER tax_value,
13595 ADD COLUMN tax_value_on_receiving decimal(28,6) default NULL AFTER tax_value_on_ordering
13598 my $orders = $dbh->selectall_arrayref(q|
13599 SELECT * FROM aqorders
13600 |, { Slice => {} } );
13602 my $sth_update_order = $dbh->prepare(q|
13603 UPDATE aqorders
13604 SET tax_rate_on_ordering = tax_rate,
13605 tax_rate_on_receiving = tax_rate,
13606 tax_value_on_ordering = ?,
13607 tax_value_on_receiving = ?
13608 WHERE ordernumber = ?
13611 require Koha::Number::Price;
13612 for my $order (@$orders) {
13613 my $tax_value_on_ordering =
13614 $order->{quantity} *
13615 $order->{ecost_tax_excluded} *
13616 $order->{tax_rate};
13618 my $tax_value_on_receiving =
13619 ( defined $order->{unitprice_tax_excluded} )
13620 ? $order->{quantity} * $order->{unitprice_tax_excluded} * $order->{tax_rate}
13621 : undef;
13623 $sth_update_order->execute( $tax_value_on_ordering,
13624 $tax_value_on_receiving, $order->{ordernumber} );
13627 # Remove the old columns
13628 $dbh->do(q|
13629 ALTER TABLE aqorders
13630 CHANGE COLUMN tax_value tax_value_bak decimal(28,6) default NULL,
13631 CHANGE COLUMN tax_rate tax_rate_bak decimal(6,4) default NULL
13634 print "Upgrade to $DBversion done (Bug 13323 - Change the tax rate on receiving)\n";
13635 SetVersion($DBversion);
13638 $DBversion = '16.06.00.044';
13639 if ( CheckVersion($DBversion) ) {
13640 $dbh->do(q{
13641 ALTER TABLE `messages`
13642 ADD `manager_id` int(11) NULL,
13643 ADD FOREIGN KEY (`manager_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL;
13646 print "Upgrade to $DBversion done (Bug 17397 - Show name of librarian who created circulation message)\n";
13647 SetVersion($DBversion);
13650 $DBversion = '16.06.00.045';
13651 if ( CheckVersion($DBversion) ) {
13652 $dbh->do(q{
13653 UPDATE systempreferences SET options = "now|dateexpiry|combination", explanation = "Set whether the borrower renewal date should be counted from the dateexpiry, from the current date or by combination: if the dateexpiry is in future use dateexpiry, else use current date " WHERE variable = "BorrowerRenewalPeriodBase";
13656 print "Upgrade to $DBversion done (Bug 17443 - Make possible to renew patron by later of expiry and current date)\n";
13657 SetVersion($DBversion);
13660 $DBversion = '16.06.00.046';
13661 if ( CheckVersion($DBversion) ) {
13662 $dbh->do(q{
13663 ALTER TABLE issuingrules ADD COLUMN no_auto_renewal_after INT(4) DEFAULT NULL AFTER auto_renew;
13666 print "Upgrade to $DBversion done (Bug 15581 - Add a circ rule to not allow auto-renewals after defined loan period)\n";
13667 SetVersion($DBversion);
13670 $DBversion = '16.06.00.047';
13671 if ( CheckVersion($DBversion) ) {
13672 $dbh->do(q{
13673 UPDATE language_descriptions SET description = 'Čeština' WHERE subtag = 'cs' AND type = 'language' AND lang = 'cs'
13676 print "Upgrade to $DBversion done (Bug 17518: Displayed language name for Czech is wrong)\n";
13677 SetVersion($DBversion);
13680 $DBversion = '16.06.00.048';
13681 if( CheckVersion( $DBversion ) ) {
13682 $dbh->do(q|
13683 INSERT IGNORE INTO permissions (module_bit, code, description) VALUES
13684 (13, 'upload_general_files', 'Upload any file'),
13685 (13, 'upload_manage', 'Manage uploaded files');
13688 # Update user_permissions for current users (check count in uploaded_files)
13689 # Note 9 == edit_catalogue and 13 == tools
13690 # We do not insert if someone is superlibrarian, does not have edit_catalogue,
13691 # or already has all tools
13692 $dbh->do(q|
13693 INSERT IGNORE INTO user_permissions (borrowernumber, module_bit, code)
13694 SELECT borrowernumber, 13, 'upload_general_files'
13695 FROM borrowers bo
13696 WHERE flags<>1 AND flags & POW(2,13) = 0 AND
13697 ( flags & POW(2,9) > 0 OR (
13698 SELECT COUNT(*) FROM user_permissions
13699 WHERE borrowernumber=bo.borrowernumber AND module_bit=9 ) > 0 )
13700 AND ( SELECT COUNT(*) FROM uploaded_files ) > 0;
13703 SetVersion( $DBversion );
13704 print "Upgrade to $DBversion done (Bug 17663 - Forgotten userpermissions)\n";
13707 $DBversion = '16.06.00.049';
13708 if( CheckVersion( $DBversion ) ) {
13709 $dbh->do(q|
13710 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
13711 VALUES ('ReplytoDefault', '', NULL, 'The default email address to be set as replyto.', 'Free');
13714 $dbh->do(q|
13715 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
13716 VALUES ('ReturnpathDefault', '', NULL, 'The default email address to be set as return-path', 'Free');
13719 SetVersion( $DBversion );
13720 print "Upgrade to $DBversion done (Bug 17391 - ReturnpathDefault and ReplyToDefault missing from syspref.sql)\n";
13723 $DBversion = "16.06.00.050";
13724 if ( CheckVersion($DBversion) ) {
13726 # If index issn_idx still exists, we assume that dbrev 3.15.00.049 failed,
13727 # and we repeat it (partially).
13728 # Note: the db rev only pertains to biblioitems and is not needed for
13729 # deletedbiblioitems.
13731 my $temp = $dbh->selectall_arrayref( "SHOW INDEXES FROM biblioitems WHERE key_name = 'issn_idx'" );
13733 if( @$temp > 0 ) {
13734 $dbh->do( "ALTER TABLE biblioitems DROP INDEX isbn" );
13735 $dbh->do( "ALTER TABLE biblioitems DROP INDEX issn" );
13736 $dbh->do( "ALTER TABLE biblioitems DROP INDEX issn_idx" );
13737 $dbh->do( "ALTER TABLE biblioitems CHANGE isbn isbn MEDIUMTEXT NULL DEFAULT NULL, CHANGE issn issn MEDIUMTEXT NULL DEFAULT NULL" );
13738 $dbh->do( "ALTER TABLE biblioitems ADD INDEX isbn ( isbn ( 255 ) ), ADD INDEX issn ( issn ( 255 ) )" );
13739 print "Upgrade to $DBversion done (Bug 8835). Removed issn_idx.\n";
13740 } else {
13741 print "Upgrade to $DBversion done (Bug 8835). Everything is fine.\n";
13744 SetVersion($DBversion);
13747 $DBversion = "16.11.00.000";
13748 if ( CheckVersion($DBversion) ) {
13749 print "Upgrade to $DBversion done (Koha 16.11)\n";
13750 SetVersion($DBversion);
13753 $DBversion = "16.12.00.000";
13754 if ( CheckVersion($DBversion) ) {
13755 print "Upgrade to $DBversion done (Koha 16.12 - Our battered suitcases were piled on the sidewalk again; we had longer ways to go. But no matter, the road is life.)\n";
13756 SetVersion($DBversion);
13759 $DBversion = "16.12.00.001";
13760 if ( CheckVersion($DBversion) ) {
13761 $dbh->do(q{
13762 ALTER TABLE borrower_modifications
13763 ADD COLUMN extended_attributes text DEFAULT NULL
13764 AFTER privacy
13767 print "Upgrade to $DBversion done (Bug 17767 - Let Koha::Patron::Modification handle extended attributes)\n";
13768 SetVersion($DBversion);
13771 $DBversion = '16.12.00.002';
13772 if ( CheckVersion($DBversion) ) {
13773 unless (column_exists( 'branchtransfers', 'branchtransfer_id' )
13774 and index_exists( 'branchtransfers', 'PRIMARY' ) )
13776 $dbh->do(
13777 "ALTER TABLE branchtransfers
13778 ADD COLUMN branchtransfer_id int(12) NOT NULL auto_increment FIRST, ADD CONSTRAINT PRIMARY KEY (branchtransfer_id);"
13782 SetVersion($DBversion);
13783 print "Upgrade to $DBversion done (Bug 14187 - branchtransfer needs a primary key (id) for DBIx and common sense.)\n";
13786 $DBversion = '16.12.00.003';
13787 if ( CheckVersion($DBversion) ) {
13788 $dbh->do(q{DELETE FROM systempreferences WHERE variable="Persona"});
13789 SetVersion($DBversion);
13790 print "Upgrade to $DBversion done (Bug 17486 - Remove 'Mozilla Persona' as an authentication method)\n";
13793 $DBversion = '16.12.00.004';
13794 if ( CheckVersion($DBversion) ) {
13795 $dbh->do(q{
13796 CREATE TABLE biblio_metadata (
13797 `id` INT(11) NOT NULL AUTO_INCREMENT,
13798 `biblionumber` INT(11) NOT NULL,
13799 `format` VARCHAR(16) NOT NULL,
13800 `marcflavour` VARCHAR(16) NOT NULL,
13801 `metadata` LONGTEXT NOT NULL,
13802 PRIMARY KEY(id),
13803 UNIQUE KEY `biblio_metadata_uniq_key` (`biblionumber`,`format`,`marcflavour`),
13804 CONSTRAINT `biblio_metadata_fk_1` FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE
13805 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13807 $dbh->do(q{
13808 CREATE TABLE deletedbiblio_metadata (
13809 `id` INT(11) NOT NULL AUTO_INCREMENT,
13810 `biblionumber` INT(11) NOT NULL,
13811 `format` VARCHAR(16) NOT NULL,
13812 `marcflavour` VARCHAR(16) NOT NULL,
13813 `metadata` LONGTEXT NOT NULL,
13814 PRIMARY KEY(id),
13815 UNIQUE KEY `deletedbiblio_metadata_uniq_key` (`biblionumber`,`format`,`marcflavour`),
13816 CONSTRAINT `deletedbiblio_metadata_fk_1` FOREIGN KEY (biblionumber) REFERENCES deletedbiblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE
13817 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13819 $dbh->do(q{
13820 INSERT INTO biblio_metadata ( biblionumber, format, marcflavour, metadata ) SELECT biblionumber, 'marcxml', 'CHANGEME', marcxml FROM biblioitems;
13822 $dbh->do(q{
13823 INSERT INTO deletedbiblio_metadata ( biblionumber, format, marcflavour, metadata ) SELECT biblionumber, 'marcxml', 'CHANGEME', marcxml FROM deletedbiblioitems;
13825 $dbh->do(q{
13826 UPDATE biblio_metadata SET marcflavour = (SELECT value FROM systempreferences WHERE variable="marcflavour");
13828 $dbh->do(q{
13829 UPDATE deletedbiblio_metadata SET marcflavour = (SELECT value FROM systempreferences WHERE variable="marcflavour");
13831 $dbh->do(q{
13832 ALTER TABLE biblioitems DROP COLUMN marcxml;
13834 $dbh->do(q{
13835 ALTER TABLE deletedbiblioitems DROP COLUMN marcxml;
13837 SetVersion($DBversion);
13838 print "Upgrade to $DBversion done (Bug 17196 - Move marcxml out of the biblioitems table)\n";
13841 $DBversion = '16.12.00.005';
13842 if( CheckVersion( $DBversion ) ) {
13843 $dbh->do( "INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES('AuthorityMergeMode','loose','loose|strict','Authority merge mode','Choice')");
13845 SetVersion( $DBversion );
13846 print "Upgrade to $DBversion done (Bug 17913 - AuthorityMergeMode)\n";
13849 $DBversion = "16.12.00.006";
13850 if ( CheckVersion($DBversion) ) {
13851 unless ( column_exists( 'borrower_attributes', 'id' )
13852 and index_exists( 'borrower_attributes', 'PRIMARY' ) )
13854 $dbh->do(q{
13855 ALTER TABLE `borrower_attributes`
13856 ADD `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
13860 print "Upgrade to $DBversion done (Bug 17813: Table borrower_attributes needs a primary key\n";
13861 SetVersion($DBversion);
13864 $DBversion = "16.12.00.007";
13865 if( CheckVersion( $DBversion ) ) {
13867 if ( column_exists('opac_news', 'new' ) ) {
13868 $dbh->do(q|ALTER TABLE opac_news CHANGE COLUMN new content text NOT NULL|);
13871 $dbh->do(q|
13872 UPDATE letter SET content = REPLACE(content, "<<opac_news.new>>", "<<opac_news.content>>") WHERE content LIKE "%<<opac_news.new>>%"
13875 SetVersion( $DBversion );
13876 print "Upgrade to $DBversion done (Bug 17960 - Rename opac_news with opac_news.content (template notices have been updated!))\n";
13879 $DBversion = "16.12.00.008";
13880 if( CheckVersion( $DBversion ) ) {
13881 $dbh->do(q{
13882 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES
13883 ('MarcItemFieldsToOrder','','Set the mapping values for new item records created from a MARC record in a staged file. In a YAML format.', NULL, 'textarea');
13886 SetVersion( $DBversion );
13887 print "Upgrade to $DBversion done (Bug 15503 - Grab Item Information from Order Files)\n";
13890 $DBversion = "16.12.00.009";
13891 if( CheckVersion( $DBversion ) ) {
13892 $dbh->do(q{
13893 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES
13894 ('OPACHoldsIfAvailableAtPickup','1','','Allow to pickup up holds at libraries where the item is available','YesNo');
13897 $dbh->do(q{
13898 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES
13899 ('OPACHoldsIfAvailableAtPickupExceptions','','','List the patron categories not affected by OPACHoldsIfAvailableAtPickup if off','Free');
13902 SetVersion( $DBversion );
13903 print "Upgrade to $DBversion done (Bug 17453 - Inter-site holds improvement)\n";
13906 $DBversion = "16.12.00.010";
13907 if( CheckVersion( $DBversion ) ) {
13908 $dbh->do(q{
13909 ALTER TABLE borrowers ADD overdrive_auth_token text default NULL AFTER lastseen;
13912 $dbh->do(q{
13913 ALTER TABLE deletedborrowers ADD overdrive_auth_token text default NULL AFTER lastseen;
13916 $dbh->do(q{
13917 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
13918 VALUES ('OverDriveCirculation','0','Enable client to see their OverDrive account','','YesNo');
13921 SetVersion( $DBversion );
13922 print "Upgrade to $DBversion done (Bug 16034 - Integration with OverDrive Patron API)\n";
13925 $DBversion = "16.12.00.011";
13926 if( CheckVersion( $DBversion ) ) {
13927 $dbh->do(q{
13928 ALTER TABLE search_field CHANGE COLUMN type type ENUM('', 'string', 'date', 'number', 'boolean', 'sum') NOT NULL
13929 COMMENT 'what type of data this holds, relevant when storing it in the search engine';
13932 SetVersion( $DBversion );
13933 print "Upgrade to $DBversion done (Bug 17260 - updatedatabase.pl fails on invalid entries in ENUM and BOOLEAN columns)\n";
13936 $DBversion = "16.12.00.012";
13937 if( CheckVersion( $DBversion ) ) {
13938 $dbh->do(q{
13939 INSERT IGNORE INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`)
13940 VALUES ('OpacNewsLibrarySelect', '0', '', 'Show selector for branches on OPAC news page', 'YesNo');
13943 SetVersion( $DBversion );
13944 print "Upgrade to $DBversion done (Bug 14764 - Add OPAC News branch selector)\n";
13947 $DBversion = "16.12.00.013";
13948 if( CheckVersion( $DBversion ) ) {
13949 $dbh->do(q{
13950 INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`)
13951 VALUES ('CircSidebar','0','','Activate or deactivate the navigation sidebar on all Circulation pages','YesNo');
13954 SetVersion( $DBversion );
13955 print "Upgrade to $DBversion done (Bug 16530 - Add a circ sidebar navigation menu)\n";
13958 $DBversion = "16.12.00.014";
13959 if( CheckVersion( $DBversion ) ) {
13960 $dbh->do(q{
13961 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
13962 ('LoadSearchHistoryToTheFirstLoggedUser', '1', NULL, 'If ON, the next user will automatically get the last searches in his history', 'YesNo');
13964 SetVersion( $DBversion );
13965 print "Upgrade to $DBversion done (Bug 8010 - Search history can be added to the wrong patron)\n";
13968 $DBversion = "16.12.00.015";
13969 if( CheckVersion( $DBversion ) ) {
13970 unless( column_exists( 'branches', 'geolocation' ) ) {
13971 $dbh->do(q|
13972 ALTER TABLE branches ADD COLUMN geolocation VARCHAR(255) DEFAULT NULL after opac_info
13976 $dbh->do(q|
13977 INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type ) VALUES ('UsageStatsGeolocation', '', NULL, 'Geolocation of the main library', 'Free');
13979 $dbh->do(q|
13980 INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type ) VALUES ('UsageStatsLibrariesInfo', '', NULL, 'Share libraries information', 'YesNo');
13982 $dbh->do(q|
13983 INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type ) VALUES ('UsageStatsPublicID', '', NULL, 'Public ID for Hea website', 'Free');
13986 SetVersion( $DBversion );
13987 print "Upgrade to $DBversion done (Bug 18066 - Hea version 2)\n";
13990 $DBversion = "16.12.00.016";
13991 if ( CheckVersion($DBversion) ) {
13992 unless ( column_exists( 'borrower_attribute_types', 'opac_editable' ) )
13994 $dbh->do(q{
13995 ALTER TABLE borrower_attribute_types
13996 ADD COLUMN `opac_editable` tinyint(1) NOT NULL default 0 AFTER `opac_display`
14000 print "Upgrade to $DBversion done (Bug 13757: Make patron attributes editable in the opac if set to 'editable in OPAC)'\n";
14001 SetVersion($DBversion);
14004 $DBversion = "16.12.00.017";
14005 if ( CheckVersion($DBversion) ) {
14006 $dbh->do(q{
14007 INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
14008 VALUES ('CumulativeRestrictionPeriods', 0, NULL, 'Cumulate the restriction periods instead of keeping the highest', 'YesNo')
14011 print "Upgrade to $DBversion done (Bug 14146 - Additional days are not added to restriction period when checking-in several overdues for same patron)'\n";
14012 SetVersion($DBversion);
14015 $DBversion = "16.12.00.018";
14016 if ( CheckVersion($DBversion) ) {
14017 $dbh->do(q{
14018 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type )
14019 SELECT 'ExportCircHistory', COUNT(*), NULL, "Display the export circulation options", 'YesNo'
14020 FROM systempreferences
14021 WHERE ( variable = 'ExportRemoveFields' AND value != "" AND value IS NOT NULL )
14022 OR ( variable = 'ExportWithCsvProfile' AND value != "" AND value IS NOT NULL );
14025 $dbh->do(q{
14026 DELETE FROM systempreferences WHERE variable="ExportWithCsvProfile";
14029 print "Upgrade to $DBversion done (Bug 15498 - Replace ExportWithCsvProfile with ExportCircHistory)'\n";
14030 SetVersion($DBversion);
14033 $DBversion = "16.12.00.019";
14034 if( CheckVersion( $DBversion ) ) {
14035 if ( column_exists( 'issues', 'return' ) ) {
14036 $dbh->do(q|ALTER TABLE issues DROP column `return`|);
14039 if ( column_exists( 'old_issues', 'return' ) ) {
14040 $dbh->do(q|ALTER TABLE old_issues DROP column `return`|);
14043 SetVersion( $DBversion );
14044 print "Upgrade to $DBversion done (Bug 18173 - Remove issues.return DB field)\n";
14047 $DBversion = "16.12.00.020";
14048 if( CheckVersion( $DBversion ) ) {
14049 $dbh->do(q{
14050 UPDATE systempreferences SET options="any_time_is_placed|not_always|any_time_is_collected" WHERE variable="HoldFeeMode";
14053 $dbh->do(q{
14054 UPDATE systempreferences SET value="any_time_is_placed" WHERE variable="HoldFeeMode" AND value="always";
14057 SetVersion( $DBversion );
14058 print "Upgrade to $DBversion done (Bug 17560 - Hold fee placement at point of checkout)\n";
14061 $DBversion = "16.12.00.021";
14062 if( CheckVersion( $DBversion ) ) {
14063 $dbh->do(q{
14064 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
14065 ('RenewalLog','0','','If ON, log information about renewals','YesNo');
14068 SetVersion( $DBversion );
14069 print "Upgrade to $DBversion done (Bug 17708 - Renewal log seems empty)\n";
14072 $DBversion = "16.12.00.022";
14073 if( CheckVersion( $DBversion ) ) {
14074 print "NOTE: The sender for claim notifications has been corrected. The email address of the staff member is no longer used. We will use the branch email address or KohaAdminEmailAddress, as is done for other notices.\n";
14075 SetVersion( $DBversion );
14076 print "Upgrade to $DBversion done (Bug 17866 - Change sender for serial claim notifications)\n";
14079 $DBversion = '16.12.00.023';
14080 if( CheckVersion( $DBversion ) ) {
14081 my $oldval = C4::Context->preference('dontmerge');
14082 my $newval = $oldval ? 0 : 50;
14084 # Remove dontmerge, add AuthorityMergeLimit
14085 $dbh->do(q{
14086 DELETE FROM systempreferences WHERE variable = 'dontmerge';
14088 $dbh->do(qq{
14089 INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type ) VALUES ('AuthorityMergeLimit','$newval',NULL,'Maximum number of biblio records updated immediately when an authority record has been modified.','integer');
14092 $dbh->do(q{
14093 ALTER TABLE need_merge_authorities
14094 ADD COLUMN authid_new BIGINT AFTER authid,
14095 ADD COLUMN reportxml text AFTER authid_new,
14096 ADD COLUMN timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
14099 $dbh->do(q{
14100 UPDATE need_merge_authorities SET authid_new=authid WHERE done <> 1
14103 SetVersion( $DBversion );
14104 if( $newval == 0 ) {
14105 print "NOTE: Since dontmerge was enabled, we have initialized AuthorityMergeLimit to 0 records. Please consider raising this value. This will allow for performing smaller merges directly and only postponing larger merges.\n";
14107 print "IMPORTANT NOTE: If you are not using a Debian package install, please verify that you no longer use misc/migration_tools/merge_authority.pl in your cron files AND add misc/cronjobs/merge_authorities.pl to cron now. This job is no longer optional! You need it to perform larger authority merges.\n";
14108 print "Upgrade to $DBversion done (Bug 9988 - Add AuthorityMergeLimit)\n";
14111 $DBversion = '16.12.00.024';
14112 if( CheckVersion( $DBversion ) ) {
14113 $dbh->do(q{
14114 UPDATE systempreferences SET variable="NoticeBcc" WHERE variable="OverdueNoticeBcc";
14117 SetVersion( $DBversion );
14118 print "Upgrade to $DBversion done (Bug 14537 - The system preference 'OverdueNoticeBcc' is mis-named.)\n";
14121 $DBversion = '16.12.00.025';
14122 if( CheckVersion( $DBversion ) ) {
14123 $dbh->do(q|
14124 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` )
14125 VALUES ('UploadPurgeTemporaryFilesDays','',NULL,'If not empty, number of days used when automatically deleting temporary uploads','integer');
14128 my ( $cnt ) = $dbh->selectrow_array( "SELECT COUNT(*) FROM uploaded_files WHERE permanent IS NULL or permanent=0" );
14129 if( $cnt ) {
14130 print "NOTE: You have $cnt temporary uploads. You could benefit from setting pref UploadPurgeTemporaryFilesDays now to automatically delete them.\n";
14133 SetVersion( $DBversion );
14134 print "Upgrade to $DBversion done (Bug 17669 - Introduce preference for deleting temporary uploads)\n";
14137 $DBversion = '16.12.00.026';
14138 if( CheckVersion( $DBversion ) ) {
14140 # In order to be overcomplete, we check if the situation is what we expect
14141 if( !index_exists( 'serialitems', 'PRIMARY' ) ) {
14142 if( index_exists( 'serialitems', 'serialitemsidx' ) ) {
14143 $dbh->do(q|
14144 ALTER TABLE serialitems ADD PRIMARY KEY (itemnumber), DROP INDEX serialitemsidx;
14146 } else {
14147 $dbh->do(q|ALTER TABLE serialitems ADD PRIMARY KEY (itemnumber)|);
14151 SetVersion( $DBversion );
14152 print "Upgrade to $DBversion done (Bug 18427 - Add a primary key to serialitems)\n";
14155 $DBversion = '16.12.00.027';
14156 if( CheckVersion( $DBversion ) ) {
14158 $dbh->do(q{
14159 CREATE TABLE IF NOT EXISTS club_templates (
14160 id int(11) NOT NULL AUTO_INCREMENT,
14161 `name` tinytext NOT NULL,
14162 description text,
14163 is_enrollable_from_opac tinyint(1) NOT NULL DEFAULT '0',
14164 is_email_required tinyint(1) NOT NULL DEFAULT '0',
14165 branchcode varchar(10) NULL DEFAULT NULL,
14166 date_created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
14167 date_updated timestamp NULL DEFAULT NULL,
14168 is_deletable tinyint(1) NOT NULL DEFAULT '1',
14169 PRIMARY KEY (id),
14170 KEY ct_branchcode (branchcode),
14171 CONSTRAINT `club_templates_ibfk_1` FOREIGN KEY (branchcode) REFERENCES `branches` (branchcode) ON DELETE CASCADE ON UPDATE CASCADE
14172 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14175 $dbh->do(q{
14176 CREATE TABLE IF NOT EXISTS clubs (
14177 id int(11) NOT NULL AUTO_INCREMENT,
14178 club_template_id int(11) NOT NULL,
14179 `name` tinytext NOT NULL,
14180 description text,
14181 date_start date DEFAULT NULL,
14182 date_end date DEFAULT NULL,
14183 branchcode varchar(10) NULL DEFAULT NULL,
14184 date_created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
14185 date_updated timestamp NULL DEFAULT NULL,
14186 PRIMARY KEY (id),
14187 KEY club_template_id (club_template_id),
14188 KEY branchcode (branchcode),
14189 CONSTRAINT clubs_ibfk_1 FOREIGN KEY (club_template_id) REFERENCES club_templates (id) ON DELETE CASCADE ON UPDATE CASCADE,
14190 CONSTRAINT clubs_ibfk_2 FOREIGN KEY (branchcode) REFERENCES branches (branchcode)
14191 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14194 $dbh->do(q{
14195 CREATE TABLE IF NOT EXISTS club_enrollments (
14196 id int(11) NOT NULL AUTO_INCREMENT,
14197 club_id int(11) NOT NULL,
14198 borrowernumber int(11) NOT NULL,
14199 date_enrolled timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
14200 date_canceled timestamp NULL DEFAULT NULL,
14201 date_created timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
14202 date_updated timestamp NULL DEFAULT NULL,
14203 branchcode varchar(10) NULL DEFAULT NULL,
14204 PRIMARY KEY (id),
14205 KEY club_id (club_id),
14206 KEY borrowernumber (borrowernumber),
14207 KEY branchcode (branchcode),
14208 CONSTRAINT club_enrollments_ibfk_1 FOREIGN KEY (club_id) REFERENCES clubs (id) ON DELETE CASCADE ON UPDATE CASCADE,
14209 CONSTRAINT club_enrollments_ibfk_2 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
14210 CONSTRAINT club_enrollments_ibfk_3 FOREIGN KEY (branchcode) REFERENCES branches (branchcode) ON DELETE SET NULL ON UPDATE CASCADE
14211 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14214 $dbh->do(q{
14215 CREATE TABLE IF NOT EXISTS club_template_enrollment_fields (
14216 id int(11) NOT NULL AUTO_INCREMENT,
14217 club_template_id int(11) NOT NULL,
14218 `name` tinytext NOT NULL,
14219 description text,
14220 authorised_value_category varchar(16) DEFAULT NULL,
14221 PRIMARY KEY (id),
14222 KEY club_template_id (club_template_id),
14223 CONSTRAINT club_template_enrollment_fields_ibfk_1 FOREIGN KEY (club_template_id) REFERENCES club_templates (id) ON DELETE CASCADE ON UPDATE CASCADE
14224 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14227 $dbh->do(q{
14228 CREATE TABLE IF NOT EXISTS club_enrollment_fields (
14229 id int(11) NOT NULL AUTO_INCREMENT,
14230 club_enrollment_id int(11) NOT NULL,
14231 club_template_enrollment_field_id int(11) NOT NULL,
14232 `value` text NOT NULL,
14233 PRIMARY KEY (id),
14234 KEY club_enrollment_id (club_enrollment_id),
14235 KEY club_template_enrollment_field_id (club_template_enrollment_field_id),
14236 CONSTRAINT club_enrollment_fields_ibfk_1 FOREIGN KEY (club_enrollment_id) REFERENCES club_enrollments (id) ON DELETE CASCADE ON UPDATE CASCADE,
14237 CONSTRAINT club_enrollment_fields_ibfk_2 FOREIGN KEY (club_template_enrollment_field_id) REFERENCES club_template_enrollment_fields (id) ON DELETE CASCADE ON UPDATE CASCADE
14238 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14241 $dbh->do(q{
14242 CREATE TABLE IF NOT EXISTS club_template_fields (
14243 id int(11) NOT NULL AUTO_INCREMENT,
14244 club_template_id int(11) NOT NULL,
14245 `name` tinytext NOT NULL,
14246 description text,
14247 authorised_value_category varchar(16) DEFAULT NULL,
14248 PRIMARY KEY (id),
14249 KEY club_template_id (club_template_id),
14250 CONSTRAINT club_template_fields_ibfk_1 FOREIGN KEY (club_template_id) REFERENCES club_templates (id) ON DELETE CASCADE ON UPDATE CASCADE
14251 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14254 $dbh->do(q{
14255 CREATE TABLE IF NOT EXISTS club_fields (
14256 id int(11) NOT NULL AUTO_INCREMENT,
14257 club_template_field_id int(11) NOT NULL,
14258 club_id int(11) NOT NULL,
14259 `value` text,
14260 PRIMARY KEY (id),
14261 KEY club_template_field_id (club_template_field_id),
14262 KEY club_id (club_id),
14263 CONSTRAINT club_fields_ibfk_3 FOREIGN KEY (club_template_field_id) REFERENCES club_template_fields (id) ON DELETE CASCADE ON UPDATE CASCADE,
14264 CONSTRAINT club_fields_ibfk_4 FOREIGN KEY (club_id) REFERENCES clubs (id) ON DELETE CASCADE ON UPDATE CASCADE
14265 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
14268 $dbh->do(q{
14269 INSERT IGNORE INTO userflags (bit, flag, flagdesc, defaulton) VALUES (21, 'clubs', 'Patron clubs', '0');
14272 $dbh->do(q{
14273 INSERT IGNORE INTO permissions (module_bit, code, description) VALUES
14274 (21, 'edit_templates', 'Create and update club templates'),
14275 (21, 'edit_clubs', 'Create and update clubs'),
14276 (21, 'enroll', 'Enroll patrons in clubs')
14280 SetVersion( $DBversion );
14281 print "Upgrade to $DBversion done (Bug 12461 - Add patron clubs feature)\n";
14284 $DBversion = '16.12.00.028';
14285 if( CheckVersion( $DBversion ) ) {
14286 $dbh->do(q{
14287 UPDATE systempreferences SET options = 'us|de|fr' WHERE variable = 'AddressFormat';
14290 SetVersion( $DBversion );
14291 print "Upgrade to $DBversion done (Bug 18110 - Adds FR to the syspref AddressFormat)\n";
14294 $DBversion = '16.12.00.029';
14295 if( CheckVersion( $DBversion ) ) {
14296 unless( column_exists( 'issues', 'note' ) ) {
14297 $dbh->do(q|ALTER TABLE issues ADD note mediumtext default NULL AFTER onsite_checkout|);
14299 unless( column_exists( 'issues', 'notedate' ) ) {
14300 $dbh->do(q|ALTER TABLE issues ADD notedate datetime default NULL AFTER note|);
14302 unless( column_exists( 'old_issues', 'note' ) ) {
14303 $dbh->do(q|ALTER TABLE old_issues ADD note mediumtext default NULL AFTER onsite_checkout|);
14305 unless( column_exists( 'old_issues', 'notedate' ) ) {
14306 $dbh->do(q|ALTER TABLE old_issues ADD notedate datetime default NULL AFTER note|);
14309 $dbh->do(q|
14310 INSERT IGNORE INTO letter (`module`, `code`, `branchcode`, `name`, `is_html`, `title`, `content`, `message_transport_type`)
14311 VALUES ('circulation', 'PATRON_NOTE', '', 'Patron note on item', '0', 'Patron issue note', '<<borrowers.firstname>> <<borrowers.surname>> has added a note to the item <<biblio.item>> - <<biblio.author>> (<<biblio.biblionumber>>).','email');
14314 $dbh->do(q|
14315 INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`,`type`)
14316 VALUES ('AllowCheckoutNotes', '0', NULL, 'Allow patrons to submit notes about checked out items.','YesNo');
14319 SetVersion( $DBversion );
14320 print "Upgrade to $DBversion done (Bug 14224: Add column issues.note and issues.notedate)\n";
14323 $DBversion = '16.12.00.030';
14324 if( CheckVersion( $DBversion ) ) {
14325 unless( column_exists( 'issuingrules', 'no_auto_renewal_after_hard_limit' ) ) {
14326 $dbh->do(q{
14327 ALTER TABLE issuingrules ADD COLUMN no_auto_renewal_after_hard_limit DATE DEFAULT NULL AFTER no_auto_renewal_after;
14331 SetVersion( $DBversion );
14332 print "Upgrade to $DBversion done (Bug 16344 - Add a circ rule to limit the auto renewals given a specific date)\n";
14335 $DBversion = '16.12.00.031';
14336 if( CheckVersion( $DBversion ) ) {
14337 if ( !index_exists( 'biblioitems', 'timestamp' ) ) {
14338 $dbh->do("ALTER TABLE biblioitems ADD KEY `timestamp` (`timestamp`);");
14340 if ( !index_exists( 'deletedbiblioitems', 'timestamp' ) ) {
14341 $dbh->do("ALTER TABLE deletedbiblioitems ADD KEY `timestamp` (`timestamp`);");
14343 if ( !index_exists( 'items', 'timestamp' ) ) {
14344 $dbh->do("ALTER TABLE items ADD KEY `timestamp` (`timestamp`);");
14346 if ( !index_exists( 'deleteditems', 'timestamp' ) ) {
14347 $dbh->do("ALTER TABLE deleteditems ADD KEY `timestamp` (`timestamp`);");
14350 SetVersion( $DBversion );
14351 print "Upgrade to $DBversion done (Bug 15108: OAI-PMH provider improvements)\n";
14354 $DBversion = '16.12.00.032';
14355 if( CheckVersion( $DBversion ) ) {
14356 require Koha::Calendar;
14357 require Koha::Holds;
14359 $dbh->do(q{
14360 INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type)
14361 VALUES ('ExcludeHolidaysFromMaxPickUpDelay', '0', 'If ON, reserves max pickup delay takes into account the closed days.', NULL, 'Integer');
14364 my $waiting_holds = Koha::Holds->search({ found => 'W', priority => 0 });
14365 my $max_pickup_delay = C4::Context->preference("ReservesMaxPickUpDelay");
14366 while ( my $hold = $waiting_holds->next ) {
14368 my $requested_expiration;
14369 if ($hold->expirationdate) {
14370 $requested_expiration = dt_from_string($hold->expirationdate);
14373 my $calendar = Koha::Calendar->new( branchcode => $hold->branchcode );
14374 my $expirationdate = dt_from_string();
14375 $expirationdate->add(days => $max_pickup_delay);
14377 if ( C4::Context->preference("ExcludeHolidaysFromMaxPickUpDelay") ) {
14378 $expirationdate = $calendar->days_forward( dt_from_string(), $max_pickup_delay );
14381 my $cmp = $requested_expiration ? DateTime->compare($requested_expiration, $expirationdate) : 0;
14382 $hold->expirationdate($cmp == -1 ? $requested_expiration->ymd : $expirationdate->ymd)->store;
14385 SetVersion( $DBversion );
14386 print "Upgrade to $DBversion done (Bug 12063 - Update reserves.expirationdate)\n";
14389 $DBversion = '16.12.00.033';
14390 if( CheckVersion( $DBversion ) ) {
14392 if( !column_exists( 'letter', 'lang' ) ) {
14393 $dbh->do( "ALTER TABLE letter ADD COLUMN lang VARCHAR(25) NOT NULL DEFAULT 'default' AFTER message_transport_type" );
14396 if( !column_exists( 'borrowers', 'lang' ) ) {
14397 $dbh->do( "ALTER TABLE borrowers ADD COLUMN lang VARCHAR(25) NOT NULL DEFAULT 'default' AFTER lastseen" );
14398 $dbh->do( "ALTER TABLE deletedborrowers ADD COLUMN lang VARCHAR(25) NOT NULL DEFAULT 'default' AFTER lastseen" );
14401 # Add test on existene of this key
14402 $dbh->do( "ALTER TABLE message_transports DROP FOREIGN KEY message_transports_ibfk_3 ");
14403 $dbh->do( "ALTER TABLE letter DROP PRIMARY KEY ");
14404 $dbh->do( "ALTER TABLE letter ADD PRIMARY KEY (`module`, `code`, `branchcode`, `message_transport_type`, `lang`) ");
14406 $dbh->do( "INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type)
14407 VALUES ('TranslateNotices', '0', NULL, 'Allow notices to be translated', 'YesNo') ");
14409 SetVersion( $DBversion );
14410 print "Upgrade to $DBversion done (Bug 17762 - Add columns letter.lang and borrowers.lang to allow translation of notices)\n";
14413 $DBversion = '16.12.00.034';
14414 if( CheckVersion( $DBversion ) ) {
14415 $dbh->do(q{
14416 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` )
14417 VALUES ('OPACFineNoRenewalsBlockAutoRenew','0','','Block/Allow auto renewals if the patron owe more than OPACFineNoRenewals','YesNo')
14420 SetVersion( $DBversion );
14421 print "Upgrade to $DBversion done (Bug 15582 - Ability to block auto renewals if the OPACFineNoRenewals amount is reached)\n";
14424 $DBversion = '16.12.00.035';
14425 if( CheckVersion( $DBversion ) ) {
14426 if( !column_exists( 'issues', 'auto_renew_error' ) ) {
14427 $dbh->do(q{
14428 ALTER TABLE issues ADD COLUMN auto_renew_error VARCHAR(32) DEFAULT NULL AFTER auto_renew;
14432 if( !column_exists( 'old_issues', 'auto_renew_error' ) ) {
14433 $dbh->do(q{
14434 ALTER TABLE old_issues ADD COLUMN auto_renew_error VARCHAR(32) DEFAULT NULL AFTER auto_renew;
14438 $dbh->do(q{
14439 INSERT INTO letter (module, code, name, title, content, message_transport_type) VALUES ('circulation', 'AUTO_RENEWALS', 'notification on auto renewing', 'Auto renewals',
14440 "Dear [% borrower.firstname %] [% borrower.surname %],
14441 [% IF checkout.auto_renew_error %]
14442 The following item [% biblio.title %] has not been correctly renewed
14443 [% IF checkout.auto_renew_error == 'too_many' %]
14444 You have reach the maximum of checkouts possible.
14445 [% ELSIF checkout.auto_renew_error == 'on_reserve' %]
14446 This item is on hold for another patron.
14447 [% ELSIF checkout.auto_renew_error == 'restriction' %]
14448 You are currently restricted.
14449 [% ELSIF checkout.auto_renew_error == 'overdue' %]
14450 You have overdues.
14451 [% ELSIF checkout.auto_renew_error == 'auto_too_late' %]
14452 It\'s too late to renew this checkout.
14453 [% ELSIF checkout.auto_renew_error == 'auto_too_much_oweing' %]
14454 You have too much unpaid fines.
14455 [% END %]
14456 [% ELSE %]
14457 The following item [% biblio.title %] has correctly been renewed and is now due [% checkout.date_due %]
14458 [% END %]", 'email');
14461 SetVersion( $DBversion );
14462 print "Upgrade to $DBversion done (Bug 15705 - Notify the user on auto renewing)\n";
14465 $DBversion = '16.12.00.036';
14466 if( CheckVersion( $DBversion ) ) {
14467 $dbh->do(q{
14468 INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`)
14469 VALUES ('NumSavedReports', '20', NULL, 'By default, show this number of saved reports.', 'Integer');
14472 SetVersion( $DBversion );
14473 print "Upgrade to $DBversion done (Bug 17465 - Add a System Preference to control number of Saved Reports displayed)\n";
14476 $DBversion = '16.12.00.037';
14477 if( CheckVersion( $DBversion ) ) {
14478 $dbh->do( q|
14479 INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`)
14480 VALUES ('FailedLoginAttempts','','','Number of login attempts before lockout the patron account','Integer');
14483 unless( column_exists( 'borrowers', 'login_attempts' ) ) {
14484 $dbh->do(q|
14485 ALTER TABLE borrowers ADD COLUMN login_attempts INT(4) DEFAULT 0 AFTER lastseen
14487 $dbh->do(q|
14488 ALTER TABLE deletedborrowers ADD COLUMN login_attempts INT(4) DEFAULT 0 AFTER lastseen
14492 SetVersion( $DBversion );
14493 print "Upgrade to $DBversion done (Bug 18314 - Add FailedLoginAttempts and borrowers.login_attempts)\n";
14496 $DBversion = '16.12.00.038';
14497 if( CheckVersion( $DBversion ) ) {
14498 $dbh->do(q{
14499 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
14500 ('ExportRemoveFields','',NULL,'List of fields for non export in circulation.pl (separated by a space)','Free');
14503 SetVersion( $DBversion );
14504 print "Upgrade to $DBversion done (Bug 18663 - Missing db update for ExportRemoveFields)\n";
14507 $DBversion = '16.12.00.039';
14508 if( CheckVersion( $DBversion ) ) {
14509 $dbh->do(q{
14510 INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
14511 ('TalkingTechItivaPhoneNotification','0',NULL,'If ON, enables Talking Tech I-tiva phone notifications','YesNo');
14514 SetVersion( $DBversion );
14515 print "Upgrade to $DBversion done (Bug 18600 - Missing db update for TalkingTechItivaPhoneNotification)\n";
14518 $DBversion = '17.05.00.000';
14519 if( CheckVersion( $DBversion ) ) {
14521 SetVersion( $DBversion );
14522 print "Upgrade to $DBversion done (Koha 17.05)\n";
14525 $DBversion = "17.05.01.000";
14526 if ( CheckVersion($DBversion) ) {
14527 SetVersion($DBversion);
14528 print "Upgrade to $DBversion done (Koha 17.05.01)\n";
14531 $DBversion = "17.05.02.000";
14532 if ( CheckVersion($DBversion) ) {
14533 SetVersion($DBversion);
14534 print "Upgrade to $DBversion done (Koha 17.05.02)\n";
14537 # DEVELOPER PROCESS, search for anything to execute in the db_update directory
14538 # SEE bug 13068
14539 # if there is anything in the atomicupdate, read and execute it.
14541 my $update_dir = C4::Context->config('intranetdir') . '/installer/data/mysql/atomicupdate/';
14542 opendir( my $dirh, $update_dir );
14543 foreach my $file ( sort readdir $dirh ) {
14544 next if $file !~ /\.(sql|perl)$/; #skip other files
14545 next if $file eq 'skeleton.perl'; # skip the skeleton file
14546 print "DEV atomic update: $file\n";
14547 if ( $file =~ /\.sql$/ ) {
14548 my $installer = C4::Installer->new();
14549 my $rv = $installer->load_sql( $update_dir . $file ) ? 0 : 1;
14550 } elsif ( $file =~ /\.perl$/ ) {
14551 my $code = read_file( $update_dir . $file );
14552 eval $code;
14553 say "Atomic update generated errors: $@" if $@;
14557 =head1 FUNCTIONS
14559 =head2 TableExists($table)
14561 =cut
14563 sub TableExists {
14564 my $table = shift;
14565 eval {
14566 local $dbh->{PrintError} = 0;
14567 local $dbh->{RaiseError} = 1;
14568 $dbh->do(qq{SELECT * FROM $table WHERE 1 = 0 });
14570 return 1 unless $@;
14571 return 0;
14574 =head2 DropAllForeignKeys($table)
14576 Drop all foreign keys of the table $table
14578 =cut
14580 sub DropAllForeignKeys {
14581 my ($table) = @_;
14582 # get the table description
14583 my $sth = $dbh->prepare("SHOW CREATE TABLE $table");
14584 $sth->execute;
14585 my $vsc_structure = $sth->fetchrow;
14586 # split on CONSTRAINT keyword
14587 my @fks = split /CONSTRAINT /,$vsc_structure;
14588 # parse each entry
14589 foreach (@fks) {
14590 # isolate what is before FOREIGN KEY, if there is something, it's a foreign key to drop
14591 $_ = /(.*) FOREIGN KEY.*/;
14592 my $id = $1;
14593 if ($id) {
14594 # we have found 1 foreign, drop it
14595 $dbh->do("ALTER TABLE $table DROP FOREIGN KEY $id");
14596 $id="";
14602 =head2 TransformToNum
14604 Transform the Koha version from a 4 parts string
14605 to a number, with just 1 .
14607 =cut
14609 sub TransformToNum {
14610 my $version = shift;
14611 # remove the 3 last . to have a Perl number
14612 $version =~ s/(.*\..*)\.(.*)\.(.*)/$1$2$3/;
14613 # three X's at the end indicate that you are testing patch with dbrev
14614 # change it into 999
14615 # prevents error on a < comparison between strings (should be: lt)
14616 $version =~ s/XXX$/999/;
14617 return $version;
14620 =head2 SetVersion
14622 set the DBversion in the systempreferences
14624 =cut
14626 sub SetVersion {
14627 return if $_[0]=~ /XXX$/;
14628 #you are testing a patch with a db revision; do not change version
14629 my $kohaversion = TransformToNum($_[0]);
14630 if (C4::Context->preference('Version')) {
14631 my $finish=$dbh->prepare("UPDATE systempreferences SET value=? WHERE variable='Version'");
14632 $finish->execute($kohaversion);
14633 } else {
14634 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')");
14635 $finish->execute($kohaversion);
14637 C4::Context::clear_syspref_cache(); # invalidate cached preferences
14640 =head2 CheckVersion
14642 Check whether a given update should be run when passed the proposed version
14643 number. The update will always be run if the proposed version is greater
14644 than the current database version and less than or equal to the version in
14645 kohaversion.pl. The update is also run if the version contains XXX, though
14646 this behavior will be changed following the adoption of non-linear updates
14647 as implemented in bug 7167.
14649 =cut
14651 sub CheckVersion {
14652 my ($proposed_version) = @_;
14653 my $version_number = TransformToNum($proposed_version);
14655 # The following line should be deleted when bug 7167 is pushed
14656 return 1 if ( $proposed_version =~ m/XXX/ );
14658 if ( C4::Context->preference("Version") < $version_number
14659 && $version_number <= TransformToNum( $Koha::VERSION ) )
14661 return 1;
14663 else {
14664 return 0;
14668 exit;