/[mws]/trunk/MWS.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 /trunk/MWS.pm

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

revision 25 by dpavlin, Sat May 8 16:06:58 2004 UTC revision 43 by dpavlin, Tue May 11 15:36:51 2004 UTC
# Line 4  package MWS; Line 4  package MWS;
4    
5  use strict;  use strict;
6  use warnings;  use warnings;
 use Carp;  
7    
8    use lib '.';
9    
10    use Carp;
11  use Mail::Box::Manager;  use Mail::Box::Manager;
12  use Config::IniFiles;  use Config::IniFiles;
13  use POSIX qw(strftime);  use POSIX qw(strftime);
# Line 16  use Date::Parse; Line 18  use Date::Parse;
18  use POSIX qw(strftime);  use POSIX qw(strftime);
19  use MIME::Base64;  use MIME::Base64;
20    
 #use MWS_plucene;  
 use MWS_swish;  
   
 require Exporter;  
   
 our @ISA = qw(Exporter);  
   
 our %EXPORT_TAGS = ();  
 our @EXPORT_OK;  
 our @EXPORT;  
   
21  our $VERSION = '1.00';  our $VERSION = '1.00';
22    
23  my $folder;     # placeholder for folders  my $debug = 1;
24    
25  my $debug = 2;  my @counters = qw(from to cc bcc folder);
26    
27  sub new {  sub new {
28          my $class = shift;          my $class = shift;
29          my $self = {};          my $self = {@_};
30          bless($self, $class);          bless($self, $class);
31    
         my $config_file = shift || die "need index file";  
32    
33          $self->{config} = new Config::IniFiles( -file => $config_file );          my $config_name = $self->{config_file} || croak "need config_file";
34            $config_name =~ s/\.conf.*$//;
35            $self->{config_name} = $config_name;
36    
37            $self->{config} = new Config::IniFiles( -file => $self->{config_file} );
38    
39          my $index_file = $self->{config}->val('global', 'index') || croak "can't find [index] section in config file with path of index";          my $index_dir = $self->{config}->val('global', 'index') || croak "can't find [index] section in config file with path of index";
40    
41          $self->{mgr} = Mail::Box::Manager->new(access => 'r');          $self->{mgr} = Mail::Box::Manager->new(access => 'r');
42          $self->{index_file} = $index_file;          $self->{index_dir} = $index_dir;
43    
44          # placeholder for opened folders          # placeholder for opened folders
45          $self->{folder} = {};          $self->{folder} = {};
# Line 87  sub add_counter($$) { Line 81  sub add_counter($$) {
81          my ($c,$v) = @_;          my ($c,$v) = @_;
82          my $k = $self->normalize_string($v);          my $k = $self->normalize_string($v);
83    
84          $self->{counter}->{$c}->{$k}->{name} = $v;          $self->{counter}->{$c}->{$k}->{name} = $v || return;
85          return $self->{counter}->{$c}->{$k}->{usage}++;          return $self->{counter}->{$c}->{$k}->{usage}++;
86  }  }
87    
# Line 112  sub fmtdate { Line 106  sub fmtdate {
106                  push @out, sprintf($f, $v);                  push @out, sprintf($f, $v);
107          }          }
108    
109  print STDERR "fmtdate: ",join('|',@out),"\n";          print STDERR "fmtdate: ",join('|',@out),"\n" if ($debug == 2);
110    
111          return (wantarray ? @out : join("-",@out));          return (wantarray ? @out : join("-",@out));
112  }  }
# Line 156  sub open_folder { Line 150  sub open_folder {
150    
151                  print STDERR "about to open_folder($mbox)\n" if ($debug == 2);                  print STDERR "about to open_folder($mbox)\n" if ($debug == 2);
152    
153                  $self->{folder}->{$mbox} = $self->{mgr}->open($mbox_path) || croak "can't open folder $mbox at '$mbox_path': $!";                  $self->{folder}->{$mbox} = $self->{mgr}->open($mbox_path, lock_type => 'none') || croak "can't open folder $mbox at '$mbox_path': $!";
154    
155                  print STDERR "open_folder($mbox) ok\n" if ($debug);                  print STDERR "open_folder($mbox) ok\n" if ($debug);
156          }          }
# Line 331  sub plain_text_body { Line 325  sub plain_text_body {
325          }          }
326    
327          if (! $body) {          if (! $body) {
328                  $body = "[body of this message not found]\n" if ($debug == 2);                  $body = "[plain/text body not found]" if ($debug == 2);
329                  $body .= $message->decoded->string;                  print STDERR "plain/text body not found\n" if ($debug);
330                    return;
331          }          }
332    
333          # reformat with Text::Autoformat          # reformat with Text::Autoformat
334          my $wrap = $self->{wrap_margin};          my $wrap = $self->{wrap_margin};
335          if ($wrap && $body && $body =~ m/^.{$wrap}..*$/m) {          if ($wrap && $body && $body =~ m/^.{$wrap}..*$/m) {
336                  $body = autoformat($body, {right=>$wrap, all=>1});                  $body = autoformat($body, {right=>$wrap, all=>1});
                 print "reformatted [$wrap]:\n$body\n" if ($debug == 2);  
337                  $body .="\n[reformated using autoformat, margin at $wrap]" if ($debug == 2);                  $body .="\n[reformated using autoformat, margin at $wrap]" if ($debug == 2);
338          }          }
339    
# Line 362  sub fetch_result_by_id { Line 356  sub fetch_result_by_id {
356    
357                  $row->{'id'} = $id;                  $row->{'id'} = $id;
358    
359                  foreach my $p (qw(from to cc bcc)) {                  foreach my $p (@counters) {
360                          foreach my $v ($self->unroll($message,$p,'phrase')) {                          foreach my $v ($self->unroll($message,$p,'phrase')) {
361                                  push @{$row->{$p}},$v;                                  push @{$row->{$p}},$v;
362                                  $self->add_counter($p,$v);                                  $self->add_counter($p,$v);
363                          }                          }
364                  }                  }
365    
366                    $self->add_counter('folder', $1) if ($id =~ m/^(\S+)\s/);
367    
368                  $row->{'subject'} = $self->decode_qp($message->subject);                  $row->{'subject'} = $self->decode_qp($message->subject);
369                  $row->{'body'} = $self->plain_text_body($message);                  $row->{'body'} = $self->plain_text_body($message);
370                  my $utime = str2time($message->date);                  my $utime = str2time($message->date);
# Line 382  sub fetch_result_by_id { Line 379  sub fetch_result_by_id {
379                  print STDERR "$id stored in cache\n" if ($debug == 2);                  print STDERR "$id stored in cache\n" if ($debug == 2);
380          } else {          } else {
381                  print STDERR "fetch_result_by_id($id) in cache\n" if ($debug == 2);                  print STDERR "fetch_result_by_id($id) in cache\n" if ($debug == 2);
382                  foreach my $p (qw(from to cc bcc)) {                  foreach my $p (@counters) {
383                          foreach my $v (@{$row->{$p}}) {                          foreach my $v (@{$row->{$p}}) {
384                                  $self->add_counter($p,$v);                                  $self->add_counter($p,$v);
385                          }                          }
386                  }                  }
387    
388                    $self->add_counter('folder', $1) if ($id =~ m/^(\S+)\s/);
389    
390                  $self->add_counter_calendar($row->{date_utime});                  $self->add_counter_calendar($row->{date_utime});
391          }          }
392    

Legend:
Removed from v.25  
changed lines
  Added in v.43

  ViewVC Help
Powered by ViewVC 1.1.26