<?php
/**
- *
- * Project Admin Main Page
- *
- * This page contains administrative information for the project as well
- * as allows to manage it. This page should be accessible to all project
- * members, but only admins may perform most functions.
- *
- * SourceForge: Breaking Down the Barriers to Open Source Development
- * Copyright 1999-2001 (c) VA Linux Systems
- * http://sourceforge.net
- *
- * @version $Id$
- *
- */
-
-
-require_once('pre.php');
-require_once('www/project/admin/project_admin_utils.php');
-require_once('common/include/account.php');
-
-session_require(array('group'=>$group_id));
+ * Project Admin Main Page
+ *
+ * This page contains administrative information for the project as well
+ * as allows to manage it. This page should be accessible to all project
+ * members, but only admins may perform most functions.
+ *
+ * Copyright 2004 GForge, LLC
+ *
+ * @author Tim Perdue tim@gforge.org
+ *
+ * This file is part of GForge.
+ *
+ * GForge is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GForge; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+require_once('../../env.inc.php');
+require_once $gfwww.'include/pre.php';
+require_once $gfwww.'project/admin/project_admin_utils.php';
+require_once $gfwww.'include/role_utils.php';
+require_once $gfcommon.'include/account.php';
+require_once $gfcommon.'include/GroupJoinRequest.class.php';
+
+$group_id = getIntFromRequest('group_id');
+session_require(array('group'=>$group_id,'admin_flags'=>'A'));
// get current information
$group =& group_get_object($group_id);
-exit_assert_object($group,'Group');
+if (!$group || !is_object($group)) {
+ exit_error('Error','Could Not Get Group');
+} elseif ($group->isError()) {
+ exit_error('Error',$group->getErrorMessage());
+}
$perm =& $group->getPermission( session_get_user() );
-exit_assert_object($perm,'Permission');
-
-// only site admin get access inactive projects
-if (!$group->isActive() && !$perm->isSuperUser()) {
- exit_error('Permission denied', 'Group is inactive.');
+if (!$perm || !is_object($perm)) {
+ exit_error('Error','Could Not Get Permission');
+} elseif ($perm->isError()) {
+ exit_error('Error',$perm->getErrorMessage());
}
-$is_admin = $perm->isAdmin();
+if (!$perm->isAdmin()) {
+ exit_permission_denied();
+}
-// Only admin can make modifications via this page
-if ($is_admin && $func) {
- /*
- updating the database
- */
- if ($func=='adduser') {
+if (getStringFromRequest('submit')) {
+ if (getStringFromRequest('adduser')) {
/*
add user to this project
- */
-
- if (!$group->addUser($form_unix_name)) {
- $feedback .= $group->getErrorMessage();
+ */
+ $form_unix_name = getStringFromRequest('form_unix_name');
+ $user_object = &user_get_object_by_name($form_unix_name);
+ if (!$user_object) {
+ $feedback = sprintf(_('Failed to find user %s'), $form_unix_name);
} else {
- $feedback = $Language->getText('project_admin','user_added');
+ $user_id = $user_object->getID();
+ $role_id = getIntFromRequest('role_id');
+ if (!$group->addUser($form_unix_name,$role_id)) {
+ $feedback = $group->getErrorMessage();
+ } else {
+ $feedback = _('User Added Successfully');
+
+ //plugin webcal
+ //change assistant for webcal
+ $params[0] = getIntFromRequest('user_id');
+ $params[1] = getIntFromRequest('group_id');
+ plugin_hook('change_cal_permission',$params);
+ $group_id = getIntFromRequest('group_id');
+
+ //if the user have requested to join this group
+ //we should remove him from the request list
+ //since it has already been added
+ $gjr=new GroupJoinRequest($group,$user_id);
+ if ($gjr || is_object($gjr) || !$gjr->isError()) {
+ $gjr->delete(true);
+ }
+ }
}
-
- } else if ($func=='rmuser') {
+ } else if (getStringFromRequest('rmuser')) {
/*
remove a user from this group
*/
- if (!$group->removeUser($rm_id)) {
- $feedback .= $group->getErrorMessage();
+ $user_id = getIntFromRequest('user_id');
+ if (!$group->removeUser($user_id)) {
+ $feedback = $group->getErrorMessage();
} else {
- $feedback = $Language->getText('project_admin','user_removed');
+ $feedback = _('User Removed Successfully');
+ //plugin webcal
+ //change assistant for webcal
+ $params[0] = getIntFromRequest('user_id');
+ $params[1] = getIntFromRequest('group_id');
+ plugin_hook('change_cal_permission',$params);
+ $group_id = getIntFromRequest('group_id');
}
- }
-
+ } else if (getStringFromRequest('updateuser')) {
+ /*
+ Adjust User Role
+ */
+ $user_id = getIntFromRequest('user_id');
+ $role_id = getIntFromRequest('role_id');
+ if (!$group->updateUser($user_id,$role_id)) {
+ $feedback = $group->getErrorMessage();
+ } else {
+ $feedback = _('User updated successfully');
+ //plugin webcal
+ //change assistant for webcal
+ $params[0] = getIntFromRequest('user_id');
+ $params[1] = getIntFromRequest('group_id');
+ plugin_hook('change_cal_permission',$params);
+ $group_id = getIntFromRequest('group_id');
+
+ }
+ } elseif (getStringFromRequest('acceptpending')) {
+ /*
+ add user to this project
+ */
+ $form_userid = getIntFromRequest('form_userid');
+ $form_unix_name = getStringFromRequest('form_unix_name');
+ $role_id = getIntFromRequest('role_id');
+ if (!$group->addUser($form_unix_name,$role_id)) {
+ $feedback = $group->getErrorMessage();
+ } else {
+ $gjr=new GroupJoinRequest($group,$form_userid);
+ if (!$gjr || !is_object($gjr) || $gjr->isError()) {
+ $feedback = 'Error Getting GroupJoinRequest';
+ } else {
+ $gjr->send_accept_mail();
+ $gjr->delete(true);
+ $feedback = _('User Added Successfully');
+ }
+ }
+ } elseif (getStringFromRequest('rejectpending')) {
+ /*
+ reject adding user to this project
+ */
+ $form_userid = getIntFromRequest('form_userid');
+ $gjr=new GroupJoinRequest($group,$form_userid);
+ if (!$gjr || !is_object($gjr) || $gjr->isError()) {
+ $feedback = 'Error Getting GroupJoinRequest';
+ } else {
+ if (!$gjr->reject()) {
+ exit_error('Error',$gjr->getErrorMessage());
+ } else {
+ $feedback = 'Rejected';
+ }
+ }
+ }
}
$group->clearError();
-project_admin_header(array('title'=>$Language->getText('project_admin','title', array($group->getPublicName())),'group'=>$group->getID(),'pagename'=>'project_admin','sectionvals'=>array($group->getPublicName())));
+$adminheadertitle=sprintf(_('Project Admin: %1$s'), $group->getPublicName() );
+project_admin_header(array('title'=>$adminheadertitle, 'group'=>$group->getID()));
/*
Show top box listing trove and other info
?>
<table width="100%" cellpadding="2" cellspacing="2" border="0">
-<tr valign="top"><td width="50%">
+ <tr valign="top">
+ <td width="50%">
-<?php echo $HTML->boxTop($Language->getText('project_admin','project_information')); ?>
+<?php echo $HTML->boxTop(_('Misc. Project Information')); ?>
<br />
-<?php echo $Language->getText('project_admin','short_description') ?><?php echo $group->getDescription(); ?>
-<p><?php echo $Language->getText('project_admin','homepage_link') ?><strong><?php echo $group->getHomepage(); ?></strong></p>
-<p><?php echo $Language->getText('project_admin','shell_server') ?><strong><?php echo $group->getUnixName().'.'.$GLOBALS['sys_default_domain']; ?></strong></p>
-<p><?php echo $Language->getText('project_admin','shell_server_group_directory') ?><br/><strong><?php echo account_group_homedir($group->getUnixName()); ?></strong></p>
-<p><?php echo $Language->getText('project_admin','www_directory') ?><br /><strong><?php echo account_group_homedir($group->getUnixName()).'/htdocs'; ?></p>
-
-<p align="center">
-<a href="http://<?php echo $GLOBALS['sys_default_domain']; ?>/tarballs.php/?group_id=<?php echo $group_id; ?>">[ <?php echo $Language->getText('project_admin','download_tarball') ?>]</a></p>
-<p> </p>
-<hr noshade="noshade" />
-<p> </p>
-<h4><?php echo $Language->getText('project_admin','trove_categorization') ?><a href="/project/admin/group_trove.php?group_id=<?php echo $group->getID(); ?>">[<?php echo $Language->getText('general','edit') ?>]</a></h4>
+<?php echo _('Short Description: ') ?><?php echo $group->getDescription(); ?>
+<p><?php echo _('Homepage Link: ') ?><strong><?php echo $group->getHomepage(); ?></strong></p>
+
+<?php
+ global $sys_use_shell, $sys_use_trove;
+ if ($sys_use_shell) {
+?>
+<p><?php echo _('Group shell (SSH) server: ') ?><strong><?php echo $group->getUnixName().'.'.$GLOBALS['sys_default_domain']; ?></strong></p>
+<p><?php echo _('Group directory on shell server: ') ?><br/><strong><?php echo account_group_homedir($group->getUnixName()); ?></strong></p>
+<p><?php echo _('Project WWW directory on shell server: ') ?><br /><strong><?php echo account_group_homedir($group->getUnixName()).'/htdocs'; ?></strong></p>
+<?php
+ } //end of use_shell condition
+?>
+
+<?php if($sys_use_scm) { ?>
+ <p>[ <?php echo util_make_link ('/tarballs.php?group_id='.$group_id,_('Download Your Nightly SCM Tree Tarball')) ?> ]</p>
+<?php } ?>
+
+<hr />
+<?php if($sys_use_trove) { ?>
<p>
+<h4><?php echo _('Trove Categorization: ') ?><?php echo util_make_link ('/project/admin/group_trove.php?group_id='. $group->getID(),'['._('Edit').']'); ?></h4>
+</p>
+ <?php } //end of use_trove condition
+?>
+
<?php
+echo $HTML->boxMiddle(_('Tool Admin').'');
+
+if($sys_use_tracker) { ?>
+ <?php echo util_make_link ('/tracker/admin/?group_id='. $group->getID(), _('Tracker admin')) ?><br />
+<?php }
+if($sys_use_docman) { ?>
+ <?php echo util_make_link ('/docman/admin/?group_id='. $group->getID(),_('Doc manager admin')) ?><br />
+<?php }
+if($sys_use_mail) { ?>
+ <?php echo util_make_link ('/mail/admin/?group_id='. $group->getID(),_('Mail admin')) ?><br />
+<?php }
+if($sys_use_news) { ?>
+ <?php echo util_make_link ('/news/admin/?group_id='. $group->getID(),_('News admin')) ?></a><br />
+<?php }
+if($sys_use_pm) { ?>
+ <?php echo util_make_link ('/pm/admin/?group_id='. $group->getID(),_('Task manager admin')) ?></a><br />
+<?php }
+if($sys_use_forum) { ?>
+ <?php echo util_make_link ('/forum/admin/?group_id='. $group->getID(),_('Forum admin')) ?></a><br />
+<?php }
+if($sys_use_frs) { ?>
+ <?php echo util_make_link ('/frs/admin/?group_id='. $group->getID(),_('FRS admin')) ?></a><br />
+<?php }
+if($sys_use_scm) { ?>
+ <?php echo util_make_link ('/scm/admin/?group_id='. $group->getID(),_('SCM admin')) ?></a><br />
+<?php }
+
+$hook_params = array () ;
+$hook_params['group_id'] = $group_id ;
+plugin_hook ("project_admin_plugins", $hook_params) ;
+
+
echo $HTML->boxBottom();
-echo '
-</td><td> </td><td width="50%">';
+?>
+ </td>
+ <td> </td>
+ <td width="50%">
+<?php
-echo $HTML->boxTop($Language->getText('project_admin','group_members'));
+ echo $HTML->boxTop(_('Group Members'));
-/*
+ /*
- Show the members of this project
+ Show the members of this project
-*/
+ */
-$res_memb = db_query("SELECT users.realname,users.user_id,users.user_name,user_group.admin_flags ".
- "FROM users,user_group ".
- "WHERE users.user_id=user_group.user_id ".
- "AND user_group.group_id='$group_id'");
+ $res_memb = db_query("SELECT users.realname,users.user_id,users.status,
+ users.user_name,user_group.admin_flags,user_group.role_id
+ FROM users,user_group
+ WHERE users.user_id=user_group.user_id
+ AND user_group.group_id='$group_id' ORDER BY users.lastname,users.firstname");
-print '<table width="100% border="0">';
+ echo '
+ <table width="100%" border="0">
+ <tr><td><strong>'._('Unix name').'</strong></td>
+ <td><strong>'._('Role').'</strong></td>
+ <td><strong>'._('Update').'</strong></td>
+ <td><strong>'._('Remove').'</strong></td></tr>';
while ($row_memb=db_fetch_array($res_memb)) {
- if (stristr($row_memb['admin_flags'], 'A')) {
- $img="trash-x.png";
- } else {
- $img="trash.png";
- }
- if ($is_admin) {
- $button='<input type="image" name="DELETE" src="'.$HTML->imgroot.'/ic/'.$img.'" height="16" width="16" border="0" />';
- } else {
- $button=' ';
- }
- print '
- <form action="rmuser.php" method="post"><input type="hidden" name="func" value="rmuser" />'.
- '<input type="hidden" name="return_to" value="'.$REQUEST_URI.'" />'.
- '<input type="hidden" name="rm_id" value="'.$row_memb['user_id'].'" />'.
- '<input type="hidden" name="group_id" value="'. $group_id .'" />'.
- '<tr><td align="center">'.$button.'</td></form>'.
- '<td><a href="/users/'.$row_memb['user_name'].'/">'.$row_memb['realname'].'</a></td></tr>';
+ if ($row_memb['status']=='P') {
+ $status = "<span class=\"pending\">"._("Pending (P)")."</span>";
+ } else if ($row_memb['status']=='S') {
+ $status = "<span class=\"suspended\">"._("Suspended (S)")."</span>";
+ } else {
+ $status = "";
+ }
+
+ echo '
+ <form action="'.getStringFromServer('PHP_SELF').'" method="post">
+ <input type="hidden" name="submit" value="y" />
+ <input type="hidden" name="user_id" value="'.$row_memb['user_id'].'" />
+ <input type="hidden" name="group_id" value="'. $group_id .'" />
+ <td>'.$row_memb['realname'].' ('.$row_memb['user_name'].') '.$status.'</td>
+ <td>'.role_box($group_id,'role_id',$row_memb['role_id']).'</td>
+ <td><input type="submit" name="updateuser" value="'._('Update').'"></td>
+ <td><input type="submit" name="rmuser" value="'._('Remove').'"></td>
+ </tr></form>';
}
-print '</table>';
+ echo '
+ <tr><td>'._('Observer').'</td>
+ <td></td>
+ <form action="roleedit.php?group_id='. $group_id .'&role_id=observer" method="POST">
+ <td colspan="2"><input type="submit" name="edit" value="'._('Edit Observer').'"></td></form></tr>';
/*
Add member form
*/
-if ($is_admin) {
-
- // After adding user, we go to the permission page for one
-?>
- <hr noshade="noshade size="1" />
- <form action="userpermedit.php?group_id=<?php echo $group->getID(); ?>" method="post">
- <input type="hidden" name="func" value="adduser" />
- <table width="100%" border="0">
- <tr><td><strong><?php echo $Language->getText('project_admin','unix_name') ?>:</strong></td><td><input type="text" name="form_unix_name" size="10" value="" /></td></tr>
- <tr><td colspan="2" align="center"><input type="submit" name="submit" value="<?php echo $Language->getText('project_admin','add_user') ?>" /></td></tr></form>
- </table>
-
- <hr noshade="noshade size="1" />
- <div align="center">
- <a href="/project/admin/userperms.php?group_id=<?php echo $group->getID(); ?>">[<?php echo $Language->getText('project_admin','edit_member_permissions') ?>]</a>
- </div>
- </td></tr>
-
-<?php
-}
?>
-
-
+ <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
+ <input type="hidden" name="submit" value="y" />
+ <tr><td><input type="text" name="form_unix_name" size="10" value="" /></td>
+ <td><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?></td>
+ <td colspan="2"><input type="submit" name="adduser" value="<?php echo _('Add user') ?>" /></td>
+ </tr></form>
+
+ <tr><td colspan="4"><a href="massadd.php?group_id=<?php echo $group_id; ?>"><?php echo _('Add Users From List'); ?></a></td></tr>
+ </table>
+<!-- </td></tr>
</td>
<td width="50%">
-<?php echo $HTML->boxTop($Language->getText('project_admin','file_releases')); ?>
- <br />
- <div align="center">
- <a href="editpackages.php?group_id=<?php print $group_id; ?>"><strong>[<?php echo $Language->getText('project_admin','edit_file_releases') ?>]</strong></a>
- </div>
- <hr />
- <strong><?php echo $Language->getText('project_admin','packages') ?>:</strong>
- <p>
- <?php
- $res_module = db_query("SELECT * FROM frs_package WHERE group_id='$group_id'");
- while ($row_module = db_fetch_array($res_module)) {
- print "$row_module[name]<br />";
+
+</td>-->
+<?php
+//
+// Pending requests
+//
+echo $HTML->boxMiddle(_('Pending Requests'));
+$reqs =& get_group_join_requests($group);
+if (count($reqs) < 1) {
+ echo _('No Pending Requests');
+} else {
+ for ($i=0; $i<count($reqs); $i++) {
+ $user =& user_get_object($reqs[$i]->getUserId());
+ if (!$user || !is_object($user)) {
+ echo "Invalid User";
+ }
+ ?>
+ <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
+ <input type="hidden" name="submit" value="y" />
+ <input type="hidden" name="form_userid" value="<?php echo $user->getId(); ?>" />
+ <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>
+ <td><?php echo role_box($group_id,'role_id',$row_memb['role_id']); ?>
+ <input type="submit" name="acceptpending" value="<?php echo _('Accept') ?>" />
+ <input type="submit" name="rejectpending" value="<?php echo _('Reject') ?>" /></td>
+ </tr></form>
+
+ <?php
}
- echo $HTML->boxBottom();
- ?>
-</p>
-</td>
-<?php echo $HTML->boxBottom();?>
-</tr>
-
-<tr valign="top"><td width="50%">
-
-<?php
-
-/*
- Tool admin pages
-*/
-
-echo $HTML->boxTop($Language->getText('project_admin','tool_admin').'');
-
-?>
+}
-<br />
-<a href="/tracker/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo $Language->getText('project_admin','tracker_admin') ?></a><br />
-<a href="/docman/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo $Language->getText('project_admin','docmanager_admin') ?></a><br />
-<a href="/mail/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo $Language->getText('project_admin','mail_admin') ?></a><br />
-<a href="/news/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo $Language->getText('project_admin','news_admin') ?></a><br />
-<a href="/pm/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo $Language->getText('project_admin','task_manager_admin') ?></a><br />
-<a href="/forum/admin/?group_id=<?php echo $group->getID(); ?>"><?php echo $Language->getText('project_admin','forum_admin') ?></a><br />
-<?php echo $HTML->boxBottom(); ?>
+//
+// RBAC Editing Functions
+//
+echo $HTML->boxMiddle(_('Edit Roles'));
+echo '<form action="roleedit.php?group_id='. $group_id .'" method="POST">';
+echo role_box($group_id,'role_id','');
+echo '<input type="submit" name="edit" value="'._('Edit Role').'"></form>';
+echo '<p><a href="roleedit.php?group_id='.$group_id.'">'._('Add Role').'</a>';
+//
+// Project hierarchy functions
+plugin_hook('admin_project_link',$group_id) ;
-</td>
-<td> </td>
+echo $HTML->boxBottom();?>
+ </td>
+ </tr>
-</tr>
</table>
<?php
project_admin_footer(array());
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
?>