/[webpac2]/Webpacus/lib/Webpacus/Model/WebPAC.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

Annotation of /Webpacus/lib/Webpacus/Model/WebPAC.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 119 - (hide annotations)
Wed Nov 23 21:52:35 2005 UTC (18 years, 5 months ago) by dpavlin
File size: 3276 byte(s)
 r9077@llin:  dpavlin | 2005-11-23 22:53:39 +0100
 cleanup

1 dpavlin 92 package Webpacus::Model::WebPAC;
2    
3     use strict;
4     use warnings;
5     use lib '/data/webpac2/lib';
6 dpavlin 93 use base qw/
7     Catalyst::Model
8     /;
9 dpavlin 92 use Data::Dumper;
10 dpavlin 95 use WebPAC::DB;
11     use WebPAC::Output::TT;
12 dpavlin 116 use WebPAC::Search::Estraier 0.02;
13 dpavlin 92
14     =head1 NAME
15    
16     Webpacus::Model::WebPAC - Catalyst Model
17    
18     =head1 SYNOPSIS
19    
20     See L<Webpacus> and L<WebPAC>.
21    
22     =head1 DESCRIPTION
23    
24     Catalyst Model for access to WebPAC data.
25    
26     =head2 new
27    
28     Configuration for hyperestraier in C<config.yaml> like this:
29    
30     --- #YAML:1.0
31     # DO NOT USE TABS FOR INDENTATION OR label/value SEPARATION!!!
32    
33     # configuration for hyper estraier full text search engine
34     hyperestraier:
35 dpavlin 96 url: 'http://localhost:1978/node/webpac2'
36     user: 'admin'
37     passwd: 'admin'
38 dpavlin 92
39 dpavlin 96 webpac:
40     db_path: '/data/webpac2/db'
41     template_path: '/data/webpac2/conf/output/tt'
42     template: 'html_ffzg_results_short.tt'
43     # encoding comming from webpac
44     webpac_encoding: 'iso-8859-2'
45     # encoding expected by Catalyst
46     out_encoding: 'UTF-8'
47    
48 dpavlin 92 =cut
49    
50     sub new {
51     my ( $self, $c, $config ) = @_;
52    
53     $self = $self->NEXT::new($c, $config);
54     $self->config($config);
55    
56     my $log = $c->log;
57 dpavlin 94 $self->{log} = $log;
58 dpavlin 92
59 dpavlin 93 my $est_cfg = $c->config->{hyperestraier};
60     $est_cfg->{'log'} = $log;
61 dpavlin 92
62 dpavlin 93 $log->debug("using config:" . Dumper($est_cfg) );
63 dpavlin 92
64 dpavlin 93 $self->{est} = new WebPAC::Search::Estraier( %{ $est_cfg } );
65 dpavlin 92
66 dpavlin 95 my $db_path = $c->config->{webpac}->{db_path};
67     my $template_path = $c->config->{webpac}->{template_path};
68    
69     $log->debug("using db path '$db_path', template path '$template_path'");
70    
71     $self->{db} = new WebPAC::DB(
72     path => $db_path,
73     read_only => 1,
74     );
75    
76     $self->{out} = new WebPAC::Output::TT(
77     include_path => $template_path,
78     filters => { foo => sub { shift } },
79     );
80    
81 dpavlin 101 # default template from config.yaml
82 dpavlin 95 $self->{template} ||= $c->config->{webpac}->{template};
83    
84 dpavlin 96 $self->{iconv} = new Text::Iconv(
85     $c->config->{webpac}->{webpac_encoding},
86     $c->config->{webpac}->{out_encoding}
87     );
88    
89 dpavlin 100 $log->debug("converting encoding from webpac_encoding '" .
90     $c->config->{webpac}->{webpac_encoding} .
91     "' to '" .
92     $c->config->{webpac}->{out_encoding} .
93 dpavlin 99 "'"
94     );
95 dpavlin 96
96 dpavlin 92 return $self;
97    
98     }
99    
100 dpavlin 93 sub search {
101 dpavlin 119 my ( $self, $query, $template, $add_attr ) = @_;
102 dpavlin 93
103 dpavlin 95 my $log = $self->{log};
104 dpavlin 94
105 dpavlin 119 $log->debug("search model query: '$query', add_attr: '" . join("','", @{$add_attr}) . "'");
106 dpavlin 95
107 dpavlin 101 my $template_filename = $template || $self->{template};
108 dpavlin 95
109 dpavlin 93 my @results = $self->{est}->search(
110 dpavlin 116 phrase => $query,
111     get_attr => [ '@uri' ],
112 dpavlin 93 max => 100,
113 dpavlin 119 add_attr => $add_attr,
114 dpavlin 93 );
115    
116 dpavlin 99 $log->debug("loading " . ($#results + 1) . " results");
117    
118 dpavlin 100 my @html_results;
119    
120 dpavlin 95 for my $i ( 0 .. $#results ) {
121    
122     my $mfn = $1 if ( $results[$i]->{'@uri'} =~ m#/(\d+)$#);
123    
124 dpavlin 115 #$log->debug("load_ds( $mfn )");
125 dpavlin 95
126 dpavlin 115 my $ds = $self->{db}->load_ds( $mfn ) || $log->error("can't load_ds( $mfn )") && next;
127 dpavlin 100
128 dpavlin 115 #$log->debug( "ds = " . Dumper( \@html_results ) );
129    
130 dpavlin 100 my $html = $self->{out}->apply(
131 dpavlin 95 template => $template_filename,
132     data => $ds,
133 dpavlin 100 );
134    
135     $html = $self->{iconv}->convert( $html ) || $log->error("can't convert: $html");
136    
137     push @html_results, $html;
138    
139 dpavlin 95 }
140    
141 dpavlin 115 #$log->debug( '@html_results = ' . Dumper( \@html_results ) );
142    
143 dpavlin 100 return \@html_results;
144 dpavlin 93 }
145    
146    
147    
148    
149 dpavlin 92 =head1 AUTHOR
150    
151     Dobrica Pavlinusic
152    
153     =head1 LICENSE
154    
155     This library is free software, you can redistribute it and/or modify
156     it under the same terms as Perl itself.
157    
158     =cut
159    
160     1;

  ViewVC Help
Powered by ViewVC 1.1.26