[prev] [thread] [next] [lurker] [Date index for 2004/04/06]
Author: richardc Date: 2004-04-06 17:27:35 +0100 (Tue, 06 Apr 2004) New Revision: 1508 Modified: trunk/siesta/TODO trunk/siesta/lib/Template/Plugin/Siesta.pm Log: force subscriptions to go via the sub pipeline Modified: trunk/siesta/TODO =================================================================== --- trunk/siesta/TODO 2004-04-06 16:03:54 UTC (rev 1507) +++ trunk/siesta/TODO 2004-04-06 16:27:35 UTC (rev 1508) @@ -24,8 +24,6 @@ =head3 setting prefs - constrained input based on type field -=head3 subscription should invoke the sub queue, not do the subscribe itself - =head2 Integration with Mariachi password-protected archives should be easy via the mod_perl handler Modified: trunk/siesta/lib/Template/Plugin/Siesta.pm =================================================================== --- trunk/siesta/lib/Template/Plugin/Siesta.pm 2004-04-06 16:03:54 UTC (rev 1507) +++ trunk/siesta/lib/Template/Plugin/Siesta.pm 2004-04-06 16:27:35 UTC (rev 1508) @@ -88,43 +88,38 @@ unless (defined $pass1) { $self->error("Passwords must be at least $MIN_PASS long"); + return; } if ( defined($pass1) && defined($pass2) && $pass1 ne $pass2) { $self->error("Password and confirmation must match"); + return; } - my $user = Siesta::Member->load($email); - if ($user) { - $self->error("This email address is already subscribed"); - } + my $user = Siesta::Member->load( $email ) ||= + Siesta::Member->create({ email => $email, password => $pass1 }); # should return a list of the ticked checkboxes need to confirm # they are public lists, as you shouldnt be able to sub to private # lists before you are subscribed I guess. my @subscriptions = $self->cgi->param('subscribe'); - $user ||= Siesta::Member->create({ email => $email }); - $user->password($pass1); - $user->update; - foreach my $list_name (@subscriptions) { - #print "list name $list_name"; - my($list) = Siesta::List->load( $list_name ); - unless ($list) { - $self->error( "Failed to find a list called $list_name" ); - next; - } - $list->add_member($user); + my $list = Siesta::List->load( $list_name ); + my $sub_address = $list->address( 'sub' ); + eval { + Siesta->process( + action => 'sub', + list => $list_name, + mail => <<END, +From: $email +To: $sub_address +Subject: Web subscription - my $mail = Siesta::Message->new(); - $mail->reply( to => $list->owner->email, - from => $list->address( 'bounce' ), - subject => 'web subscription', - body => Siesta->bake('subscribe_notify', - list => $list, - user => $user, - message => $mail ), - ); +Little pig, little pig, let me in +END + ); + }; + $self->error( $@ ) if $@; } return 1; # success }
Generated at 13:57 on 01 Jul 2004 by mariachi 0.52