Lines 318-324
sub ModBiblio {
Link Here
|
318 |
# update biblionumber and biblioitemnumber in MARC |
318 |
# update biblionumber and biblioitemnumber in MARC |
319 |
# FIXME - this is assuming a 1 to 1 relationship between |
319 |
# FIXME - this is assuming a 1 to 1 relationship between |
320 |
# biblios and biblioitems |
320 |
# biblios and biblioitems |
321 |
my $sth = $dbh->prepare("select biblioitemnumber from biblioitems where biblionumber=?"); |
321 |
my $sth = $dbh->prepare("select biblioitemnumber from biblioitems where biblionumber=? AND deleted_at IS NULL"); |
322 |
$sth->execute($biblionumber); |
322 |
$sth->execute($biblionumber); |
323 |
my ($biblioitemnumber) = $sth->fetchrow; |
323 |
my ($biblioitemnumber) = $sth->fetchrow; |
324 |
$sth->finish(); |
324 |
$sth->finish(); |
Lines 387-393
sub DelBiblio {
Link Here
|
387 |
my $error; # for error handling |
387 |
my $error; # for error handling |
388 |
|
388 |
|
389 |
# First make sure this biblio has no items attached |
389 |
# First make sure this biblio has no items attached |
390 |
my $sth = $dbh->prepare("SELECT itemnumber FROM items WHERE biblionumber=?"); |
390 |
my $sth = $dbh->prepare("SELECT itemnumber FROM items WHERE biblionumber=? AND deleted_at IS NULL"); |
391 |
$sth->execute($biblionumber); |
391 |
$sth->execute($biblionumber); |
392 |
if ( my $itemnumber = $sth->fetchrow ) { |
392 |
if ( my $itemnumber = $sth->fetchrow ) { |
393 |
|
393 |
|
Lines 418-424
sub DelBiblio {
Link Here
|
418 |
ModZebra( $biblionumber, "recordDelete", "biblioserver" ); |
418 |
ModZebra( $biblionumber, "recordDelete", "biblioserver" ); |
419 |
|
419 |
|
420 |
# delete biblioitems and items from Koha tables and save in deletedbiblioitems,deleteditems |
420 |
# delete biblioitems and items from Koha tables and save in deletedbiblioitems,deleteditems |
421 |
$sth = $dbh->prepare("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber=?"); |
421 |
$sth = $dbh->prepare("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber=? AND deleted_at IS NULL"); |
422 |
$sth->execute($biblionumber); |
422 |
$sth->execute($biblionumber); |
423 |
while ( my $biblioitemnumber = $sth->fetchrow ) { |
423 |
while ( my $biblioitemnumber = $sth->fetchrow ) { |
424 |
|
424 |
|
Lines 759-765
NOTE : This function has been copy/paste from C4/Biblio.pm from head before zebr
Link Here
|
759 |
sub GetBiblioItemByBiblioNumber { |
759 |
sub GetBiblioItemByBiblioNumber { |
760 |
my ($biblionumber) = @_; |
760 |
my ($biblionumber) = @_; |
761 |
my $dbh = C4::Context->dbh; |
761 |
my $dbh = C4::Context->dbh; |
762 |
my $sth = $dbh->prepare("Select * FROM biblioitems WHERE biblionumber = ?"); |
762 |
my $sth = $dbh->prepare("Select * FROM biblioitems WHERE biblionumber = ? AND deleted_at IS NULL"); |
763 |
my $count = 0; |
763 |
my $count = 0; |
764 |
my @results; |
764 |
my @results; |
765 |
|
765 |
|
Lines 1212-1218
sub GetMarcBiblio {
Link Here
|
1212 |
} |
1212 |
} |
1213 |
|
1213 |
|
1214 |
my $dbh = C4::Context->dbh; |
1214 |
my $dbh = C4::Context->dbh; |
1215 |
my $sth = $dbh->prepare("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber=? "); |
1215 |
my $sth = $dbh->prepare("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber=? AND deleted_at IS NULL"); |
1216 |
$sth->execute($biblionumber); |
1216 |
$sth->execute($biblionumber); |
1217 |
my $row = $sth->fetchrow_hashref; |
1217 |
my $row = $sth->fetchrow_hashref; |
1218 |
my $biblioitemnumber = $row->{'biblioitemnumber'}; |
1218 |
my $biblioitemnumber = $row->{'biblioitemnumber'}; |
Lines 2830-2836
sub EmbedItemsInMarcBiblio {
Link Here
|
2830 |
|
2830 |
|
2831 |
# ... and embed the current items |
2831 |
# ... and embed the current items |
2832 |
my $dbh = C4::Context->dbh; |
2832 |
my $dbh = C4::Context->dbh; |
2833 |
my $sth = $dbh->prepare("SELECT itemnumber FROM items WHERE biblionumber = ?"); |
2833 |
my $sth = $dbh->prepare("SELECT itemnumber FROM items WHERE biblionumber = ? and deleted_at IS NULL"); |
2834 |
$sth->execute($biblionumber); |
2834 |
$sth->execute($biblionumber); |
2835 |
my @item_fields; |
2835 |
my @item_fields; |
2836 |
my ( $itemtag, $itemsubfield ) = GetMarcFromKohaField( "items.itemnumber", $frameworkcode ); |
2836 |
my ( $itemtag, $itemsubfield ) = GetMarcFromKohaField( "items.itemnumber", $frameworkcode ); |
Lines 3160-3200
C<$biblionumber> - the biblionumber of the biblio to be deleted
Link Here
|
3160 |
sub _koha_delete_biblio { |
3160 |
sub _koha_delete_biblio { |
3161 |
my ( $dbh, $biblionumber ) = @_; |
3161 |
my ( $dbh, $biblionumber ) = @_; |
3162 |
|
3162 |
|
3163 |
# get all the data for this biblio |
3163 |
my $sth = $dbh->prepare("UPDATE biblio SET deleted_at = NOW() WHERE biblionumber=?"); |
3164 |
my $sth = $dbh->prepare("SELECT * FROM biblio WHERE biblionumber=?"); |
3164 |
return $sth->execute($biblionumber) ? undef : ($DBI::errstr || "unknown error"); |
3165 |
$sth->execute($biblionumber); |
|
|
3166 |
|
3167 |
# FIXME There is a transaction in _koha_delete_biblio_metadata |
3168 |
# But actually all the following should be done inside a single transaction |
3169 |
if ( my $data = $sth->fetchrow_hashref ) { |
3170 |
|
3171 |
# save the record in deletedbiblio |
3172 |
# find the fields to save |
3173 |
my $query = "INSERT INTO deletedbiblio SET "; |
3174 |
my @bind = (); |
3175 |
foreach my $temp ( keys %$data ) { |
3176 |
$query .= "$temp = ?,"; |
3177 |
push( @bind, $data->{$temp} ); |
3178 |
} |
3179 |
|
3180 |
# replace the last , by ",?)" |
3181 |
$query =~ s/\,$//; |
3182 |
my $bkup_sth = $dbh->prepare($query); |
3183 |
$bkup_sth->execute(@bind); |
3184 |
$bkup_sth->finish; |
3185 |
|
3186 |
_koha_delete_biblio_metadata( $biblionumber ); |
3187 |
|
3188 |
# delete the biblio |
3189 |
my $sth2 = $dbh->prepare("DELETE FROM biblio WHERE biblionumber=?"); |
3190 |
$sth2->execute($biblionumber); |
3191 |
# update the timestamp (Bugzilla 7146) |
3192 |
$sth2= $dbh->prepare("UPDATE deletedbiblio SET timestamp=NOW() WHERE biblionumber=?"); |
3193 |
$sth2->execute($biblionumber); |
3194 |
$sth2->finish; |
3195 |
} |
3196 |
$sth->finish; |
3197 |
return; |
3198 |
} |
3165 |
} |
3199 |
|
3166 |
|
3200 |
=head2 _koha_delete_biblioitems |
3167 |
=head2 _koha_delete_biblioitems |
Lines 3212-3249
C<$biblionumber> - the biblioitemnumber of the biblioitem to be deleted
Link Here
|
3212 |
|
3179 |
|
3213 |
sub _koha_delete_biblioitems { |
3180 |
sub _koha_delete_biblioitems { |
3214 |
my ( $dbh, $biblioitemnumber ) = @_; |
3181 |
my ( $dbh, $biblioitemnumber ) = @_; |
3215 |
|
3182 |
my $sth = $dbh->prepare("UPDATE biblioitems SET deleted_at = NOW() WHERE biblioitemnumber=?"); |
3216 |
# get all the data for this biblioitem |
3183 |
return $sth->execute($biblioitemnumber) ? undef : ($DBI::errstr || 'unknown error'); |
3217 |
my $sth = $dbh->prepare("SELECT * FROM biblioitems WHERE biblioitemnumber=?"); |
|
|
3218 |
$sth->execute($biblioitemnumber); |
3219 |
|
3220 |
if ( my $data = $sth->fetchrow_hashref ) { |
3221 |
|
3222 |
# save the record in deletedbiblioitems |
3223 |
# find the fields to save |
3224 |
my $query = "INSERT INTO deletedbiblioitems SET "; |
3225 |
my @bind = (); |
3226 |
foreach my $temp ( keys %$data ) { |
3227 |
$query .= "$temp = ?,"; |
3228 |
push( @bind, $data->{$temp} ); |
3229 |
} |
3230 |
|
3231 |
# replace the last , by ",?)" |
3232 |
$query =~ s/\,$//; |
3233 |
my $bkup_sth = $dbh->prepare($query); |
3234 |
$bkup_sth->execute(@bind); |
3235 |
$bkup_sth->finish; |
3236 |
|
3237 |
# delete the biblioitem |
3238 |
my $sth2 = $dbh->prepare("DELETE FROM biblioitems WHERE biblioitemnumber=?"); |
3239 |
$sth2->execute($biblioitemnumber); |
3240 |
# update the timestamp (Bugzilla 7146) |
3241 |
$sth2= $dbh->prepare("UPDATE deletedbiblioitems SET timestamp=NOW() WHERE biblioitemnumber=?"); |
3242 |
$sth2->execute($biblioitemnumber); |
3243 |
$sth2->finish; |
3244 |
} |
3245 |
$sth->finish; |
3246 |
return; |
3247 |
} |
3184 |
} |
3248 |
|
3185 |
|
3249 |
=head2 _koha_delete_biblio_metadata |
3186 |
=head2 _koha_delete_biblio_metadata |
Lines 3256-3274
C<$biblionumber> - the biblionumber of the biblio metadata to be deleted
Link Here
|
3256 |
|
3193 |
|
3257 |
sub _koha_delete_biblio_metadata { |
3194 |
sub _koha_delete_biblio_metadata { |
3258 |
my ($biblionumber) = @_; |
3195 |
my ($biblionumber) = @_; |
3259 |
|
3196 |
my $dbh = C4::Context->dbh; |
3260 |
my $dbh = C4::Context->dbh; |
3197 |
my $sth = $dbh->prepare("UPDATE biblio_metadata SET deleted_at = NOW() WHERE biblionumber=?"); |
3261 |
my $schema = Koha::Database->new->schema; |
3198 |
return $sth->execute($biblionumber); |
3262 |
$schema->txn_do( |
|
|
3263 |
sub { |
3264 |
$dbh->do( q| |
3265 |
INSERT INTO deletedbiblio_metadata (biblionumber, format, marcflavour, metadata) |
3266 |
SELECT biblionumber, format, marcflavour, metadata FROM biblio_metadata WHERE biblionumber=? |
3267 |
|, undef, $biblionumber ); |
3268 |
$dbh->do( q|DELETE FROM biblio_metadata WHERE biblionumber=?|, |
3269 |
undef, $biblionumber ); |
3270 |
} |
3271 |
); |
3272 |
} |
3199 |
} |
3273 |
|
3200 |
|
3274 |
=head1 UNEXPORTED FUNCTIONS |
3201 |
=head1 UNEXPORTED FUNCTIONS |