Commit b93653ffb819e340a0e269c1cf91b96072ba8a8a
1 parent
34c07b3d
KTS-1820
"Reachable folders being considered orphaned folders" Fixed. Added a check for folder details permission in addition to the check on read permission, in getBrowseableFolders(). Committed by: Megan Watson Reviewed by: Conrad Vermeulen git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7678 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
19 additions
and
13 deletions
lib/browse/browseutil.inc.php
| @@ -7,32 +7,32 @@ | @@ -7,32 +7,32 @@ | ||
| 7 | * KnowledgeTree Open Source Edition | 7 | * KnowledgeTree Open Source Edition |
| 8 | * Document Management Made Simple | 8 | * Document Management Made Simple |
| 9 | * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited | 9 | * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited |
| 10 | - * | 10 | + * |
| 11 | * This program is free software; you can redistribute it and/or modify it under | 11 | * This program is free software; you can redistribute it and/or modify it under |
| 12 | * the terms of the GNU General Public License version 3 as published by the | 12 | * the terms of the GNU General Public License version 3 as published by the |
| 13 | * Free Software Foundation. | 13 | * Free Software Foundation. |
| 14 | - * | 14 | + * |
| 15 | * This program is distributed in the hope that it will be useful, but WITHOUT | 15 | * This program is distributed in the hope that it will be useful, but WITHOUT |
| 16 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 16 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 17 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | 17 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
| 18 | * details. | 18 | * details. |
| 19 | - * | 19 | + * |
| 20 | * You should have received a copy of the GNU General Public License | 20 | * You should have received a copy of the GNU General Public License |
| 21 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 21 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 22 | - * | 22 | + * |
| 23 | * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, | 23 | * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, |
| 24 | * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. | 24 | * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. |
| 25 | - * | 25 | + * |
| 26 | * The interactive user interfaces in modified source and object code versions | 26 | * The interactive user interfaces in modified source and object code versions |
| 27 | * of this program must display Appropriate Legal Notices, as required under | 27 | * of this program must display Appropriate Legal Notices, as required under |
| 28 | * Section 5 of the GNU General Public License version 3. | 28 | * Section 5 of the GNU General Public License version 3. |
| 29 | - * | 29 | + * |
| 30 | * In accordance with Section 7(b) of the GNU General Public License version 3, | 30 | * In accordance with Section 7(b) of the GNU General Public License version 3, |
| 31 | * these Appropriate Legal Notices must retain the display of the "Powered by | 31 | * these Appropriate Legal Notices must retain the display of the "Powered by |
| 32 | - * KnowledgeTree" logo and retain the original copyright notice. If the display of the | 32 | + * KnowledgeTree" logo and retain the original copyright notice. If the display of the |
| 33 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices | 33 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices |
| 34 | - * must display the words "Powered by KnowledgeTree" and retain the original | ||
| 35 | - * copyright notice. | 34 | + * must display the words "Powered by KnowledgeTree" and retain the original |
| 35 | + * copyright notice. | ||
| 36 | * Contributor( s): ______________________________________ | 36 | * Contributor( s): ______________________________________ |
| 37 | */ | 37 | */ |
| 38 | 38 | ||
| @@ -381,20 +381,26 @@ class KTBrowseUtil { | @@ -381,20 +381,26 @@ class KTBrowseUtil { | ||
| 381 | } | 381 | } |
| 382 | $sPermissionDescriptors = DBUtil::paramArray($aPermissionDescriptors); | 382 | $sPermissionDescriptors = DBUtil::paramArray($aPermissionDescriptors); |
| 383 | 383 | ||
| 384 | + $oPermission = KTPermission::getByName('ktcore.permissions.read'); | ||
| 385 | + $oPermission2 = KTPermission::getByName('ktcore.permissions.folder_details'); | ||
| 386 | + $aPermissionIds = array($oPermission->getId(), $oPermission->getId(), $oPermission2->getId(), $oPermission2->getId()); | ||
| 387 | + | ||
| 384 | $sFoldersTable = KTUtil::getTableName('folders'); | 388 | $sFoldersTable = KTUtil::getTableName('folders'); |
| 385 | $sPLTable = KTUtil::getTableName('permission_lookups'); | 389 | $sPLTable = KTUtil::getTableName('permission_lookups'); |
| 386 | $sPLATable = KTUtil::getTableName('permission_lookup_assignments'); | 390 | $sPLATable = KTUtil::getTableName('permission_lookup_assignments'); |
| 387 | - $oPermission = KTPermission::getByName('ktcore.permissions.read'); | ||
| 388 | $sQuery = "SELECT DISTINCT F.id AS id FROM | 391 | $sQuery = "SELECT DISTINCT F.id AS id FROM |
| 389 | $sFoldersTable AS F | 392 | $sFoldersTable AS F |
| 390 | - LEFT JOIN $sPLTable AS PL ON F.permission_lookup_id = PL.id LEFT JOIN $sPLATable AS PLA ON PLA.permission_lookup_id = PL.id AND PLA.permission_id = ? | 393 | + LEFT JOIN $sPLTable AS PL ON F.permission_lookup_id = PL.id |
| 394 | + LEFT JOIN $sPLATable AS PLA ON PLA.permission_lookup_id = PL.id AND (PLA.permission_id = ? || PLA.permission_id = ?) | ||
| 395 | + | ||
| 391 | LEFT JOIN $sFoldersTable AS F2 ON F.parent_id = F2.id | 396 | LEFT JOIN $sFoldersTable AS F2 ON F.parent_id = F2.id |
| 392 | - LEFT JOIN $sPLTable AS PL2 ON F2.permission_lookup_id = PL2.id LEFT JOIN $sPLATable AS PLA2 ON PLA2.permission_lookup_id = PL2.id AND PLA2.permission_id = ? | 397 | + LEFT JOIN $sPLTable AS PL2 ON F2.permission_lookup_id = PL2.id |
| 398 | + LEFT JOIN $sPLATable AS PLA2 ON PLA2.permission_lookup_id = PL2.id AND (PLA2.permission_id = ? || PLA.permission_id = ?) | ||
| 393 | WHERE | 399 | WHERE |
| 394 | PLA.permission_descriptor_id IN ($sPermissionDescriptors) | 400 | PLA.permission_descriptor_id IN ($sPermissionDescriptors) |
| 395 | AND F2.id <> 1 | 401 | AND F2.id <> 1 |
| 396 | AND NOT (PLA2.permission_descriptor_id IN ($sPermissionDescriptors))"; | 402 | AND NOT (PLA2.permission_descriptor_id IN ($sPermissionDescriptors))"; |
| 397 | - $aParams = kt_array_merge(array($oPermission->getId(), $oPermission->getId()), $aPermissionDescriptors, $aPermissionDescriptors); | 403 | + $aParams = kt_array_merge($aPermissionIds, $aPermissionDescriptors, $aPermissionDescriptors); |
| 398 | $res = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'id'); | 404 | $res = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'id'); |
| 399 | 405 | ||
| 400 | if (PEAR::isError($res)) { | 406 | if (PEAR::isError($res)) { |