$group_id,'admin_flags'=>'A')); $role_id = getStringFromRequest('role_id'); $data = getStringFromRequest('data'); $feedback=''; // // The observer is a special role, which is actually // just controlling the is_public/allow anon flags // // Get observer role instead of regular role // if ($role_id=='observer') { $role = new RoleObserver(group_get_object($group_id)); if (!$role || !is_object($role)) { exit_error('Error','Could Not Get RoleObserver'); } elseif ($role->isError()) { exit_error('Error',$role->getErrorMessage()); } if (getStringFromRequest('submit')) { if (!$role->update($data)) { $feedback .= $role->getErrorMessage(); } else { $feedback .= ' Successfully Updated Role '; } } } else { $role = new Role(group_get_object($group_id),$role_id); if (!$role || !is_object($role)) { exit_error('Error','Could Not Get Role'); } elseif ($role->isError()) { exit_error('Error',$role->getErrorMessage()); } if (getStringFromRequest('submit')) { $role_name = getStringFromRequest('role_name'); if (!$role_id) { $role_id=$role->create($role_name,$data); if (!$role_id) { $feedback .= $role->getErrorMessage(); } else { $feedback .= ' Successfully Created New Role '; } } else { if (!$role->update($role_name,$data)) { $feedback .= $role->getErrorMessage(); } else { $feedback .= ' Successfully Updated Role '; } } //plugin webcal //change assistant for webcal $params = getIntFromRequest('group_id'); plugin_hook('change_cal_permission_auto',$params); } } project_admin_header(array('title'=>_('Edit Role'),'group'=>$group_id)); // // If observer role, show title // if ($role_id=='observer') { echo '

'._('Edit Observer').'

'; echo _('Use this page to edit the permissions and access levels of non-members of your project. Non-members includes users who are not logged in.'); } else { if (!$role_id) { echo '

'._('New Role').'

'; } else { echo '

'._('Edit Role').'

'; } echo _('Use this page to edit your project\'s Roles. Note that each member has at least as much access as the Observer. For example, if the Observer can read CVS, so can any other role in the project.'); } echo '

'; if ($role_id != 'observer') { echo ''._('Role Name').'

'; } $titles[]=_('Section'); $titles[]=_('Subsection'); $titles[]=_('Setting'); echo $HTML->listTableTop($titles); // // Get the keys for this role and interate to build page // // Everything is built on the multi-dimensial arrays in the Role object // $j = 0; $keys = array_keys($role->role_values); for ($i=0; $igetRoleVals('forumanon'), "data[forumanon][".db_result($res,$q,'group_forum_id')."]", $role->getVal('forumanon',db_result($res,$q,'group_forum_id')), false, false ); } else { $txt=''; } echo 'boxGetAltRowStyle($j++) . '> '.$rbac_edit_section_names[$keys[$i]].' '.db_result($res,$q,'forum_name').' '.html_build_select_box_from_assoc( $role->getRoleVals($keys[$i]), "data[".$keys[$i]."][".db_result($res,$q,'group_forum_id')."]", $role->getVal($keys[$i],db_result($res,$q,'group_forum_id')), false, false ). $txt .''; } } // // Handle task mgr settings for all roles // } elseif ($keys[$i] == 'pm' || $keys[$i] == 'pmpublic') { $res=db_query("SELECT group_project_id,project_name,is_public FROM project_group_list WHERE group_id='$group_id'"); for ($q=0; $qboxGetAltRowStyle($j++) . '> '.$rbac_edit_section_names[$keys[$i]].' '.db_result($res,$q,'project_name').' '.html_build_select_box_from_assoc( $role->getRoleVals($keys[$i]), "data[".$keys[$i]."][".db_result($res,$q,'group_project_id')."]", $role->getVal($keys[$i],db_result($res,$q,'group_project_id')), false, false ).''; } // // Handle tracker settings for all roles // } elseif ($keys[$i] == 'tracker' || $keys[$i] == 'trackerpublic' || $keys[$i] == 'trackeranon') { if ($keys[$i] == 'trackeranon') { //skip as we have special case below } else { $res=db_query("SELECT group_artifact_id,name,is_public,allow_anon FROM artifact_group_list WHERE group_id='$group_id'"); for ($q=0; $qgetRoleVals('trackeranon'), "data[trackeranon][".db_result($res,$q,'group_artifact_id')."]", $role->getVal('trackeranon',db_result($res,$q,'group_artifact_id')), false, false ); } else { $txt=''; } echo 'boxGetAltRowStyle($j++) . '> '.$rbac_edit_section_names[$keys[$i]].' '.db_result($res,$q,'name').' '.html_build_select_box_from_assoc( $role->getRoleVals($keys[$i]), "data[".$keys[$i]."][".db_result($res,$q,'group_artifact_id')."]", $role->getVal($keys[$i],db_result($res,$q,'group_artifact_id')), false, false ). $txt .''; } } // // File release system - each package can be public/private // } elseif ($keys[$i] == 'frspackage') { $res=db_query("SELECT package_id,name,is_public FROM frs_package WHERE group_id='$group_id'"); for ($q=0; $qboxGetAltRowStyle($j++) . '> '.$rbac_edit_section_names[$keys[$i]].' '.db_result($res,$q,'name').' '.html_build_select_box_from_assoc( $role->getRoleVals($keys[$i]), "data[".$keys[$i]."][".db_result($res,$q,'package_id')."]", $role->getVal($keys[$i],db_result($res,$q,'package_id')), false, false ).''; } // // Handle all other settings for all roles // } else { echo 'boxGetAltRowStyle($j++) . '> '.$rbac_edit_section_names[$keys[$i]].' - '.html_build_select_box_from_assoc($role->getRoleVals($keys[$i]), "data[".$keys[$i]."][0]", $role->getVal($keys[$i],0), false, false ).' '; } } echo $HTML->listTableBottom(); echo ' '; project_admin_footer(array()); ?>