/[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 23 by dpavlin, Sat May 8 02:21:50 2004 UTC revision 42 by dpavlin, Mon May 10 22:04:01 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          my $index_file = $self->{config}->val('global', 'index') || croak "can't find [index] section in config file with path of index";          $self->{config} = new Config::IniFiles( -file => $self->{config_file} );
38    
39            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 330  sub plain_text_body { Line 324  sub plain_text_body {
324                  }                  }
325          }          }
326    
327            if (! $body) {
328                    $body = "[plain/text body not found]" if ($debug == 2);
329                    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) {
                 $body =~ s/[\r\n]/\n/gs;  
336                  $body = autoformat($body, {right=>$wrap, all=>1});                  $body = autoformat($body, {right=>$wrap, all=>1});
337                  $body .="\n[reformated using autoformat, margin at $wrap]" if ($debug == 2);                  $body .="\n[reformated using autoformat, margin at $wrap]" if ($debug == 2);
338          }          }
# Line 357  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 377  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.23  
changed lines
  Added in v.42

  ViewVC Help
Powered by ViewVC 1.1.26