X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=html.pl;h=11a47a0cd9d8c7ac0621401e4d74e246a2001de9;hb=f9cb8cc0e3f47e3cc928fc092363ad9f44fb6c42;hp=bf830539cad98b4ca15bc091b02864dd9f08c63b;hpb=96f73b9b3bba0cfaf4e0ba74211468509ecd3a40;p=koha-bibliografija
diff --git a/html.pl b/html.pl
index bf83053..11a47a0 100755
--- a/html.pl
+++ b/html.pl
@@ -14,6 +14,7 @@ use Carp qw(confess);
use utf8;
use JSON;
use POSIX qw(strftime);
+use Storable;
use lib '/srv/koha_ffzg';
use C4::Context;
@@ -103,6 +104,7 @@ foreach my $department ( keys %$department_in_sum ) {
}
debug 'auth_department' => $auth_department;
+store $auth_department, '/dev/shm/auth_department.storable';
debug 'auth_group' => $auth_group;
debug 'department_in_sum' => $department_in_sum;
@@ -130,6 +132,7 @@ where
=cut
my $biblio_year;
+my $biblio_full_name;
my $type_stats;
my $parser = XML::LibXML->new();
@@ -200,6 +203,7 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) {
my $extract = {
'008' => undef,
'100' => '(9|a)',
+ '245' => 'a',
'680' => 'i',
'700' => '(9|4|a)',
'942' => '(t|r|v)'
@@ -279,10 +283,13 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) {
foreach my $authid ( @first_author ) {
push @{ $authors->{$authid}->{aut}->{ $category } }, $row->{biblionumber};
}
+ $biblio_full_name->{ $row->{biblionumber} } = $data->{100}->[0]->{a};
} else {
$have_100 = 0;
}
+ $biblio_full_name->{ $row->{biblionumber} } ||= $data->{245}->[0]->{a};
+
my $have_edt;
if ( exists $data->{700} ) {
@@ -304,23 +311,32 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) {
$type_stats->{$type}++;
- if ( $type =~ m/(edt|trl|com|ctb)/ ) {
- push @{ $authors->{$authid}->{sec}->{ $category } }, $row->{biblionumber};
- push @{ $authors->{$authid}->{$1}->{ $category } }, $row->{biblionumber};
- } elsif ( $type =~ m/aut/ ) {
- if ( ! $have_100 ) {
- $have_edt = grep { exists $_->{4} && $_->{4} =~ m/edt/ } @{ $data->{700} } if ! defined $have_edt;
- if ( $have_edt ) {
- $skip->{ have_700_edt }->{ $row->{biblionumber} }++;
+ my @types = split(/\s+/, $type);
+
+ foreach my $type ( @types ) {
+ $type_stats->{_count_each_type}->{$type}++;
+
+ if ( $type =~ m/(edt|trl|com|ctb)/ ) {
+ push @{ $authors->{$authid}->{sec}->{ $category } }, $row->{biblionumber};
+ push @{ $authors->{$authid}->{$type}->{ $category } }, $row->{biblionumber};
+ $type =~ s/(com|ctb)/_ostalo/;
+ push @{ $authors->{$authid}->{$type}->{ $category } }, $row->{biblionumber};
+
+ } elsif ( $type =~ m/aut/ ) {
+ if ( ! $have_100 ) {
+ $have_edt = grep { exists $_->{4} && $_->{4} =~ m/edt/ } @{ $data->{700} } if ! defined $have_edt;
+ if ( $have_edt ) {
+ $skip->{ have_700_edt }->{ $row->{biblionumber} }++;
+ } else {
+ push @{ $authors->{$authid}->{aut}->{ $category } }, $row->{biblionumber};
+ }
} else {
push @{ $authors->{$authid}->{aut}->{ $category } }, $row->{biblionumber};
}
} else {
- push @{ $authors->{$authid}->{aut}->{ $category } }, $row->{biblionumber};
+# warn "# SKIP ", $row->{biblionumber}, ' no 700$4 in ', dump($data);
+ $skip->{ 'no_700$4' }->{ $row->{biblionumber} }++;
}
- } else {
-# warn "# SKIP ", $row->{biblionumber}, ' no 700$4 in ', dump($data);
- $skip->{ 'no_700$4' }->{ $row->{biblionumber} }++;
}
}
delete $data->{700};
@@ -331,9 +347,11 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) {
}
debug 'authors' => $authors;
+store $authors, '/dev/shm/authors.storable';
debug 'type_stats' => $type_stats;
debug 'skip' => $skip;
debug 'biblio_year' => $biblio_year;
+debug 'biblio_full_name' => $biblio_full_name;
debug 'biblio_data' => $biblio_data;
debug 'biblio_author_external' => $biblio_author_external;
@@ -389,7 +407,11 @@ sub unique_biblionumber {
my @v = @_;
my $u;
$u->{$_}++ foreach @v;
- return sort { $biblio_year->{$b} <=> $biblio_year->{$a} || $a <=> $b } keys %$u;
+ return sort {
+ $biblio_year->{$b} <=> $biblio_year->{$a} ||
+ $biblio_full_name->{$a} cmp $biblio_full_name->{$b} ||
+ $a <=> $b
+ } keys %$u;
}
sub author_html {
@@ -401,11 +423,11 @@ sub author_html {
foreach my $category ( sort keys %{ $authors->{$authid}->{$type} } ) {
my $label = $category_label->{$category} || 'Bez kategorije';
- print $fh qq|$label
\n