From a3803278c65206ed6a8237001643332cd211eb0d Mon Sep 17 00:00:00 2001 From: Roland Mas Date: Fri, 4 Nov 2011 16:03:24 +0000 Subject: [PATCH] Merged from 5.1: Protect against template project not having an admin role --- src/common/include/Group.class.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/common/include/Group.class.php b/src/common/include/Group.class.php index c560c3d606..360c926623 100644 --- a/src/common/include/Group.class.php +++ b/src/common/include/Group.class.php @@ -2203,7 +2203,7 @@ class Group extends Error { $template = $this->getTemplateProject(); $id_mappings = array(); - $seen_local_roles = false; + $seen_admin_role = false; if ($template) { // Copy roles from template project foreach($template->getRoles() as $oldrole) { @@ -2213,7 +2213,9 @@ class Group extends Error { // Need to use a different role name so that the permissions aren't set from the hardcoded defaults $role->create('TEMPORARY ROLE NAME', $data, true); $role->setName($oldrole->getName()); - $seen_local_roles = true; + if ($oldrole->getSetting ('project_admin', $template->getID())) { + $seen_admin_role = true; + } } else { $role = $oldrole; $role->linkProject($this); @@ -2224,7 +2226,7 @@ class Group extends Error { } } - if (!$seen_local_roles) { + if (!$seen_admin_role) { $role = new Role($this); $adminperms = array ('project_admin' => array ($this->getID() => 1)) ; $role_id = $role->create ('Admin', $adminperms, true) ; @@ -2232,11 +2234,14 @@ class Group extends Error { $roles = $this->getRoles() ; foreach ($roles as $r) { + if ($r->getHomeProject() == NULL) { + continue; + } if ($r->getSetting ('project_admin', $this->getID())) { $r->addUser(user_get_object ($idadmin_group)); } } - + // Temporarily switch to the submitter's identity $saved_session = session_get_user(); session_set_internal($idadmin_group); -- 2.30.2