From 1a5a55e0835448e50595bbc8b2f8844f70d73e2a Mon Sep 17 00:00:00 2001 From: Michael Joseph Date: Fri, 28 Feb 2003 10:44:39 +0000 Subject: [PATCH] added multiple unsubscribe functionality --- presentation/lookAndFeel/knowledgeTree/subscriptions/manageSubscriptionsBL.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- presentation/lookAndFeel/knowledgeTree/subscriptions/subscriptionUI.inc | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 135 insertions(+), 20 deletions(-) diff --git a/presentation/lookAndFeel/knowledgeTree/subscriptions/manageSubscriptionsBL.php b/presentation/lookAndFeel/knowledgeTree/subscriptions/manageSubscriptionsBL.php index ac79bce..6b24048 100644 --- a/presentation/lookAndFeel/knowledgeTree/subscriptions/manageSubscriptionsBL.php +++ b/presentation/lookAndFeel/knowledgeTree/subscriptions/manageSubscriptionsBL.php @@ -25,11 +25,56 @@ require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionManager.inc if (checkSession()) { require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); + require_once("$default->fileSystemRoot/lib/subscriptions/Subscription.inc"); require_once("subscriptionUI.inc"); + $oPatternCustom = & new PatternCustom(); + if (isset($fFolderSubscriptionIDs) || isset($fDocumentSubscriptionIDs)) { + // we've got subscriptions to remove, + $aFolderSubscriptions = array(); + $aDocumentSubscriptions = array(); + + for ($i = 0; $i < count($fFolderSubscriptionIDs); $i++) { + $aFolderSubscriptions[] = & Subscription::get($fFolderSubscriptionIDs[$i], SubscriptionConstants::subscriptionType("FolderSubscription")); + } + for ($i = 0; $i < count($fDocumentSubscriptionIDs); $i++) { + $aDocumentSubscriptions[] = & Subscription::get($fDocumentSubscriptionIDs[$i], SubscriptionConstants::subscriptionType("DocumentSubscription")); + } + + if (isset($fConfirmed)) { + // remove subscriptions + $oSubscriptions = array_merge($aFolderSubscriptions, $aDocumentSubscriptions); + + $sErrorMessage = ""; + for ($i = 0; $i < count($oSubscriptions); $i++) { + if ($oSubscriptions[$i]->delete()) { + $default->log->info("manageSubscriptionBL.php removed subscription for userID=$iUserID, subType=$iSubscriptionType, id=$iExternalID"); + } else { + // error removing subscription + $default->log->error("manageSubscriptionBL.php error removing subscription=" . $oSubscriptions[$i]); + // add to error message + if (strlen($sErrorMessage) > 0) { + $sErrorMessage .= ", "; + } + $sErrorMessage .= $oSubscriptions[$i]->getContentDisplayPath(); + } + } + if (strlen($sErrorMessage) > 0) { + $oPatternCustom->setHtml(renderErrorPage("There were errors removing the following subscriptions: $sErrorMessage")); + } else { + // display the manage subscriptions page + $oPatternCustom->setHtml(renderManagePage()); + } + } else { + // display confirmation page + $oPatternCustom->setHtml(renderMultipleRemoveConfirmationPage($aFolderSubscriptions, $aDocumentSubscriptions)); + } + } else { + // display the manage subscriptions page + $oPatternCustom->setHtml(renderManagePage()); + } + require_once("../../../webpageTemplate.inc"); - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(renderManageSubscriptions()); $main->setCentralPayload($oPatternCustom); $main->setFormAction($_SERVER["PHP_SELF"]); $main->render(); diff --git a/presentation/lookAndFeel/knowledgeTree/subscriptions/subscriptionUI.inc b/presentation/lookAndFeel/knowledgeTree/subscriptions/subscriptionUI.inc index b5a1895..dc8059b 100644 --- a/presentation/lookAndFeel/knowledgeTree/subscriptions/subscriptionUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/subscriptions/subscriptionUI.inc @@ -11,38 +11,108 @@ * @author Michael Joseph , Jam Warehouse (Pty) Ltd, South Africa * @package presentation.lookAndFeel.knowledgeTree.subscriptions */ - /** * Displays all current subscriptions with remove checkbox */ -function renderManageSubscriptions() { +function renderManagePage() { global $default; // retrieve subscriptions for this user - $aSubscriptionList = SubscriptionManager::listSubscriptions($_SESSION["userID"]); - + $aFolderSubscriptions = SubscriptionManager::retrieveSubscriptions($_SESSION["userID"], SubscriptionConstants::subscriptionType("FolderSubscription")); + $aDocumentSubscriptions = SubscriptionManager::retrieveSubscriptions($_SESSION["userID"], SubscriptionConstants::subscriptionType("DocumentSubscription")); + $bNoSubscriptions = ( (count($aFolderSubscriptions) == 0) && (count($aFolderSubscriptions) == 0) ) ? true : false; + $sToRender = "\n"; + if ($bNoSubscriptions) { + $sToRender .= "\n"; + } else { + $sToRender .= "\n"; + $sToRender .= "\n"; + } + $sToRender .= "\n"; + $sToRender .= "\n"; + // loop through them - for ($i = 0; $i < count($aSubscriptionList); $i++) { + for ($i = 0; $i < count($aFolderSubscriptions); $i++) { + $sToRender .= "\t\n"; + $sToRender .= "\t\t\n"; + $sToRender .= "\t\n"; + } + for ($i = 0; $i < count($aDocumentSubscriptions); $i++) { $sToRender .= "\t\n"; $sToRender .= "\t\t\n"; $sToRender .= "\t\n"; + } + + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
You are not subscribed to any documents or folders.
The documents and folders you're subscribed to are listed below.
Select the subscriptions you'd like to unsubscribe from, and click 'Unsubscribe'
\n"; + $sToRender .= "getID() . "\"/>\n"; + if ($aFolderSubscriptions[$i]->getIsAlerted()) { + $sToRender .= $aFolderSubscriptions[$i]->getAlertLink() . "\n"; + } else { + $sToRender .= $aFolderSubscriptions[$i]->getContentLink() . "\n"; + } + $sToRender .= "\t\t
\n"; - $sToRender .= "getID() . "\"/>\n"; - if ($aSubscriptionList[$i]->getIsAlerted()) { - $sToRender .= $aSubscriptionList[$i]->getAlertLink() . "\n"; + $sToRender .= "getID() . "\"/>\n"; + if ($aDocumentSubscriptions[$i]->getIsAlerted()) { + $sToRender .= $aDocumentSubscriptions[$i]->getAlertLink() . "\n"; } else { - $sToRender .= $aSubscriptionList[$i]->getContentLink() . "\n"; + $sToRender .= $aDocumentSubscriptions[$i]->getContentLink() . "\n"; } $sToRender .= "\t\t
"; + if (!$bNoSubscriptions) { + $sToRender .= "graphicsUrl/widgets/unsubscribe.gif\"/>\n"; } + $sToRender .= "graphicsUrl/widgets/cancel.gif\" border=\"0\">\n"; + $sToRender .= "
\n"; + + return $sToRender; +} - $sToRender .= "rootUrl/control.php?action=removeSubscription&$sContentUrl&fConfirmed=1\">graphicsUrl/widgets/unsubscribe.gif\" border=\"0\"/>\n"; - $sToRender .= "graphicsUrl/widgets/cancel.gif\" border=\"0\">\n"; - $sToRender .= "\n"; +/** + * Asks for confirmation for removing multiple subscriptions + * + * @param array subscriptions to remove + */ +function renderMultipleRemoveConfirmationPage($aFolderSubscriptions, $aDocumentSubscriptions) { + global $default; + + $sToRender = "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + + // loop through them + for ($i = 0; $i < count($aFolderSubscriptions); $i++) { + $sToRender .= "\t\n"; + $sToRender .= "\t\t\n"; + $sToRender .= "\t\n"; + $sToRender .= "getID() . "\"/>"; + } + + for ($i = 0; $i < count($aDocumentSubscriptions); $i++) { + $sToRender .= "\t\n"; + $sToRender .= "\t\t\n"; + $sToRender .= "\t\n"; + $sToRender .= "getID() . "\"/>"; + } - //$sToRender .= "\n"; - //$sToRender .= "getContentUrl() . "\">graphicsUrl/widgets/cancel.gif\" border=\"0\">\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= ""; + $sToRender .= "\n"; + $sToRender .= "\n"; $sToRender .= "
You have chosen to delete the following subscription(s):
\n"; + $sToRender .= $aFolderSubscriptions[$i]->getContentDisplayPath() . "\n"; + $sToRender .= "\t\t
\n"; + $sToRender .= $aDocumentSubscriptions[$i]->getContentDisplayPath() . "\n"; + $sToRender .= "\t\t
rootUrl/control.php?action=removeSubscription&fRemoveMultiple=1\">graphicsUrl/widgets/unsubscribe.gif\" border=\"0\"/>
Select 'Unsubscribe' to confirm the deletion(s), or 'Cancel' to cancel them
graphicsUrl/widgets/unsubscribe.gif\"/>\n"; + $sToRender .= "graphicsUrl/widgets/cancel.gif\" border=\"0\">
\n"; return $sToRender; @@ -53,7 +123,7 @@ function renderManageSubscriptions() { * * @param object the subscription */ -function renderSubscriptionRemoveConfirmationPage($oSubscription) { +function renderRemoveConfirmationPage($oSubscription) { global $default; $sContentType = $oSubscription->getSubscriptionTypeName(); @@ -66,7 +136,7 @@ function renderSubscriptionRemoveConfirmationPage($oSubscription) { } $sToRender = "\n"; - $sToRender .= "\n"; + $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; @@ -85,7 +155,7 @@ function renderSubscriptionRemoveConfirmationPage($oSubscription) { * * @param object the subscription */ -function renderSubscriptionAddConfirmationPage($oSubscription) { +function renderAddConfirmationPage($oSubscription) { global $default; $sContentType = $oSubscription->getSubscriptionTypeName(); @@ -98,7 +168,7 @@ function renderSubscriptionAddConfirmationPage($oSubscription) { } $sToRender = "
You have chosen to delete the your $sContentType subscription to '$sContentName'.
You have chosen to delete the your $sContentType subscription to '$sContentName'.
Select 'Unsubscribe' to confirm the deletion, or 'Cancel' to cancel it
\n"; - $sToRender .= "\n"; + $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; -- libgit2 0.21.4
You have chosen to subscribe to the $sContentType entitled '$sContentName'.
You have chosen to subscribe to the $sContentType entitled '$sContentName'.
Select 'Subscribe' to confirm the subscription, or 'Cancel' to cancel it