[pmwiki-users] Email notification on a page change
Marco Ferretti
marco.ferretti at gmail.com
Thu Mar 2 17:46:18 CST 2006
On Thursday 02 March 2006 23:44, Patrick R. Michaud wrote:
> Replying to myself here as I think further...
>
> On Thu, Mar 02, 2006 at 03:48:49PM -0600, Patrick R. Michaud wrote:
> >
> > So, what we *really* want is to generalize MailPosts (which already
> > handles the "wait and batch changes before sending" aspect) so that
> > it can handle arbitrary watch lists.
> >
> > And perhaps watch lists should be specified using pagelist parameters,
> > [...]
> > But that might be too much work for the system to keep up with --
> > I'll have to think about it a bit.
>
> I'm not so sure it's so much work. Originally I was thinking
> of implementing this with (:pagelist:), which is expensive,
> but if we just process the parameters directly then it's not bad
> at all.
>
> So, let's look at a model very similar to MailPosts except it's
> configured using a Site.NotifyList configuration page instead of
> config.php. If the page ends up containing email addresses, then
> it's read-only except to the administrator to keep the spam harvesters
> at bay (or perhaps the email addresses are simply obfuscated, which is
> very easy to manage in this case).
>
> This gets a little complex (because I'm just figuring it out as we go),
> so bear with me a bit here.
>
> First, the Site.NotifyList page contains lines that indicate the type
> of notifications people have indicated they want to receive. The
> lines look like argument lists to pagelist (even though they're not),
> thus we end up with specifications such as
>
> 1. Notify Alice of any changes to the site:
>
> mailto=alice at example.com
>
> 2. Notify Bob of any changes to pages in the "Books" group:
>
> mailto=bob at example.com group=Books list=normal
>
> 3. Notify Carol of changes to any of the pages listed on the
> "Profiles.Carol" trail:
>
> mailto=carol at example.com trail=Profiles.Carol
>
> 4. Notify Dave of any changes to pages in the Skins category:
>
> mailto=dave at example.com link=Category.Skins
>
> 5. Notify Carol of changes to any pages that link to her Profiles
> page, but don't send any messages more frequently than once per day:
>
> mailto=carol at example.com link=Profiles.Carol squelch=86400
>
>
> The #3 option above, using trail=, becomes the mechanism whereby
> most non-admins can easily maintain a "watch list" of pages on which to
> receive notifications. Essentially, we create an "?action=watchlist"
> that is used to add entries to the Site.NotifyList. (Admins can of
> course edit the Site.NotifyList page directly.)
>
> Let's take the example where Carol wants to use Profiles.Carol as
> a watchlist trail. Carol goes to the Profiles.Carol page, and adds
> "?action=watchlist" to the url. This presents a form that asks
> her for her email address, and she submits "carol at example.com".
> (The form can also provide options to set the minimum time between
> notifications, the amount of time to wait after changes before
> sending a notify message, etc.)
>
> After Carol submits her form, PmWiki then generates a random key,
> and places the information about her requests into a file corresponding
> to the random key. It also sends a message to carol at example.com
> containing a link back to the site containing the random key --
> i.e., something like
>
> http://www.example.com/pmwiki?action=watchlist&key=1234567890
>
> When Carol follows the link, PmWiki knows that she successfully
> received the email message, so it can then add her request
> (trail=Profiles.Carol) to the list on the Site.NotifyLists page.
>
> Note that Carol only needs to do this step once -- once she has
> her trail on the Site.NotifyList page, she can subscribe or unsubscribe
> to pages simply by editing the Profiles.Carol page. (Anyone with
> edit access to Profiles.Carol can change her list, so she might want
> to password-protect it.)
>
> Of course, any page can be used as a source trail for this, so if
> Carol really just wants to watch the Books group, she could use
>
> http://www.example.com/pmwiki/Books/RecentChanges?action=watchlist
>
> and go through the email verification process for that.
>
>
> So, that's the user-interface, what goes on behind the scenes? Well,
> when someone saves a page, PmWiki goes through the Site.NotifyList
> page to find out which notify lines encompass the changed page,
> checking for a match of any list=, trail=, group=, name=, etc.
> options that happen to be present. When it finds a match, it
> adds an entry in a .notifyposts (similar to .mailposts) file
> containing the page name, the time of the change, and the email
> address to be notified. The email isn't immediately sent -- we
> just keep track that one is queued to be sent.
>
> Then, at random intervals (again, using a similar algorithm to what
> MailPosts uses now), PmWiki batches up the entries from .notifyposts
> and sends out email messages to whoever is supposed to receive them.
> It also "holds off" sending anything to someone who has requested
> delays between messages, or a minimum number of messages, or whatever
> batching criteria we want to add.
>
> This seems like a pretty good approach, at least initially. It
> gives us very flexible configuration of mailposts and per-user
> notify lists. It also doesn't require a lot in the way of performing
> searches, and spreads the load of processing mailposts over many
> requests (and doesn't increase latency for visitors to the site).
>
> Comments, thoughts, for anyone who managed to get this far...?
>
> Pm
I must admit that I am positively impressed !
Unfortunately, I am a very freshmen of this tool so, in order to be of some
help in coding, I'd have to get to know the tool better. Where can I go 4
documentation that help me understand the way pmwiki works ?
I'd really like to help ( specially in this topic since I started it ) ...
sincerely,
Marco
p.s. :
Patrick nice job with your experiments !
--
Excellent day to have a rotten day.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : /pipermail/pmwiki-users/attachments/20060303/a533ba19/attachment.bin
More information about the pmwiki-users
mailing list