X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2Fexport.pl;h=a1e9a228007acd414f51a836b58b0463a6ce2140;hb=35b47b6ff71ea2bcfc699ec35132756d01bfadd3;hp=09075f9b14662b4d475bb37eb8868d32c0e7f387;hpb=e613ef5a8c9e8c3f7d60f4cebd8e0bf5fee05796;p=koha_gimpoz diff --git a/tools/export.pl b/tools/export.pl index 09075f9b14..a1e9a22800 100755 --- a/tools/export.pl +++ b/tools/export.pl @@ -18,7 +18,7 @@ use strict; -require Exporter; +use warnings; use C4::Auth; use C4::Output; # contains gettemplate use C4::Biblio; # GetMarcBiblio GetXmlBiblio @@ -27,7 +27,7 @@ use C4::Koha; # GetItemTypes use C4::Branch; # GetBranches my $query = new CGI; -my $op=$query->param("op"); +my $op=$query->param("op") || ''; my $filename=$query->param("filename"); my $dbh=C4::Context->dbh; my $marcflavour = C4::Context->preference("marcflavour"); @@ -47,10 +47,10 @@ my ($template, $loggedinuser, $cookie) my $limit_ind_branch=(C4::Context->preference('IndependantBranches') && C4::Context->userenv && - C4::Context->userenv->{flags} !=1 && + C4::Context->userenv->{flags} % 2 !=1 && C4::Context->userenv->{branch}?1:0); my $branches = GetBranches($limit_ind_branch); - my $branch = $query->param("branch"); + my $branch = $query->param("branch") || ''; if ( C4::Context->preference("IndependantBranches") ) { $branch = C4::Context->userenv->{'branch'}; } @@ -73,9 +73,17 @@ if ($op eq "export") { my $strip_nonlocal_items = $query->param("strip_nonlocal_items"); my $dont_export_fields = $query->param("dont_export_fields"); my @sql_params; - my $query = " SELECT DISTINCT biblioitems.biblionumber - FROM biblioitems,items - WHERE biblioitems.biblionumber=items.biblionumber "; + + my $items_filter = + $branch || $start_callnumber || $end_callnumber || + $start_accession || $end_accession || + ($itemtype && C4::Context->preference('item-level_itypes')); + my $query = $items_filter ? + "SELECT DISTINCT biblioitems.biblionumber + FROM biblioitems JOIN items + USING (biblionumber) WHERE 1" + : + "SELECT biblioitems.biblionumber FROM biblioitems WHERE biblionumber >0 "; if ( $StartingBiblionumber ) { $query .= " AND biblioitems.biblionumber >= ? "; @@ -119,9 +127,15 @@ if ($op eq "export") { $sth->execute(@sql_params); while (my ($biblionumber) = $sth->fetchrow) { - my $record = GetMarcBiblio($biblionumber); - my ( $homebranchfield, $homebranchsubfield ) = GetMarcFromKohaField( 'items.homebranch', '' ); + my $record = eval{ GetMarcBiblio($biblionumber); }; + # FIXME: decide how to handle records GetMarcBiblio can't parse or retrieve + if ($@) { + next; + } + next if not defined $record; if ( $dont_export_items || $strip_nonlocal_items || $limit_ind_branch) { + my ( $homebranchfield, $homebranchsubfield ) = + GetMarcFromKohaField( 'items.homebranch', '' ); for my $itemfield ($record->field($homebranchfield)){ # if stripping nonlocal items, use loggedinuser's branch if they didn't select one $branch = C4::Context->userenv->{'branch'} unless $branch; @@ -135,6 +149,8 @@ if ($op eq "export") { /^(\d*)(\w)?$/; my $field = $1; my $subfield = $2; + # skip if this record doesn't have this field + next if not defined $record->field($field); if( $subfield ) { $record->field($field)->delete_subfields($subfield); }