index 68df16329fc379e91c59f7e48d215c1d9feda283..4045821ba85e0d5311ce31f6360678db2e522c6c 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 && isset($data['0']) && 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);
}