Commit a8e783d73083bd2e1d5588c10e065094cc2815ae

Authored by nbm
1 parent d9b4f4a7

Folder-level permission management - assign permissions to groups, and

view the users that have permissions (via a group) to this folder.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3504 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/foldermanagement/folderPermissions.php 0 → 100644
  1 +<?php
  2 +
  3 +require_once("../../../../config/dmsDefaults.php");
  4 +
  5 +require_once(KT_DIR . "/presentation/Html.inc");
  6 +
  7 +require_once(KT_LIB_DIR . "/templating/templating.inc.php");
  8 +require_once(KT_LIB_DIR . "/permissions/permission.inc.php");
  9 +require_once(KT_LIB_DIR . "/foldermanagement/Folder.inc");
  10 +require_once(KT_LIB_DIR . "/groups/Group.inc");
  11 +
  12 +require_once(KT_LIB_DIR . "/permissions/permission.inc.php");
  13 +require_once(KT_LIB_DIR . "/permissions/permissionobject.inc.php");
  14 +require_once(KT_LIB_DIR . "/permissions/permissionassignment.inc.php");
  15 +require_once(KT_LIB_DIR . "/permissions/permissiondescriptor.inc.php");
  16 +require_once(KT_LIB_DIR . "/permissions/permissionutil.inc.php");
  17 +
  18 +require_once(KT_LIB_DIR . "/dispatcher.inc.php");
  19 +$sectionName = "Manage Documents";
  20 +require_once(KT_DIR . "/presentation/webpageTemplate.inc");
  21 +
  22 +function displayFolderPathLink($aPathArray, $aPathNameArray, $sLinkPage = "") {
  23 + global $default;
  24 + if (strlen($sLinkPage) == 0) {
  25 + $sLinkPage = $_SERVER["PHP_SELF"];
  26 + }
  27 + $default->log->debug("displayFolderPathLink: slinkPage=$sLinkPage");
  28 + // display a separate link to each folder in the path
  29 + for ($i=0; $i<count($aPathArray); $i++) {
  30 + $iFolderID = $aPathArray[$i];
  31 + // retrieve the folder name for this folder
  32 + $sFolderName = $aPathNameArray[$i];
  33 + // generate a link back to this page setting fFolderID
  34 + $sLink = generateLink($sLinkPage,
  35 + "fBrowseType=folder&fFolderID=$iFolderID",
  36 + $sFolderName);
  37 + $sPathLinks = (strlen($sPathLinks) > 0) ? $sPathLinks . " > " . $sLink : $sLink;
  38 + }
  39 + return $sPathLinks;
  40 +}
  41 +
  42 +
  43 +class FolderPermissions extends KTStandardDispatcher {
  44 + function do_main() {
  45 + $oTemplating = new KTTemplating;
  46 + $oTemplate = $oTemplating->loadTemplate("ktcore/manage_folder_permissions");
  47 + $oFolder = Folder::get($_REQUEST['fFolderID']);
  48 + $oPO = KTPermissionObject::get($oFolder->getPermissionObjectID());
  49 + $aPermissions = KTPermission::getList();
  50 + $aMapPermissionGroup = array();
  51 + foreach ($aPermissions as $oPermission) {
  52 + $oPA = KTPermissionAssignment::getByPermissionAndObject($oPermission, $oPO);
  53 + if (PEAR::isError($oPA)) {
  54 + continue;
  55 + }
  56 + $oDescriptor = KTPermissionDescriptor::get($oPA->getPermissionDescriptorID());
  57 + $iPermissionID = $oPermission->getID();
  58 + $aIDs = $oDescriptor->getGroups();
  59 + $aMapPermissionGroup[$iPermissionID] = array();
  60 + foreach ($aIDs as $iID) {
  61 + $aMapPermissionGroup[$iPermissionID][$iID] = true;
  62 + }
  63 + }
  64 + $aMapPermissionUser = array();
  65 + $aUsers = User::getList();
  66 + foreach ($aPermissions as $oPermission) {
  67 + $iPermissionID = $oPermission->getID();
  68 + foreach ($aUsers as $oUser) {
  69 + if (KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oFolder)) {
  70 + $aMapPermissionUser[$iPermissionID][$oUser->getID()] = true;
  71 + }
  72 + }
  73 + }
  74 +
  75 + $oInherited = KTPermissionUtil::findRootObjectForPermissionObject($oPO);
  76 + if ($oInherited === $oFolder) {
  77 + $bEdit = true;
  78 + } else {
  79 + $iInheritedFolderID = $oInherited->getID();
  80 + $sInherited = displayFolderPathLink(Folder::getFolderPathAsArray($iInheritedFolderID),
  81 + Folder::getFolderPathNamesAsArray($iInheritedFolderID),
  82 + "$default->rootUrl/control.php?action=editFolderPermissions");
  83 + $bEdit = false;
  84 + }
  85 +
  86 + $aTemplateData = array(
  87 + "permissions" => $aPermissions,
  88 + "groups" => Group::getList(),
  89 + "iFolderID" => $_REQUEST['fFolderID'],
  90 + "aMapPermissionGroup" => $aMapPermissionGroup,
  91 + "users" => $aUsers,
  92 + "aMapPermissionUser" => $aMapPermissionUser,
  93 + "edit" => $bEdit,
  94 + "inherited" => $sInherited,
  95 + );
  96 + return $oTemplate->render($aTemplateData);
  97 + }
  98 +
  99 + function handleOutput($data) {
  100 + global $main;
  101 + $main->bFormDisabled = true;
  102 + $main->setCentralPayload($data);
  103 + $main->render();
  104 + }
  105 +
  106 + function do_update() {
  107 + $oFolder = Folder::get($_REQUEST['fFolderID']);
  108 + $oPO = KTPermissionObject::get($oFolder->getPermissionObjectID());
  109 + $aFoo = $_REQUEST['foo'];
  110 + $aPermissions = KTPermission::getList();
  111 + foreach ($aPermissions as $oPermission) {
  112 + $iPermID = $oPermission->getID();
  113 + $aAllowed = KTUtil::arrayGet($aFoo, $iPermID, array());
  114 + KTPermissionUtil::setPermissionForID($oPermission, $oPO, $aAllowed);
  115 + }
  116 + KTPermissionUtil::updatePermissionLookupForPO($oPO);
  117 + return $this->errorRedirectToMain('Permissions updated',
  118 + array('fFolderID' => $oFolder->getID()));
  119 + }
  120 +
  121 + function do_copyPermissions() {
  122 + $oFolder = Folder::get($_REQUEST['fFolderID']);
  123 + KTPermissionUtil::copyPermissionObject($oFolder);
  124 + return $this->errorRedirectToMain('Permissions updated',
  125 + array('fFolderID' => $oFolder->getID()));
  126 + }
  127 +
  128 + function do_inheritPermissions() {
  129 + $oFolder = Folder::get($_REQUEST['fFolderID']);
  130 + KTPermissionUtil::inheritPermissionObject($oFolder);
  131 + return $this->errorRedirectToMain('Permissions updated',
  132 + array('fFolderID' => $oFolder->getID()));
  133 + }
  134 +
  135 +
  136 +}
  137 +
  138 +$oDispatcher = new FolderPermissions;
  139 +$oDispatcher->dispatch();
  140 +
  141 +?>