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 .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
Group" . Group::getGroupName($oGroupFolderLink->getGroupID()) . "
Access" . getAccessCheckBoxes(true, $oGroupFolderLink->getCanRead(), $oGroupFolderLink->getCanWrite()) . "
graphicsUrl/widgets/delete.gif\" />rootUrl/control.php?action=editFolder&fFolderID=" . $oGroupFolderLink->getFolderID() . "\">graphicsUrl/widgets/cancel.gif\" border=\"0\" />
\n"; + + + $sToRender .= "\n\n\n\n"; + + return $sToRender; +} + +function getEditPage($oGroupFolderLink) { + global $default; + $sToRender .= "
\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
Group" . getGroupDropDown($oGroupFolderLink->getGroupID()) . "
Access" . getAccessCheckBoxes(false, $oGroupFolderLink->getCanRead(), $oGroupFolderLink->getCanWrite()) . "
graphicsUrl/widgets/update.gif\" />rootUrl/control.php?action=editFolder&fFolderID=" . $oGroupFolderLink->getFolderID() . "\">graphicsUrl/widgets/cancel.gif\" border=\"0\" />
\n"; + + $sToRender .= "\n\n\n\n"; + + return $sToRender; +} + +function getAddPage($iFolderID) { + global $default; + $sToRender .= "
\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
Group" . getGroupDropDown() . "
Access" . getAccessCheckBoxes(false) . "
graphicsUrl/widgets/add.gif\" />rootUrl/control.php?action=editFolder&fFolderID=$iFolderID\">graphicsUrl/widgets/cancel.gif\" border=\"0\" />
\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"; +} +?>