View | Details | Raw Unified | Return to bug 3216
Collapse All | Expand All

(-)a/C4/Koha.pm (-62 / +56 lines)
Lines 678-772 sub getFacets { Link Here
678
    if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) {
678
    if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) {
679
        $facets = [
679
        $facets = [
680
            {
680
            {
681
                link_value  => 'su-to',
681
                idx   => 'su-to',
682
                label_value => 'Topics',
682
                label => 'Topics',
683
                tags        =>
683
                tags  => [ qw/ 600a 601a 602a 603a 604a 605a 606ax 610a/ ],
684
                  [ '600', '601', '602', '603', '604', '605', '606', '610' ],
684
                sep   => ' - ',
685
                subfield => 'a',
686
            },
685
            },
687
            {
686
            {
688
                link_value  => 'su-geo',
687
                idx   => 'su-geo',
689
                label_value => 'Places',
688
                label => 'Places',
690
                tags        => ['651'],
689
                tags  => [ qw/ 651a / ],
691
                subfield    => 'a',
690
                sep   => ' - ',
692
            },
691
            },
693
            {
692
            {
694
                link_value  => 'su-ut',
693
                idx   => 'su-ut',
695
                label_value => 'Titles',
694
                label => 'Titles',
696
                tags        => [ '500', '501', '502', '503', '504', ],
695
                tags  => [ qw/ 500a 501a 502a 503a 504a / ],
697
                subfield    => 'a',
696
                sep   => ', ',
698
            },
697
            },
699
            {
698
            {
700
                link_value  => 'au',
699
                idx   => 'au',
701
                label_value => 'Authors',
700
                label => 'Authors',
702
                tags        => [ '700', '701', '702', ],
701
                tags  => [ qw/ 700ab 701ab 702ab / ],
703
                subfield    => 'a',
702
                sep   => ', ',
704
            },
703
            },
705
            {
704
            {
706
                link_value  => 'se',
705
                idx   => 'se',
707
                label_value => 'Series',
706
                label => 'Series',
708
                tags        => ['225'],
707
                tags  => [ qw/ 225a / ],
709
                subfield    => 'a',
708
                sep   => ', ',
710
            },
709
            },
711
            ];
710
        ];
712
711
        my $library_facet = {
713
            my $library_facet;
712
            idx   => 'branch',
714
713
            label => 'Libraries',
715
            $library_facet = {
714
            tags  => [ qw/ 995b / ],
716
                link_value  => 'branch',
715
            expanded => '1',
717
                label_value => 'Libraries',
716
        };
718
                tags        => [ '995', ],
717
        push @$facets, $library_facet unless C4::Context->preference("singleBranchMode");
719
                subfield    => 'b',
720
                expanded    => '1',
721
            };
722
            push @$facets, $library_facet unless C4::Context->preference("singleBranchMode");
723
    }
718
    }
