Commit 4ab25e4f4368677857aeb70096d36e4e14a9840a

Authored by jjordaan
1 parent a46e0c7d

KTS-4252: Bulk Upload Notication sends single email to subscribed user

Committed by: Jarrett Jordaan

Reviewed by: Megan Watson
lib/documentmanagement/documentutil.inc.php
... ... @@ -786,10 +786,12 @@ $sourceDocument->getName(),
786 786  
787 787 $oUploadChannel->sendMessage(new KTUploadGenericMessage(_kt('Sending subscriptions')));
788 788 // fire subscription alerts for the checked in document
789   - $oSubscriptionEvent = new SubscriptionEvent();
790   - $oFolder = Folder::get($oDocument->getFolderID());
791   - $oSubscriptionEvent->AddDocument($oDocument, $oFolder);
792   -
  789 + // TODO : better way of checking if its a bulk upload
  790 + if($_SERVER['PATH_INFO'] != "ktcore.actions.folder.bulkUpload") {
  791 + $oSubscriptionEvent = new SubscriptionEvent();
  792 + $oFolder = Folder::get($oDocument->getFolderID());
  793 + $oSubscriptionEvent->AddDocument($oDocument, $oFolder);
  794 + }
793 795 $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
794 796 $aTriggers = $oKTTriggerRegistry->getTriggers('add', 'postValidate');
795 797  
... ...
lib/import/bulkimport.inc.php
... ... @@ -40,6 +40,8 @@
40 40 require_once(KT_LIB_DIR . '/foldermanagement/folderutil.inc.php');
41 41 require_once(KT_LIB_DIR . '/documentmanagement/documentutil.inc.php');
42 42 require_once(KT_LIB_DIR . '/filelike/filelikeutil.inc.php');
  43 +// // Jarrett Jordaan: Deal with bulk uploads
  44 +require_once(KT_LIB_DIR . '/subscriptions/subscriptions.inc.php');
43 45  
44 46 class KTBulkImportManager {
45 47 var $oStorage;
... ... @@ -78,12 +80,18 @@ class KTBulkImportManager {
78 80 if (PEAR::isError($aDocPaths)) {
79 81 return $aDocPaths;
80 82 }
  83 + $oDocObjects = array();
81 84 foreach ($aDocPaths as $sDocumentPath) {
82 85 $res = $this->_importdocument($oFolder, $sDocumentPath);
83 86 if (PEAR::isError($res)) {
84 87 return $res;
85 88 }
  89 + $oDocObjects[] = $res;
86 90 }
  91 + // Jarrett Jordaan: Deal with bulk uploads
  92 + $oSubscriptionEvent = new SubscriptionEvent();
  93 + $oSubscriptionEvent->notifyBulkDocumentUpload($oDocObjects, $oFolder);
  94 +
87 95 $aFolderPaths = $this->oStorage->listFolders($sPath);
88 96 if (PEAR::isError($aFolderPaths)) {
89 97 return $aFolderPaths;
... ...
lib/subscriptions/subscriptions.inc.php
... ... @@ -95,6 +95,72 @@ class SubscriptionEvent {
95 95 * Every attempt is made to be as explicit as possible.
96 96 */
97 97  
  98 + /*
  99 + * Notification of bulk upload
  100 + * Author : Jarrett Jordaan
  101 + * Date : 27/04/09
  102 + *
  103 + * @params : KTDocumentUtil $oDocObjects
  104 + * KTFolderUtil $oParentFolder
  105 + */
  106 + function notifyBulkDocumentUpload($oDocObjects, $oParentFolder) {
  107 + $content = new SubscriptionContent(); // needed for i18n
  108 + $parentId = $oParentFolder->getId();
  109 + $aUsers = $this->_getSubscribers($parentId, $this->subscriptionTypes["Folder"]);
  110 + $this->bulkNotification($aUsers, 'AddDocument', $oDocObjects, $parentId);
  111 + }
  112 +
  113 + /*
  114 + * Bulk upload email notification handler
  115 + * Author : Jarrett Jordaan
  116 + * Date : 27/04/09
  117 + *
  118 + * @params : User $aUsers
  119 + * string $eventType
  120 + * KTDocumentUtil $oDocObjects
  121 + * int $parentId
  122 + */
  123 + function bulkNotification($aUsers, $eventType, $oDocObjects, $parentId) {
  124 + $content = new SubscriptionContent(); // needed for i18n
  125 + $locationName = Folder::generateFullFolderPath($parentId);
  126 + $userId = $_SESSION['userID'];
  127 + foreach ($aUsers as $oSubscriber) {
  128 + $userNotifications = array();
  129 + $aNotificationOptions = array();
  130 + $userSubscriberId = $oSubscriber->getID();
  131 + $emailAddress = $oSubscriber->getEmail();
  132 + foreach($oDocObjects as $oDocObject) {
  133 + $targetName = $oDocObject->getName();
  134 + $objectId = $oDocObject->getId();
  135 + $aNotificationOptions['target_user'] = $userSubscriberId;
  136 + $aNotificationOptions['actor_id'] = $userId;
  137 + $aNotificationOptions['target_name'] = $targetName;
  138 + $aNotificationOptions['location_name'] = $locationName;
  139 + $aNotificationOptions['object_id'] = $objectId;
  140 + $aNotificationOptions['event_type'] = $eventType;
  141 + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);
  142 + $userNotifications[] = $oNotification;
  143 + }
  144 + $eContent = '';
  145 + $eSubject = '';
  146 + // now the email content.
  147 + // might not be a good idea to notify on each file
  148 + //foreach($userNotifications as $userNotification) {
  149 + // $eContent .= $content->getEmailAlertContent($userNotification)."<br/><br/>";
  150 + // Might be an over kill subject
  151 + //$eSubject .= $content->getEmailAlertSubject($userNotification)." ";
  152 + //}
  153 + // Better subject header with just the modified folder location
  154 + $eSubject = "KnowledgeTree: Subscription notification for Bulk Upload In Folder \"$locationName\"";
  155 + $eContent = "KnowledgeTree: Subscription notification for Bulk Upload In Folder \"$locationName\"";
  156 + if($eContent != '' && $eSubject != '') {
  157 + //echo $eContent;
  158 + $oEmail = new EmailAlert($emailAddress, $eSubject, $eContent);
  159 + $oEmail->send();
  160 + }
  161 + }
  162 + }
  163 +
98 164 // alerts users who are subscribed to $iParentFolderId.
99 165 function AddFolder($oAddedFolder, $oParentFolder) {
100 166 $content = new SubscriptionContent(); // needed for i18n
... ...