Bug 11529: (QA follow-up) Copy existing subtitle mappings and warn others
[koha.git] / installer / data / mysql / atomicupdate / bug_11529.perl
1 $DBversion = 'XXX';  # will be replaced by the RM
2 if( CheckVersion( $DBversion ) ) {
3     if( !column_exists( 'biblio', 'subtitle' ) ) {
4         $dbh->do( "ALTER TABLE biblio ADD COLUMN medium LONGTEXT AFTER title" );
5         $dbh->do( "ALTER TABLE biblio ADD COLUMN subtitle LONGTEXT AFTER medium" );
6         $dbh->do( "ALTER TABLE biblio ADD COLUMN part_number LONGTEXT AFTER subtitle" );
7         $dbh->do( "ALTER TABLE biblio ADD COLUMN part_name LONGTEXT AFTER part_number" );
8
9         $dbh->do( "ALTER TABLE deletedbiblio ADD COLUMN medium LONGTEXT AFTER title" );
10         $dbh->do( "ALTER TABLE deletedbiblio ADD COLUMN subtitle LONGTEXT AFTER medium" );
11         $dbh->do( "ALTER TABLE deletedbiblio ADD COLUMN part_number LONGTEXT AFTER subtitle" );
12         $dbh->do( "ALTER TABLE deletedbiblio ADD COLUMN part_name LONGTEXT AFTER part_number" );
13     }
14
15     $dbh->do( "UPDATE marc_subfield_structure SET kohafield='biblio.subtitle' WHERE kohafield='bibliosubtitle.subtitle'" );
16
17     my $marcflavour = C4::Context->preference('marcflavour');
18
19     if ( $marcflavour eq 'UNIMARC' ) {
20         $dbh->do(qq{
21             UPDATE marc_subfield_structure SET kohafield='biblio.medium'
22             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='200' AND tagsubfield='b'
23         });
24         $dbh->do(qq{
25             UPDATE marc_subfield_structure SET kohafield='biblio.subtitle'
26             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='200' AND tagsubfield='e'
27         });
28         $dbh->do(qq{
29             UPDATE marc_subfield_structure SET kohafield='biblio.part_number'
30             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='200' AND tagsubfield='h'
31         });
32         $dbh->do(qq{
33             UPDATE marc_subfield_structure SET kohafield='biblio.part_name'
34             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='200' AND tagsubfield='i'
35         });
36     } else {
37         $dbh->do(qq{
38             UPDATE marc_subfield_structure SET kohafield='biblio.medium'
39             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='245' AND tagsubfield='h'
40         });
41         $dbh->do(qq{
42             UPDATE marc_subfield_structure SET kohafield='biblio.subtitle'
43             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='245' AND tagsubfield='b'
44         });
45         $dbh->do(qq{
46             UPDATE marc_subfield_structure SET kohafield='biblio.part_number'
47             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='245' AND tagsubfield='n'
48         });
49         $dbh->do(qq{
50             UPDATE marc_subfield_structure SET kohafield='biblio.part_name'
51             WHERE (kohafield IS NULL OR kohafield='') AND frameworkcode='' AND tagfield='245' AND tagsubfield='p'
52         });
53     }
54
55     $dbh->do("UPDATE marc_subfield_structure JOIN fieldmapping ON tagfield = fieldcode AND subfieldcode=tagsubfield SET kohafield='biblio.subtitle' WHERE fieldmapping.frameworkcode=''");
56     $sth = $dbh->prepare("SELECT * FROM fieldmapping WHERE frameworkcode != '' OR field != 'subtitle'");
57     $sth->execute;
58     print "Keyword to MARC mappings below cannot be preserved: \n" if $sth->rows;
59     while ( my $value = $sth->fetchrow_hashref() ){
60         my $framework = $value->{frameworkcode} eq "" ? "Default" : $value->{frameworkcode};
61         print "    keyword: " . $value->{'field'} . " to field: " . $value->{fieldcode} . "\$" . $value->{subfieldcode} . " for $framework framework\n";
62     }
63     print "You will need to remap using Koha to MARC mappings in administration\n" if $sth->rows;
64
65
66 #    $dbh->do( "DROP TABLE IF EXISTS fieldmapping" );
67
68     $dbh->do( "DELETE FROM user_permissions WHERE code='manage_keywords2koha_mappings'" );
69
70     $dbh->do( "DELETE FROM permissions WHERE code='manage_keywords2koha_mappings'" );
71
72     # Always end with this (adjust the bug info)
73     SetVersion( $DBversion );
74     print "Upgrade to $DBversion done (Bug 11529 - Add medium, subtitle and part information to biblio table)\n";
75 }