|
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 8551-8556
if (CheckVersion($DBversion)) {
Link Here
|
| 8551 |
SetVersion($DBversion); |
8552 |
SetVersion($DBversion); |
| 8552 |
} |
8553 |
} |
| 8553 |
|
8554 |
|
|
|
8555 |
$DBversion = "3.17.00.XXX"; |
| 8556 |
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { |
| 8557 |
$dbh->do(" |
| 8558 |
ALTER TABLE serial |
| 8559 |
ADD serialseq_x VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq, |
| 8560 |
ADD serialseq_y VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_x, |
| 8561 |
ADD serialseq_z VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_y |
| 8562 |
"); |
| 8563 |
|
| 8564 |
my $schema = Koha::Database->new()->schema(); |
| 8565 |
my @subscriptions = $schema->resultset('Subscription')->all(); |
| 8566 |
|
| 8567 |
foreach my $subscription (@subscriptions) { |
| 8568 |
my $number_pattern = $subscription->numberpattern(); |
| 8569 |
|
| 8570 |
my @splits = split( /\{[XYZ]\}/, $number_pattern->numberingmethod() ); |
| 8571 |
|
| 8572 |
my @serials = |
| 8573 |
$schema->resultset('Serial') |
| 8574 |
->search( { subscriptionid => $subscription->subscriptionid() } ); |
| 8575 |
|
| 8576 |
foreach my $serial (@serials) { |
| 8577 |
my $serialseq = $serial->serialseq(); |
| 8578 |
my ( $x, $y, $z ); |
| 8579 |
|
| 8580 |
## We cannot split on multiple values at once, |
| 8581 |
## so let's replace each of those values with __SPLIT__ |
| 8582 |
if (@splits) { |
| 8583 |
map( $serialseq =~ s/$_/__SPLIT__/, @splits ); |
| 8584 |
( undef, $x, $y, $z ) = split( /__SPLIT__/, $serialseq ); |
| 8585 |
} |
| 8586 |
else |
| 8587 |
{ ## Nothing to split on means the only thing in serialseq is {X} |
| 8588 |
$x = $serialseq; |
| 8589 |
} |
| 8590 |
|
| 8591 |
$serial->update( |
| 8592 |
{ |
| 8593 |
serialseq_x => $x, |
| 8594 |
serialseq_y => $y, |
| 8595 |
serialseq_z => $z, |
| 8596 |
} |
| 8597 |
); |
| 8598 |
} |
| 8599 |
} |
| 8600 |
|
| 8601 |
print "Upgrade to $DBversion done ( Bug 8956 - Split serials enumeration data into separate fields )\n"; |
| 8602 |
SetVersion($DBversion); |
| 8603 |
} |
| 8604 |
|
| 8554 |
=head1 FUNCTIONS |
8605 |
=head1 FUNCTIONS |
| 8555 |
|
8606 |
|
| 8556 |
=head2 TableExists($table) |
8607 |
=head2 TableExists($table) |
| 8557 |
- |
|
|