Commit e3b10fa4f79bc8a7284bdba4719d206d9f07e4fd

Authored by Neil Blakey-Milner
1 parent d3a50456

Use new-style permission system to control what documents are shown and

not shown.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3815 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/search/advancedSearchUtil.inc
@@ -26,6 +26,8 @@ @@ -26,6 +26,8 @@
26 * @package search 26 * @package search
27 */ 27 */
28 28
  29 +require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');
  30 +
29 function searchCriteria ($var) { 31 function searchCriteria ($var) {
30 return preg_match('/^bmd(_?\d+)/', $var); 32 return preg_match('/^bmd(_?\d+)/', $var);
31 } 33 }
@@ -91,6 +93,14 @@ function getAdvancedSearchResults($aOrigReq, $iStartIndex) { @@ -91,6 +93,14 @@ function getAdvancedSearchResults($aOrigReq, $iStartIndex) {
91 93
92 $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); 94 $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live');
93 95
  96 + $oPermission =& KTPermission::getByName('ktcore.permissions.read');
  97 + $sPermissionLookupsTable = KTUtil::getTableName('permission_lookups');
  98 + $sPermissionLookupAssignmentsTable = KTUtil::getTableName('permission_lookup_assignments');
  99 + $sPermissionDescriptorsTable = KTUtil::getTableName('permission_descriptors');
  100 + $aGroups = GroupUtil::listGroupsForUserExpand($_SESSION['userID']);
  101 + $aPermissionDescriptors = KTPermissionDescriptor::getByGroups($aGroups, array('ids' => true));
  102 + $sPermissionDescriptors = DBUtil::paramArray($aPermissionDescriptors);
  103 +
94 $sQuery = DBUtil::compactQuery(" 104 $sQuery = DBUtil::compactQuery("
95 SELECT 105 SELECT
96 F.name AS folder_name, F.id AS folder_id, D.id AS document_id, 106 F.name AS folder_name, F.id AS folder_id, D.id AS document_id,
@@ -99,18 +109,19 @@ FROM @@ -99,18 +109,19 @@ FROM
99 $default->documents_table AS D 109 $default->documents_table AS D
100 INNER JOIN $default->folders_table AS F ON D.folder_id = F.id 110 INNER JOIN $default->folders_table AS F ON D.folder_id = F.id
101 $sJoinSQL 111 $sJoinSQL
102 - INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id  
103 - INNER JOIN $default->status_table AS SL on D.status_id=SL.id 112 + INNER JOIN $default->status_table AS SL ON D.status_id=SL.id
  113 + INNER JOIN $sPermissionLookupsTable AS PL ON D.permission_lookup_id = PL.id
  114 + INNER JOIN $sPermissionLookupAssignmentsTable AS PLA ON PL.id = PLA.permission_lookup_id AND PLA.permission_id = ?
104 WHERE 115 WHERE
105 - (F.is_public OR  
106 - SDUL.user_id = ?) 116 + PLA.permission_descriptor_id IN ($sPermissionDescriptors)
107 AND SL.name = ? 117 AND SL.name = ?
108 AND ($sSQLSearchString) 118 AND ($sSQLSearchString)
109 GROUP BY D.id 119 GROUP BY D.id
110 ORDER BY doc_count DESC"); 120 ORDER BY doc_count DESC");
111 121
112 $aParams = array(); 122 $aParams = array();
113 - $aParams[] = $_SESSION["userID"]; 123 + $aParams[] = $oPermission->getId();
  124 + $aParams = array_merge($aParams, $aPermissionDescriptors);
114 $aParams[] = $sToSearch; 125 $aParams[] = $sToSearch;
115 $aParams = array_merge($aParams, $aCritParams); 126 $aParams = array_merge($aParams, $aCritParams);
116 127