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

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

Return to bug 3216