index 68df16329fc379e91c59f7e48d215c1d9feda283..65cdfdfd9ff0c606b93412305d910ce55f3b4350 100644 (file)
continue;
}
continue;
}
- /* If attribute is "", we want to know, if we've *any* permissions here... */
+ /* If attribute is "", we want to know, if we've *any* permissions here...
+ Merge global class ACLs [0] with attributes specific ACLs [attribute].
+ */
if ($attribute == "" && isset($subacl['acl'][$object])){
foreach($subacl['acl'][$object] as $attr => $dummy){
$acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][$attr]);
if ($attribute == "" && isset($subacl['acl'][$object])){
foreach($subacl['acl'][$object] as $attr => $dummy){
$acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][$attr]);
/* Extract all departments that are accessible (direct or 'on the way' to an
accessible department) */
/* Extract all departments that are accessible (direct or 'on the way' to an
accessible department) */
- function get_module_departments($module)
+ function get_module_departments($module, $skip_self_acls = FALSE )
{
/* If we are forced to skip ACLs checks for the current user
{
/* If we are forced to skip ACLs checks for the current user
foreach($infos as $info){
$found = FALSE;
foreach($info['acl'] as $cat => $data){
foreach($infos as $info){
$found = FALSE;
foreach($info['acl'] as $cat => $data){
+
+ /* Skip self acls?
+ */
+ if($skip_self_acls && preg_match("//s",$data['0'])) continue;
+
if(is_array($module)){
foreach($module as $mod){
if(preg_match("/^".normalizePreg($mod)."/",$cat)){
if(is_array($module)){
foreach($module as $mod){
if(preg_match("/^".normalizePreg($mod)."/",$cat)){
$acl = "";
foreach($module as $mod){
if(preg_match("/\//",$mod)){
$acl = "";
foreach($module as $mod){
if(preg_match("/\//",$mod)){
- $acl.= $this->get_permissions($dn,$mod,"0");
+ $acl.= $this->get_permissions($dn,$mod);
}else{
$acl.= $this->get_category_permissions($dn,$mod);
}
}else{
$acl.= $this->get_category_permissions($dn,$mod);
}