X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=html.pl;h=994570cbc20581fef8870d4a5f567ab9a1b637ea;hb=eaa3b686bea886e4c15d2850f2a0d5fa3489870c;hp=a6c255868028192dd6a043f3e5b9bffc689502e5;hpb=0ffedf5aca03d1b8ae0059df8e64219e7ae691bd;p=koha-bibliografija diff --git a/html.pl b/html.pl index a6c2558..994570c 100755 --- a/html.pl +++ b/html.pl @@ -28,16 +28,22 @@ sub debug { my $xslfilename = 'compact.xsl'; my $azvo_group_title = { -'znanstveno nastavni' => qr/(profesor|docent|znanstveni)/i, +'znanstveno nastavni' => qr/(profes|docent|znanstveni savjetnik|znanstveni suradnik)/i, 'lektori i predavači' => qr/(lektor|predavač)/i, 'asistenti i novaci' => qr/(asistent|novak)/i, }; +my $department_groups = { +'AAB_humanističke' => qr/(anglistiku|arheologiju|antropologiju|filozofiju|fonetiku|germanistiku|hungarologiju|indologiju|slavenske|filologiju|komparativnu|kroatistiku|lingvistiku|povijest|romanistiku|talijanistiku)/i, +'AAC_društvene' => qr/(informacijske|pedagogiju|psihologiju|sociologiju)/i, +}; + my $auth_header; my $auth_department; my $auth_group; my @authors; my $department_in_sum; +my $department_in_group; my $skip; @@ -75,12 +81,21 @@ while( my $row = $sth_auth->fetchrow_hashref ) { push @{ $skip->{no_academic_group} }, $row; } - warn "# ", dump( $row ); +# warn "# ", dump( $row ); push @{ $auth_department->{ $row->{department} } }, $row->{authid}; push @authors, $row; $department_in_sum->{ $row->{department} }++; + foreach my $name ( keys %$department_groups ) { + my $regex = $department_groups->{$name}; + if ( $row->{department} =~ $regex ) { + $department_in_group->{ $row->{department} } = $name; + last; + } + } } +debug 'department_in_group' => $department_in_group; + foreach my $department ( keys %$department_in_sum ) { $department_in_sum->{$department} = 0 unless $department =~ m/(centar|croaticum|katedra|odsjek)/i; } @@ -124,6 +139,7 @@ my $parsed = $xslt->parse_stylesheet($style_doc); my $biblio_html; my $biblio_parsed; my $biblio_data; +my $biblio_author_external; open(my $xml_fh, '>', '/tmp/bibliografija.xml') if $ENV{XML}; @@ -181,9 +197,9 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) { my $extract = { '008' => undef, - '100' => '9', + '100' => '(9|a)', '680' => 'i', - '700' => '(9|4)', + '700' => '(9|4|a)', '942' => '(t|r|v)' }; @@ -218,10 +234,12 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) { } } push @{ $data->{$tag} }, $sf_data if $sf_data; - } - } + } + } - if ( $data->{year} < 2008 ) { + if ( ! defined $data->{year} ) { + warn "MISSING year in ", $row->{biblionumber}; + } elsif ( $data->{year} < 2008 ) { push @{ $skip->{year_lt_2008} }, $row->{biblionumber}; next; } elsif ( $data->{year} > 2013 ) { @@ -241,7 +259,19 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) { my $have_100 = 1; if ( exists $data->{100} ) { - my @first_author = map { $_->{'9'} } @{ $data->{100} }; + my @first_author = + map { $_->{'9'} } + grep { + if ( ! exists $_->{9} ) { + $biblio_author_external->{ $row->{biblionumber} }++; + 0; + } elsif ( exists $auth_header->{ $_->{9} } ) { + 1; # from FFZXG + } else { + 0; + } + } + @{ $data->{100} }; foreach my $authid ( @first_author ) { push @{ $authors->{$authid}->{aut}->{ $category } }, $row->{biblionumber}; } @@ -252,7 +282,19 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) { my $have_edt; if ( exists $data->{700} ) { - foreach my $auth ( @{ $data->{700} } ) { + my @other_authors = + grep { + if ( ! exists $_->{9} ) { + $biblio_author_external->{ $row->{biblionumber} }++; + 0; + } elsif ( exists $auth_header->{ $_->{9} } ) { + 1; # from FFZXG + } else { + 0; + } + } + @{ $data->{700} }; + foreach my $auth ( @other_authors ) { my $authid = $auth->{9} || next; my $type = $auth->{4} || next; #die "no 4 in ",dump($data); @@ -289,6 +331,7 @@ debug 'type_stats' => $type_stats; debug 'skip' => $skip; debug 'biblio_year' => $biblio_year; debug 'biblio_data' => $biblio_data; +debug 'biblio_author_external' => $biblio_author_external; my $category_label; my $sth_categories = $dbh->prepare(q{ @@ -344,7 +387,9 @@ sub author_html { foreach my $category ( sort keys %{ $authors->{$authid}->{$type} } ) { my $label = $category_label->{$category} || 'Bez kategorije'; print $fh qq|

$label

\n\n|; @@ -389,7 +434,12 @@ foreach my $department ( sort keys %$auth_department ) { push @categories, keys %{ $authors->{$authid}->{sec} }; foreach my $category ( sort @categories ) { push @{ $department_category_author->{$department}->{$category} }, $authid; - push @{ $department_category_author->{''}->{$category} }, $authid if $department_in_sum->{$department}; + push @{ $department_category_author->{'AAA_ukupno'}->{$category} }, $authid if $department_in_sum->{$department}; + if ( my $group = $department_in_group->{ $department } ) { + push @{ $department_category_author->{$group}->{$category} }, $authid; + } else { + $skip->{'department_not_in_group'}->{ $department }++; + } } } } @@ -538,7 +588,9 @@ sub table_count { my @biblionumbers = @_; my $unique; $unique->{$_}++ foreach @biblionumbers; - $table->{$group}->[ $label2row->{ $label } ]->[ $department2col->{$department} ] = scalar keys %$unique; + my @bibs = keys %$unique; + $table->{ffzg}->{$group}->[ $label2row->{ $label } ]->[ $department2col->{$department} ] = scalar @bibs; + $table->{external}->{$group}->[ $label2row->{ $label } ]->[ $department2col->{$department} ] = scalar grep { $biblio_author_external->{$_} } @bibs; } foreach my $group ( '', keys %$azvo_group_title ) { @@ -590,29 +642,43 @@ foreach my $department ( @departments ) { debug 'table', $table; open(my $fh, '>:encoding(utf-8)', 'html/azvo.new'); +open(my $fh2, '>:encoding(utf-8)', 'html/azvo2.new'); + +sub print_fh { + print $fh @_; + print $fh2 @_; +} -print $fh html_title('AZVO tablica'); +print $fh html_title('AZVO tablica - FFZG'); +print $fh2 html_title('AZVO tablica - kolaboracija sa FFZG'); -foreach my $group ( keys %$table ) { +foreach my $group ( keys %{ $table->{ffzg} } ) { - print $fh "

$group

" if $group; + print_fh "

$group

" if $group; - print $fh "\n"; - print $fh ""; - print $fh "" foreach @departments; - print $fh "\n"; + print_fh "
$_
\n"; + print_fh ""; + print_fh "" foreach @departments; + print_fh "\n"; - foreach my $row ( 0 .. $#{ $table->{$group} } ) { - print $fh ""; - print $fh "" foreach 0 .. $#departments; - print $fh ""; + foreach my $row ( 0 .. $#{ $table->{ffzg}->{$group} } ) { + print_fh "\n"; + foreach ( 0 .. $#departments ) { + print_fh "\n" + } + print_fh "\n"; } - print $fh "
$_
", $report_labels[$row], "", $table->{$group}->[ $row ]->[ $_ ] || '', "
", $report_labels[$row], ""; + print $fh $table->{ffzg}->{$group}->[ $row ]->[ $_ ] || ''; + print $fh2 $table->{external}->{$group}->[ $row ]->[ $_ ] || ''; + print_fh "
\n"; + print_fh "\n"; } # group -print $fh html_end; +print_fh html_end; close($fh); +close($fh2); rename 'html/azvo.new', 'html/azvo.html'; +rename 'html/azvo2.new', 'html/azvo2.html';