Commit b93653ffb819e340a0e269c1cf91b96072ba8a8a

Authored by megan_w
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)) {