From f7d695c015b3017866975e1e489994ecb49401b3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 29 Jun 2015 10:28:10 +0200 Subject: [PATCH] some initial code to recursively merge access list (not used yet) --- SeedDMS_Core/Core/inc.ClassDocument.php | 12 ++++++++++-- SeedDMS_Core/Core/inc.ClassFolder.php | 8 ++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 727ffdeb3..58e016aa9 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -386,6 +386,10 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ * * @return object parent folder */ + function getParent() { /* {{{ */ + return self::getFolder(); + } /* }}} */ + function getFolder() { /* {{{ */ if (!isset($this->_folder)) $this->_folder = $this->_dms->getFolder($this->_folderID); @@ -971,7 +975,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ * * @param integer $mode access mode (defaults to M_ANY) * @param integer $op operation (defaults to O_EQ) - * @return array multi dimensional array + * @return array multi dimensional array or false in case of an error */ function getAccessList($mode = M_ANY, $op = O_EQ) { /* {{{ */ $db = $this->_dms->getDB(); @@ -979,7 +983,10 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if ($this->inheritsAccess()) { $res = $this->getFolder(); if (!$res) return false; - return $this->_folder->getAccessList($mode, $op); + $pacl = $res->getAccessList($mode, $op); + return $pacl; + } else { + $pacl = array("groups" => array(), "users" => array()); } if (!isset($this->_accessList[$mode])) { @@ -1006,6 +1013,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ } return $this->_accessList[$mode]; + return SeedDMS_Core_DMS::mergeAccessLists($pacl, $this->_accessList[$mode]); } /* }}} */ /** diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 6ce59d007..7fb9b28f1 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -915,7 +915,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { * * @param integer $mode access mode (defaults to M_ANY) * @param integer $op operation (defaults to O_EQ) - * @return array multi dimensional array + * @return array multi dimensional array or false in case of an error */ function getAccessList($mode = M_ANY, $op = O_EQ) { /* {{{ */ $db = $this->_dms->getDB(); @@ -923,7 +923,10 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if ($this->inheritsAccess()) { $res = $this->getParent(); if (!$res) return false; - return $this->_parent->getAccessList($mode, $op); + $pacl = $res->getAccessList($mode, $op); + return $pacl; + } else { + $pacl = array("groups" => array(), "users" => array()); } if (!isset($this->_accessList[$mode])) { @@ -950,6 +953,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { } return $this->_accessList[$mode]; + return SeedDMS_Core_DMS::mergeAccessLists($pacl, $this->_accessList[$mode]); } /* }}} */ /**