From 9f61ed5a44a06aece4e26ed6afb82ae28ab8a4ea Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Wed, 21 Sep 2005 20:42:19 +0000 Subject: [PATCH] Add a mechanism to view permissions applicable to a document. --- presentation/lookAndFeel/knowledgeTree/documentmanagement/documentPermissions.php | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ templates/ktcore/document/document_permissions.smarty | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 290 insertions(+), 0 deletions(-) create mode 100644 presentation/lookAndFeel/knowledgeTree/documentmanagement/documentPermissions.php create mode 100644 templates/ktcore/document/document_permissions.smarty diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentPermissions.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentPermissions.php new file mode 100644 index 0000000..727af45 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentPermissions.php @@ -0,0 +1,141 @@ +log->debug("displayFolderPathLink: slinkPage=$sLinkPage"); + // display a separate link to each folder in the path + for ($i=0; $i 0) ? $sPathLinks . " > " . $sLink : $sLink; + } + return $sPathLinks; +} + + +class DocumentPermissionsDispatcher extends KTStandardDispatcher { + function do_main() { + $oTemplating = new KTTemplating; + $oTemplate = $oTemplating->loadTemplate("ktcore/document/document_permissions"); + $oDocument = Document::get($_REQUEST['fDocumentID']); + $oPO = KTPermissionObject::get($oDocument->getPermissionObjectID()); + $aPermissions = KTPermission::getList(); + $aMapPermissionGroup = array(); + foreach ($aPermissions as $oPermission) { + $oPA = KTPermissionAssignment::getByPermissionAndObject($oPermission, $oPO); + if (PEAR::isError($oPA)) { + continue; + } + $oDescriptor = KTPermissionDescriptor::get($oPA->getPermissionDescriptorID()); + $iPermissionID = $oPermission->getID(); + $aIDs = $oDescriptor->getGroups(); + $aMapPermissionGroup[$iPermissionID] = array(); + foreach ($aIDs as $iID) { + $aMapPermissionGroup[$iPermissionID][$iID] = true; + } + } + $aMapPermissionUser = array(); + $aUsers = User::getList(); + foreach ($aPermissions as $oPermission) { + $iPermissionID = $oPermission->getID(); + foreach ($aUsers as $oUser) { + if (KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oDocument)) { + $aMapPermissionUser[$iPermissionID][$oUser->getID()] = true; + } + } + } + + $oInherited = KTPermissionUtil::findRootObjectForPermissionObject($oPO); + if ($oInherited === $oDocument) { + $bEdit = true; + } else { + $iInheritedFolderID = $oInherited->getID(); + $sInherited = displayFolderPathLink(Folder::getFolderPathAsArray($iInheritedFolderID), + Folder::getFolderPathNamesAsArray($iInheritedFolderID), + "$default->rootUrl/control.php?action=editFolderPermissions"); + $bEdit = false; + } + + $aTemplateData = array( + "permissions" => $aPermissions, + "groups" => Group::getList(), + "iDocumentID" => $_REQUEST['fDocumentID'], + "aMapPermissionGroup" => $aMapPermissionGroup, + "users" => $aUsers, + "aMapPermissionUser" => $aMapPermissionUser, + "edit" => $bEdit, + "inherited" => $sInherited, + ); + return $oTemplate->render($aTemplateData); + } + + function handleOutput($data) { + global $main; + $main->bFormDisabled = true; + $main->setCentralPayload($data); + $main->render(); + } + + function do_update() { + $oDocument = Document::get($_REQUEST['fDocumentID']); + $oPO = KTPermissionObject::get($oDocument->getPermissionObjectID()); + $aFoo = $_REQUEST['foo']; + $aPermissions = KTPermission::getList(); + foreach ($aPermissions as $oPermission) { + $iPermID = $oPermission->getID(); + $aAllowed = KTUtil::arrayGet($aFoo, $iPermID, array()); + KTPermissionUtil::setPermissionForID($oPermission, $oPO, $aAllowed); + } + KTPermissionUtil::updatePermissionLookupForPO($oPO); + return $this->errorRedirectToMain('Permissions updated', + array('fDocumentID' => $oDocument->getID())); + } + + function do_copyPermissions() { + $oDocument = Document::get($_REQUEST['fDocumentID']); + KTPermissionUtil::copyPermissionObject($oDocument); + return $this->errorRedirectToMain('Permissions updated', + array('fDocumentID' => $oDocument->getID())); + } + + function do_inheritPermissions() { + $oDocument = Document::get($_REQUEST['fDocumentID']); + KTPermissionUtil::inheritPermissionObject($oDocument); + return $this->errorRedirectToMain('Permissions updated', + array('fDocumentID' => $oDocument->getID())); + } + + +} + +$oDispatcher = new DocumentPermissionsDispatcher; +$oDispatcher->dispatch(); + +?> diff --git a/templates/ktcore/document/document_permissions.smarty b/templates/ktcore/document/document_permissions.smarty new file mode 100644 index 0000000..f2d9c92 --- /dev/null +++ b/templates/ktcore/document/document_permissions.smarty @@ -0,0 +1,149 @@ +{literal} + +{/literal} +