administrators (basic)
The 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).
This 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.
In order for notifications to work, the notify.php script must be enabled in the site's local customization. Usually this is as simple as placing the following in local/config.php:
$EnableNotify
= 1;
Once enabled, the notification system gets its configuration from the SiteAdmin.NotifyList? page. The SiteAdmin.NotifyList page contains entries of the form:
notify=alice@example.com
This says that information about page changes should be periodically emailed to alice@example.com. The SiteAdmin.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.
NOTE: Do not put any spaces around the equal sign! Notifications will fail silently if you have
notify = fred@example.com
rather than
notify=fred@example.com
A 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:
# send notifications about the Main group to alice@example.com notify=alice@example.com group=Main # notify bob@example.com of any changes to the home page notify=bob@example.com name=Main.HomePage # notify charles@example.com of changes to pages except in Main notify=charles@example.com group=-Main
(Note: It looks like these are using the usual PageList syntax. More info on PageList syntax here. -- XES)
For maintaining arbitrary lists of pages, i.e., "watchlists", it's generally easier to build a trail of pages to be watched. The following entry in SiteAdmin.NotifyList will send alice@example.com an email containing changes to any of the pages listed in the Profiles.Alice trail:
# notify Alice of changes to pages listed in Profiles.Alice notify=alice@example.com trail=Profiles.Alice
Note that once this entry has been added to SiteAdmin.NotifyList, Alice can easily change her watchlist by editing the Profiles.Alice page, and doesn't need to edit the SiteAdmin.NotifyList page. In particular, this means that an administrator can restrict editing of SiteAdmin.NotifyList, yet allow individuals to maintain custom watchlists in other pages.
Limitations of this feature:
(:include:)
directive on the page SiteAdmin.NotifyList is not an operational work-around.
This is probably a good place to point out that edit access to SiteAdmin.NotifyList should be controlled, otherwise malicious persons can use the notification capability to flood others' electronic mailboxes. By default, SiteAdmin.Notify is blocked against reading or edits except by the admin (as is the case for most pages in the SiteAdmin group).
Notification entries can also be added via the $NotifyList
array in local/config.php. Simply add a line like the following:
$EnableNotify
= 1;$NotifyList
[] = 'notify=alice@example.com group=Main';$NotifyList
[] = 'notify=bob@example.com name=Main.HomePage';
To 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.
The site administrator can change the default squelch interval via the $NotifySquelch
parameter
# enable notifications$EnableNotify
= 1;$NotifySquelch
= 86400; # wait at least one day between notifications
In addition, individual addresses can specify a custom squelch parameter in the SiteAdmin.NotifyList page:
# Alice receives at most one email per day notify=alice@example.com squelch=86400 # Bob can get notifications hourly notify=bob@example.com trail=Profiles.Bob squelch=3600 # Charles uses the site default squelch notify=charles@example.com
Because 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:
# enable notifications$EnableNotify
= 1;$NotifySquelch
= 86400; # wait at least one day between notifications$NotifyDelay
= 300; # wait five minutes after initial post
Note 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. However, changes within the squelch time after the last notification will remain unnoticed if the wiki is not even visited for a long period after. If this matters it might be necessary to make the server call pmwiki.php regularly (e.g. cron job).
Custom delay parameters cannot be specified for individual addresses in the SiteAdmin.NotifyList page.
Sites running PHP under Windows may not have PHP's mail function configured correctly. Such sites may need to add a line like
ini_set('SMTP','smtp.server.com');
to config.php, where smtp.server.com is the name of your host's preferred outgoing mail server. You may also need to set the sendmail_from value if that is not configured:
ini_set('sendmail_from','noreply@foo.com');
<< Link Variables | Variables | Other Variables >>
$EnableNotify
$EnableNotify
= 1; # enable notify$EnableNotify
= 0; # disable notify
$NotifyFrom
$NotifyFrom
= 'wiki@example.com';$NotifyFrom
= 'Wiki server <wiki@example.com>';
$NotifyDelay
$NotifyDelay
= 300; # send mail 5+ min after first post
$NotifySquelch
$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 SiteAdmin.NotifyList page.
$NotifySquelch
= 43200; # wait 12+ hours between mailings
$NotifyItemFmt
$NotifyTimeFmt
below).
# default$NotifyItemFmt
= ' * $FullName . . . $PostTime by$Author
'; # include the page's URL in the message$NotifyItemFmt
= " * \$FullName . . . \$PostTime by \$Author
\n \$PageUrl"; # include the change summary and link to the page's history in the message$NotifyItemFmt
= " * {\$FullName} . . . \$PostTime by {\$Author
} \n Summary: {\$LastModifiedSummary}\n {\$PageUrl}?action=diff";
$NotifyTimeFmt
$TimeFmt
.
$NotifyTimeFmt
= 'm-H:%M'; # 2004-03-20 17:44
$NotifyBodyFmt
$NotifyItemFmt
above). Use single quotation marks ' to prevent substring "$NotifyItems" from being untimely evaluated as variable in config.php.
$NotifyBodyFmt
= "Changed items:\n\n" . '$NotifyItems' . "\n\n Best regards...";
$NotifySubjectFmt
$NotifyHeaders
$NotifyParameters
$NotifyFile
"$WikiDir/.notifylist"
. Note that this file must generally be writable by the webserver process.
$NotifyListPageFmt
notify=
lines for use by notify.php. Defaults to $SiteAdminGroup.NotifyList
.
$NotifyList
notify=
specifications that can be specified from a local customization file (used in addition to entries in SiteAdmin.NotifyList).
# send notifications to alice@example.com
$NotifyList
[] = 'notify=alice@example.com';
<< Blocklist | DocumentationIndex | Web feeds >>
< Link Variables | Variables | Other Variables >
This page may have a more recent version on pmwiki.org: PmWiki:Notify, and a talk page: PmWiki:Notify-Talk.