Re: [siesta-dev] First cut at digests

[prev] [thread] [next] [lurker] [Date index for 2004/04/08]

From: Simon Wistow
Subject: Re: [siesta-dev] First cut at digests
Date: 12:01 on 08 Apr 2004
On Mon, Apr 05, 2004 at 07:29:26PM +0100, Richard Clamp said:
> I imagine we can refactor and wrap the make a digest code out, so then
> we write something small like:
> 
> # send_daily_digests
> use Siesta;
> for my $digest ( Siesta::Plugin->search(name => "Digest") ) {
>     my @send_to = grep { 
>        $digest->member($_); 
>        $digest->pref( 'digest' );
>     } $digest->list->members;
>     # ... send
> }

And, of course, it's the '# ... send' bit that's tricky. Or at least 
tricky to get right if I understand it correctly.

Basically we want to restart the pipeline with all the plugins after 
+Digest.

It basically boils down to the same problem as a Deferred message which 
makes me wonder if we could leverage that.

The other option is to make send something like (untested)



 for my $digest ( Siesta::Plugin->search(name => "Digest") ) {

    $digest->send_to($digest->make_digest());
	# nuke the digest store
	# ...
	# NOTE: this should be all be rafactored in the Digest plugin

    my $list   = Siesta::List->load( $digest->list );

	my @plugins =  $list->plugins( $action );
	# get rid of all plugins except those before +Digest
	while (1) { 
		my $plugin = shift; 
		last
		if ($plugin->name eq 'Digest' && $plugin->personal);
	}	

	# would one need to replace the first plugin?
	# $plugins[0] = $digest;

    $mail->plugins( [ @plugins] );
    $mail->process;

}


There's stuff above here

Generated at 13:56 on 01 Jul 2004 by mariachi 0.52