return $engine->isGlobalActionAllowedForUser($user, $section, $action) ;
}
- if (!USE_PFO_RBAC) {
- return;
- }
+ function forge_cache_external_roles($group) {
+ global $used_external_roles, $unused_external_roles;
+
+ $used_external_roles = array();
+ $unused_external_roles = array();
+ $group_id = $group->getID();
+
+ foreach (RBACEngine::getInstance()->getPublicRoles() as $r) {
+ $grs = $r->getLinkedProjects();
+ $seen = false;
+ foreach ($grs as $g) {
+ if ($g->getID() == $group_id) {
+ $seen = true;
+ break;
+ }
+ }
+ if (!$seen) {
+ $unused_external_roles[] = $r;
+ }
+ }
+
+ foreach ($group->getRoles() as $r) {
+ if ($r->getHomeProject() == NULL ||
+ $r->getHomeProject()->getID() != $group_id) {
+ $used_external_roles[] = $r;
+ }
+ }
+
+ sortRoleList($used_external_roles, $group, 'composite');
+ sortRoleList($unused_external_roles, $group, 'composite');
+ }
+
// Local Variables:
// mode: php
// c-file-style: "bsd"
}
} else if (getStringFromRequest('linkrole')) {
/* link a role to this project */
- if (USE_PFO_RBAC) {
- $role_id = getIntFromRequest('role_id');
- foreach ($unused_external_roles as $r) {
- if ($r->getID() == $role_id) {
- if (!$r->linkProject($group)) {
- $error_msg = $r->getErrorMessage();
- } else {
- $feedback = _("Role linked successfully");
- forge_cache_external_roles($group);
- }
+ $role_id = getIntFromRequest('role_id');
+ foreach ($unused_external_roles as $r) {
+ if ($r->getID() == $role_id) {
+ if (!$r->linkProject($group)) {
+ $error_msg = $r->getErrorMessage();
+ } else {
+ $feedback = _("Role linked successfully");
- cache_external_roles () ;
++ forge_cache_external_roles($group);
}
}
}
} else if (getStringFromRequest('unlinkrole')) {
/* unlink a role from this project */
- if (USE_PFO_RBAC) {
- $role_id = getIntFromRequest('role_id');
- foreach ($used_external_roles as $r) {
- if ($r->getID() == $role_id) {
- if (!$r->unLinkProject($group)) {
- $error_msg = $r->getErrorMessage();
- } else {
- $feedback = _("Role unlinked successfully");
- forge_cache_external_roles($group);
- }
+ $role_id = getIntFromRequest('role_id');
+ foreach ($used_external_roles as $r) {
+ if ($r->getID() == $role_id) {
+ if (!$r->unLinkProject($group)) {
+ $error_msg = $r->getErrorMessage();
+ } else {
+ $feedback = _("Role unlinked successfully");
- cache_external_roles () ;
++ forge_cache_external_roles($group);
}
}
}