diff --git a/presentation/lookAndFeel/knowledgeTree/foldermanagement/addGroupFolderLinkBL.php b/presentation/lookAndFeel/knowledgeTree/foldermanagement/addGroupFolderLinkBL.php
new file mode 100644
index 0000000..3ad1370
--- /dev/null
+++ b/presentation/lookAndFeel/knowledgeTree/foldermanagement/addGroupFolderLinkBL.php
@@ -0,0 +1,68 @@
+, Jam Warehouse (Pty) Ltd, South Africa
+ * @package presentation.lookAndFeel.knowledgeTree.foldermanagement
+ */
+require_once("../../../../config/dmsDefaults.php");
+include_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc");
+include_once("$default->fileSystemRoot/lib/security/permission.inc");
+include_once("$default->fileSystemRoot/lib/users/User.inc");
+include_once("$default->fileSystemRoot/lib/groups/GroupFolderLink.inc");
+include_once("$default->fileSystemRoot/presentation/Html.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc");
+include_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc");
+include_once("groupFolderLinkUI.inc");
+
+if (checkSession()) {
+ if (isset($fFolderID)) {
+ $oPatternCustom = & new PatternCustom();
+ $oPatternCustom->setHtml("");
+ // if a folder has been selected
+ if (Permission::userHasFolderWritePermission($fFolderID)) {
+ // can only add access if the user has folder write permission
+ if (isset($fForStore)) {
+ // attempt to create the new folder access entry
+ $oGroupFolderLink = & new GroupFolderLink($fFolderID, $fGroupID, $fCanRead, $fCanWrite);
+ // check if exists for the fFolderID, fGroupID combination
+ if (!$oGroupFolderLink->exists()) {
+ if ($oGroupFolderLink->create()) {
+ // on successful creation, redirect to the folder edit page
+ redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID");
+ } else {
+ //otherwise display an error message
+ $sErrorMessage = "The folder access entry could not be created in the database";
+ $oPatternCustom->setHtml(getPage($fFolderID));
+ }
+ } else {
+ $sErrorMessage = "A folder access entry for the selected folder and group already exists.";
+ $oPatternCustom->setHtml(renderErrorPage($sErrorMessage, $fFolderID));
+ }
+ } else {
+ // display the browse page
+ $oPatternCustom->setHtml(getAddPage($fFolderID));
+ }
+ }
+ } else {
+ //display an error message
+ $sErrorMessage = "No folder currently selected";
+ }
+
+ include_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
+ $main->setCentralPayload($oPatternCustom);
+ $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID&fForStore=1");
+ $main->setHasRequiredFields(true);
+ $main->render();
+}
+?>
diff --git a/presentation/lookAndFeel/knowledgeTree/foldermanagement/deleteGroupFolderLinkBL.php b/presentation/lookAndFeel/knowledgeTree/foldermanagement/deleteGroupFolderLinkBL.php
new file mode 100644
index 0000000..0b3497e
--- /dev/null
+++ b/presentation/lookAndFeel/knowledgeTree/foldermanagement/deleteGroupFolderLinkBL.php
@@ -0,0 +1,70 @@
+, Jam Warehouse (Pty) Ltd, South Africa
+ * @package presentation.lookAndFeel.knowledgeTree.foldermanagement
+ */
+
+require_once("../../../../config/dmsDefaults.php");
+include_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc");
+include_once("$default->fileSystemRoot/lib/security/permission.inc");
+include_once("$default->fileSystemRoot/lib/groups/GroupFolderLink.inc");
+include_once("$default->fileSystemRoot/lib/groups/Group.inc");
+include_once("$default->fileSystemRoot/lib/roles/Role.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc");
+include_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc");
+include_once("$default->fileSystemRoot/presentation/Html.inc");
+include_once("groupFolderLinkUI.inc");
+
+if (checkSession()) {
+ if (isset($fFolderID) && isset($fGroupFolderLinkID)) {
+ // if a folder has been selected
+ $oPatternCustom = & new PatternCustom();
+ $oPatternCustom->setHtml("");
+ if (Permission::userHasFolderWritePermission($fFolderID)) {
+ // can only delete group folder links if the user has folder write permission
+ if (isset($fForDelete)) {
+ $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID);
+ if ($oGroupFolderLink->delete()) {
+ // on successful deletion, redirect to the folder edit page
+ redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID");
+ } else {
+ // otherwise display an error message
+ $sErrorMessage = "The folder access entry could not be deleted from the database";
+ $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID);
+ $oPatternCustom->setHtml(getPage($oGroupFolderLink));
+ }
+ } else {
+ $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID);
+ $oPatternCustom->setHtml(getDeletePage($oGroupFolderLink));
+ }
+ } else {
+ // display an error message
+ $sErrorMessage = "You don't have permission to delete this folder access entry.";
+ }
+ } else {
+ $sErrorMessage = "No folder currently selected";
+ }
+
+ include_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
+ $main->setCentralPayload($oPatternCustom);
+ if (isset($sErrorMessage)) {
+ $main->setErrorMessage($sErrorMessage);
+ }
+ $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID&fGroupFolderLinkID=$fGroupFolderLinkID&fForDelete=1");
+ $main->setHasRequiredFields(true);
+ $main->render();
+}
+?>
diff --git a/presentation/lookAndFeel/knowledgeTree/foldermanagement/editGroupFolderLinkBL.php b/presentation/lookAndFeel/knowledgeTree/foldermanagement/editGroupFolderLinkBL.php
new file mode 100644
index 0000000..f1946a3
--- /dev/null
+++ b/presentation/lookAndFeel/knowledgeTree/foldermanagement/editGroupFolderLinkBL.php
@@ -0,0 +1,73 @@
+, Jam Warehouse (Pty) Ltd, South Africa
+ * @package presentation.lookAndFeel.knowledgeTree.foldermanagement
+ */
+
+require_once("../../../../config/dmsDefaults.php");
+include_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc");
+include_once("$default->fileSystemRoot/lib/security/permission.inc");
+include_once("$default->fileSystemRoot/lib/groups/GroupFolderLink.inc");
+include_once("$default->fileSystemRoot/lib/groups/Group.inc");
+include_once("$default->fileSystemRoot/lib/roles/Role.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc");
+include_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableListFromQuery.inc");
+include_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc");
+include_once("$default->fileSystemRoot/presentation/Html.inc");
+include_once("groupFolderLinkUI.inc");
+
+if (checkSession()) {
+ if (isset($fFolderID) && isset($fGroupFolderLinkID)) {
+ // if a folder has been selected
+ $oPatternCustom = & new PatternCustom();
+ $oPatternCustom->setHtml("");
+ if (Permission::userHasFolderWritePermission($fFolderID)) {
+ // can only edit group folder links if the user has folder write permission
+ if (isset($fForStore)) {
+ $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID);
+ $oGroupFolderLink->setCanRead($fCanRead);
+ $oGroupFolderLink->setCanWrite($fCanWrite);
+ if ($oGroupFolderLink->update()) {
+ // on successful deletion, redirect to the folder edit page
+ redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID");
+ } else {
+ // otherwise display an error message
+ $sErrorMessage = "The folder access entry could not be deleted from the database";
+ $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID);
+ $oPatternCustom->setHtml(getEditPage($oGroupFolderLink));
+ }
+ } else {
+ $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID);
+ $oPatternCustom->setHtml(getEditPage($oGroupFolderLink));
+ }
+ } else {
+ // display an error message
+ $sErrorMessage = "You don't have permission to delete this folder access entry.";
+ }
+ } else {
+ $sErrorMessage = "No folder currently selected";
+ }
+
+ include_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
+ $main->setCentralPayload($oPatternCustom);
+ if (isset($sErrorMessage)) {
+ $main->setErrorMessage($sErrorMessage);
+ }
+ $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID&fGroupFolderLinkID=$fGroupFolderLinkID&fForStore=1");
+ $main->setHasRequiredFields(true);
+ $main->render();
+}
+?>
diff --git a/presentation/lookAndFeel/knowledgeTree/foldermanagement/groupFolderLinkUI.inc b/presentation/lookAndFeel/knowledgeTree/foldermanagement/groupFolderLinkUI.inc
new file mode 100644
index 0000000..27089fe
--- /dev/null
+++ b/presentation/lookAndFeel/knowledgeTree/foldermanagement/groupFolderLinkUI.inc
@@ -0,0 +1,113 @@
+, Jam Warehouse (Pty) Ltd, South Africa
+ * @package presentation.lookAndFeel.knowledgeTree.foldermanagement
+ */
+
+function getDeletePage($oGroupFolderLink) {
+ global $default;
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= "| Group | " . Group::getGroupName($oGroupFolderLink->getGroupID()) . " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= "| Access | " . getAccessCheckBoxes(true, $oGroupFolderLink->getCanRead(), $oGroupFolderLink->getCanWrite()) . " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+
+
+ $sToRender .= "\n\n\n\n";
+
+ return $sToRender;
+}
+
+function getEditPage($oGroupFolderLink) {
+ global $default;
+ $sToRender .= "\n";
+ $sToRender .= "\n";
+ $sToRender .= "| Group | " . getGroupDropDown($oGroupFolderLink->getGroupID()) . " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= "| Access | " . getAccessCheckBoxes(false, $oGroupFolderLink->getCanRead(), $oGroupFolderLink->getCanWrite()) . " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+
+ $sToRender .= "\n\n\n\n";
+
+ return $sToRender;
+}
+
+function getAddPage($iFolderID) {
+ global $default;
+ $sToRender .= "\n";
+ $sToRender .= "\n";
+ $sToRender .= "| Group | " . getGroupDropDown() . " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= "| Access | " . getAccessCheckBoxes(false) . " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+ $sToRender .= " | \n";
+ $sToRender .= "
\n";
+ $sToRender .= "\n";
+
+ $sToRender .= "\n\n\n\n";
+
+ return $sToRender;
+}
+
+function getAccessCheckBoxes($bReadOnly, $fCanRead = false, $fCanWrite = false) {
+ return "Read\n" .
+ "Write\n";
+}
+
+function getFolderPath($iFolderID) {
+ global $default;
+ return displayFolderPathLink(Folder::getFolderPathAsArray($iFolderID), Folder::getFolderPathNamesAsArray($iFolderID), "$default->rootUrl/control.php?action=browse");
+}
+
+function getGroupDropDown($iGroupID = -1) {
+ global $default;
+ if (Permission::userIsSystemAdministrator()) {
+ $oPatternListBox = & new PatternListBox("$default->owl_groups_table", "name", "id", "fGroupID");
+ } else {
+ $oPatternListBox = & new PatternListBox("$default->owl_groups_table", "name", "id", "fGroupID", "GUL.unit_id=" . User::getUnitID($_SESSION["userID"]));
+ $oPatternListBox->setFromClause("INNER JOIN $default->owl_groups_units_table AS GUL ON ST.id = GUL.group_id");
+ }
+ $oPatternListBox->setEmptyErrorMessage("There are no groups");
+ $oPatternListBox->setIncludeDefaultValue(false);
+ if ($iGroupID != -1) {
+ $oPatternListBox->setWhereClause("ST.id = $iGroupID");
+ }
+ return $oPatternListBox->render();
+}
+
+function renderErrorPage($sErrorMessage, $fFolderID) {
+ global $default;
+ return "$sErrorMessage
\n" .
+ "rootUrl/control.php?action=editFolder&fFolderID=$fFolderID\">
graphicsUrl/widgets/back.gif\" border=\"0\"/>\n";
+}
+?>