diff --git a/lib/documentmanagement/documentutil.inc.php b/lib/documentmanagement/documentutil.inc.php
index a58b414..8089fe6 100644
--- a/lib/documentmanagement/documentutil.inc.php
+++ b/lib/documentmanagement/documentutil.inc.php
@@ -786,10 +786,12 @@ $sourceDocument->getName(),
$oUploadChannel->sendMessage(new KTUploadGenericMessage(_kt('Sending subscriptions')));
// fire subscription alerts for the checked in document
- $oSubscriptionEvent = new SubscriptionEvent();
- $oFolder = Folder::get($oDocument->getFolderID());
- $oSubscriptionEvent->AddDocument($oDocument, $oFolder);
-
+ // TODO : better way of checking if its a bulk upload
+ if($_SERVER['PATH_INFO'] != "ktcore.actions.folder.bulkUpload") {
+ $oSubscriptionEvent = new SubscriptionEvent();
+ $oFolder = Folder::get($oDocument->getFolderID());
+ $oSubscriptionEvent->AddDocument($oDocument, $oFolder);
+ }
$oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
$aTriggers = $oKTTriggerRegistry->getTriggers('add', 'postValidate');
diff --git a/lib/import/bulkimport.inc.php b/lib/import/bulkimport.inc.php
index d6d823c..76a2d10 100644
--- a/lib/import/bulkimport.inc.php
+++ b/lib/import/bulkimport.inc.php
@@ -40,6 +40,8 @@
require_once(KT_LIB_DIR . '/foldermanagement/folderutil.inc.php');
require_once(KT_LIB_DIR . '/documentmanagement/documentutil.inc.php');
require_once(KT_LIB_DIR . '/filelike/filelikeutil.inc.php');
+// // Jarrett Jordaan: Deal with bulk uploads
+require_once(KT_LIB_DIR . '/subscriptions/subscriptions.inc.php');
class KTBulkImportManager {
var $oStorage;
@@ -78,12 +80,18 @@ class KTBulkImportManager {
if (PEAR::isError($aDocPaths)) {
return $aDocPaths;
}
+ $oDocObjects = array();
foreach ($aDocPaths as $sDocumentPath) {
$res = $this->_importdocument($oFolder, $sDocumentPath);
if (PEAR::isError($res)) {
return $res;
}
+ $oDocObjects[] = $res;
}
+ // Jarrett Jordaan: Deal with bulk uploads
+ $oSubscriptionEvent = new SubscriptionEvent();
+ $oSubscriptionEvent->notifyBulkDocumentUpload($oDocObjects, $oFolder);
+
$aFolderPaths = $this->oStorage->listFolders($sPath);
if (PEAR::isError($aFolderPaths)) {
return $aFolderPaths;
diff --git a/lib/subscriptions/subscriptions.inc.php b/lib/subscriptions/subscriptions.inc.php
index e56bb80..d9766b8 100644
--- a/lib/subscriptions/subscriptions.inc.php
+++ b/lib/subscriptions/subscriptions.inc.php
@@ -95,6 +95,72 @@ class SubscriptionEvent {
* Every attempt is made to be as explicit as possible.
*/
+ /*
+ * Notification of bulk upload
+ * Author : Jarrett Jordaan
+ * Date : 27/04/09
+ *
+ * @params : KTDocumentUtil $oDocObjects
+ * KTFolderUtil $oParentFolder
+ */
+ function notifyBulkDocumentUpload($oDocObjects, $oParentFolder) {
+ $content = new SubscriptionContent(); // needed for i18n
+ $parentId = $oParentFolder->getId();
+ $aUsers = $this->_getSubscribers($parentId, $this->subscriptionTypes["Folder"]);
+ $this->bulkNotification($aUsers, 'AddDocument', $oDocObjects, $parentId);
+ }
+
+ /*
+ * Bulk upload email notification handler
+ * Author : Jarrett Jordaan
+ * Date : 27/04/09
+ *
+ * @params : User $aUsers
+ * string $eventType
+ * KTDocumentUtil $oDocObjects
+ * int $parentId
+ */
+ function bulkNotification($aUsers, $eventType, $oDocObjects, $parentId) {
+ $content = new SubscriptionContent(); // needed for i18n
+ $locationName = Folder::generateFullFolderPath($parentId);
+ $userId = $_SESSION['userID'];
+ foreach ($aUsers as $oSubscriber) {
+ $userNotifications = array();
+ $aNotificationOptions = array();
+ $userSubscriberId = $oSubscriber->getID();
+ $emailAddress = $oSubscriber->getEmail();
+ foreach($oDocObjects as $oDocObject) {
+ $targetName = $oDocObject->getName();
+ $objectId = $oDocObject->getId();
+ $aNotificationOptions['target_user'] = $userSubscriberId;
+ $aNotificationOptions['actor_id'] = $userId;
+ $aNotificationOptions['target_name'] = $targetName;
+ $aNotificationOptions['location_name'] = $locationName;
+ $aNotificationOptions['object_id'] = $objectId;
+ $aNotificationOptions['event_type'] = $eventType;
+ $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);
+ $userNotifications[] = $oNotification;
+ }
+ $eContent = '';
+ $eSubject = '';
+ // now the email content.
+ // might not be a good idea to notify on each file
+ //foreach($userNotifications as $userNotification) {
+ // $eContent .= $content->getEmailAlertContent($userNotification)."
";
+ // Might be an over kill subject
+ //$eSubject .= $content->getEmailAlertSubject($userNotification)." ";
+ //}
+ // Better subject header with just the modified folder location
+ $eSubject = "KnowledgeTree: Subscription notification for Bulk Upload In Folder \"$locationName\"";
+ $eContent = "KnowledgeTree: Subscription notification for Bulk Upload In Folder \"$locationName\"";
+ if($eContent != '' && $eSubject != '') {
+ //echo $eContent;
+ $oEmail = new EmailAlert($emailAddress, $eSubject, $eContent);
+ $oEmail->send();
+ }
+ }
+ }
+
// alerts users who are subscribed to $iParentFolderId.
function AddFolder($oAddedFolder, $oParentFolder) {
$content = new SubscriptionContent(); // needed for i18n