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 * @author Tim Perdue tim@gforge.org
13 * This file is part of GForge.
15 * GForge is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation; either version 2 of the License, or
18 * (at your option) any later version.
20 * GForge is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
25 * You should have received a copy of the GNU General Public License
26 * along with GForge; if not, write to the Free Software
27 * 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 session_require(array('group'=>$group_id,'admin_flags'=>'A'));
41 // get current information
42 $group =& group_get_object($group_id);
43 if (!$group || !is_object($group)) {
44 exit_error('Error','Could Not Get Group');
45 } elseif ($group->isError()) {
46 exit_error('Error',$group->getErrorMessage());
49 $perm =& $group->getPermission( session_get_user() );
50 if (!$perm || !is_object($perm)) {
51 exit_error('Error','Could Not Get Permission');
52 } elseif ($perm->isError()) {
53 exit_error('Error',$perm->getErrorMessage());
56 if (!$perm->isAdmin()) {
57 exit_permission_denied();
60 if (getStringFromRequest('submit')) {
61 if (getStringFromRequest('adduser')) {
63 add user to this project
65 $form_unix_name = getStringFromRequest('form_unix_name');
66 $user_object = &user_get_object_by_name($form_unix_name);
67 $user_id = $user_object->getID();
68 $role_id = getIntFromRequest('role_id');
69 if (!$group->addUser($form_unix_name,$role_id)) {
70 $feedback .= $group->getErrorMessage();
72 $feedback = _('User Added Successfully');
75 //change assistant for webcal
76 $params[0] = getIntFromRequest('user_id');
77 $params[1] = getIntFromRequest('group_id');
78 plugin_hook('change_cal_permission',$params);
79 $group_id = getIntFromRequest('group_id');
81 //if the user have requested to join this group
82 //we should remove him from the request list
83 //since it has already been added
84 $gjr=new GroupJoinRequest($group,$user_id);
85 if ($gjr || is_object($gjr) || !$gjr->isError()) {
90 } else if (getStringFromRequest('rmuser')) {
92 remove a user from this group
94 $user_id = getIntFromRequest('user_id');
95 if (!$group->removeUser($user_id)) {
96 $feedback .= $group->getErrorMessage();
98 $feedback = _('User Removed Successfully');
100 //change assistant for webcal
101 $params[0] = getIntFromRequest('user_id');
102 $params[1] = getIntFromRequest('group_id');
103 plugin_hook('change_cal_permission',$params);
104 $group_id = getIntFromRequest('group_id');
106 } else if (getStringFromRequest('updateuser')) {
110 $user_id = getIntFromRequest('user_id');
111 $role_id = getIntFromRequest('role_id');
112 if (!$group->updateUser($user_id,$role_id)) {
113 $feedback .= $group->getErrorMessage();
115 $feedback = _('User updated successfully');
117 //change assistant for webcal
118 $params[0] = getIntFromRequest('user_id');
119 $params[1] = getIntFromRequest('group_id');
120 plugin_hook('change_cal_permission',$params);
121 $group_id = getIntFromRequest('group_id');
124 } elseif (getStringFromRequest('acceptpending')) {
126 add user to this project
128 $form_userid = getIntFromRequest('form_userid');
129 $form_unix_name = getStringFromRequest('form_unix_name');
130 $role_id = getIntFromRequest('role_id');
131 if (!$group->addUser($form_unix_name,$role_id)) {
132 $feedback .= $group->getErrorMessage();
134 $gjr=new GroupJoinRequest($group,$form_userid);
135 if (!$gjr || !is_object($gjr) || $gjr->isError()) {
136 $feedback .= 'Error Getting GroupJoinRequest';
138 $gjr->send_accept_mail();
141 $feedback = _('User Added Successfully');
143 } elseif (getStringFromRequest('rejectpending')) {
145 reject adding user to this project
147 $form_userid = getIntFromRequest('form_userid');
148 $gjr=new GroupJoinRequest($group,$form_userid);
149 if (!$gjr || !is_object($gjr) || $gjr->isError()) {
150 $feedback .= 'Error Getting GroupJoinRequest';
152 if (!$gjr->reject()) {
153 exit_error('Error',$gjr->getErrorMessage());
155 $feedback .= 'Rejected';
161 $group->clearError();
163 $adminheadertitle=sprintf(_('Project Admin: %1$s'), $group->getPublicName() );
164 project_admin_header(array('title'=>$adminheadertitle, 'group'=>$group->getID()));
167 Show top box listing trove and other info
172 <table width="100%" cellpadding="2" cellspacing="2" border="0">
176 <?php echo $HTML->boxTop(_('Misc. Project Information')); ?>
180 <?php echo _('Short Description: ') ?><?php echo $group->getDescription(); ?>
181 <p><?php echo _('Homepage Link: ') ?><strong><?php echo $group->getHomepage(); ?></strong></p>
184 global $sys_use_shell, $sys_use_trove;
185 if ($sys_use_shell) {
187 <p><?php echo _('Group shell (SSH) server: ') ?><strong><?php echo $group->getUnixName().'.'.$GLOBALS['sys_default_domain']; ?></strong></p>
188 <p><?php echo _('Group directory on shell server: ') ?><br/><strong><?php echo account_group_homedir($group->getUnixName()); ?></strong></p>
189 <p><?php echo _('Project WWW directory on shell server: ') ?><br /><strong><?php echo account_group_homedir($group->getUnixName()).'/htdocs'; ?></strong></p>
191 } //end of use_shell condition
194 <?php if($sys_use_scm) { ?>
195 <p>[ <?php echo util_make_link ('/tarballs.php?group_id='.$group_id,_('Download Your Nightly SCM Tree Tarball')) ?> ]</p>
199 <?php if($sys_use_trove) { ?>
201 <h4><?php echo _('Trove Categorization: ') ?><?php echo util_make_link ('/project/admin/group_trove.php?group_id='. $group->getID(),'['._('Edit').']'); ?></h4>
203 <?php } //end of use_trove condition
207 echo $HTML->boxMiddle(_('Tool Admin').'');
209 if($sys_use_tracker) { ?>
210 <?php echo util_make_link ('/tracker/admin/?group_id='. $group->getID(), _('Tracker admin')) ?><br />
212 if($sys_use_docman) { ?>
213 <?php echo util_make_link ('/docman/admin/?group_id='. $group->getID(),_('Doc manager admin')) ?><br />
215 if($sys_use_mail) { ?>
216 <?php echo util_make_link ('/mail/admin/?group_id='. $group->getID(),_('Mail admin')) ?><br />
218 if($sys_use_news) { ?>
219 <?php echo util_make_link ('/news/admin/?group_id='. $group->getID(),_('News admin')) ?></a><br />
222 <?php echo util_make_link ('/pm/admin/?group_id='. $group->getID(),_('Task manager admin')) ?></a><br />
224 if($sys_use_forum) { ?>
225 <?php echo util_make_link ('/forum/admin/?group_id='. $group->getID(),_('Forum admin')) ?></a><br />
227 if($sys_use_frs) { ?>
228 <?php echo util_make_link ('/frs/admin/?group_id='. $group->getID(),_('FRS admin')) ?></a><br />
230 if($sys_use_scm) { ?>
231 <?php echo util_make_link ('/scm/admin/?group_id='. $group->getID(),_('SCM admin')) ?></a><br />
234 $hook_params = array () ;
235 $hook_params['group_id'] = $group_id ;
236 plugin_hook ("project_admin_plugins", $hook_params) ;
239 echo $HTML->boxBottom();
248 echo $HTML->boxTop(_('Group Members'));
252 Show the members of this project
256 $res_memb = db_query("SELECT users.realname,users.user_id,
257 users.user_name,user_group.admin_flags,user_group.role_id
258 FROM users,user_group
259 WHERE users.user_id=user_group.user_id
260 AND user_group.group_id='$group_id' ORDER BY users.lastname,users.firstname");
263 <table width="100%" border="0">
264 <tr><td><strong>'._('Unix name').'</strong></td>
265 <td><strong>'._('Role').'</strong></td>
266 <td><strong>'._('Update').'</strong></td>
267 <td><strong>'._('Remove').'</strong></td></tr>';
269 while ($row_memb=db_fetch_array($res_memb)) {
272 <form action="'.getStringFromServer('PHP_SELF').'" method="post">
273 <input type="hidden" name="submit" value="y" />
274 <input type="hidden" name="user_id" value="'.$row_memb['user_id'].'" />
275 <input type="hidden" name="group_id" value="'. $group_id .'" />
276 <td>'.$row_memb['realname'].' ('.$row_memb['user_name'].')</td>
277 <td>'.role_box($group_id,'role_id',$row_memb['role_id']).'</td>
278 <td><input type="submit" name="updateuser" value="'._('Update').'"></td>
279 <td><input type="submit" name="rmuser" value="'._('Remove').'"></td>
283 <tr><td>'._('Observer').'</td>
285 <form action="roleedit.php?group_id='. $group_id .'&role_id=observer" method="POST">
286 <td colspan="2"><input type="submit" name="edit" value="'._('Edit Observer').'"></td></form></tr>';
293 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
294 <input type="hidden" name="submit" value="y" />
295 <tr><td><input type="text" name="form_unix_name" size="10" value="" /></td>
296 <td><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?></td>
297 <td colspan="2"><input type="submit" name="adduser" value="<?php echo _('Add user') ?>" /></td>
300 <tr><td colspan="4"><a href="massadd.php?group_id=<?php echo $group_id; ?>"><?php echo _('Add Users From List'); ?></a></td></tr>
311 echo $HTML->boxMiddle(_('Pending Requests'));
312 $reqs =& get_group_join_requests($group);
313 if (count($reqs) < 1) {
314 echo _('No Pending Requests');
316 for ($i=0; $i<count($reqs); $i++) {
317 $user =& user_get_object($reqs[$i]->getUserId());
318 if (!$user || !is_object($user)) {
322 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
323 <input type="hidden" name="submit" value="y" />
324 <input type="hidden" name="form_userid" value="<?php echo $user->getId(); ?>" />
325 <tr><td><input type="hidden" name="form_unix_name" value="<?php echo $user->getUnixName(); ?>" /><?php echo util_make_link_u ($user->getUnixName(),$user->getId(),$user->getRealName()); ?></td>
326 <td><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?>
327 <input type="submit" name="acceptpending" value="<?php echo _('Accept') ?>" />
328 <input type="submit" name="rejectpending" value="<?php echo _('Reject') ?>" /></td>
337 // RBAC Editing Functions
339 echo $HTML->boxMiddle(_('Edit Roles'));
340 echo '<form action="roleedit.php?group_id='. $group_id .'" method="POST">';
341 echo role_box($group_id,'role_id','');
342 echo '<input type="submit" name="edit" value="'._('Edit Role').'"></form>';
344 echo '<p><a href="roleedit.php?group_id='.$group_id.'">'._('Add Role').'</a>';
347 // Project hierarchy functions
349 plugin_hook('admin_project_link',$group_id) ;
352 echo $HTML->boxBottom();?>
361 project_admin_footer(array());
365 // c-file-style: "bsd"