userpermedit.php
来自「GForge 3.0 协作开发平台 支持CVS, mailing lists, 」· PHP 代码 · 共 366 行
PHP
366 行
<?php/** * * Project Admin page to edit permissions for the specific group member * * This page is linked from userperms.php and from forms to add users * to group (located on Project/Foundry Admin main pages). * * SourceForge: Breaking Down the Barriers to Open Source Development * Copyright 1999-2001 (c) VA Linux Systems * http://sourceforge.net * * @version $Id: userpermedit.php,v 1.12 2001/06/27 21:55:37 pfalcon Exp $ * */require_once('pre.php'); require_once('www/project/admin/project_admin_utils.php');require_once('common/tracker/ArtifactType.class');session_require(array('group'=>$group_id,'admin_flags'=>'A'));// Builds role selection box with given selected itemfunction member_role_box($name, $checked) { global $member_roles; global $Language; if (!$member_roles) { $sql="SELECT category_id,name FROM people_job_category"; $member_roles=db_query($sql); } return html_build_select_box($member_roles,$name,$checked,true,$Language->getText('project_admin_userpermedit','undefined'));}// Since there're lot of permissions, and each of them has complex// HTML rendition (SELECT boxes, etc.), this function is used to reduce// the background noise.function render_row($name, $val, $i) { print ' <tr '.$GLOBALS['HTML']->boxGetAltRowStyle($i).'> <td>'.$name.'</td> <td>'.$val.'</td></tr> ';}$group =& group_get_object($group_id);exit_assert_object($group, 'Group');// ########################### form submission, make updates// Netscape allows to submit single-field form by pressing// Return in the field. In this case, it won't set value for// submit buttonif ($submit || $form_unix_name) { if ($GLOBALS['func']=='adduser') { /* We came here from Add User page, need to add user and fall thru to show permissions for one */ $u =& user_get_object_by_name($form_unix_name); if (!$u || !is_object($u)){ exit_error( $Language->getText('project_admin_userpermedit','invalid_user'), $Language->getText('project_admin_userpermedit','user_does_not_exist') ); } if (!$group->addUser($u->getUnixName())) { exit_error('Error', $group->getErrorMessage()); } else { $feedback = $Language->getText('project_admin_userpermedit','user_added').' <br />'; } $user_id = $u->getID(); } elseif ($addtotracker) { $u =& user_get_object($user_id); exit_assert_object($u, 'User'); // // if "add all" option, get list of ArtifactTypes // that this user is not already a member of // if ($add_all) { $sql="SELECT group_artifact_id FROM artifact_group_list WHERE group_id='$group_id' AND NOT EXISTS (SELECT user_id FROM artifact_perm WHERE artifact_perm.group_artifact_id=artifact_group_list.group_artifact_id AND user_id='".$u->getID()."')"; $addtoids = util_result_column_to_array(db_query($sql)); } // // Now take the array of ids and add this user to them // $count = count($addtoids); for ($i=0; $i<$count; $i++) { $ath = new ArtifactType($group,$addtoids[$i]); $ath->addUser($u->getID()); if ($ath->isError()) { $feedback .= $addtoids[$i] .': '. $ath->getErrorMessage(); $was_error = true; } } } else { /* Else, we are updating user's permissions */ $u =& user_get_object($user_id); exit_assert_object($u, 'User'); // XXX: remove when CVS roles will be activated! $cvs_flags = 1; //call to control function in the $Group object if ($group->updateUser($user_id, $admin_flags, $forum_flags, $project_flags, $doc_flags, $cvs_flags, $release_flags, $member_role, $artifact_flags)) { group_add_history ('Changed Permissions for',$u->getUnixName(),$group_id); // // Delete the checked ids // // keep an assoc array of artifacts this user // was removed from, so we don't then try to update // those artifact type perms in the next step $del_arr=array(); $count=count($deletefrom); for ($i=0; $i<$count; $i++) { $del_arr["$deletefrom[$i]"]=true; $ath = new ArtifactType($group,$deletefrom[$i]); $ath->deleteUser($user_id); if ($ath->isError()) { $feedback .= $deletefrom[$i] .': '. $ath->getErrorMessage(); $was_error=true; } } // // Handle the 2-D array of group_artifact_id/permission level // $count=count($updateperms); for ($i=0; $i<$count; $i++) { // // quick check of that assoc array to prevent // updating of perms that don't exist anymore // if (!$del_arr["$updateperms[$i][0]"]) { $ath = new ArtifactType($group,$updateperms[$i][0]); $ath->updateUser($user_id,$updateperms[$i][1]); if ($ath->isError()) { $feedback .= $updateperms[$i][0] .': '. $ath->getErrorMessage(); $was_error=true; } } } //if no errors occurred, show just one feedback message //instead of the coredump of messages; if (!$was_error) { $feedback = $Language->getText('project_admin_userpermedit','permissions_updated').' <br />'; } } else { $feedback .= $group->getErrorMessage(); } }} else { // // Set up this user's object // $u =& user_get_object($user_id); if (!$u || !is_object($u)) { exit_error('Error', 'Error creating user object'); } else if ($u->isError()) { exit_error('Error', $u->getErrorMessage()); }}project_admin_header(array('title'=>$Language->getText('project_admin_userpermedit','title'),'group'=>$group_id,'pagename'=>'project_admin_userpermedit','sectionvals'=>array(group_getname($group_id))));$u =& user_get_object($user_id);if ($u && is_object($u)){ print $Language->getText('project_admin_userpermedit','editing_permissions',array($u->getUnixName(), $u->getRealName())). ".</p><p>" ;}// Show description of roles/permissionsecho permissions_blurb();$res_dev = db_query(" SELECT * FROM user_group WHERE group_id='$group_id' AND user_id='$user_id'");if (!$res_dev || db_numrows($res_dev) < 1) { echo '<h2>'.$Language->getText('project_admin_userpermedit','developer_not_found').'</h2>'; echo db_error();} else { echo ' <p> <form action="'.$PHP_SELF.'?group_id='.$group_id.'&user_id='. $user_id .'" method="post">'; $row_dev = db_fetch_array($res_dev); $arr=array(); $arr[]=$Language->getText('project_admin_userpermedit','property'); $arr[]=$Language->getText('project_admin_userpermedit','value'); echo $GLOBALS['HTML']->listTableTop($arr); render_row( $Language->getText('project_admin_userpermedit','project_role'), member_role_box('member_role',$row_dev['member_role']), $i++ ); render_row( $Language->getText('project_admin_userpermedit','project_admin'), html_build_checkbox('admin_flags', 'A', stristr($row_dev['admin_flags'],'A')), $i++ ); render_row( $Language->getText('project_admin_userpermedit','release_technician'), html_build_checkbox('release_flags', '1', $row_dev['release_flags']==1), $i++ ); render_row( 'CVS Commit', html_build_checkbox('cvs_flags', '1', $row_dev['cvs_flags']==1), $i++ ); render_row( $Language->getText('project_admin_userpermedit','tracker_manager'), html_build_select_box_from_arrays( array(0,2), array('-','Admin'), 'artifact_flags',$row_dev['artifact_flags'],false ), $i++ ); $tracker_ids = array(0,1,2,3); $tracker_texts = array('-', $Language->getText('project_admin_userpermedit','technician'), $Language->getText('project_admin_userpermedit','admin_tech'), $Language->getText('project_admin_userpermedit','admin')); render_row( $Language->getText('project_admin_userpermedit','pm'), html_build_select_box_from_arrays( $tracker_ids, $tracker_texts, 'project_flags',$row_dev['project_flags'],false ), $i++ ); render_row( $Language->getText('project_admin_userpermedit','forums'), html_build_select_box_from_arrays( array(0,2), array('-',$Language->getText('project_admin_userpermedit','moderator')), 'forum_flags',$row_dev['forum_flags'],false ), $i++ ); render_row( $Language->getText('project_admin_userpermedit','docman'), html_build_select_box_from_arrays( array(0,1), array('-',$Language->getText('project_admin_userpermedit','editor')), 'doc_flags',$row_dev['doc_flags'],false ), $i++ ); // // Get the list of permissions that this user has // for ArtifactTypes in this Group // $res = db_query("SELECT * FROM artifactperm_artgrouplist_vw WHERE user_id='$user_id' AND group_id='$group_id'"); $rows=db_numrows($res); // Iterate over all trackers of the group for ($i=0; $i<$rows; $i++) { print ' <input type="hidden" name="updateperms['.$i.'][0]" value="'. db_result($res,$i,'group_artifact_id').'" /> <tr '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'> <td>'. db_result($res,$i,'name') .'</td> <td><select name="updateperms['.$i.'][1]" style="font-size:smaller"> <option value="0"'.((db_result($res,$i,'perm_level')==0)?' selected="selected"':'').'>-</option> <option value="1"'.((db_result($res,$i,'perm_level')==1)?' selected="selected"':'').'>'.$Language->getText('project_admin_userpermedit','technician').'</option> <option value="2"'.((db_result($res,$i,'perm_level')==2)?' selected="selected"':'').'>'.$Language->getText('project_admin_userpermedit','admin_tech').'</option> <option value="3"'.((db_result($res,$i,'perm_level')==3)?' selected="selected"':'').'>'.$Language->getText('project_admin_userpermedit','admin_only').'</option> </select> <input type="checkbox" name="deletefrom[]" value="'. db_result($res,$i,'group_artifact_id').'" /> '.$Language->getText('project_admin_userpermedit','remove').'</td> </tr>'; } ?> <tr><td colspan="2"><p align="center"> <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_userpermedit','update_permissions') ?>" /> <input type="reset" value="<?php echo $Language->getText('project_admin_userpermedit','reset_changes') ?>" /> </form></p> </td></tr> <?php echo $GLOBALS['HTML']->listTableBottom(); ?> <p> </p> <?php echo $Language->getText('project_admin_userpermedit','tracker_info') ?> <div align="center"> <form action="<?php echo $PHP_SELF.'?group_id='.$group_id.'&user_id='.$user_id ?>" method="post"> <input type="hidden" name="addtotracker" value="y" /> <?php $sql="SELECT group_artifact_id,name FROM artifact_group_list WHERE group_id='$group_id' AND NOT EXISTS (SELECT user_id FROM artifact_perm WHERE artifact_perm.group_artifact_id=artifact_group_list.group_artifact_id AND user_id='$user_id')"; $res=db_query($sql); echo db_error(); echo html_build_multiple_select_box ($res,'addtoids[]',array(),8,false); echo '<p> <input type="submit" name="submit" value="'.$Language->getText('project_admin_userpermedit','add_to_tracker').'" /> <input type="checkbox" name="add_all" /> '.$Language->getText('project_admin_userpermedit','add_to_all').'</p> </form></div>';}project_admin_footer(array());?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?