|
Lines 27-33
use C4::Biblio;
Link Here
|
| 27 |
use Koha::Biblios; |
27 |
use Koha::Biblios; |
| 28 |
use Koha::DateUtils qw( dt_from_string ); |
28 |
use Koha::DateUtils qw( dt_from_string ); |
| 29 |
|
29 |
|
| 30 |
my ( $verbose, $help, $confirm, $where, @fields, $unless_exists_field ); |
30 |
my ( $verbose, $help, $confirm, $where, @fields, $date_field, $unless_exists_field ); |
| 31 |
my $dbh = C4::Context->dbh; |
31 |
my $dbh = C4::Context->dbh; |
| 32 |
|
32 |
|
| 33 |
GetOptions( |
33 |
GetOptions( |
|
Lines 36-60
GetOptions(
Link Here
|
| 36 |
'confirm|c' => \$confirm, |
36 |
'confirm|c' => \$confirm, |
| 37 |
'where=s' => \$where, |
37 |
'where=s' => \$where, |
| 38 |
'field=s@' => \@fields, |
38 |
'field=s@' => \@fields, |
|
|
39 |
'date-field=s' => \$date_field, |
| 39 |
'unless-exists=s' => \$unless_exists_field, |
40 |
'unless-exists=s' => \$unless_exists_field, |
| 40 |
) || podusage(1); |
41 |
) || podusage(1); |
| 41 |
|
42 |
|
| 42 |
pod2usage(1) if $help; |
43 |
pod2usage(1) if $help; |
| 43 |
pod2usage("Parameter field is mandatory") unless @fields; |
44 |
pod2usage("Parameter field is mandatory") unless @fields; |
| 44 |
|
45 |
|
|
|
46 |
say "Confirm flag not passed, running in dry-run mode..." unless $confirm; |
| 47 |
|
| 45 |
my @fields_to_add; |
48 |
my @fields_to_add; |
| 46 |
my $dt = dt_from_string; # Could be an option of the script |
49 |
unless ( $date_field ) { |
| 47 |
for my $field (@fields) { |
50 |
my $dt = dt_from_string; |
| 48 |
my ( $f_sf, $value ) = split '=', $field; |
51 |
for my $field (@fields) { |
| 49 |
my ( $tag, $subfield ) = split '\$', $f_sf; |
52 |
my ( $f_sf, $value ) = split '=', $field; |
| 50 |
push @fields_to_add, |
53 |
my ( $tag, $subfield ) = split '\$', $f_sf; |
| 51 |
MARC::Field->new( $tag, '', '', $subfield => $dt->strftime($value) ); |
54 |
push @fields_to_add, |
| 52 |
} |
55 |
MARC::Field->new( $tag, '', '', $subfield => $dt->strftime($value) ); |
|
|
56 |
} |
| 53 |
|
57 |
|
| 54 |
say "Confirm flag not passed, running in dry-run mode..." unless $confirm; |
58 |
if ($verbose) { |
| 55 |
if ($verbose) { |
59 |
say "The following MARC fields will be added:"; |
| 56 |
say "The following MARC fields will be added:"; |
60 |
say "\t" . $_->as_formatted for @fields_to_add; |
| 57 |
say "\t" . $_->as_formatted for @fields_to_add; |
61 |
} |
| 58 |
} |
62 |
} |
| 59 |
|
63 |
|
| 60 |
$where = $where ? "WHERE $where" : ''; |
64 |
$where = $where ? "WHERE $where" : ''; |
|
Lines 70-76
while ( my ( $biblionumber, $frameworkcode ) = $sth->fetchrow_array ) {
Link Here
|
| 70 |
my ( $tag, $subfield ) = split '\$', $unless_exists_field; |
74 |
my ( $tag, $subfield ) = split '\$', $unless_exists_field; |
| 71 |
next if $marc_record->subfield($tag, $subfield); |
75 |
next if $marc_record->subfield($tag, $subfield); |
| 72 |
} |
76 |
} |
|
|
77 |
if ( $date_field ) { |
| 78 |
my ( $tag, $subfield ) = split '\$', $date_field; |
| 79 |
my $date = $marc_record->subfield($tag, $subfield); |
| 80 |
next unless $date; |
| 81 |
warn $date; |
| 82 |
my $dt = dt_from_string($date); |
| 83 |
for my $field (@fields) { |
| 84 |
my ( $f_sf, $value ) = split '=', $field; |
| 85 |
my ( $tag, $subfield ) = split '\$', $f_sf; |
| 86 |
push @fields_to_add, |
| 87 |
MARC::Field->new( $tag, '', '', $subfield => $dt->strftime($value) ); |
| 88 |
} |
| 89 |
if ($verbose) { |
| 90 |
say sprintf "The following MARC fields will be added to record %s:", $biblionumber; |
| 91 |
say "\t" . $_->as_formatted for @fields_to_add; |
| 92 |
} |
| 93 |
} |
| 94 |
|
| 73 |
$marc_record->append_fields(@fields_to_add); |
95 |
$marc_record->append_fields(@fields_to_add); |
|
|
96 |
|
| 74 |
if ($confirm) { |
97 |
if ($confirm) { |
| 75 |
my $modified = |
98 |
my $modified = |
| 76 |
C4::Biblio::ModBiblio( $marc_record, $biblionumber, $frameworkcode ); |
99 |
C4::Biblio::ModBiblio( $marc_record, $biblionumber, $frameworkcode ); |
|
Lines 94-99
add_date_fields_to_marc_records.pl
Link Here
|
| 94 |
|
117 |
|
| 95 |
perl add_date_fields_to_marc_records.pl --field='905$a=0/%Y' --field='905$a=1/%Y/%b-%m' --field='905$a=2/%Y/%b-%m/%d' --unless-exists='905$a' --where "biblionumber=42" --verbose --confirm |
118 |
perl add_date_fields_to_marc_records.pl --field='905$a=0/%Y' --field='905$a=1/%Y/%b-%m' --field='905$a=2/%Y/%b-%m/%d' --unless-exists='905$a' --where "biblionumber=42" --verbose --confirm |
| 96 |
|
119 |
|
|
|
120 |
perl add_date_fields_to_marc_records.pl --field='905$a=0/%Y' --field='905$a=1/%Y/%b-%m' --field='905$a=2/%Y/%b-%m/%d' --date-field='908$a' --verbose --confirm |
| 121 |
|
| 97 |
=head1 DESCRIPTION |
122 |
=head1 DESCRIPTION |
| 98 |
|
123 |
|
| 99 |
Add some MARC fields to bibliographic records. |
124 |
Add some MARC fields to bibliographic records. |
|
Lines 141-146
Will only create the new fields if this field does not exist.
Link Here
|
| 141 |
For instance, if --field='905$a=0/%Y' and --unless-exists='905$a' are provided, a 905$a will be created unless there is already one. |
166 |
For instance, if --field='905$a=0/%Y' and --unless-exists='905$a' are provided, a 905$a will be created unless there is already one. |
| 142 |
If --unless-exists is not passed, a new 905$a will be created in any case. |
167 |
If --unless-exists is not passed, a new 905$a will be created in any case. |
| 143 |
|
168 |
|
|
|
169 |
=item B<--date-field> |
| 170 |
|
| 171 |
The date will be picked from a specific marc field. |
| 172 |
|
| 173 |
For instance, if the record contains a date formatted YYYY-MM-DD in 908$a, you can pass --date-field='908$a' |
| 174 |
Note that the date format used will be the one defined in the syspref 'dateformat', or iso format. |
| 144 |
|
175 |
|
| 145 |
=back |
176 |
=back |
| 146 |
|
177 |
|
| 147 |
- |
|
|