|
Cookbook /
NotifyOnUploadSummary: Generates notifications also on upload events
Version: 0.1
Prerequisites: pmwiki 2.1.7 or higher;
$EnableNotify = 1;Status: quick hack
Maintainer: ThomasP
Categories: Uploads
Questions answered by this recipe
DescriptionThis is a quick hack to trigger a mail notification every time an upload has taken place (successfully). The notification is channeled via the standard notify mechanism, so the options of that apply. This recipe introduces a further format variable $NotifyUploadItemFmt with which the appearance of the upload notification can be specified. NotesFor easy contribution/bug fixing, I have included the code as wiki text below. If you would like to contribute, go ahead. Release NotesCurrently there exists one version, tested with pmwiki 2.1.11. It should work from pmwiki 2.1.7 (2006-05-31) onwards.
CommentsSee Also
ContributorsCodeBelow is the code of the current version, possibly amended/modified to add features / fix bugs. If you would like to contribute, please add your change and write a short summary below. If you want to download a stable version, rather use one of the "official" releases above.
<?php if (!defined('PmWiki')) exit();
// This is a quick hack to enable notifications on (successfull)
// uploads. It was tested under pmwiki 2.1.11 (Aug 2006),
// with SecureAtachments and UploadVersioning enabled.
// Note: this solution may not work properly in future versions
// of pmwiki if the interfaces of the notify functions change.
//
// Installation: copy this file into your cookbook dir and add
// the common include_once('cookbook/notifyOnUploads.php'); to
// your local/config.php.
//
// Ver 0.1, Aug 2006, ThomasP
// Tap (smoothly!) into the HandleUpload control flow: first save
// the original HandleUpload function ...
SDV($HandleActions['upload'], 'HandleUpload');
$NOUdefaultHandleUploadFunc = $HandleActions['upload'];
// ... then set my new function
$HandleActions['upload'] = 'HandleUploadWithNoties';
// Have a custom NotifyItem format:
SDV($NotifyUploadItemFmt,
' * {$FullName} . . . $PostTime by {$LastModifiedBy} (uploaded/updated $Upfilename)');
function HandleUploadWithNoties($pagename, $auth = 'upload') {
global $IsPagePosted, $NotifyItemFmt, $NotifyUploadItemFmt,
$NOUdefaultHandleUploadFunc;
// first call original handler:
$NOUdefaultHandleUploadFunc($pagename, $auth);
// now check if we were successful:
if (@$_REQUEST['upresult'] == 'success') {
// save original IsPagePosted value and NotifyItem format:
$NOUisPagePostedSaved = $IsPagePosted;
$NOUnotifyItemFmtSaved = $NotifyItemFmt;
// set them to values such that everything goes through as we want
// (triggers a new notify item in the format specifed above):
$IsPagePosted = true;
$NotifyItemFmt = $NotifyUploadItemFmt;
// dont forget to replace some $variables in Fmt: (a kind of pre FmtPageName)
$NotifyItemFmt = str_replace('$Upfilename', $_REQUEST['uprname'], $NotifyItemFmt);
// shoot the bullet:
NotifyUpdate($pagename, getcwd());
// restore original isPagePost value:
$IsPagePosted = $NOUisPagePostedSaved;
$NotifyItemFmt = $NOUnotifyItemFmtSaved;
}
}
Corrected error in the comments. ThomasP August 14, 2006, at 04:48 PM |