/[webpac2]/Webpacus/lib/Webpacus/Controller/Results.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /Webpacus/lib/Webpacus/Controller/Results.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 133 by dpavlin, Thu Nov 24 16:30:11 2005 UTC revision 150 by dpavlin, Fri Nov 25 19:19:55 2005 UTC
# Line 5  use warnings; Line 5  use warnings;
5  use base qw/Catalyst::Controller/;  use base qw/Catalyst::Controller/;
6  use Data::Dumper;  use Data::Dumper;
7    
8    # specify all Hyper Estraier operators which should stop this module
9    # from splitting search query and joining it with default operator
10    my $hest_op_regex = qr/(:?\[(:?BW|EW|RX)\]|AND|OR|ANDNOT)/;
11    
12  =head1 NAME  =head1 NAME
13    
14  Webpacus::Controller::Results - Display results from WebPAC  Webpacus::Controller::Results - Display results from WebPAC
# Line 26  Catalyst Controller. Line 30  Catalyst Controller.
30  =cut  =cut
31    
32  sub default : Private {  sub default : Private {
33      my ( $self, $c ) = @_;          my ( $self, $c ) = @_;
   
     my $webpac = $c->comp('Model::WebPAC');  
     my $params = $c->req->params;  
     my $log = $c->log;  
   
     $log->debug("results got params: " . Dumper( $params ) );  
   
     my @attr;  
     my @words;  
     # default operator to join fields/words  
     my $operator = 'AND';  
   
     foreach my $f (keys %{ $params }) {  
   
         next if ($f =~ m/^_/o);  
34    
35          my $v = $params->{$f} || next;          my $webpac = $c->comp('Model::WebPAC');
36            my $params = $c->req->params;
37          if (my $op = $params->{ '_' . $f}) {          my $log = $c->log;
38                  push @words, join(" $op ", split(/\s+/, $v) );  
39          } else {          $log->debug("results got params: " . Dumper( $params ) );
40                  push @words, $v;  
41            my @attr;
42            my @words;
43            # default operator to join fields/words
44            my $operator = 'AND';
45    
46            foreach my $f (keys %{ $params }) {
47    
48                    next if ($f =~ m/^_/o);
49    
50                    my $v = $params->{$f} || next;
51    
52                    if (my $op = $params->{ '_' . $f}) {
53                            if ($v =~ $hest_op_regex) {
54                                    # don't split words if there is Hyper Estraier
55                                    # operator in them
56                                    push @words, $v;
57                            } else {
58                                    push @words, join(" $op ", split(/\s+/, $v) );
59                            }
60                    } else {
61                            push @words, $v;
62                    }
63    
64                    next if ($f eq 'all');  # don't add_attr for magic field all
65    
66                    if ($v !~ /\s/) {
67                            push @attr, "$f ISTRINC $v";
68                    } else {
69                            map {
70                                    push @attr, "$f ISTRINC $_";
71                            } grep { ! $hest_op_regex } split(/\s+/, $v);
72                    }
73          }          }
74    
         next if ($f eq 'all');  # don't add_attr for magic field all  
   
         if ($v !~ /\s/) {  
                 push @attr, "$f ISTRINC $v";  
         } else {  
                 map { push @attr, "$f ISTRINC $_"; } split(/\s+/, $v);  
         }  
     }  
   
75          my $q = join(" $operator ", @words);          my $q = join(" $operator ", @words);
76    
77      $c->stash->{html_results} = sub {          my $template = $params->{'_template'};
78          my $res = $webpac->search( $q, $params->{'_template'}, \@attr );          $log->debug("using template $template");
79  #       $log->debug("controller got " . ( $#{$res} + 1 ) . " results for '$q' " . Dumper( $res ));  
80          return $res;          $c->stash->{html_results} = sub {
81      };                  my $res = $webpac->search(
82                            phrase => $q,
83                            template => $template,
84                            add_attr => \@attr
85                    );
86            #       $log->debug("controller got " . ( $#{$res} + 1 ) . " results for '$q' " . Dumper( $res ));
87                    return $res;
88            };
89    
90      $c->stash->{phrase} = $q;          $c->stash->{phrase} = $q;
91      $c->stash->{attr} = \@attr;          $c->stash->{attr} = \@attr;
92    
93      $c->stash->{template} = 'results.tt';          $c->stash->{template} = 'results.tt';
94  }  }
95    
96  =back  =back

Legend:
Removed from v.133  
changed lines
  Added in v.150

  ViewVC Help
Powered by ViewVC 1.1.26