NotifyOnUpload
$EnableNotify
= 1;Questions answered by this recipe
Description
This 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.
Code
Below 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; } }
Notes
For easy contribution/bug fixing, I have included the code as wiki text below. If you would like to contribute, go ahead.
Release Notes
- Currently there exists one version, tested with pmwiki 2.1.11. It should work from pmwiki 2.1.7 (2006-05-31) onwards.
- Corrected error in the comments. ThomasP August 14, 2006, at 04:48 PM
- notifyOnUpload.phpΔ (ver0.1, 2006-08-14)
See Also
- This recipe is a solution for 00785.
- RecentUploadsLog -- a recipe to list uploaded files in RecentChanges -like pages.
Contributors
Comments
See Discussion at NotifyOnUpload-Talk?
User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.