KTSubscriptions.php
5.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
require_once(KT_LIB_DIR . '/actions/actionregistry.inc.php');
require_once(KT_LIB_DIR . '/actions/portletregistry.inc.php');
require_once(KT_LIB_DIR . '/triggers/triggerregistry.inc.php');
require_once(KT_LIB_DIR . '/subscriptions/Subscription.inc');
require_once(KT_LIB_DIR . '/subscriptions/SubscriptionEngine.inc');
require_once(KT_LIB_DIR . '/subscriptions/SubscriptionConstants.inc');
require_once(KT_LIB_DIR . '/subscriptions/SubscriptionManager.inc');
$oKTActionRegistry =& KTActionRegistry::getSingleton();
$oPRegistry =& KTPortletRegistry::getSingleton();
$oTRegistry =& KTTriggerRegistry::getSingleton();
class KTDocumentSubscriptionAction extends KTDocumentAction {
var $sName = 'ktcore.actions.document.subscription';
var $sDisplayName = 'Subscribe to document';
function getInfo() {
if (Subscription::exists($this->oUser->getID(), $this->oDocument->getID(), SubscriptionConstants::subscriptionType("DocumentSubscription"))) {
return null;
}
return parent::getInfo();
}
function do_main() {
$iSubscriptionType = SubscriptionConstants::subscriptionType("DocumentSubscription");
if (Subscription::exists($this->oUser->getId(), $this->oDocument->getId(), $iSubscriptionType)) {
$_SESSION['KTErrorMessage'][] = "You are already subscribed to that document";
} else {
$oSubscription = new Subscription($this->oUser->getId(), $this->oDocument->getId(), $iSubscriptionType);
$res = $oSubscription->create();
if ($res) {
$_SESSION['KTInfoMessage'][] = "You have been subscribed to this document";
} else {
$_SESSION['KTErrorMessage'][] = "There was a problem subscribing you to this document";
}
}
controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId());
exit(0);
}
}
$oKTActionRegistry->registerAction('subscriptionaction', 'KTDocumentSubscriptionAction', 'ktcore.actions.document.subscription');
class KTDocumentUnsubscriptionAction extends KTDocumentAction {
var $sName = 'ktcore.actions.document.unsubscription';
var $sDisplayName = 'Unsubscribe from document';
function getInfo() {
if (Subscription::exists($this->oUser->getID(), $this->oDocument->getID(), SubscriptionConstants::subscriptionType("DocumentSubscription"))) {
return parent::getInfo();
}
return null;
}
function do_main() {
$iSubscriptionType = SubscriptionConstants::subscriptionType("DocumentSubscription");
if (!Subscription::exists($this->oUser->getId(), $this->oDocument->getId(), $iSubscriptionType)) {
$_SESSION['KTErrorMessage'][] = "You were not subscribed to that document";
} else {
$oSubscription = & Subscription::getByIDs($this->oUser->getId(), $this->oDocument->getId(), $iSubscriptionType);
$res = $oSubscription->delete();
if ($res) {
$_SESSION['KTInfoMessage'][] = "You have been unsubscribed from this document";
} else {
$_SESSION['KTErrorMessage'][] = "There was a problem unsubscribing you from this document";
}
}
controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId());
exit(0);
}
}
$oKTActionRegistry->registerAction('subscriptionaction', 'KTDocumentUnsubscriptionAction', 'ktcore.actions.document.unsubscription');
class KTSubscriptionPortlet extends KTPortlet {
function KTSubscriptionPortlet() {
parent::KTPortlet("Subscriptions");
}
function render() {
if (!$this->oDispatcher->oDocument && !$this->oDispatcher->oFolder) {
return null;
}
if ($this->oDispatcher->oDocument) {
$oKTActionRegistry =& KTActionRegistry::getSingleton();
$actions = $oKTActionRegistry->getActions('subscriptionaction');
foreach ($actions as $aAction) {
list($sClassName, $sPath) = $aAction;
if (!empty($sPath)) {
// require_once(KT_DIR .
// Or something...
}
$oObject =& new $sClassName($this->oDispatcher->oDocument, $this->oDispatcher->oUser);
$this->actions[] = $oObject->getInfo();
}
}
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("kt3/portlets/actions_portlet");
$aTemplateData = array(
"context" => $this,
);
return $oTemplate->render($aTemplateData);
}
}
$oPRegistry->registerPortlet('browse', 'KTSubscriptionPortlet', 'ktcore.portlets.subscription', '/plugins/ktcore/KTPortlets.php');
class KTCheckoutSubscriptionTrigger {
var $aInfo = null;
function setInfo(&$aInfo) {
$this->aInfo =& $aInfo;
}
function postValidate() {
global $default;
$oDocument =& $this->aInfo["document"];
// fire subscription alerts for the checked out document
$count = SubscriptionEngine::fireSubscription($oDocument->getId(), SubscriptionConstants::subscriptionAlertType("CheckOutDocument"),
SubscriptionConstants::subscriptionType("DocumentSubscription"),
array( "folderID" => $oDocument->getFolderID(),
"modifiedDocumentName" => $oDocument->getName() ));
$default->log->info("checkOutDocumentBL.php fired $count subscription alerts for checked out document " . $oDocument->getName());
}
}
$oTRegistry->registerTrigger('checkout', 'postValidate', 'KTCheckoutSubscriptionTrigger', 'ktstandard.triggers.subscription.checkout');