version=pmwiki-2.1.11 ordered=1 urlencoded=1
agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5
author=TeganDowling
csum=typo
ctime=1149115706
host=69.131.28.243
name=PmWiki.Notify
rev=14
targets=PmWiki.Variables,PmWiki.LocalCustomizations,PmWiki.PageLists,PmWiki.PagelistsExplained,PmWiki.WikiTrails,PmWiki.DocumentationIndex
text=%25audience%25 administrators (basic)]%0a%3c%3c|[[PmWiki.Variables]]|>>%0a%0aThe ''notify.php'' script allows a site administrator to configure PmWiki to send email messages whenever pages are changed on the wiki site.  Notifications can be configured so that multiple page changes over a short period of time are combined into a single email message (to avoid flooding mailboxes).%0a%0aThis feature is useful for sites and pages that have infrequent updates, as it eliminates the need to frequently check `RecentChanges pages just to see if anything has changed.%0a%0aIn order for notifications to work, the notify.php script must be enabled in the site's [[local customization(s)]].  Usually this is as simple as placing the following in ''local/config.php'':%0a%0a    $EnableNotify = 1;%0a%0aOnce enabled, the notification system gets its configuration from the Site.NotifyList page.  The Site.NotifyList page contains entries of the form:%0a%0a    notify=alice@example.com%0a%0aThis says that information about page changes should be periodically emailed to ''alice@example.com''.  The Site.NotifyList page can contain multiple "notify=" lines to cause notifications to be sent to multiple addresses; the "notify=" lines can be concealed by placing them inside of an [@(:if false:)@] conditional section on the page.%0a%0aA number of options exist for limiting the pages that result in a notification.  The [@group=@] and [@name=@] parameters can be used to restrict notifications to specific pages or groups:%0a%0a    # send notifications about the Main group to alice@example.com%0a    notify=alice@example.com group=Main%0a%0a    # notify bob@example.com of any changes to the home page%0a    notify=bob@example.com name=Main.HomePage%0a%0a    # notify charles@example.com of changes to pages except in Main%0a    notify=charles@example.com group=-Main%0a%0a(Note: It looks like these are using [[PmWiki/PageLists | the usual PageList syntax]].  [[PmWiki/PagelistsExplained | More info on PageList syntax here]]. -- XES)%0a%0aFor maintaining arbitrary lists of pages, i.e., "watchlists", it's generally easier to build a [[trail -> WikiTrails]] of pages to be watched.  The following entry in Site.NotifyList will send alice@example.com an email containing changes to any of the pages listed in the Profiles.Alice trail:%0a%0a    # notify Alice of changes to pages listed in Profiles.Alice%0a    notify=alice@example.com trail=Profiles.Alice%0a%0aNote that once this entry has been added to Site.NotifyList, Alice can easily change her watchlist by editing the Profiles.Alice page, and doesn't need to edit the Site.NotifyList page.  In particular, this means that an administrator can restrict editing of Site.NotifyList, yet allow individuals to maintain custom watchlists in other pages. %0a%0aLimitations of this feature:%0a* only manually-added links on a trail will be acknowleged by the Notify List (no "group=" or other pagelist syntax, nor any "Group.RecentChanges" links, will generate notifications)%0a* using an [@(:include:)@] directive on the page Site.NotifyList is not an operational work-around.%0a%0aThis is probably a good place to point out that edit access to Site.NotifyList should be controlled, otherwise malicious persons can use the notification capability to flood others' electronic mailboxes.  By default, Site.Notify is blocked against edits except by the admin (as is the case for most pages in the Site group).  It may also be useful to place a read password on the Site.NotifyList page, to restrict the availability of email addresses from spam harvesters.%0a%0a%0a!! Controlling notification frequency%0a%0aTo prevent flooding of recipients' mailboxes, the notify script uses a "squelch" value as the minimum amount of time that must elapse between messages sent to any given email address.  The ''default squelch setting is 10800 (three hours)'', which means that once a recipient address is sent a notification message, it will not receive another for at least three hours.  Any edits that occur during the squelch interval are queued for the next notification message.%0a%0aThe site administrator can change the default squelch interval via the $NotifySquelch parameter %0a%0a    # enable notifications%0a    $EnableNotify = 1;%0a    $NotifySquelch = 86400;    # wait at least one day between notifications%0a%0aIn addition, individual addresses can specify a custom squelch parameter in the Site.NotifyList page:%0a%0a    # Alice receives at most one email per day%0a    notify=alice@example.com squelch=86400%0a%0a    # Bob can get notifications hourly%0a    notify=bob@example.com trail=Profiles.Bob squelch=3600%0a%0a    # Charles uses the site default squelch%0a    notify=charles@example.com %0a%0aBecause a page will often receive several edits in rapid succession (e.g., a long post followed by several minor edits), a site administrator can also set a $NotifyDelay value that specifies how long to wait after an initial post before sending notifications:%0a%0a    # enable notifications%0a    $EnableNotify = 1;%0a    $NotifySquelch = 86400;    # wait at least one day between notifications%0a    $NotifyDelay = 300;        # wait five minutes after initial post%0a%0aNote that the squelch and delay values are minimums; notifications are sent on the first execution of PmWiki after the delay period has expired.  For inactive sites, this could be much longer than the specified delay periods.  This isn't really considered an issue since timely notifications are less important on relatively inactive sites.  (Active sites will%0agenerally receive timely notifications.)%0a%0a!!Note for Windows installations%0a%0aSites running PHP under Windows may not have PHP's [[http://www.php.net/mail | mail]] function configured correctly.  Such sites may need to add a line like%0a%0a    ini_set('SMTP','smtp.server.com');%0a%0ato ''config.php'', where ''smtp.server.com'' is the name of your host's preferred outgoing mail server.%0a%0a!![[#variables]] Notify Variables%0a%0a%3c%3c|[[Variables]]|>>%0a%0a:$EnableNotify:Tells ''stdconfig.php'' to enable the notify script.%0a        $EnableNotify = 1;          # enable notify%0a        $EnableNotify = 0;          # disable notify%0a%0a:$NotifyFrom:Return email address to be used in the sent email.%0a        $NotifyFrom = 'wiki@example.com';%0a        $NotifyFrom = 'Wiki server %3cwiki@example.com>';%0a%0a:$NotifyDelay:The length of time (seconds) to wait before sending mail after the first post.  Defaults to zero - posts are sent as soon as any squelch period has expired.%0a        $NotifyDelay = 300;    # send mail 5+ min after first post%0a%0a:$NotifySquelch:The default minimum time (seconds) that must elapse between sending mail messages.  Useful when $NotifyDelay is set to a small value to keep the number of mail notification messages down.  Defaults to 10800 (three hours).  Individual recipients can override this value in the Site.NotifyList page.%0a        $NotifySquelch = 43200;  # wait 12+ hours between mailings%0a%0a:$NotifyItemFmt:The text to be sent for each changed item in the post.  The string "$PostTime" is substituted with the time of the post (controlled by $NotifyTimeFmt below).%0a        # default%0a        $NotifyItemFmt = ' * $FullName . . . $PostTime by $Author';%0a%0a        # include the page's URL in the message%0a        $NotifyItemFmt =%0a          " * \$FullName . . . \$PostTime by \$Author\n     \$PageUrl";%0a%0a        # include the change summary and link to the page's history in the message%0a        $NotifyItemFmt = %0a          " * {\$FullName} . . . \$PostTime by {\$Author}%0a          \n    Summary: {\$LastModifiedSummary}\n    {\$PageUrl}?action=diff";%0a%0a%0a:$NotifyTimeFmt:The format for dates/times in $PostTime above.  Defaults to the value of $TimeFmt.%0a        $NotifyTimeFmt = '%25Y-%25m-%25d %25H:%25M';  # 2004-03-20 17:44%0a%0a:$NotifyBodyFmt:The body of the message to be sent.  The string "$NotifyItems" is replaced with the list of posts (as formatted by $NotifyItemFmt above).%0a%0a:$NotifySubjectFmt:The subject line of the mail to be sent.%0a%0a:$NotifyHeaders:String of extra mail headers to be passed to the mail() function.%0a%0a:$NotifyParameters:String of additional parameters to be passed to PHP's mail() function [[http://www.php.net/mail|#]].%0a%0a:$NotifyFile:The scratch file where Notify keeps track of recent posting information.  Defaults to @@[="$WikiDir/.notifylist"=]@@.  Note that this file must generally be writable by the webserver process.%0a%0a:$NotifyListPageFmt:The name of the page containing [@notify=@] lines for use by ''notify.php''.  Defaults to [@{$SiteGroup}.NotifyList@].%0a%0a:$NotifyList:An array of [@notify=@] specifications that can be specified from a local customization file (used in addition to entries in Site.NotifyList).%0a        # send notifications to alice@example.com%0a        $NotifyList[] = 'notify=alice@example.com';%0a%0a%25trail%25 %3c%3c|[[DocumentationIndex]]|>>%0a%0a
time=1154299586
