[prev] [thread] [next] [lurker] [Date index for 2004/02/10]
------=_20040210122629_68119 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Hi, As currently written, the deferred message system doesn't make a note of which list a message is associated with, just which member. Now, although the record of plugins that is made indirectly holds this information, right now it is not the easiest thing you could do to get from a deferred message back to a list. Attached is a patch which makes the necessary changes to add this functionality. If you could take a look and give me some feedback when you have a chance i would be grateful. Ta -- Jody Belka knew (at) pimb (dot) org ------=_20040210122629_68119 Content-Type: text/x-patch; name="Siesta-0.66.defer-list.diff" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="Siesta-0.66.defer-list.diff" diff -rNu Siesta-0.66.orig/lib/Siesta/DBI.pm Siesta-0.66/lib/Siesta/DBI.pm --- Siesta-0.66.orig/lib/Siesta/DBI.pm 2003-10-17 15:18:24.000000000 +0200 +++ Siesta-0.66/lib/Siesta/DBI.pm 2004-02-10 12:40:07.000000000 +0100 @@ -131,6 +131,7 @@ id INTEGER PRIMARY KEY auto_increment, expires INTEGER, # epoch time at which it's considered dead who INTEGER NOT NULL, # who can release it + list INTEGER NOT NULL, # which list is it associated with why VARCHAR(255), # just a comment? plugins VARCHAR(255), # this could become too small, # in the case of extreme installs diff -rNu Siesta-0.66.orig/lib/Siesta/Deferred.pm Siesta-0.66/lib/Siesta/Deferred.pm --- Siesta-0.66.orig/lib/Siesta/Deferred.pm 2003-10-17 15:18:25.000000000 +0200 +++ Siesta-0.66/lib/Siesta/Deferred.pm 2004-02-10 12:35:47.000000000 +0100 @@ -4,6 +4,7 @@ __PACKAGE__->set_up_table('deferred'); __PACKAGE__->has_a(who => 'Siesta::Member' ); +__PACKAGE__->has_a(list => 'Siesta::List' ); __PACKAGE__->has_a(message => 'Siesta::Message', deflate => 'as_string', ); diff -rNu Siesta-0.66.orig/lib/Siesta/Message.pm Siesta-0.66/lib/Siesta/Message.pm --- Siesta-0.66.orig/lib/Siesta/Message.pm 2003-10-17 15:18:23.000000000 +0200 +++ Siesta-0.66/lib/Siesta/Message.pm 2004-02-10 12:40:43.000000000 +0100 @@ -6,7 +6,7 @@ use Carp qw( carp croak ); use Storable qw(dclone); use base qw( Email::Simple Class::Accessor::Fast ); -__PACKAGE__->mk_accessors(qw( plugins )); +__PACKAGE__->mk_accessors(qw( plugins list )); =head1 NAME @@ -44,6 +44,7 @@ $data =~ s/^From .+$//m; my $self = $class->SUPER::new( $data ); + $self->list( undef ); $self->plugins( [] ); return $self; } @@ -123,6 +124,7 @@ Siesta::Deferred->create({ @_, plugins => join(',', @{ $self->plugins } ), + list => $self->list, message => $self, }); } diff -rNu Siesta-0.66.orig/lib/Siesta/Plugin/Resume.pm Siesta-0.66/lib/Siesta/Plugin/Resume.pm --- Siesta-0.66.orig/lib/Siesta/Plugin/Resume.pm 2003-10-17 15:18:25.000000000 +0200 +++ Siesta-0.66/lib/Siesta/Plugin/Resume.pm 2004-02-10 13:05:41.000000000 +0100 @@ -16,6 +16,11 @@ # you don't own this message, so you can't resume it return 1; } + unless ($deferred->list eq $mail->list) { + # this message is intended for a different list, + # so you can't resume it + return 1; + } unless ( $deferred->hash eq $hash ) { # wrong magic cookie return 1; diff -rNu Siesta-0.66.orig/lib/Siesta.pm Siesta-0.66/lib/Siesta.pm --- Siesta-0.66.orig/lib/Siesta.pm 2003-10-17 15:35:51.000000000 +0200 +++ Siesta-0.66/lib/Siesta.pm 2004-02-10 12:33:21.000000000 +0100 @@ -60,6 +60,7 @@ my $list = Siesta::List->load( $args{list} ); $self->log("processing $action", 1); + $mail->list( $list ); $mail->plugins( [ $list->plugins( $action ) ] ); $mail->process; } diff -rNu Siesta-0.66.orig/t/09defer.t Siesta-0.66/t/09defer.t --- Siesta-0.66.orig/t/09defer.t 2003-10-17 15:18:23.000000000 +0200 +++ Siesta-0.66/t/09defer.t 2004-02-10 13:03:05.000000000 +0100 @@ -1,6 +1,6 @@ #!perl -w use strict; -use Test::More tests => 22; +use Test::More tests => 23; use lib qw(t/lib); use Siesta::Test; use Siesta; @@ -12,6 +12,9 @@ is( $message->subject, "yoohoo", " on which the subject is correct" ); +my $list = Siesta::List->load('dealers'); +$message->list($list); + my @deferred = Siesta::Deferred->retrieve_all; is( scalar @deferred, 0, "we have no deferred messages" ); @@ -29,6 +32,7 @@ is( $def->message->subject, "yoohoo", "deferred message has correct subject" ); is( $def->why, "the hell of it", "deferred message has correct deferred reason" ); is( $def->id, $id, "id matches" ); +is( $def->list, $list, "list matches" ); $def = Siesta::Deferred->retrieve($id); ok( $def, "fetch via id" ); @@ -61,7 +65,7 @@ ## start and defer -my $list = Siesta::List->find_or_create({ +$list = Siesta::List->find_or_create({ name => 'defer', owner => $user, post_address => 'spangly', diff -rNu Siesta-0.66.orig/t/10plugin_membersonly.t Siesta-0.66/t/10plugin_membersonly.t --- Siesta-0.66.orig/t/10plugin_membersonly.t 2003-10-17 15:18:23.000000000 +0200 +++ Siesta-0.66/t/10plugin_membersonly.t 2004-02-10 13:00:28.000000000 +0100 @@ -24,6 +24,7 @@ yoohoo MAIL +$mail->list($list); my $list_id = $list->name; my $mail_from = $mail->from; ------=_20040210122629_68119--
Generated at 13:56 on 01 Jul 2004 by mariachi 0.52