Commit 738cf656d58d84586cba742d2c1dfb1363a2b803
1 parent
99f86e2a
KTS-2521
"No notifications when you are subscribed to a folder" Fixed. Added notifications to the functions in document util. Refactored archive into documentutil. Added notifications to export. Committed by: Megan Watson Reviewed by: Conrad Vermeulen git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7440 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
5 changed files
with
231 additions
and
122 deletions
lib/documentmanagement/documentutil.inc.php
| @@ -178,13 +178,52 @@ class KTDocumentUtil { | @@ -178,13 +178,52 @@ class KTDocumentUtil { | ||
| 178 | $oDocumentTransaction = new DocumentTransaction($oDocument, $sCheckoutComment, 'ktcore.transactions.check_out'); | 178 | $oDocumentTransaction = new DocumentTransaction($oDocument, $sCheckoutComment, 'ktcore.transactions.check_out'); |
| 179 | $oDocumentTransaction->create(); | 179 | $oDocumentTransaction->create(); |
| 180 | 180 | ||
| 181 | - // fire subscription alerts for the checked in document | 181 | + // fire subscription alerts for the downloaded document |
| 182 | $oSubscriptionEvent = new SubscriptionEvent(); | 182 | $oSubscriptionEvent = new SubscriptionEvent(); |
| 183 | $oFolder = Folder::get($oDocument->getFolderID()); | 183 | $oFolder = Folder::get($oDocument->getFolderID()); |
| 184 | $oSubscriptionEvent->CheckOutDocument($oDocument, $oFolder); | 184 | $oSubscriptionEvent->CheckOutDocument($oDocument, $oFolder); |
| 185 | 185 | ||
| 186 | return true; | 186 | return true; |
| 187 | } | 187 | } |
| 188 | + | ||
| 189 | + function archive($oDocument, $sReason) { | ||
| 190 | + | ||
| 191 | + $this->startTransaction(); | ||
| 192 | + $oDocument->setStatusID(ARCHIVED); | ||
| 193 | + $res = $oDocument->update(); | ||
| 194 | + | ||
| 195 | + if (PEAR::isError($res) || ($res === false)) { | ||
| 196 | + return PEAR::raiseError(_kt('There was a database error while trying to archive this file')); | ||
| 197 | + } | ||
| 198 | + | ||
| 199 | + $oDocumentTransaction = & new DocumentTransaction($oDocument, sprintf(_kt('Document archived: %s'), $sReason), 'ktcore.transactions.update'); | ||
| 200 | + $oDocumentTransaction->create(); | ||
| 201 | + | ||
| 202 | + $this->commitTransaction(); | ||
| 203 | + | ||
| 204 | + $oKTTriggerRegistry = KTTriggerRegistry::getSingleton(); | ||
| 205 | + $aTriggers = $oKTTriggerRegistry->getTriggers('archive', 'postValidate'); | ||
| 206 | + foreach ($aTriggers as $aTrigger) { | ||
| 207 | + $sTrigger = $aTrigger[0]; | ||
| 208 | + $oTrigger = new $sTrigger; | ||
| 209 | + $aInfo = array( | ||
| 210 | + 'document' => $oDocument, | ||
| 211 | + ); | ||
| 212 | + $oTrigger->setInfo($aInfo); | ||
| 213 | + $ret = $oTrigger->postValidate(); | ||
| 214 | + if (PEAR::isError($ret)) { | ||
| 215 | + $oDocument->delete(); | ||
| 216 | + return $ret; | ||
| 217 | + } | ||
| 218 | + } | ||
| 219 | + | ||
| 220 | + // fire subscription alerts for the archived document | ||
| 221 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 222 | + $oFolder = Folder::get($oDocument->getFolderID()); | ||
| 223 | + $oSubscriptionEvent->ArchivedDocument($oDocument, $oFolder); | ||
| 224 | + | ||
| 225 | + return true; | ||
| 226 | + } | ||
| 188 | 227 | ||
| 189 | function &_add($oFolder, $sFilename, $oUser, $aOptions) { | 228 | function &_add($oFolder, $sFilename, $oUser, $aOptions) { |
| 190 | global $default; | 229 | global $default; |
| @@ -922,6 +961,11 @@ class KTDocumentUtil { | @@ -922,6 +961,11 @@ class KTDocumentUtil { | ||
| 922 | return $ret; | 961 | return $ret; |
| 923 | } | 962 | } |
| 924 | } | 963 | } |
| 964 | + | ||
| 965 | + // fire subscription alerts for the copied document | ||
| 966 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 967 | + $oFolder = Folder::get($oDocument->getFolderID()); | ||
| 968 | + $oSubscriptionEvent->MoveDocument($oDocument, $oDestinationFolder, $oSrcFolder, 'CopiedDocument'); | ||
| 925 | 969 | ||
| 926 | return $oNewDocument; | 970 | return $oNewDocument; |
| 927 | } | 971 | } |
| @@ -1027,6 +1071,10 @@ class KTDocumentUtil { | @@ -1027,6 +1071,10 @@ class KTDocumentUtil { | ||
| 1027 | return $ret; | 1071 | return $ret; |
| 1028 | } | 1072 | } |
| 1029 | } | 1073 | } |
| 1074 | + | ||
| 1075 | + // fire subscription alerts for the moved document | ||
| 1076 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 1077 | + $oSubscriptionEvent->MoveDocument($oDocument, $oFolder, $oOriginalFolder); | ||
| 1030 | 1078 | ||
| 1031 | return KTPermissionUtil::updatePermissionLookup($oDocument); | 1079 | return KTPermissionUtil::updatePermissionLookup($oDocument); |
| 1032 | } | 1080 | } |
lib/subscriptions/subscriptions.inc.php
| @@ -57,8 +57,10 @@ class SubscriptionEvent { | @@ -57,8 +57,10 @@ class SubscriptionEvent { | ||
| 57 | "CheckInDocument", | 57 | "CheckInDocument", |
| 58 | "CheckOutDocument", | 58 | "CheckOutDocument", |
| 59 | "MovedDocument", | 59 | "MovedDocument", |
| 60 | + "CopiedDocument", | ||
| 60 | "ArchivedDocument", | 61 | "ArchivedDocument", |
| 61 | "RestoredArchivedDocument", | 62 | "RestoredArchivedDocument", |
| 63 | + "DownloadDocument", | ||
| 62 | ); | 64 | ); |
| 63 | 65 | ||
| 64 | var $subscriptionTypes = array( | 66 | var $subscriptionTypes = array( |
| @@ -480,82 +482,83 @@ class SubscriptionEvent { | @@ -480,82 +482,83 @@ class SubscriptionEvent { | ||
| 480 | } | 482 | } |
| 481 | } | 483 | } |
| 482 | 484 | ||
| 483 | - function MoveDocument($oMovedDocument, $oToFolder, $oFromFolder) { | 485 | + function MoveDocument($oMovedDocument, $oToFolder, $oFromFolder, $moveOrCopy = "MovedDocument") { |
| 484 | $content = new SubscriptionContent(); // needed for i18n | 486 | $content = new SubscriptionContent(); // needed for i18n |
| 485 | - // OK: two actions: document registrants, folder registrants. | 487 | + // OK: two actions: document registrants, folder registrants. |
| 486 | $aUsers = $this->_getSubscribers($oMovedDocument->getId(), $this->subscriptionTypes["Document"]); | 488 | $aUsers = $this->_getSubscribers($oMovedDocument->getId(), $this->subscriptionTypes["Document"]); |
| 487 | - $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. | ||
| 488 | - | ||
| 489 | - foreach ($aUsers as $oSubscriber) { | ||
| 490 | - // notification object first. | ||
| 491 | - $aNotificationOptions = array(); | ||
| 492 | - $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 493 | - $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 494 | - $aNotificationOptions['target_name'] = $oMovedDocument->getName(); | ||
| 495 | - $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oToFolder->getId()); | ||
| 496 | - $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case. | ||
| 497 | - $aNotificationOptions['event_type'] = "MovedDocument"; | ||
| 498 | - $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 499 | - | ||
| 500 | - // now the email content. | ||
| 501 | - // FIXME this needs to be handled entirely within notifications from now on. | ||
| 502 | - if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 503 | - $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 504 | - $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 505 | - $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 506 | - $oEmail->send(); | ||
| 507 | - } | ||
| 508 | - } | 489 | + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. |
| 490 | + | ||
| 491 | + foreach ($aUsers as $oSubscriber) { | ||
| 492 | + // notification object first. | ||
| 493 | + $aNotificationOptions = array(); | ||
| 494 | + $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 495 | + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 496 | + $aNotificationOptions['target_name'] = $oMovedDocument->getName(); | ||
| 497 | + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oToFolder->getId()); | ||
| 498 | + $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case. | ||
| 499 | + $aNotificationOptions['event_type'] = $moveOrCopy; | ||
| 500 | + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 501 | + | ||
| 502 | + // now the email content. | ||
| 503 | + // FIXME this needs to be handled entirely within notifications from now on. | ||
| 504 | + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 505 | + $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 506 | + $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 507 | + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 508 | + $oEmail->send(); | ||
| 509 | + } | ||
| 510 | + } | ||
| 509 | 511 | ||
| 510 | 512 | ||
| 511 | $aUsers = $this->_getSubscribers($oFromFolder->getId(), $this->subscriptionTypes["Folder"]); | 513 | $aUsers = $this->_getSubscribers($oFromFolder->getId(), $this->subscriptionTypes["Folder"]); |
| 512 | - $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. | ||
| 513 | - foreach ($aUsers as $oSubscriber) { | ||
| 514 | - | ||
| 515 | - // notification object first. | ||
| 516 | - $aNotificationOptions = array(); | ||
| 517 | - $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 518 | - $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 519 | - $aNotificationOptions['target_name'] = $oMovedDocument->getName(); | ||
| 520 | - $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oToFolder->getId()); | ||
| 521 | - $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case. | ||
| 522 | - $aNotificationOptions['event_type'] = "MovedDocument"; | ||
| 523 | - $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 524 | - | ||
| 525 | - // now the email content. | ||
| 526 | - // FIXME this needs to be handled entirely within notifications from now on. | ||
| 527 | - if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 528 | - $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 529 | - $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 530 | - $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 531 | - $oEmail->send(); | ||
| 532 | - } | ||
| 533 | - } | 514 | + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. |
| 515 | + foreach ($aUsers as $oSubscriber) { | ||
| 516 | + | ||
| 517 | + // notification object first. | ||
| 518 | + $aNotificationOptions = array(); | ||
| 519 | + $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 520 | + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 521 | + $aNotificationOptions['target_name'] = $oMovedDocument->getName(); | ||
| 522 | + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oToFolder->getId()); | ||
| 523 | + $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case. | ||
| 524 | + $aNotificationOptions['event_type'] = $moveOrCopy; | ||
| 525 | + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 526 | + | ||
| 527 | + // now the email content. | ||
| 528 | + // FIXME this needs to be handled entirely within notifications from now on. | ||
| 529 | + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 530 | + $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 531 | + $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 532 | + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 533 | + $oEmail->send(); | ||
| 534 | + } | ||
| 535 | + } | ||
| 534 | 536 | ||
| 535 | $aUsers = $this->_getSubscribers($oToFolder->getId(), $this->subscriptionTypes["Folder"]); | 537 | $aUsers = $this->_getSubscribers($oToFolder->getId(), $this->subscriptionTypes["Folder"]); |
| 536 | - $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. | ||
| 537 | - foreach ($aUsers as $oSubscriber) { | ||
| 538 | - | ||
| 539 | - // notification object first. | ||
| 540 | - $aNotificationOptions = array(); | ||
| 541 | - $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 542 | - $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 543 | - $aNotificationOptions['target_name'] = $oMovedDocument->getName(); | ||
| 544 | - $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId()); | ||
| 545 | - $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case. | ||
| 546 | - $aNotificationOptions['event_type'] = "MovedDocument"; | ||
| 547 | - $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 548 | - | ||
| 549 | - // now the email content. | ||
| 550 | - // FIXME this needs to be handled entirely within notifications from now on. | ||
| 551 | - if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 552 | - $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 553 | - $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 554 | - $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 555 | - $oEmail->send(); | ||
| 556 | - } | ||
| 557 | - } | 538 | + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. |
| 539 | + foreach ($aUsers as $oSubscriber) { | ||
| 540 | + | ||
| 541 | + // notification object first. | ||
| 542 | + $aNotificationOptions = array(); | ||
| 543 | + $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 544 | + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 545 | + $aNotificationOptions['target_name'] = $oMovedDocument->getName(); | ||
| 546 | + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oToFolder->getId()); | ||
| 547 | + $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case. | ||
| 548 | + $aNotificationOptions['event_type'] = $moveOrCopy; | ||
| 549 | + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 550 | + | ||
| 551 | + // now the email content. | ||
| 552 | + // FIXME this needs to be handled entirely within notifications from now on. | ||
| 553 | + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 554 | + $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 555 | + $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 556 | + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 557 | + $oEmail->send(); | ||
| 558 | + } | ||
| 559 | + } | ||
| 558 | } | 560 | } |
| 561 | + | ||
| 559 | function ArchivedDocument($oModifiedDocument, $oParentFolder) { | 562 | function ArchivedDocument($oModifiedDocument, $oParentFolder) { |
| 560 | $content = new SubscriptionContent(); // needed for i18n | 563 | $content = new SubscriptionContent(); // needed for i18n |
| 561 | // OK: two actions: document registrants, folder registrants. | 564 | // OK: two actions: document registrants, folder registrants. |
| @@ -662,6 +665,59 @@ class SubscriptionEvent { | @@ -662,6 +665,59 @@ class SubscriptionEvent { | ||
| 662 | } | 665 | } |
| 663 | } | 666 | } |
| 664 | 667 | ||
| 668 | + function DownloadDocument($oDocument, $oParentFolder) { | ||
| 669 | + $content = new SubscriptionContent(); // needed for i18n | ||
| 670 | + // OK: two actions: document registrants, folder registrants. | ||
| 671 | + $aUsers = $this->_getSubscribers($oDocument->getId(), $this->subscriptionTypes["Document"]); | ||
| 672 | + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. | ||
| 673 | + foreach ($aUsers as $oSubscriber) { | ||
| 674 | + | ||
| 675 | + // notification object first. | ||
| 676 | + $aNotificationOptions = array(); | ||
| 677 | + $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 678 | + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 679 | + $aNotificationOptions['target_name'] = $oDocument->getName(); | ||
| 680 | + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId()); | ||
| 681 | + $aNotificationOptions['object_id'] = $oDocument->getId(); // parent folder_id, in this case. | ||
| 682 | + $aNotificationOptions['event_type'] = "DownloadDocument"; | ||
| 683 | + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 684 | + | ||
| 685 | + // now the email content. | ||
| 686 | + // FIXME this needs to be handled entirely within notifications from now on. | ||
| 687 | + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 688 | + $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 689 | + $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 690 | + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 691 | + $oEmail->send(); | ||
| 692 | + } | ||
| 693 | + } | ||
| 694 | + | ||
| 695 | + | ||
| 696 | + $aUsers = $this->_getSubscribers($oParentFolder->getId(), $this->subscriptionTypes["Folder"]); | ||
| 697 | + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton. | ||
| 698 | + foreach ($aUsers as $oSubscriber) { | ||
| 699 | + | ||
| 700 | + // notification object first. | ||
| 701 | + $aNotificationOptions = array(); | ||
| 702 | + $aNotificationOptions['target_user'] = $oSubscriber->getID(); | ||
| 703 | + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null. | ||
| 704 | + $aNotificationOptions['target_name'] = $oDocument->getName(); | ||
| 705 | + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId()); | ||
| 706 | + $aNotificationOptions['object_id'] = $oDocument->getId(); // parent folder_id, in this case. | ||
| 707 | + $aNotificationOptions['event_type'] = "DownloadDocument"; | ||
| 708 | + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); | ||
| 709 | + | ||
| 710 | + // now the email content. | ||
| 711 | + // FIXME this needs to be handled entirely within notifications from now on. | ||
| 712 | + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) { | ||
| 713 | + $emailContent = $content->getEmailAlertContent($oNotification); | ||
| 714 | + $emailSubject = $content->getEmailAlertSubject($oNotification); | ||
| 715 | + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent); | ||
| 716 | + $oEmail->send(); | ||
| 717 | + } | ||
| 718 | + } | ||
| 719 | + } | ||
| 720 | + | ||
| 665 | // small helper function to assist in identifying the numeric id. | 721 | // small helper function to assist in identifying the numeric id. |
| 666 | function _getKeyForType($sEventType) { | 722 | function _getKeyForType($sEventType) { |
| 667 | foreach ($this->eventTypes as $key => $val) { | 723 | foreach ($this->eventTypes as $key => $val) { |
| @@ -733,7 +789,9 @@ class SubscriptionContent { | @@ -733,7 +789,9 @@ class SubscriptionContent { | ||
| 733 | "CheckInDocument" => _kt('Document checked in'), | 789 | "CheckInDocument" => _kt('Document checked in'), |
| 734 | "CheckOutDocument" => _kt('Document checked out'), | 790 | "CheckOutDocument" => _kt('Document checked out'), |
| 735 | "MovedDocument" => _kt('Document moved'), | 791 | "MovedDocument" => _kt('Document moved'), |
| 792 | + "CopiedDocument" => _kt('Document copied'), | ||
| 736 | "ArchivedDocument" => _kt('Document archived'), // can go through and request un-archival (?) | 793 | "ArchivedDocument" => _kt('Document archived'), // can go through and request un-archival (?) |
| 794 | + "DownloadDocument" => _kt('Document downloaded'), | ||
| 737 | "RestoredArchivedDocument" => _kt('Document restored'), | 795 | "RestoredArchivedDocument" => _kt('Document restored'), |
| 738 | "DiscussDocument" => _kt('Document Discussions updated'), | 796 | "DiscussDocument" => _kt('Document Discussions updated'), |
| 739 | ); | 797 | ); |
| @@ -786,7 +844,9 @@ class SubscriptionContent { | @@ -786,7 +844,9 @@ class SubscriptionContent { | ||
| 786 | "CheckInDocument" => 'document', | 844 | "CheckInDocument" => 'document', |
| 787 | "CheckOutDocument" => 'document', | 845 | "CheckOutDocument" => 'document', |
| 788 | "MovedDocument" => 'document', | 846 | "MovedDocument" => 'document', |
| 847 | + "CopiedDocument" => 'document', | ||
| 789 | "ArchivedDocument" => 'document', // can go through and request un-archival (?) | 848 | "ArchivedDocument" => 'document', // can go through and request un-archival (?) |
| 849 | + "DownloadDocument" => 'document', | ||
| 790 | "RestoredArchivedDocument" => 'document', | 850 | "RestoredArchivedDocument" => 'document', |
| 791 | "DiscussDocument" => 'document'); | 851 | "DiscussDocument" => 'document'); |
| 792 | 852 |
plugins/ktcore/KTBulkActions.php
| @@ -32,6 +32,7 @@ | @@ -32,6 +32,7 @@ | ||
| 32 | require_once(KT_LIB_DIR . '/actions/bulkaction.php'); | 32 | require_once(KT_LIB_DIR . '/actions/bulkaction.php'); |
| 33 | require_once(KT_LIB_DIR . '/widgets/forms.inc.php'); | 33 | require_once(KT_LIB_DIR . '/widgets/forms.inc.php'); |
| 34 | require_once(KT_LIB_DIR . '/foldermanagement/compressionArchiveUtil.inc.php'); | 34 | require_once(KT_LIB_DIR . '/foldermanagement/compressionArchiveUtil.inc.php'); |
| 35 | +require_once(KT_LIB_DIR . '/subscriptions/Subscription.inc'); | ||
| 35 | 36 | ||
| 36 | 37 | ||
| 37 | class KTBulkDeleteAction extends KTBulkAction { | 38 | class KTBulkDeleteAction extends KTBulkAction { |
| @@ -477,25 +478,14 @@ class KTBulkArchiveAction extends KTBulkAction { | @@ -477,25 +478,14 @@ class KTBulkArchiveAction extends KTBulkAction { | ||
| 477 | 478 | ||
| 478 | function perform_action($oEntity) { | 479 | function perform_action($oEntity) { |
| 479 | if(is_a($oEntity, 'Document')) { | 480 | if(is_a($oEntity, 'Document')) { |
| 480 | - DBUtil::startTransaction(); | ||
| 481 | - | ||
| 482 | - $document = $oEntity; | ||
| 483 | - | ||
| 484 | - $document->setStatusID(ARCHIVED); | ||
| 485 | - $res = $document->update(); | ||
| 486 | - if (($res === false) || PEAR::isError($res)) { | ||
| 487 | - DBUtil::rollback(); | ||
| 488 | - return false; | 481 | + |
| 482 | + $res = KTDocumentUtil::archive($oEntity, $this->sReason); | ||
| 483 | + | ||
| 484 | + if(PEAR::isError($res)){ | ||
| 485 | + return $res; | ||
| 489 | } | 486 | } |
| 490 | - | ||
| 491 | - $oDocumentTransaction = & new DocumentTransaction($document, sprintf(_kt('Document archived: %s'), $this->sReason), 'ktcore.transactions.update'); | ||
| 492 | - $oDocumentTransaction->create(); | ||
| 493 | - | ||
| 494 | - DBUtil::commit(); | ||
| 495 | return true; | 487 | return true; |
| 496 | }else if(is_a($oEntity, 'Folder')) { | 488 | }else if(is_a($oEntity, 'Folder')) { |
| 497 | - DBUtil::startTransaction(); | ||
| 498 | - | ||
| 499 | $aDocuments = array(); | 489 | $aDocuments = array(); |
| 500 | $aChildFolders = array(); | 490 | $aChildFolders = array(); |
| 501 | $oFolder = $oEntity; | 491 | $oFolder = $oEntity; |
| @@ -520,7 +510,6 @@ class KTBulkArchiveAction extends KTBulkAction { | @@ -520,7 +510,6 @@ class KTBulkArchiveAction extends KTBulkAction { | ||
| 520 | $sChildId = $oChild->getID(); | 510 | $sChildId = $oChild->getID(); |
| 521 | $sChildDocs = $oChild->getDocumentIDs($sChildId); | 511 | $sChildDocs = $oChild->getDocumentIDs($sChildId); |
| 522 | if (PEAR::isError($res)) { | 512 | if (PEAR::isError($res)) { |
| 523 | - DBUtil::rollback(); | ||
| 524 | return false; | 513 | return false; |
| 525 | } | 514 | } |
| 526 | 515 | ||
| @@ -535,19 +524,14 @@ class KTBulkArchiveAction extends KTBulkAction { | @@ -535,19 +524,14 @@ class KTBulkArchiveAction extends KTBulkAction { | ||
| 535 | if(!empty($aDocuments)){ | 524 | if(!empty($aDocuments)){ |
| 536 | foreach($aDocuments as $sDocumentId){ | 525 | foreach($aDocuments as $sDocumentId){ |
| 537 | $oDocument = Document::get($sDocumentId); | 526 | $oDocument = Document::get($sDocumentId); |
| 538 | - | ||
| 539 | - $oDocument->setStatusID(ARCHIVED); | ||
| 540 | - $res = $oDocument->update(); | ||
| 541 | - if (($res === false) || PEAR::isError($res)) { | ||
| 542 | - DBUtil::rollback(); | ||
| 543 | - return false; | 527 | + |
| 528 | + $res = KTDocumentUtil::archive($oEntity, $this->sReason); | ||
| 529 | + | ||
| 530 | + if(PEAR::isError($res)){ | ||
| 531 | + return $res; | ||
| 544 | } | 532 | } |
| 545 | - | ||
| 546 | - $oDocumentTransaction = & new DocumentTransaction($oDocument, sprintf(_kt('Document archived: %s'), $this->sReason), 'ktcore.transactions.update'); | ||
| 547 | - $oDocumentTransaction->create(); | ||
| 548 | } | 533 | } |
| 549 | } | 534 | } |
| 550 | - DBUtil::commit(); | ||
| 551 | return true; | 535 | return true; |
| 552 | } | 536 | } |
| 553 | } | 537 | } |
| @@ -557,7 +541,8 @@ class KTBrowseBulkExportAction extends KTBulkAction { | @@ -557,7 +541,8 @@ class KTBrowseBulkExportAction extends KTBulkAction { | ||
| 557 | var $sName = 'ktcore.actions.bulk.export'; | 541 | var $sName = 'ktcore.actions.bulk.export'; |
| 558 | var $_sPermission = 'ktcore.permissions.read'; | 542 | var $_sPermission = 'ktcore.permissions.read'; |
| 559 | var $_bMutator = true; | 543 | var $_bMutator = true; |
| 560 | - | 544 | + var $bNotifications = true; |
| 545 | + | ||
| 561 | function getDisplayName() { | 546 | function getDisplayName() { |
| 562 | return _kt('Export'); | 547 | return _kt('Export'); |
| 563 | } | 548 | } |
| @@ -589,6 +574,8 @@ class KTBrowseBulkExportAction extends KTBulkAction { | @@ -589,6 +574,8 @@ class KTBrowseBulkExportAction extends KTBulkAction { | ||
| 589 | $this->startTransaction(); | 574 | $this->startTransaction(); |
| 590 | $oKTConfig =& KTConfig::getSingleton(); | 575 | $oKTConfig =& KTConfig::getSingleton(); |
| 591 | $this->bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations"); | 576 | $this->bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations"); |
| 577 | + | ||
| 578 | + $this->bNotifications = ($oKTConfig->get('export/enablenotifications', 'on') == 'on') ? true : false; | ||
| 592 | 579 | ||
| 593 | $result = parent::do_performaction(); | 580 | $result = parent::do_performaction(); |
| 594 | $sExportCode = $this->oZip->createZipFile(); | 581 | $sExportCode = $this->oZip->createZipFile(); |
| @@ -634,6 +621,14 @@ class KTBrowseBulkExportAction extends KTBulkAction { | @@ -634,6 +621,14 @@ class KTBrowseBulkExportAction extends KTBulkAction { | ||
| 634 | $oDocumentTransaction = new DocumentTransaction($oDocument, "Document part of bulk export", 'ktstandard.transactions.bulk_export', array()); | 621 | $oDocumentTransaction = new DocumentTransaction($oDocument, "Document part of bulk export", 'ktstandard.transactions.bulk_export', array()); |
| 635 | $oDocumentTransaction->create(); | 622 | $oDocumentTransaction->create(); |
| 636 | } | 623 | } |
| 624 | + | ||
| 625 | + // fire subscription alerts for the downloaded document - if global config is set | ||
| 626 | + if($this->bNotifications){ | ||
| 627 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 628 | + $oFolder = Folder::get($oDocument->getFolderID()); | ||
| 629 | + $oSubscriptionEvent->DownloadDocument($oDocument, $oFolder); | ||
| 630 | + } | ||
| 631 | + | ||
| 637 | $this->oZip->addDocumentToZip($oDocument); | 632 | $this->oZip->addDocumentToZip($oDocument); |
| 638 | 633 | ||
| 639 | }else if(is_a($oEntity, 'Folder')) { | 634 | }else if(is_a($oEntity, 'Folder')) { |
| @@ -677,6 +672,14 @@ class KTBrowseBulkExportAction extends KTBulkAction { | @@ -677,6 +672,14 @@ class KTBrowseBulkExportAction extends KTBulkAction { | ||
| 677 | $oDocumentTransaction = new DocumentTransaction($oDocument, "Document part of bulk export", 'ktstandard.transactions.bulk_export', array()); | 672 | $oDocumentTransaction = new DocumentTransaction($oDocument, "Document part of bulk export", 'ktstandard.transactions.bulk_export', array()); |
| 678 | $oDocumentTransaction->create(); | 673 | $oDocumentTransaction->create(); |
| 679 | } | 674 | } |
| 675 | + | ||
| 676 | + // fire subscription alerts for the downloaded document | ||
| 677 | + if($this->bNotifications){ | ||
| 678 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 679 | + $oFolder = Folder::get($oDocument->getFolderID()); | ||
| 680 | + $oSubscriptionEvent->DownloadDocument($oDocument, $oFolder); | ||
| 681 | + } | ||
| 682 | + | ||
| 680 | $this->oZip->addDocumentToZip($oDocument); | 683 | $this->oZip->addDocumentToZip($oDocument); |
| 681 | } | 684 | } |
| 682 | } | 685 | } |
plugins/ktcore/KTDocumentActions.php
| @@ -296,6 +296,16 @@ class KTDocumentViewAction extends KTDocumentAction { | @@ -296,6 +296,16 @@ class KTDocumentViewAction extends KTDocumentAction { | ||
| 296 | 296 | ||
| 297 | $oDocumentTransaction = & new DocumentTransaction($this->oDocument, _kt('Document downloaded'), 'ktcore.transactions.download', $aOptions); | 297 | $oDocumentTransaction = & new DocumentTransaction($this->oDocument, _kt('Document downloaded'), 'ktcore.transactions.download', $aOptions); |
| 298 | $oDocumentTransaction->create(); | 298 | $oDocumentTransaction->create(); |
| 299 | + | ||
| 300 | + // fire subscription alerts for the downloaded document | ||
| 301 | + $oKTConfig =& KTConfig::getSingleton(); | ||
| 302 | + $bNotifications = ($oKTConfig->get('export/enablenotifications', 'on') == 'on') ? true : false; | ||
| 303 | + if($bNotifications){ | ||
| 304 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 305 | + $oFolder = Folder::get($this->oDocument->getFolderID()); | ||
| 306 | + $oSubscriptionEvent->DownloadDocument($this->oDocument, $oFolder); | ||
| 307 | + } | ||
| 308 | + | ||
| 299 | exit(0); | 309 | exit(0); |
| 300 | } | 310 | } |
| 301 | } | 311 | } |
| @@ -1319,34 +1329,13 @@ class KTDocumentArchiveAction extends KTDocumentAction { | @@ -1319,34 +1329,13 @@ class KTDocumentArchiveAction extends KTDocumentAction { | ||
| 1319 | 1329 | ||
| 1320 | $sReason = $data['reason']; | 1330 | $sReason = $data['reason']; |
| 1321 | 1331 | ||
| 1322 | - $this->startTransaction(); | ||
| 1323 | - $this->oDocument->setStatusID(ARCHIVED); | ||
| 1324 | - $res = $this->oDocument->update(); | ||
| 1325 | - if (PEAR::isError($res) || ($res === false)) { | ||
| 1326 | - $_SESSION['KTErrorMessage'][] = _kt('There was a database error while trying to archive this file'); | 1332 | + $res = KTDocumentUtil::archive($this->oDocument, $sReason); |
| 1333 | + | ||
| 1334 | + if(PEAR::isError($res)){ | ||
| 1335 | + $_SESSION['KTErrorMessage'][] = $res->getMessage(); | ||
| 1327 | controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId()); | 1336 | controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId()); |
| 1328 | exit(0); | 1337 | exit(0); |
| 1329 | } | 1338 | } |
| 1330 | - $oDocumentTransaction = & new DocumentTransaction($this->oDocument, sprintf(_kt('Document archived: %s'), $sReason), 'ktcore.transactions.update'); | ||
| 1331 | - $oDocumentTransaction->create(); | ||
| 1332 | - | ||
| 1333 | - $this->commitTransaction(); | ||
| 1334 | - | ||
| 1335 | - $oKTTriggerRegistry = KTTriggerRegistry::getSingleton(); | ||
| 1336 | - $aTriggers = $oKTTriggerRegistry->getTriggers('archive', 'postValidate'); | ||
| 1337 | - foreach ($aTriggers as $aTrigger) { | ||
| 1338 | - $sTrigger = $aTrigger[0]; | ||
| 1339 | - $oTrigger = new $sTrigger; | ||
| 1340 | - $aInfo = array( | ||
| 1341 | - 'document' => $this->oDocument, | ||
| 1342 | - ); | ||
| 1343 | - $oTrigger->setInfo($aInfo); | ||
| 1344 | - $ret = $oTrigger->postValidate(); | ||
| 1345 | - if (PEAR::isError($ret)) { | ||
| 1346 | - $this->oDocument->delete(); | ||
| 1347 | - return $ret; | ||
| 1348 | - } | ||
| 1349 | - } | ||
| 1350 | 1339 | ||
| 1351 | $_SESSION['KTInfoMessage'][] = _kt('Document archived.'); | 1340 | $_SESSION['KTInfoMessage'][] = _kt('Document archived.'); |
| 1352 | controllerRedirect('browse', 'fFolderId=' . $this->oDocument->getFolderID()); | 1341 | controllerRedirect('browse', 'fFolderId=' . $this->oDocument->getFolderID()); |
plugins/ktstandard/KTBulkExportPlugin.php
| @@ -32,6 +32,7 @@ | @@ -32,6 +32,7 @@ | ||
| 32 | require_once(KT_LIB_DIR . '/plugins/plugin.inc.php'); | 32 | require_once(KT_LIB_DIR . '/plugins/plugin.inc.php'); |
| 33 | require_once(KT_LIB_DIR . '/plugins/pluginregistry.inc.php'); | 33 | require_once(KT_LIB_DIR . '/plugins/pluginregistry.inc.php'); |
| 34 | require_once(KT_LIB_DIR . '/browse/browseutil.inc.php'); | 34 | require_once(KT_LIB_DIR . '/browse/browseutil.inc.php'); |
| 35 | +require_once(KT_LIB_DIR . '/subscriptions/Subscription.inc'); | ||
| 35 | 36 | ||
| 36 | require_once(KT_LIB_DIR . '/config/config.inc.php'); | 37 | require_once(KT_LIB_DIR . '/config/config.inc.php'); |
| 37 | require_once(KT_LIB_DIR . '/foldermanagement/compressionArchiveUtil.inc.php'); | 38 | require_once(KT_LIB_DIR . '/foldermanagement/compressionArchiveUtil.inc.php'); |
| @@ -90,6 +91,7 @@ class KTBulkExportAction extends KTFolderAction { | @@ -90,6 +91,7 @@ class KTBulkExportAction extends KTFolderAction { | ||
| 90 | 91 | ||
| 91 | $oKTConfig =& KTConfig::getSingleton(); | 92 | $oKTConfig =& KTConfig::getSingleton(); |
| 92 | $bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations"); | 93 | $bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations"); |
| 94 | + $bNotifications = ($oKTConfig->get('export/enablenotifications', 'on') == 'on') ? true : false; | ||
| 93 | 95 | ||
| 94 | // Redirect if there are no documents and no folders to export | 96 | // Redirect if there are no documents and no folders to export |
| 95 | if (empty($aDocumentIds) && empty($aFolderList)) { | 97 | if (empty($aDocumentIds) && empty($aFolderList)) { |
| @@ -112,6 +114,13 @@ class KTBulkExportAction extends KTFolderAction { | @@ -112,6 +114,13 @@ class KTBulkExportAction extends KTFolderAction { | ||
| 112 | $oDocumentTransaction->create(); | 114 | $oDocumentTransaction->create(); |
| 113 | } | 115 | } |
| 114 | 116 | ||
| 117 | + // fire subscription alerts for the downloaded document | ||
| 118 | + if($bNotifications){ | ||
| 119 | + $oSubscriptionEvent = new SubscriptionEvent(); | ||
| 120 | + $oFolder = Folder::get($oDocument->getFolderID()); | ||
| 121 | + $oSubscriptionEvent->DownloadDocument($oDocument, $oFolder); | ||
| 122 | + } | ||
| 123 | + | ||
| 115 | $this->oZip->addDocumentToZip($oDocument); | 124 | $this->oZip->addDocumentToZip($oDocument); |
| 116 | } | 125 | } |
| 117 | } | 126 | } |