ktsubscriptions.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 625 行 · 第 1/2 页
PHP
625 行
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
// fire subscription alerts for the checked in document
$oSubscriptionEvent = new SubscriptionEvent();
$oFolder = Folder::get($oDocument->getFolderID());
$oSubscriptionEvent->CheckoutDocument($oDocument, $oFolder);
}
}
// }}}
// {{{ KTCheckoutSubscriptionTrigger
class KTEditSubscriptionTrigger {
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
// fire subscription alerts for the checked in document
$oSubscriptionEvent = new SubscriptionEvent();
$oFolder = Folder::get($oDocument->getFolderID());
$oSubscriptionEvent->ModifyDocument($oDocument, $oFolder);
}
}
// }}}
// {{{ KTDeleteSubscriptionTrigger
class KTDeleteSubscriptionTrigger {
var $aInfo = null;
function setInfo(&$aInfo) {
$this->aInfo =& $aInfo;
}
function postValidate() {
global $default;
$oDocument =& $this->aInfo["document"];
// fire subscription alerts for the deleted document
// fire subscription alerts for the checked in document
$oSubscriptionEvent = new SubscriptionEvent();
$oFolder = Folder::get($oDocument->getFolderID());
// $oSubscriptionEvent->RemoveDocument($oDocument, $oFolder);
}
}
// }}}
// {{{ KTDocumentMoveSubscriptionTrigger
class KTDocumentMoveSubscriptionTrigger {
var $aInfo = null;
function setInfo(&$aInfo) {
$this->aInfo =& $aInfo;
}
function postValidate() {
global $default;
$oDocument =& $this->aInfo["document"];
$oOldFolder =& $this->aInfo["old_folder"];
$oNewFolder =& $this->aInfo["new_folder"];
// fire subscription alerts for the checked in document
$oSubscriptionEvent = new SubscriptionEvent();
$oSubscriptionEvent->MoveDocument($oDocument, $oNewFolder, $oNewFolder);
}
}
// }}}
// {{{ KTArchiveSubscriptionTrigger
class KTArchiveSubscriptionTrigger {
var $aInfo = null;
function setInfo(&$aInfo) {
$this->aInfo =& $aInfo;
}
function postValidate() {
global $default;
$oDocument =& $this->aInfo["document"];
// fire subscription alerts for the checked in document
$oSubscriptionEvent = new SubscriptionEvent();
$oFolder = Folder::get($oDocument->getFolderID());
$oSubscriptionEvent->ArchivedDocument($oDocument, $oFolder);
}
}
// }}}
class KTDiscussionSubscriptionTrigger {
var $aInfo = null;
function setInfo(&$aInfo) {
$this->aInfo =& $aInfo;
}
function postValidate() {
$oDocument =& $this->aInfo["document"];
$oSubscriptionEvent = new SubscriptionEvent();
$oFolder = Folder::get($oDocument->getFolderID());
$oSubscriptionEvent->DiscussDocument($oDocument, $oFolder);
$indexer = Indexer::get();
$indexer->index($oDocument, 'D');
}
}
// }}}
// {{{ KTFolderSubscriptionAction
class KTFolderSubscriptionAction extends KTFolderAction {
var $sName = 'ktstandard.subscription.foldersubscription';
function getDisplayName() {
return _kt('Subscribe to folder');
}
function getInfo() {
$aInfo = parent::getInfo();
if (Subscription::exists($this->oUser->getID(), $this->oFolder->getID(), SubscriptionEvent::subTypes('Folder'))) {
// KTFolderUnsubscriptionAction will display instead.
$aInfo['active'] = 'no';
}
// return the url to the action for subfolders - display the Subscribe link, on clicking, display the include subfolders link.
$aInfo['subaction'] = _kt('Subscribe to folder and <br>subfolders');
return $aInfo;
}
function do_ajax() {
$this->subscribe();
}
function do_add_subfolders() {
$this->subscribe(true);
}
function subscribe($incSubFolders = false) {
$iSubscriptionType = SubscriptionEvent::subTypes('Folder');
if (Subscription::exists($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType)) {
$str = _kt('You are already subscribed to this folder');
} else {
$oSubscription = new Subscription($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType);
if($incSubFolders){
$oSubscription->setWithSubFolders(true);
}
$res = $oSubscription->create();
if ($res) {
if($incSubFolders){
$str = _kt('You have been subscribed to this folder and its subfolders');
}else{
$str = _kt('You have been subscribed to this folder');
}
} else {
$str = _kt('There was a problem subscribing you to this folder');
}
}
echo wrapString($str);
exit(0);
}
function do_main() {
$iSubscriptionType = SubscriptionEvent::subTypes('Folder');
if (Subscription::exists($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType)) {
$_SESSION['KTErrorMessage'][] = _kt("You are already subscribed to this folder");
} else {
$oSubscription = new Subscription($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType);
$res = $oSubscription->create();
if ($res) {
$_SESSION['KTInfoMessage'][] = _kt("You have been subscribed to this folder");
} else {
$_SESSION['KTErrorMessage'][] = _kt("There was a problem subscribing you to this folder");
}
}
controllerRedirect('browse', 'fFolderId=' . $this->oFolder->getId());
exit(0);
}
}
// }}}
// {{{ KTFolderUnsubscriptionAction
class KTFolderUnsubscriptionAction extends KTFolderAction {
var $sName = 'ktstandard.subscription.folderunsubscription';
function getDisplayName() {
return _kt('Unsubscribe from folder');
}
function getInfo() {
$aInfo = parent::getInfo();
if (!Subscription::exists($this->oUser->getID(), $this->oFolder->getID(), SubscriptionEvent::subTypes('Folder'))) {
$aInfo['active'] = 'no';
}
return $aInfo;
}
function do_ajax() {
$iSubscriptionType = SubscriptionEvent::subTypes('Folder');
if (!Subscription::exists($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType)) {
$str = _kt('You were not subscribed to that folder');
} else {
$oSubscription = & Subscription::getByIDs($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType);
$res = $oSubscription->delete();
if ($res) {
$str = _kt('You have been unsubscribed from this folder');
} else {
$str = _kt('There was a problem unsubscribing you from this folder');
}
}
echo wrapString($str);
exit(0);
}
function do_main() {
$iSubscriptionType = SubscriptionEvent::subTypes('Folder');
if (!Subscription::exists($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType)) {
$_SESSION['KTErrorMessage'][] = _kt("You were not subscribed to that folder");
} else {
$oSubscription = & Subscription::getByIDs($this->oUser->getId(), $this->oFolder->getId(), $iSubscriptionType);
$res = $oSubscription->delete();
if ($res) {
$_SESSION['KTInfoMessage'][] = _kt("You have been unsubscribed from this folder");
} else {
$_SESSION['KTErrorMessage'][] = _kt("There was a problem unsubscribing you from this folder");
}
}
controllerRedirect('browse', 'fFolderId=' . $this->oFolder->getId());
exit(0);
}
}
// }}}
// {{{ KTSubscriptionManagePage
class KTSubscriptionManagePage extends KTStandardDispatcher {
function do_main() {
$this->aBreadcrumbs[] = array("name" => _kt("Subscription Management"));
$aFolderSubscriptions = SubscriptionManager::retrieveUserSubscriptions(
$this->oUser->getId(), SubscriptionEvent::subTypes('Folder'));
$aDocumentSubscriptions = SubscriptionManager::retrieveUserSubscriptions(
$this->oUser->getId(), SubscriptionEvent::subTypes('Document'));
$bNoSubscriptions = ((count($aFolderSubscriptions) == 0) && (count($aDocumentSubscriptions) == 0)) ? true : false;
$oTemplate = $this->oValidator->validateTemplate('ktstandard/subscriptions/manage');
$aTemplateData = array(
'aFolderSubscriptions' => $aFolderSubscriptions,
'aDocumentSubscriptions' => $aDocumentSubscriptions,
);
return $oTemplate->render($aTemplateData);
}
function do_removeSubscriptions() {
$foldersubscriptions = KTUtil::arrayGet($_REQUEST, 'foldersubscriptions');
$documentsubscriptions = KTUtil::arrayGet($_REQUEST, 'documentsubscriptions');
if (empty($foldersubscriptions) && empty($documentsubscriptions)) {
$this->errorRedirectToMain(_kt('No subscriptions were chosen'));
}
$iSuccesses = 0;
$iFailures = 0;
if (!empty($foldersubscriptions)) {
foreach ($foldersubscriptions as $iSubscriptionId) {
$oSubscription = Subscription::get($iSubscriptionId, SubscriptionEvent::subTypes('Folder'));
if ($oSubscription) {
$oSubscription->delete();
$iSuccesses++;
} else {
$iFailures++;
}
}
}
if (!empty($documentsubscriptions)) {
foreach ($documentsubscriptions as $iSubscriptionId) {
$oSubscription = Subscription::get($iSubscriptionId, SubscriptionEvent::subTypes('Document'));
if ($oSubscription) {
$oSubscription->delete();
$iSuccesses++;
} else {
$iFailures++;
}
}
}
$sMessage = _kt("Subscriptions removed") . ": ";
if ($iFailures) {
$sMessage .= sprintf(_kt('%d successful, %d failures'), $iSuccesses, $iFailures);
} else {
$sMessage .= sprintf('%d', $iSuccesses);
}
$this->successRedirectToMain($sMessage);
exit(0);
}
}
// }}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?