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
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
32 require_once('../../env.inc.php');
33 require_once('pre.php');
34 require_once('www/project/admin/project_admin_utils.php');
35 require_once('www/include/role_utils.php');
36 require_once('common/include/account.php');
37 require_once('common/include/GroupJoinRequest.class.php');
39 $group_id = getIntFromRequest('group_id');
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 if (getStringFromRequest('submit')) {
62 if (getStringFromRequest('adduser')) {
64 add user to this project
66 $form_unix_name = getStringFromRequest('form_unix_name');
67 $user_object = &user_get_object_by_name($form_unix_name);
68 $user_id = $user_object->getID();
69 $role_id = getIntFromRequest('role_id');
70 if (!$group->addUser($form_unix_name,$role_id)) {
71 $feedback .= $group->getErrorMessage();
73 $feedback = _('User Added Successfully');
76 //change assistant for webcal
77 $params[0] = getIntFromRequest('user_id');
78 $params[1] = getIntFromRequest('group_id');
79 plugin_hook('change_cal_permission',$params);
80 $group_id = getIntFromRequest('group_id');
82 //if the user have requested to join this group
83 //we should remove him from the request list
84 //since it has already been added
85 $gjr=new GroupJoinRequest($group,$user_id);
86 if ($gjr || is_object($gjr) || !$gjr->isError()) {
91 } else if (getStringFromRequest('rmuser')) {
93 remove a user from this group
95 $user_id = getIntFromRequest('user_id');
96 if (!$group->removeUser($user_id)) {
97 $feedback .= $group->getErrorMessage();
99 $feedback = _('User Removed Successfully');
101 //change assistant for webcal
102 $params[0] = getIntFromRequest('user_id');
103 $params[1] = getIntFromRequest('group_id');
104 plugin_hook('change_cal_permission',$params);
105 $group_id = getIntFromRequest('group_id');
107 } else if (getStringFromRequest('updateuser')) {
111 $user_id = getIntFromRequest('user_id');
112 $role_id = getIntFromRequest('role_id');
113 if (!$group->updateUser($user_id,$role_id)) {
114 $feedback .= $group->getErrorMessage();
116 $feedback = _('User updated successfully');
118 //change assistant for webcal
119 $params[0] = getIntFromRequest('user_id');
120 $params[1] = getIntFromRequest('group_id');
121 plugin_hook('change_cal_permission',$params);
122 $group_id = getIntFromRequest('group_id');
125 } elseif (getStringFromRequest('acceptpending')) {
127 add user to this project
129 $form_userid = getIntFromRequest('form_userid');
130 $form_unix_name = getStringFromRequest('form_unix_name');
131 $role_id = getIntFromRequest('role_id');
132 if (!$group->addUser($form_unix_name,$role_id)) {
133 $feedback .= $group->getErrorMessage();
135 $gjr=new GroupJoinRequest($group,$form_userid);
136 if (!$gjr || !is_object($gjr) || $gjr->isError()) {
137 $feedback .= 'Error Getting GroupJoinRequest';
139 $gjr->send_accept_mail();
142 $feedback = _('User Added Successfully');
144 } elseif (getStringFromRequest('rejectpending')) {
146 reject adding user to this project
148 $form_userid = getIntFromRequest('form_userid');
149 $gjr=new GroupJoinRequest($group,$form_userid);
150 if (!$gjr || !is_object($gjr) || $gjr->isError()) {
151 $feedback .= 'Error Getting GroupJoinRequest';
153 if (!$gjr->reject()) {
154 exit_error('Error',$gjr->getErrorMessage());
156 $feedback .= 'Rejected';
162 $group->clearError();
164 $adminheadertitle=sprintf(_('Project Admin: %1$s'), $group->getPublicName() );
165 project_admin_header(array('title'=>$adminheadertitle, 'group'=>$group->getID()));
168 Show top box listing trove and other info
173 <table width="100%" cellpadding="2" cellspacing="2" border="0">
177 <?php echo $HTML->boxTop(_('Misc. Project Information')); ?>
181 <?php echo _('Short Description: ') ?><?php echo $group->getDescription(); ?>
182 <p><?php echo _('Homepage Link: ') ?><strong><?php echo $group->getHomepage(); ?></strong></p>
185 global $sys_use_shell;
186 if ($sys_use_shell) {
188 <p><?php echo _('Group shell (SSH) server: ') ?><strong><?php echo $group->getUnixName().'.'.$GLOBALS['sys_default_domain']; ?></strong></p>
189 <p><?php echo _('Group directory on shell server: ') ?><br/><strong><?php echo account_group_homedir($group->getUnixName()); ?></strong></p>
190 <p><?php echo _('Project WWW directory on shell server: ') ?><br /><strong><?php echo account_group_homedir($group->getUnixName()).'/htdocs'; ?></strong></p>
192 } //end of use_shell condition
195 <?php if($sys_use_scm) { ?>
196 <p>[ <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/tarballs.php?group_id=<?php echo $group_id; ?>"><?php echo _('Download Your Nightly SCM Tree Tarball') ?></a> ]</p>
201 <h4><?php echo _('Trove Categorization: ') ?><a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/project/admin/group_trove.php?group_id=<?php echo $group->getID(); ?>">[<?php echo _('Edit') ?>]</a></h4>
204 echo $HTML->boxMiddle(_('Tool Admin').'');
206 if($sys_use_tracker) { ?>
207 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/tracker/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('Tracker admin') ?></a><br />
209 if($sys_use_docman) { ?>
210 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/docman/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('Doc manager admin') ?></a><br />
212 if($sys_use_mail) { ?>
213 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/mail/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('Mail admin') ?></a><br />
215 if($sys_use_news) { ?>
216 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/news/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('News admin') ?></a><br />
219 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/pm/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('Task manager admin') ?></a><br />
221 if($sys_use_forum) { ?>
222 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/forum/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('Forum admin') ?></a><br />
224 if($sys_use_frs) { ?>
225 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/frs/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('FRS admin') ?></a><br />
227 if($sys_use_scm) { ?>
228 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/scm/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo _('SCM admin') ?></a><br />
231 $hook_params = array () ;
232 $hook_params['group_id'] = $group_id ;
233 plugin_hook ("project_admin_plugins", $hook_params) ;
236 echo $HTML->boxBottom();
245 echo $HTML->boxTop(_('Group Members'));
249 Show the members of this project
253 $res_memb = db_query("SELECT users.realname,users.user_id,
254 users.user_name,user_group.admin_flags,user_group.role_id
255 FROM users,user_group
256 WHERE users.user_id=user_group.user_id
257 AND user_group.group_id='$group_id' ORDER BY user_id");
260 <table width="100%" border="0">
261 <tr><td><strong>'._('Unix name').'</strong></td>
262 <td><strong>'._('Role').'</strong></td>
263 <td><strong>'._('Update').'</strong></td>
264 <td><strong>'._('Remove').'</strong></td></tr>';
266 while ($row_memb=db_fetch_array($res_memb)) {
269 <form action="'.getStringFromServer('PHP_SELF').'" method="post">
270 <input type="hidden" name="submit" value="y" />
271 <input type="hidden" name="user_id" value="'.$row_memb['user_id'].'" />
272 <input type="hidden" name="group_id" value="'. $group_id .'" />
273 <td>'.$row_memb['realname'].' ('.$row_memb['user_name'].')</td>
274 <td>'.role_box($group_id,'role_id',$row_memb['role_id']).'</td>
275 <td><input type="submit" name="updateuser" value="'._('Update').'"></td>
276 <td><input type="submit" name="rmuser" value="'._('Remove').'"></td>
280 <tr><td>'._('Observer').'</td>
282 <form action="roleedit.php?group_id='. $group_id .'&role_id=observer" method="POST">
283 <td colspan="2"><input type="submit" name="edit" value="'._('Edit Observer').'"></td></form></tr>';
290 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
291 <input type="hidden" name="submit" value="y" />
292 <tr><td><input type="text" name="form_unix_name" size="10" value="" /></td>
293 <td><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?></td>
294 <td colspan="2"><input type="submit" name="adduser" value="<?php echo _('Add user') ?>" /></td>
297 <tr><td colspan="4"><a href="massadd.php?group_id=<?php echo $group_id; ?>"><?php echo _('Add Users From List'); ?></a></td></tr>
308 echo $HTML->boxMiddle(_('Pending Requests'));
309 $reqs =& get_group_join_requests($group);
310 if (count($reqs) < 1) {
311 echo _('No Pending Requests');
313 for ($i=0; $i<count($reqs); $i++) {
314 $user =& user_get_object($reqs[$i]->getUserId());
315 if (!$user || !is_object($user)) {
319 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
320 <input type="hidden" name="submit" value="y" />
321 <input type="hidden" name="form_userid" value="<?php echo $user->getId(); ?>" />
322 <tr><td><input type="hidden" name="form_unix_name" value="<?php echo $user->getUnixName(); ?>" /><a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/users/<?php echo $user->getUnixName(); ?>"><?php echo $user->getRealName(); ?></a></td>
323 <td><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?>
324 <input type="submit" name="acceptpending" value="<?php echo _('Accept') ?>" />
325 <input type="submit" name="rejectpending" value="<?php echo _('Reject') ?>" /></td>
334 // RBAC Editing Functions
336 echo $HTML->boxMiddle(_('Edit Roles'));
337 echo '<form action="roleedit.php?group_id='. $group_id .'" method="POST">';
338 echo role_box($group_id,'role_id','');
339 echo '<input type="submit" name="edit" value="'._('Edit Role').'"></form>';
341 echo '<p><a href="roleedit.php?group_id='.$group_id.'">'._('Add Role').'</a>';
344 // Project hierarchy functions
346 plugin_hook('admin_project_link',$group_id) ;
349 echo $HTML->boxBottom();?>
358 project_admin_footer(array());
362 // c-file-style: "bsd"