3 * Project Admin Main Page
5 * This page contains administrative information for the project as well
6 * as allows to manage it. This page should be accessible to all project
7 * members, but only admins may perform most functions.
9 * Copyright 2004 GForge, LLC
11 * @version $Id: index.php 5829 2006-10-19 20:02:18Z federicot $
12 * @author Tim Perdue tim@gforge.org
14 * This file is part of GForge.
16 * GForge is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
21 * GForge is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
26 * You should have received a copy of the GNU General Public License
27 * along with GForge; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31 require_once('../../env.inc.php');
32 require_once $gfwww.'include/pre.php';
33 require_once $gfwww.'project/admin/project_admin_utils.php';
34 require_once $gfwww.'include/role_utils.php';
35 require_once $gfcommon.'include/account.php';
36 require_once $gfcommon.'include/GroupJoinRequest.class.php';
38 $group_id = getIntFromRequest('group_id');
39 $feedback = getStringFromRequest('feedback');
40 session_require(array('group'=>$group_id,'admin_flags'=>'A'));
42 // get current information
43 $group =& group_get_object($group_id);
44 if (!$group || !is_object($group)) {
45 exit_error('Error','Could Not Get Group');
46 } elseif ($group->isError()) {
47 exit_error('Error',$group->getErrorMessage());
50 $perm =& $group->getPermission( session_get_user() );
51 if (!$perm || !is_object($perm)) {
52 exit_error('Error','Could Not Get Permission');
53 } elseif ($perm->isError()) {
54 exit_error('Error',$perm->getErrorMessage());
57 if (!$perm->isAdmin()) {
58 exit_permission_denied();
61 // Add hook to replace users managements by a plugin.
63 if (plugin_hook_listeners("project_admin_users") > 0) {
64 $hook_params = array () ;
65 $hook_params['group_id'] = $group_id ;
66 plugin_hook ("project_admin_users", $hook_params);
69 if (getStringFromRequest('submit')) {
70 if (getStringFromRequest('adduser')) {
72 add user to this project
74 $form_unix_name = getStringFromRequest('form_unix_name');
75 $user_object = &user_get_object_by_name($form_unix_name);
76 if ($user_object === false) {
77 $feedback .= _("<p>No Matching Users Found</p>");
79 $role_id = getIntFromRequest('role_id');
81 $feedback .= _("Role not selected");
83 $user_id = $user_object->getID();
84 if (!$group->addUser($form_unix_name,$role_id)) {
85 $error_msg = $group->getErrorMessage();
87 $feedback = _("User Added Successfully");
88 //if the user have requested to join this group
89 //we should remove him from the request list
90 //since it has already been added
91 $gjr=new GroupJoinRequest($group,$user_id);
92 if ($gjr || is_object($gjr) || !$gjr->isError()) {
98 } else if (getStringFromRequest('rmuser')) {
100 remove a user from this group
102 $user_id = getIntFromRequest('user_id');
103 if (!$group->removeUser($user_id)) {
104 $error_msg = $group->getErrorMessage();
106 $feedback = _("User Removed Successfully");
108 } else if (getStringFromRequest('updateuser')) {
112 $user_id = getIntFromRequest('user_id');
113 $role_id = getIntFromRequest('role_id');
115 $error_msg = _("Role not selected");
118 if (!$group->updateUser($user_id,$role_id)) {
119 $error_msg = $group->getErrorMessage();
121 $feedback = _("User Updated Successfully");
124 } elseif (getStringFromRequest('acceptpending')) {
126 add user to this project
128 $role_id = getIntFromRequest('role_id');
130 $feedback .= _("Role not selected");
132 $form_userid = getIntFromRequest('form_userid');
133 $form_unix_name = getStringFromRequest('form_unix_name');
134 if (!$group->addUser($form_unix_name,$role_id)) {
135 $error_msg = $group->getErrorMessage();
137 $gjr=new GroupJoinRequest($group,$form_userid);
138 if (!$gjr || !is_object($gjr) || $gjr->isError()) {
139 $error_msg = 'Error Getting GroupJoinRequest';
143 $feedback = _("User Added Successfully");
146 } elseif (getStringFromRequest('rejectpending')) {
148 reject adding user to this project
150 $form_userid = getIntFromRequest('form_userid');
151 $gjr=new GroupJoinRequest($group,$form_userid);
152 if (!$gjr || !is_object($gjr) || $gjr->isError()) {
153 $feedback .= 'Error Getting GroupJoinRequest';
155 if (!$gjr->reject()) {
156 exit_error('Error',$gjr->getErrorMessage());
158 $feedback .= 'Rejected';
164 $group->clearError();
166 project_admin_header(array('title'=>sprintf(_('Project Admin: %s'), $group->getPublicName()),'group'=>$group->getID()));
169 Show top box listing trove and other info
174 <table width="100%" cellpadding="2" cellspacing="2">
176 <td width="50%"><?php
180 $reqs =& get_group_join_requests($group);
181 if (count($reqs) > 0) {
182 echo $HTML->boxTop(_("Pending Requests"));
183 for ($i=0; $i<count($reqs); $i++) {
184 $user =& user_get_object($reqs[$i]->getUserId());
185 if (!$user || !is_object($user)) {
189 <form action="<?php echo $PHP_SELF.'?group_id='.$group_id; ?>"
193 <td style="white-space: nowrap;"><input type="hidden" name="submit"
194 value="y" /> <input type="hidden" name="form_userid"
195 value="<?php echo $user->getId(); ?>" /> <input type="hidden"
196 name="form_unix_name" value="<?php echo $user->getUnixName(); ?>" /><a
197 href="/users/<?php echo $user->getUnixName(); ?>"><?php echo $user->getRealName(); ?></a>
199 <td style="white-space: nowrap; text-align: right;"><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?>
200 <input type="submit" name="acceptpending"
201 value="<?php echo _("Accept") ?>" />
202 <input type="submit" name="rejectpending"
203 value="<?php echo _("Reject") ?>" />
211 echo $HTML->boxBottom();
214 echo $HTML->boxTop(_("Add User"));
216 if (isset($html_code['add_user'])) {
217 echo $html_code['add_user'];
225 action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>"
227 <p><input type="hidden" name="submit" value="y" /> <input type="text"
228 name="form_unix_name" size="10" value="" /> <?php echo role_box($group_id,'role_id'); ?>
229 <input type="submit" name="adduser"
230 value="<?php echo _("Add User") ?>" />
238 href="massadd.php?group_id=<?php echo $group_id; ?>"><?php echo _("Add Users From List"); ?></a>
243 // RBAC Editing Functions
245 echo $HTML->boxMiddle(_("Edit Roles"));
248 <form action="roleedit.php?group_id='. $group_id .'&role_id=observer" method="post">
249 <p><input type="submit" name="edit" value="'._("Edit Observer").'" /></p>
252 echo '<tr><td colspan="2"><form action="roleedit.php?group_id='. $group_id .'" method="post">';
253 echo role_box($group_id,'role_id','');
254 echo ' <input type="submit" name="edit" value="'._("Edit Role").'" /></form></td></tr>';
256 echo '<tr><td colspan="2">';
257 echo '<p><a href="roleedit.php?group_id='.$group_id.'">'._("Add Role").'</a>';
260 echo $HTML->boxBottom();
265 echo $HTML->boxTop(_("Project Members"));
269 Show the members of this project
273 $res_memb = db_query_params('SELECT users.realname,users.user_id,
274 users.user_name,user_group.admin_flags,user_group.role_id
275 FROM users,user_group
276 WHERE users.user_id=user_group.user_id
277 AND user_group.group_id=$1 ORDER BY users.realname',
280 while ($row_memb=db_fetch_array($res_memb)) {
283 <form action="'.getStringFromServer('PHP_SELF').'" method="post">
286 <td style="white-space: nowrap;">
287 <input type="hidden" name="submit" value="y" />
288 <input type="hidden" name="user_id" value="'.$row_memb['user_id'].'" />
289 <input type="hidden" name="group_id" value="'. $group_id .'" />
290 <a href="/users/'.$row_memb['user_name'].'">'.$row_memb['realname'].'</a>
292 <td style="white-space: nowrap; text-align: right;">';
293 echo role_box($group_id,'role_id',$row_memb['role_id']);
294 echo '<input type="submit" name="updateuser" value="'._("Update").'" />';
295 echo '<input type="submit" name="rmuser" value="'._("Remove").'" />
301 echo $HTML->boxBottom();
309 project_admin_footer(array());