Lines 37-42
use Getopt::Long;
Link Here
|
37 |
use C4::Context; |
37 |
use C4::Context; |
38 |
use C4::Installer; |
38 |
use C4::Installer; |
39 |
use C4::Dates; |
39 |
use C4::Dates; |
|
|
40 |
use Koha::Database; |
40 |
|
41 |
|
41 |
use MARC::Record; |
42 |
use MARC::Record; |
42 |
use MARC::File::XML ( BinaryEncoding => 'utf8' ); |
43 |
use MARC::File::XML ( BinaryEncoding => 'utf8' ); |
Lines 8577-8582
if ( CheckVersion($DBversion) ) {
Link Here
|
8577 |
SetVersion ($DBversion); |
8578 |
SetVersion ($DBversion); |
8578 |
} |
8579 |
} |
8579 |
|
8580 |
|
|
|
8581 |
$DBversion = "3.17.00.XXX"; |
8582 |
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { |
8583 |
$dbh->do(" |
8584 |
ALTER TABLE serial |
8585 |
ADD serialseq_x VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq, |
8586 |
ADD serialseq_y VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_x, |
8587 |
ADD serialseq_z VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_y |
8588 |
"); |
8589 |
|
8590 |
my $schema = Koha::Database->new()->schema(); |
8591 |
my @subscriptions = $schema->resultset('Subscription')->all(); |
8592 |
|
8593 |
foreach my $subscription (@subscriptions) { |
8594 |
my $number_pattern = $subscription->numberpattern(); |
8595 |
|
8596 |
my @splits = split( /\{[XYZ]\}/, $number_pattern->numberingmethod() ); |
8597 |
|
8598 |
my @serials = |
8599 |
$schema->resultset('Serial') |
8600 |
->search( { subscriptionid => $subscription->subscriptionid() } ); |
8601 |
|
8602 |
foreach my $serial (@serials) { |
8603 |
my $serialseq = $serial->serialseq(); |
8604 |
my ( $x, $y, $z ); |
8605 |
|
8606 |
## We cannot split on multiple values at once, |
8607 |
## so let's replace each of those values with __SPLIT__ |
8608 |
if (@splits) { |
8609 |
map( $serialseq =~ s/$_/__SPLIT__/, @splits ); |
8610 |
( undef, $x, $y, $z ) = split( /__SPLIT__/, $serialseq ); |
8611 |
} |
8612 |
else |
8613 |
{ ## Nothing to split on means the only thing in serialseq is {X} |
8614 |
$x = $serialseq; |
8615 |
} |
8616 |
|
8617 |
$serial->update( |
8618 |
{ |
8619 |
serialseq_x => $x, |
8620 |
serialseq_y => $y, |
8621 |
serialseq_z => $z, |
8622 |
} |
8623 |
); |
8624 |
} |
8625 |
} |
8626 |
|
8627 |
print "Upgrade to $DBversion done ( Bug 8956 - Split serials enumeration data into separate fields )\n"; |
8628 |
SetVersion($DBversion); |
8629 |
} |
8630 |
|
8580 |
=head1 FUNCTIONS |
8631 |
=head1 FUNCTIONS |
8581 |
|
8632 |
|
8582 |
=head2 TableExists($table) |
8633 |
=head2 TableExists($table) |
8583 |
- |
|
|