Notify On Change
[
Credits: Charles Nepote,
Wikini∞ ]
This simple patch, adapted from a
suggestion∞ made by Charles Nepote on
Wikini∞, allows the administrator or an arbitrary list of registered users to monitor the wiki and be notified by email each time a page is edited. The patch uses the php built-in mail() function and should simply be inactive if the function is not enabled on the server.
Watch out!: consider that each edited page generates an email, so add this patch at your own risk.
How to install the notification function:
1. Add the following line to
wakka.config.php:
"notify_users" =>"DarTar, OtherUser",
2. Add the following code in
handlers/page/edit.php just before
//forward
if (function_exists('mail') &&
$this->
config["notify_users"]) {
$Watchers =
explode(",",
$this->
config["notify_users"]);
if ($pages =
$this->
LoadRevisions($this->
tag)) {
$c =
0;
$diff =
$this->
GetPageTag() .
"/diff?";
foreach ($pages as $page) {
$c++;
if ($c <=
3) {
if ($c ==
1) $diff .=
"a=".
$page["id"];
if ($c ==
2) $diff .=
"&b=".
$page["id"];
}
}
}
foreach ($Watchers as $Watcher) {
$MailAdr =
$this->
LoadSingle("select email from " .
$this->
config["table_prefix"].
"users where name = '".mysql_escape_string
($Watcher).
"'");
$subject =
"[".
$this->
config["wakka_name"].
"] The page \"" .
$this->
GetPageTag() .
"\" has been edited by " .
$this->
GetUserName();
$message =
"<p>Hi, " .
$Watcher .
"</p>";
$message .=
"<p>The following page has been edited : <a
href=\"".
$this->
Href("",
$tag,
"").
"\">".
$this->
Href("",
$tag,
"").
"<a></p>";
if ($pages) $message .=
"<p>Modifications : <a href=\"".
$this->
Href("",
$diff,
"").
"\">".
$this->
Href("",
$diff,
"").
"<a></p>";
$message .=
"<p>-- The ".
$this->
config["wakka_name"].
" robot</p>";
$headers =
"From: " .
$this->
config["wakka_name"] .
"_notifier\n";
$headers .=
"X-Mailer: PHP/".phpversion
().
"\n";
//mailer
$headers .=
"X-Priority: 3\n";
//1 UrgentMessage, 3 Normal
//comment this to send text format
$headers .=
"Content-Type: text/html; charset=iso-8859-1\n";
mail($MailAdr["email"],
$subject,
$message,
$headers);
}
}
--
DarTar
Since I like to test with a '
SandBox' page, but dont want emails sent for edits to this page, I changed the first line of the above code to the following:
if (function_exists('mail') &&
$this->
config["notify_users"] &&
($this->
GetPageTag() !=
'SandBox')) {
Other than this small change, I love this feature.
--
AdamCrews
CategoryUserContributions