2007-11-07 17:32:04 +00:00
< ? php
2008-08-05 22:43:14 +00:00
// This file is part of BOINC.
// http://boinc.berkeley.edu
// Copyright (C) 2008 University of California
//
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// BOINC 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
2007-11-07 17:32:04 +00:00
require_once ( " ../inc/boinc_db.inc " );
require_once ( " ../inc/util.inc " );
require_once ( " ../inc/team.inc " );
function show_admin ( $user , $admin ) {
2007-11-07 17:54:27 +00:00
$admin_user = BoincUser :: lookup_id ( $admin -> userid );
2007-11-07 23:59:08 +00:00
$tokens = url_tokens ( $user -> authenticator );
2007-11-07 17:32:04 +00:00
$date = date_str ( $admin -> create_time );
echo " <tr>
2007-11-07 17:54:27 +00:00
< td > " .user_links( $admin_user ). " </ td >
2007-11-07 17:32:04 +00:00
< td > $date </ td >
< td >
" ;
2007-11-07 17:54:27 +00:00
show_button ( " team_admins.php?teamid= $admin->teamid &action=remove&userid= $admin_user->id " . $tokens , " Remove " , " Remove Team Admin status from this member " );
2007-11-07 17:32:04 +00:00
echo " </td></tr>
" ;
}
2007-11-07 17:54:27 +00:00
function show_admins ( $user , $teamid ) {
2007-11-07 17:32:04 +00:00
page_head ( " Add or remove Team Admins " );
echo "
You can select team members as 'Team Admins' .
Team Admins can :
< ul >
< li > Edit team information ( name , URL , description , country ) .
< li > View the team ' s join / quit history .
2007-11-22 02:36:51 +00:00
< li > Moderate the team forum , if any ( admins get emails notification
of moderation events and red X reports ) .
2007-11-07 17:32:04 +00:00
</ ul >
Team Admins cannot :
< ul >
< li > Change the team founder .
2007-11-08 00:04:57 +00:00
< li > Remove members .
2007-11-07 17:32:04 +00:00
< li > Add or remove Team Admins .
</ ul >
If a Team Admin quits the team , they cease to be a Team Admin .
< p >
We recommend that you select only people
you know and trust very well as Team Admins .
" ;
$admins = BoincTeamAdmin :: enum ( " teamid= $teamid " );
start_table ();
if ( count ( $admins ) == 0 ) {
2007-11-07 17:54:27 +00:00
row1 ( " There are currently no Team Admins " );
2007-11-07 17:32:04 +00:00
} else {
row1 ( " Current Team Admins " , 3 );
table_header ( " Name " , " Became Team Admin on " , " " );
foreach ( $admins as $admin ) {
show_admin ( $user , $admin );
}
}
end_table ();
echo "
< p >
< form action = team_admins . php >
< input type = hidden name = action value = add >
< input type = hidden name = teamid value = $teamid >
" ;
2007-11-07 23:59:08 +00:00
echo form_tokens ( $user -> authenticator );
2007-11-07 17:32:04 +00:00
start_table ();
row1 ( " Add Team Admin " );
row2 ( " Email address of team member: " , " <input name=email_addr> " );
row2 ( " " , " <input type=submit action value= \" Add \" > " );
end_table ();
echo " </form> " ;
page_tail ();
}
function remove_admin ( $team ) {
$userid = get_int ( 'userid' );
$ret = BoincTeamAdmin :: delete ( " teamid= $team->id and userid= $userid " );
if ( ! $ret ) {
error_page ( " failed to remove admin " );
}
}
function add_admin ( $team ) {
$email_addr = get_str ( 'email_addr' );
$user = BoincUser :: lookup ( " email_addr=' $email_addr ' " );
if ( ! $user ) error_page ( " no such user " );
if ( $user -> teamid != $team -> id ) error_page ( " User is not member of team " );
2007-11-15 22:51:05 +00:00
if ( is_team_admin ( $user , $team )) {
2007-11-07 17:32:04 +00:00
error_page ( " $email_addr is already an admin of $team->name " );
}
$now = time ();
$ret = BoincTeamAdmin :: insert ( " (teamid, userid, create_time) values ( $team->id , $user->id , $now ) " );
if ( ! $ret ) error_page ( " Couldn't add admin " );
}
$user = get_logged_in_user ();
$teamid = get_int ( 'teamid' );
$team = BoincTeam :: lookup_id ( $teamid );
if ( ! $team ) error_page ( " No such team " );
require_founder_login ( $user , $team );
$action = get_str ( 'action' , true );
switch ( $action ) {
case 'remove' :
2007-11-07 23:59:08 +00:00
check_tokens ( $user -> authenticator );
2007-11-07 17:32:04 +00:00
remove_admin ( $team );
Header ( " Location: team_admins.php?teamid= $teamid " );
exit ();
case 'add' :
2007-11-07 23:59:08 +00:00
check_tokens ( $user -> authenticator );
2007-11-07 17:32:04 +00:00
add_admin ( $team );
Header ( " Location: team_admins.php?teamid= $teamid " );
exit ();
}
2007-11-07 17:54:27 +00:00
show_admins ( $user , $teamid );
2007-11-07 17:32:04 +00:00
?>