[prev] [thread] [next] [lurker] [Date index for 2005/02/04]
Author: richardc
Date: 2005-02-04 04:26:32 +0000 (Fri, 04 Feb 2005)
New Revision: 1811
Modified:
branches/Email-Store-Readonly/Email-Store/lib/Email/Store/List.pm
branches/Email-Store-Readonly/Email-Store/t/01basic.t
Log:
stop Email::Store::List munging the messages
Modified: branches/Email-Store-Readonly/Email-Store/lib/Email/Store/List.pm
===================================================================
--- branches/Email-Store-Readonly/Email-Store/lib/Email/Store/List.pm 2005-02-04 04:24:26 UTC (rev 1810)
+++ branches/Email-Store-Readonly/Email-Store/lib/Email/Store/List.pm 2005-02-04 04:26:32 UTC (rev 1811)
@@ -24,16 +24,12 @@
my $list = $class->_detect($simple) or return;
my $subject = $simple->header("Subject");
my $name = $list->name;
- if ($subject =~ s/\[\Q$name\E\]\s*//ig) {
- $simple->header_set("Subject", $subject);
- $mail->message($simple->as_string);
- $mail->update;
- }
- $list->add_to_posts({mail => $mail->id});
+ $subject =~ s/\[\Q$name\E\]\s*//ig;
+ $list->add_to_posts({mail => $mail->id, subject => $subject});
}
sub on_seen_duplicate_order { 1 }
-sub on_seen_duplicate {
+sub on_seen_duplicate {
my ($class, $mail, $orig) = @_;
my $new_list = $class->_detect($orig) or return;
$new_list->add_to_posts({mail => $mail->id})
@@ -45,7 +41,7 @@
package Email::Store::List::Post;
use base 'Email::Store::DBI';
Email::Store::List::Post->table("list_post");
-Email::Store::List::Post->columns(All => qw/id mail list/);
+Email::Store::List::Post->columns(All => qw/id mail list subject/);
Email::Store::List::Post->columns(Primary => qw/id/);
# Relationships
@@ -54,6 +50,15 @@
Email::Store::List->has_many(posts => [ "Email::Store::List::Post" => "mail" ]);
Email::Store::Mail->has_many(lists => [ "Email::Store::List::Post" => "list" ]);
+# XXX is there some Class::DBI magic for this?
+sub Email::Store::Mail::list_subject {
+ my $self = shift;
+ my ($post) = Email::Store::List::Post->search({mail => $self->id});
+ return $self->simple->header('subject') unless $post;
+ return $post->subject;
+}
+
+
package Email::Store::List;
1;
@@ -66,7 +71,7 @@
# Look for cross-posts in perl6-internals
my ($p6i) = Email::Store::List->search( name => "perl6-internals" );
@mails = $p6i->posts;
-
+
for my $mail (@mails) {
print "Mail ".$mail->message_id." cross-posted to ".$_->name."\n"
for grep {$_ != $p6i} $mail->lists;
@@ -98,5 +103,6 @@
CREATE TABLE IF NOT EXISTS list_post (
id integer NOT NULL auto_increment primary key,
list integer,
- mail varchar(255)
+ mail varchar(255),
+ subject varchar(255)
);
Modified: branches/Email-Store-Readonly/Email-Store/t/01basic.t
===================================================================
--- branches/Email-Store-Readonly/Email-Store/t/01basic.t 2005-02-04 04:24:26 UTC (rev 1810)
+++ branches/Email-Store-Readonly/Email-Store/t/01basic.t 2005-02-04 04:26:32 UTC (rev 1811)
@@ -1,4 +1,5 @@
-use Test::More tests => 20;
+# -*- cperl -*-
+use Test::More tests => 21;
use File::Slurp;
BEGIN { unlink("t/test.db"); }
use Email::Store "dbi:SQLite:dbname=t/test.db";
@@ -19,8 +20,11 @@
isa_ok($simple, "Email::Simple");
is($simple, $mails[0]->simple, "Email::Simple objects should be singleton");
-# Subject munged correctly
-is($simple->header("Subject"), "ttree problems - the sequel", "Subject had relevant bits removed");
+# munged subject available as list_subject
+is($mails[0]->list_subject, "ttree problems - the sequel",
+ "list_subject has list bits removed");
+is($simple->header("Subject"), "[Templates] ttree problems - the sequel",
+ "actual subject line is unmunged");
# And one list:
my @lists = Email::Store::List->retrieve_all;
@@ -46,5 +50,5 @@
# Dates:
my $date;
ok($date = $mails[0]->date );
-is (($date - $date->tzoffset)->ymd,"2000-11-28");
-is (($date - $date->tzoffset)->hms,"21:15:46");
+is (($date - $date->tzoffset)->ymd,"2000-11-28");
+is (($date - $date->tzoffset)->hms,"21:15:46");
Generated at 05:00 on 04 Feb 2005 by mariachi 0.52