diff --git a/lib/browse/PartialQuery.inc.php b/lib/browse/PartialQuery.inc.php index 4b2a497..6c05a50 100644 --- a/lib/browse/PartialQuery.inc.php +++ b/lib/browse/PartialQuery.inc.php @@ -97,6 +97,7 @@ class BrowseQuery extends PartialQuery{ if (PEAR::isError($res)) { return $res; } + //var_dump($res); list($sPermissionString, $aPermissionParams, $sPermissionJoin) = $res; $aPotentialWhere = array($sPermissionString, 'D.folder_id = ?', 'D.status_id = 1'); $aWhere = array(); diff --git a/lib/permissions/permissiondescriptor.inc.php b/lib/permissions/permissiondescriptor.inc.php index 04c494f..8077b6a 100644 --- a/lib/permissions/permissiondescriptor.inc.php +++ b/lib/permissions/permissiondescriptor.inc.php @@ -425,14 +425,22 @@ class KTPermissionDescriptor extends KTEntity { // }}} // {{{ STATIC: getByUser - function &getByUser($oUser) { + function &getByUser($oUser, $aOptions = null) { $sTable = KTUtil::getTableName('permission_descriptor_users'); $sQuery = "SELECT descriptor_id FROM $sTable WHERE user_id = ?"; $aParams = array($oUser->getID()); $aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'descriptor_id'); + if (is_null($aOptions)) { + $aOptions = array(); + } + $ids = KTUtil::arrayGet($aOptions, 'ids'); $aRet = array(); foreach ($aIDs as $iID) { - $aRet[] =& KTPermissionDescriptor::get($iID); + if ($ids === true) { + $aRet[] = $iID; + } else { + $aRet[] =& KTPermissionDescriptor::get($iID); + } } return $aRet; } diff --git a/lib/permissions/permissionutil.inc.php b/lib/permissions/permissionutil.inc.php index 44d5075..7ec7b64 100644 --- a/lib/permissions/permissionutil.inc.php +++ b/lib/permissions/permissionutil.inc.php @@ -623,8 +623,17 @@ class KTPermissionUtil { // {{{ getPermissionDescriptorsForUser function getPermissionDescriptorsForUser($oUser) { $aGroups = GroupUtil::listGroupsForUserExpand($oUser); + $roles = array(-3); // everyone + $aEveryoneDescriptors = array(); + $aAuthenticatedDescriptors = array(); + if (!$oUser->isAnonymous()) { + // authenticated + $roles[] = -4; + } + $aRoleDescriptors = KTPermissionDescriptor::getByRoles($roles, array('ids' => true)); $aPermissionDescriptors = KTPermissionDescriptor::getByGroups($aGroups, array('ids' => true)); - return $aPermissionDescriptors; + $aUserDescriptors = KTPermissionDescriptor::getByUser($oUser, array('ids' => true)); + return kt_array_merge($aPermissionDescriptors, $aUserDescriptors, $aRoleDescriptors); } // }}} } diff --git a/lib/search/searchutil.inc.php b/lib/search/searchutil.inc.php index daf3563..6582b88 100644 --- a/lib/search/searchutil.inc.php +++ b/lib/search/searchutil.inc.php @@ -190,8 +190,7 @@ class KTSearchUtil { INNER JOIN $sPermissionLookupsTable AS PL ON $sItemTableName.permission_lookup_id = PL.id INNER JOIN $sPermissionLookupAssignmentsTable AS PLA ON PL.id = PLA.permission_lookup_id AND PLA.permission_id = ? "; - $aGroups = GroupUtil::listGroupsForUserExpand($oUser); - $aPermissionDescriptors = KTPermissionDescriptor::getByGroups($aGroups, array('ids' => true)); + $aPermissionDescriptors = KTPermissionUtil::getPermissionDescriptorsForUser($oUser); if (count($aPermissionDescriptors) === 0) { return PEAR::raiseError('You have no permissions'); }