724
    else {
719
    else {
725
        $facets = [
720
        $facets = [
726
            {
721
            {
727
                link_value  => 'su-to',
722
                idx   => 'su-to',
728
                label_value => 'Topics',
723
                label => 'Topics',
729
                tags        => ['650'],
724
                tags  => [ qw/ 650a / ],
730
                subfield    => 'a',
725
                sep   => '--',
731
            },
726
            },
732
733
            #        {
727
            #        {
734
            #        link_value => 'su-na',
728
            #        idx   => 'su-na',
735
            #        label_value => 'People and Organizations',
729
            #        label => 'People and Organizations',
736
            #        tags => ['600', '610', '611'],
730
            #        tags  => [ qw/ 600a 610a 611a / ],
737
            #        subfield => 'a',
731
            #        sep   => 'a',
738
            #        },
732
            #        },
739
            {
733
            {
740
                link_value  => 'su-geo',
734
                idx   => 'su-geo',
741
                label_value => 'Places',
735
                label => 'Places',
742
                tags        => ['651'],
736
                tags  => [ qw/ 651a / ],
743
                subfield    => 'a',
737
                sep   => '--',
744
            },
738
            },
745
            {
739
            {
746
                link_value  => 'su-ut',
740
                idx   => 'su-ut',
747
                label_value => 'Titles',
741
                label => 'Titles',
748
                tags        => ['630'],
742
                tags  => [ qw/ 630a / ],
749
                subfield    => 'a',
743
                sep   => '--',
750
            },
744
            },
751
            {
745
            {
752
                link_value  => 'au',
746
                idx   => 'au',
753
                label_value => 'Authors',
747
                label => 'Authors',
754
                tags        => [ '100', '110', '700', ],
748
                tags  => [ qw/ 100a 110a 700a / ],
755
                subfield    => 'a',
749
                sep   => ', ',
756
            },
750
            },
757
            {
751
            {
758
                link_value  => 'se',
752
                idx   => 'se',
759
                label_value => 'Series',
753
                label => 'Series',
760
                tags        => [ '440', '490', ],
754
                tags  => [ qw/ 440a 490a / ],
761
                subfield    => 'a',
755
                sep   => ', ',
762
            },
756
            },
763
            ];
757
            ];
764
            my $library_facet;
758
            my $library_facet;
765
            $library_facet = {
759
            $library_facet = {
766
                link_value  => 'branch',
760
                idx   => 'branch',
767
                label_value => 'Libraries',
761
                label => 'Libraries',
768
                tags        => [ '952', ],
762
                tags  => [ qw/ 952b / ],
769
                subfield    => 'b',
763
                sep   => ', ',
770
                expanded    => '1',
764
                expanded    => '1',
771
            };
765
            };
772
            push @$facets, $library_facet unless C4::Context->preference("singleBranchMode");
766
            push @$facets, $library_facet unless C4::Context->preference("singleBranchMode");
(-)a/C4/Search.pm (-29 / +21 lines)
Lines 469-514 sub getRecords { Link Here
469
                if ( !$scan && $servers[ $i - 1 ] =~ /biblioserver/ ) {
469
                if ( !$scan && $servers[ $i - 1 ] =~ /biblioserver/ ) {
470
470
471
                    my $jmax = $size>$facets_maxrecs? $facets_maxrecs: $size;
471
                    my $jmax = $size>$facets_maxrecs? $facets_maxrecs: $size;
472
472
                    for my $facet ( @$facets ) {
473
                    for ( my $k = 0 ; $k <= @$facets ; $k++ ) {
474
                        ($facets->[$k]) or next;
475
                        my @fcodes = @{$facets->[$k]->{'tags'}};
476
                        my $sfcode = $facets->[$k]->{'subfield'};
477
478
		                for ( my $j = 0 ; $j < $jmax ; $j++ ) {
473
		                for ( my $j = 0 ; $j < $jmax ; $j++ ) {
479
		                    my $render_record = $results[ $i - 1 ]->record($j)->render();
474
		                    my $render_record = $results[ $i - 1 ]->record($j)->render();
480
                            my @used_datas = ();
475
                            my @used_datas = ();
481
476
                            foreach my $tag ( @{$facet->{tags}} ) {
482
                            foreach my $fcode (@fcodes) {
483
484
                                # avoid first line
477
                                # avoid first line
485
                                my $field_pattern = '\n'.$fcode.' ([^\n]+)';
478
                                my $tag_num = substr($tag, 0, 3);
479
                                my $letters = substr($tag, 3);
480
                                my $field_pattern = '\n' . $tag_num . ' ([^\n]+)';
486
                                my @field_tokens = ( $render_record =~ /$field_pattern/g ) ;
481
                                my @field_tokens = ( $render_record =~ /$field_pattern/g ) ;
487
488
                                foreach my $field_token (@field_tokens) {
482
                                foreach my $field_token (@field_tokens) {
489
                                    my $subfield_pattern = '\$'.$sfcode.' ([^\$]+)';
483
                                    my @subf = ( $field_token =~ /\$([a-zA-Z0-9]) ([^\$]+)/g );
490
                                    my @subfield_values = ( $field_token =~ /$subfield_pattern/g );
484
                                    my @values;
491
485
                                    for (my $i = 0; $i < @subf; $i += 2) {
492
                                    foreach my $subfield_value (@subfield_values) {
486
                                        if ( $letters =~ $subf[$i] ) {
493
487
                                             my $value = $subf[$i+1];
494
                                        my $data = $subfield_value;
488
                                             $value =~ s/^ *//;
495
                                        $data =~ s/^\s+//; # trim left
489
                                             $value =~ s/ *$//;
496
                                        $data =~ s/\s+$//; # trim right
490
                                             push @values, $value;
497
498
                                        unless ( $data ~~ @used_datas ) {
499
                                            $facets_counter->{ $facets->[$k]->{'link_value'} }->{$data}++;
500
                                            push @used_datas, $data;
501
                                        }
491
                                        }
502
                                    } # subfields
492
                                    }
493
                                    my $data = join($facet->{sep}, @values);
494
                                    unless ( $data ~~ @used_datas ) {
495
                                        $facets_counter->{ $facet->{idx} }->{$data}++;
496
                                        push @used_datas, $data;
497
                                    }
503
                                } # fields
498
                                } # fields
504
                            } # field codes
499
                            } # field codes
505
                        } # records
500
                        } # records
506
501
                        $facets_info->{ $facet->{idx} }->{label_value} = $facet->{label};
507
                        $facets_info->{ $facets->[$k]->{'link_value'} }->{'label_value'} = $facets->[$k]->{'label_value'};
502
                        $facets_info->{ $facet->{idx} }->{expanded} = $facet->{expanded};
508
                        $facets_info->{ $facets->[$k]->{'link_value'} }->{'expanded'} = $facets->[$k]->{'expanded'};
509
                    } # facets
503
                    } # facets
510
                }
504
                }
511
                # End PROGILONE
512
            }
505
            }
513
506
514
            # warn "connection ", $i-1, ": $size hits";
507
            # warn "connection ", $i-1, ": $size hits";
515
- 

Return to bug 3216