2005-12-04 20:25:51 +00:00
< ? php
2007-10-05 14:36:34 +00:00
/**
2005-12-04 20:25:51 +00:00
*
* @ package acp
2007-10-05 14:36:34 +00:00
* @ copyright ( c ) 2005 phpBB Group
2011-12-31 13:32:52 +00:00
* @ license http :// opensource . org / licenses / gpl - 2.0 . php GNU General Public License v2
2005-12-04 20:25:51 +00:00
*
*/
2007-10-05 14:36:34 +00:00
/**
* @ ignore
*/
if ( ! defined ( 'IN_PHPBB' ))
{
exit ;
}
2005-12-04 20:25:51 +00:00
/**
* @ package acp
*/
class acp_groups
{
2006-02-18 13:54:12 +00:00
var $u_action ;
2005-12-04 20:25:51 +00:00
function main ( $id , $mode )
{
global $config , $db , $user , $auth , $template , $cache ;
2006-06-06 20:53:46 +00:00
global $phpbb_root_path , $phpbb_admin_path , $phpEx , $table_prefix , $file_uploads ;
2012-04-08 16:27:09 +02:00
global $phpbb_avatar_manager ;
2005-12-04 20:25:51 +00:00
$user -> add_lang ( 'acp/groups' );
$this -> tpl_name = 'acp_groups' ;
$this -> page_title = 'ACP_GROUPS_MANAGE' ;
2007-10-03 15:05:54 +00:00
$form_key = 'acp_groups' ;
add_form_key ( $form_key );
2011-02-09 21:05:10 +01:00
if ( $mode == 'position' )
{
$this -> manage_position ();
return ;
}
2005-12-04 20:25:51 +00:00
include ( $phpbb_root_path . 'includes/functions_user.' . $phpEx );
// Check and set some common vars
$action = ( isset ( $_POST [ 'add' ])) ? 'add' : (( isset ( $_POST [ 'addusers' ])) ? 'addusers' : request_var ( 'action' , '' ));
$group_id = request_var ( 'g' , 0 );
$mark_ary = request_var ( 'mark' , array ( 0 ));
2006-10-20 13:48:44 +00:00
$name_ary = request_var ( 'usernames' , '' , true );
2005-12-04 20:25:51 +00:00
$leader = request_var ( 'leader' , 0 );
$default = request_var ( 'default' , 0 );
$start = request_var ( 'start' , 0 );
$update = ( isset ( $_POST [ 'update' ])) ? true : false ;
2007-10-03 15:05:54 +00:00
2005-12-04 20:25:51 +00:00
// Clear some vars
$group_row = array ();
// Grab basic data for group, if group_id is set and exists
if ( $group_id )
{
2007-10-05 14:36:34 +00:00
$sql = ' SELECT *
FROM ' . GROUPS_TABLE . "
2005-12-04 20:25:51 +00:00
WHERE group_id = $group_id " ;
$result = $db -> sql_query ( $sql );
$group_row = $db -> sql_fetchrow ( $result );
$db -> sql_freeresult ( $result );
if ( ! $group_row )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
2006-11-24 14:59:26 +00:00
// Check if the user is allowed to manage this group if set to founder only.
if ( $user -> data [ 'user_type' ] != USER_FOUNDER && $group_row [ 'group_founder_manage' ])
{
trigger_error ( $user -> lang [ 'NOT_ALLOWED_MANAGE_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
}
2005-12-04 20:25:51 +00:00
}
// Which page?
switch ( $action )
{
case 'approve' :
case 'demote' :
case 'promote' :
if ( ! $group_id )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
2006-06-16 16:54:51 +00:00
2005-12-04 20:25:51 +00:00
// Approve, demote or promote
2007-02-20 14:55:11 +00:00
$group_name = ( $group_row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $group_row [ 'group_name' ]] : $group_row [ 'group_name' ];
2008-06-09 13:05:34 +00:00
$error = group_user_attributes ( $action , $group_id , $mark_ary , false , $group_name );
2008-11-09 15:10:40 +00:00
2008-06-09 13:05:34 +00:00
if ( ! $error )
2005-12-04 20:25:51 +00:00
{
2008-06-09 13:05:34 +00:00
switch ( $action )
{
case 'demote' :
$message = 'GROUP_MODS_DEMOTED' ;
break ;
2006-06-16 16:54:51 +00:00
2008-06-09 13:05:34 +00:00
case 'promote' :
$message = 'GROUP_MODS_PROMOTED' ;
break ;
2006-06-16 16:54:51 +00:00
2008-06-09 13:05:34 +00:00
case 'approve' :
$message = 'USERS_APPROVED' ;
break ;
}
2005-12-04 20:25:51 +00:00
2008-06-09 13:05:34 +00:00
trigger_error ( $user -> lang [ $message ] . adm_back_link ( $this -> u_action . '&action=list&g=' . $group_id ));
}
else
{
trigger_error ( $user -> lang [ $error ] . adm_back_link ( $this -> u_action . '&action=list&g=' . $group_id ), E_USER_WARNING );
}
2008-11-09 15:10:40 +00:00
2005-12-04 20:25:51 +00:00
break ;
case 'default' :
if ( ! $group_id )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
if ( confirm_box ( true ))
{
2007-02-20 15:26:08 +00:00
$group_name = ( $group_row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $group_row [ 'group_name' ]] : $group_row [ 'group_name' ];
2007-03-08 15:49:13 +00:00
2005-12-04 20:25:51 +00:00
if ( ! sizeof ( $mark_ary ))
{
$start = 0 ;
2006-06-16 16:54:51 +00:00
2005-12-04 20:25:51 +00:00
do
{
2007-10-05 14:36:34 +00:00
$sql = ' SELECT user_id
2005-12-04 20:25:51 +00:00
FROM ' . USER_GROUP_TABLE . "
2007-10-05 14:36:34 +00:00
WHERE group_id = $group_id
2005-12-04 20:25:51 +00:00
ORDER BY user_id " ;
$result = $db -> sql_query_limit ( $sql , 200 , $start );
$mark_ary = array ();
if ( $row = $db -> sql_fetchrow ( $result ))
{
do
{
$mark_ary [] = $row [ 'user_id' ];
}
while ( $row = $db -> sql_fetchrow ( $result ));
2007-02-20 15:26:08 +00:00
group_user_attributes ( 'default' , $group_id , $mark_ary , false , $group_name , $group_row );
2005-12-04 20:25:51 +00:00
$start = ( sizeof ( $mark_ary ) < 200 ) ? 0 : $start + 200 ;
}
else
{
$start = 0 ;
}
$db -> sql_freeresult ( $result );
}
while ( $start );
}
else
{
2007-02-20 15:26:08 +00:00
group_user_attributes ( 'default' , $group_id , $mark_ary , false , $group_name , $group_row );
2005-12-04 20:25:51 +00:00
}
2006-07-09 16:23:57 +00:00
trigger_error ( $user -> lang [ 'GROUP_DEFS_UPDATED' ] . adm_back_link ( $this -> u_action . '&action=list&g=' . $group_id ));
2005-12-04 20:25:51 +00:00
}
else
{
confirm_box ( false , $user -> lang [ 'CONFIRM_OPERATION' ], build_hidden_fields ( array (
'mark' => $mark_ary ,
'g' => $group_id ,
'i' => $id ,
'mode' => $mode ,
'action' => $action ))
);
}
break ;
case 'deleteusers' :
case 'delete' :
2008-11-09 15:10:40 +00:00
if ( ! $group_id )
2008-11-09 15:05:35 +00:00
{
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
}
else if ( $action === 'delete' && $group_row [ 'group_type' ] == GROUP_SPECIAL )
{
trigger_error ( $user -> lang [ 'NO_AUTH_OPERATION' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
}
2008-11-09 15:10:40 +00:00
2005-12-04 20:25:51 +00:00
if ( confirm_box ( true ))
{
$error = '' ;
switch ( $action )
{
case 'delete' :
2006-02-22 21:42:26 +00:00
if ( ! $auth -> acl_get ( 'a_groupdel' ))
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_AUTH_OPERATION' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2006-02-22 21:42:26 +00:00
}
2005-12-04 20:25:51 +00:00
$error = group_delete ( $group_id , $group_row [ 'group_name' ]);
break ;
case 'deleteusers' :
2007-02-20 04:23:56 +00:00
$group_name = ( $group_row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $group_row [ 'group_name' ]] : $group_row [ 'group_name' ];
$error = group_user_del ( $group_id , $mark_ary , false , $group_name );
2005-12-04 20:25:51 +00:00
break ;
}
2006-08-01 15:29:47 +00:00
$back_link = ( $action == 'delete' ) ? $this -> u_action : $this -> u_action . '&action=list&g=' . $group_id ;
2005-12-04 20:25:51 +00:00
if ( $error )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ $error ] . adm_back_link ( $back_link ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
$message = ( $action == 'delete' ) ? 'GROUP_DELETED' : 'GROUP_USERS_REMOVE' ;
2006-08-01 15:29:47 +00:00
trigger_error ( $user -> lang [ $message ] . adm_back_link ( $back_link ));
2005-12-04 20:25:51 +00:00
}
else
{
confirm_box ( false , $user -> lang [ 'CONFIRM_OPERATION' ], build_hidden_fields ( array (
'mark' => $mark_ary ,
'g' => $group_id ,
'i' => $id ,
'mode' => $mode ,
'action' => $action ))
);
}
break ;
case 'addusers' :
if ( ! $group_id )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
if ( ! $name_ary )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_USERS' ] . adm_back_link ( $this -> u_action . '&action=list&g=' . $group_id ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
$name_ary = array_unique ( explode ( " \n " , $name_ary ));
2006-11-18 16:27:35 +00:00
$group_name = ( $group_row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $group_row [ 'group_name' ]] : $group_row [ 'group_name' ];
2005-12-04 20:25:51 +00:00
// Add user/s to group
2006-11-18 16:27:35 +00:00
if ( $error = group_user_add ( $group_id , false , $name_ary , $group_name , $default , $leader , 0 , $group_row ))
2005-12-04 20:25:51 +00:00
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ $error ] . adm_back_link ( $this -> u_action . '&action=list&g=' . $group_id ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
2006-09-14 14:57:29 +00:00
$message = ( $leader ) ? 'GROUP_MODS_ADDED' : 'GROUP_USERS_ADDED' ;
2006-07-09 16:23:57 +00:00
trigger_error ( $user -> lang [ $message ] . adm_back_link ( $this -> u_action . '&action=list&g=' . $group_id ));
2005-12-04 20:25:51 +00:00
break ;
case 'edit' :
case 'add' :
2007-04-12 16:20:39 +00:00
include ( $phpbb_root_path . 'includes/functions_display.' . $phpEx );
2005-12-04 20:25:51 +00:00
$data = $submit_ary = array ();
if ( $action == 'edit' && ! $group_id )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
2006-02-22 21:42:26 +00:00
if ( $action == 'add' && ! $auth -> acl_get ( 'a_groupadd' ))
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_AUTH_OPERATION' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2006-02-22 21:42:26 +00:00
}
2005-12-04 20:25:51 +00:00
$error = array ();
$user -> add_lang ( 'ucp' );
2007-10-03 15:05:54 +00:00
2011-07-04 16:58:35 -07:00
// Setup avatar data for later
$avatars_enabled = false ;
$avatar_drivers = null ;
$avatar_data = null ;
$avatar_error = array ();
if ( $config [ 'allow_avatar' ])
{
2012-04-08 16:27:09 +02:00
$avatar_drivers = $phpbb_avatar_manager -> get_valid_drivers ();
2011-07-04 16:58:35 -07:00
sort ( $avatar_drivers );
// This is normalised data, without the group_ prefix
2012-04-08 21:29:52 +02:00
$avatar_data = phpbb_avatar_manager :: clean_row ( $group_row );
2011-07-04 16:58:35 -07:00
}
2005-12-04 20:25:51 +00:00
// Did we submit?
if ( $update )
{
2007-10-03 15:05:54 +00:00
if ( ! check_form_key ( $form_key ))
{
trigger_error ( $user -> lang [ 'FORM_INVALID' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
}
2007-07-22 20:11:45 +00:00
$group_name = utf8_normalize_nfc ( request_var ( 'group_name' , '' , true ));
$group_desc = utf8_normalize_nfc ( request_var ( 'group_desc' , '' , true ));
2005-12-04 20:25:51 +00:00
$group_type = request_var ( 'group_type' , GROUP_FREE );
2006-03-25 12:07:13 +00:00
$allow_desc_bbcode = request_var ( 'desc_parse_bbcode' , false );
$allow_desc_urls = request_var ( 'desc_parse_urls' , false );
$allow_desc_smilies = request_var ( 'desc_parse_smilies' , false );
2005-12-04 20:25:51 +00:00
$submit_ary = array (
2006-11-24 14:59:26 +00:00
'colour' => request_var ( 'group_colour' , '' ),
'rank' => request_var ( 'group_rank' , 0 ),
'receive_pm' => isset ( $_REQUEST [ 'group_receive_pm' ]) ? 1 : 0 ,
'legend' => isset ( $_REQUEST [ 'group_legend' ]) ? 1 : 0 ,
2011-02-09 21:05:10 +01:00
'teampage' => isset ( $_REQUEST [ 'group_teampage' ]) ? 1 : 0 ,
2006-11-24 14:59:26 +00:00
'message_limit' => request_var ( 'group_message_limit' , 0 ),
2008-09-23 13:03:33 +00:00
'max_recipients' => request_var ( 'group_max_recipients' , 0 ),
2007-02-18 13:42:08 +00:00
'founder_manage' => 0 ,
2009-06-19 09:51:50 +00:00
'skip_auth' => request_var ( 'group_skip_auth' , 0 ),
2005-12-04 20:25:51 +00:00
);
2006-11-24 14:59:26 +00:00
if ( $user -> data [ 'user_type' ] == USER_FOUNDER )
{
$submit_ary [ 'founder_manage' ] = isset ( $_REQUEST [ 'group_founder_manage' ]) ? 1 : 0 ;
}
2011-07-04 16:58:35 -07:00
if ( $config [ 'allow_avatar' ]) {
// Handle avatar
$driver = request_var ( 'avatar_driver' , '' );
if ( in_array ( $driver , $avatar_drivers ) && $config [ " allow_avatar_ $driver " ])
2005-12-04 20:25:51 +00:00
{
2012-04-08 16:27:09 +02:00
$avatar = $phpbb_avatar_manager -> get_driver ( $driver );
2011-07-04 16:58:35 -07:00
$result = $avatar -> process_form ( $template , $avatar_data , $avatar_error );
2005-12-04 20:25:51 +00:00
2011-07-04 16:58:35 -07:00
if ( $result && empty ( $avatar_error ))
2005-12-04 20:25:51 +00:00
{
2011-07-04 16:58:35 -07:00
// Success! Lets save the result
/*
$result = array (
'avatar' => ... ,
'avatar_width' => ... ,
'avatar_height' => ... ,
);
*/
$submit_ary = array_merge ( $submit_ary , $result );
$submit_ary [ 'avatar_type' ] = $driver ;
2005-12-04 20:25:51 +00:00
}
}
2011-07-04 16:58:35 -07:00
else
2005-12-04 20:25:51 +00:00
{
2011-07-04 16:58:35 -07:00
// Removing the avatar
$submit_ary [ 'avatar_type' ] = '' ;
$submit_ary [ 'avatar' ] = '' ;
$submit_ary [ 'avatar_width' ] = 0 ;
$submit_ary [ 'avatar_height' ] = 0 ;
2005-12-04 20:25:51 +00:00
}
}
2010-10-20 00:25:31 +08:00
// Validate the length of "Maximum number of allowed recipients per private message" setting.
// We use 16777215 as a maximum because it matches MySQL unsigned mediumint maximum value
// which is the lowest amongst DBMSes supported by phpBB3
if ( $max_recipients_error = validate_data ( $submit_ary , array ( 'max_recipients' => array ( 'num' , false , 0 , 16777215 ))))
{
// Replace "error" string with its real, localised form
$error = array_merge ( $error , array_map ( array ( & $user , 'lang' ), $max_recipients_error ));
}
2006-04-06 17:15:45 +00:00
if ( ! sizeof ( $error ))
2005-12-04 20:25:51 +00:00
{
2006-04-06 17:15:45 +00:00
// Only set the rank, colour, etc. if it's changed or if we're adding a new
2007-10-05 14:36:34 +00:00
// group. This prevents existing group members being updated if no changes
2006-04-06 17:15:45 +00:00
// were made.
2011-08-02 16:50:17 +02:00
// However there are some attributes that need to be set everytime,
// otherwise the group gets removed from the feature.
$set_attributes = array ( 'legend' , 'teampage' );
2006-06-16 16:54:51 +00:00
2006-04-06 17:15:45 +00:00
$group_attributes = array ();
2009-06-19 09:51:50 +00:00
$test_variables = array (
'rank' => 'int' ,
'colour' => 'string' ,
'avatar' => 'string' ,
2011-07-04 16:58:35 -07:00
'avatar_type' => 'string' ,
2009-06-19 09:51:50 +00:00
'avatar_width' => 'int' ,
'avatar_height' => 'int' ,
'receive_pm' => 'int' ,
'legend' => 'int' ,
2011-02-09 21:05:10 +01:00
'teampage' => 'int' ,
2009-06-19 09:51:50 +00:00
'message_limit' => 'int' ,
'max_recipients' => 'int' ,
'founder_manage' => 'int' ,
'skip_auth' => 'int' ,
);
foreach ( $test_variables as $test => $type )
2005-12-04 20:25:51 +00:00
{
2011-08-02 16:50:17 +02:00
if ( isset ( $submit_ary [ $test ]) && ( $action == 'add' || $group_row [ 'group_' . $test ] != $submit_ary [ $test ] || in_array ( $test , $set_attributes )))
2006-04-06 17:15:45 +00:00
{
2009-06-19 09:51:50 +00:00
settype ( $submit_ary [ $test ], $type );
2006-04-06 17:15:45 +00:00
$group_attributes [ 'group_' . $test ] = $group_row [ 'group_' . $test ] = $submit_ary [ $test ];
}
2005-12-04 20:25:51 +00:00
}
2006-02-22 21:42:26 +00:00
2006-04-06 17:15:45 +00:00
if ( ! ( $error = group_create ( $group_id , $group_type , $group_name , $group_desc , $group_attributes , $allow_desc_bbcode , $allow_desc_urls , $allow_desc_smilies )))
2006-02-22 21:42:26 +00:00
{
2006-04-06 17:15:45 +00:00
$group_perm_from = request_var ( 'group_perm_from' , 0 );
2006-03-25 15:32:52 +00:00
2006-04-06 17:15:45 +00:00
// Copy permissions?
2007-01-21 18:33:45 +00:00
// If the user has the a_authgroups permission and at least one additional permission ability set the permissions are fully transferred.
2006-12-27 17:43:55 +00:00
// We do not limit on one auth category because this can lead to incomplete permissions being tricky to fix for the admin, roles being assigned or added non-default permissions.
// Since the user only has the option to copy permissions from non leader managed groups this seems to be a good compromise.
if ( $group_perm_from && $action == 'add' && $auth -> acl_get ( 'a_authgroups' ) && $auth -> acl_gets ( 'a_aauth' , 'a_fauth' , 'a_mauth' , 'a_uauth' ))
2006-03-25 15:32:52 +00:00
{
2007-01-04 16:07:38 +00:00
$sql = ' SELECT group_founder_manage
2006-12-27 17:43:55 +00:00
FROM ' . GROUPS_TABLE . '
2006-04-06 17:15:45 +00:00
WHERE group_id = ' . $group_perm_from ;
$result = $db -> sql_query ( $sql );
2006-12-27 17:43:55 +00:00
$check_row = $db -> sql_fetchrow ( $result );
$db -> sql_freeresult ( $result );
2006-04-06 17:15:45 +00:00
2006-12-27 17:43:55 +00:00
// Check the group if non-founder
2007-01-04 16:07:38 +00:00
if ( $check_row && ( $user -> data [ 'user_type' ] == USER_FOUNDER || $check_row [ 'group_founder_manage' ] == 0 ))
2006-04-06 17:15:45 +00:00
{
2006-12-27 17:43:55 +00:00
// From the mysql documentation:
// Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14.
// Due to this we stay on the safe side if we do the insertion "the manual way"
// Copy permisisons from/to the acl groups table (only group_id gets changed)
$sql = ' SELECT forum_id , auth_option_id , auth_role_id , auth_setting
FROM ' . ACL_GROUPS_TABLE . '
WHERE group_id = ' . $group_perm_from ;
$result = $db -> sql_query ( $sql );
$groups_sql_ary = array ();
while ( $row = $db -> sql_fetchrow ( $result ))
{
$groups_sql_ary [] = array (
'group_id' => ( int ) $group_id ,
'forum_id' => ( int ) $row [ 'forum_id' ],
'auth_option_id' => ( int ) $row [ 'auth_option_id' ],
'auth_role_id' => ( int ) $row [ 'auth_role_id' ],
'auth_setting' => ( int ) $row [ 'auth_setting' ]
);
}
$db -> sql_freeresult ( $result );
// Now insert the data
$db -> sql_multi_insert ( ACL_GROUPS_TABLE , $groups_sql_ary );
$auth -> acl_clear_prefetch ();
2006-04-06 17:15:45 +00:00
}
2006-03-25 15:32:52 +00:00
}
2006-02-22 21:42:26 +00:00
2006-06-12 22:16:27 +00:00
$cache -> destroy ( 'sql' , GROUPS_TABLE );
2006-04-06 17:15:45 +00:00
$message = ( $action == 'edit' ) ? 'GROUP_UPDATED' : 'GROUP_CREATED' ;
trigger_error ( $user -> lang [ $message ] . adm_back_link ( $this -> u_action ));
2006-02-22 21:42:26 +00:00
}
2005-12-04 20:25:51 +00:00
}
2006-04-06 17:15:45 +00:00
if ( sizeof ( $error ))
2006-03-25 12:07:13 +00:00
{
$group_rank = $submit_ary [ 'rank' ];
$group_desc_data = array (
'text' => $group_desc ,
'allow_bbcode' => $allow_desc_bbcode ,
'allow_smilies' => $allow_desc_smilies ,
'allow_urls' => $allow_desc_urls
);
}
2005-12-04 20:25:51 +00:00
}
else if ( ! $group_id )
{
2007-07-22 20:11:45 +00:00
$group_name = utf8_normalize_nfc ( request_var ( 'group_name' , '' , true ));
2006-03-25 12:07:13 +00:00
$group_desc_data = array (
'text' => '' ,
'allow_bbcode' => true ,
'allow_smilies' => true ,
'allow_urls' => true
);
2005-12-04 20:25:51 +00:00
$group_rank = 0 ;
$group_type = GROUP_OPEN ;
}
else
{
$group_name = $group_row [ 'group_name' ];
2006-07-17 03:23:31 +00:00
$group_desc_data = generate_text_for_edit ( $group_row [ 'group_desc' ], $group_row [ 'group_desc_uid' ], $group_row [ 'group_desc_options' ]);
2005-12-04 20:25:51 +00:00
$group_type = $group_row [ 'group_type' ];
$group_rank = $group_row [ 'group_rank' ];
}
2007-10-05 14:36:34 +00:00
$sql = ' SELECT *
2005-12-04 20:25:51 +00:00
FROM ' . RANKS_TABLE . '
WHERE rank_special = 1
ORDER BY rank_title ' ;
$result = $db -> sql_query ( $sql );
$rank_options = '<option value="0"' . (( ! $group_rank ) ? ' selected="selected"' : '' ) . '>' . $user -> lang [ 'USER_DEFAULT' ] . '</option>' ;
2006-01-14 14:34:46 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2005-12-04 20:25:51 +00:00
{
2006-01-14 14:34:46 +00:00
$selected = ( $group_rank && $row [ 'rank_id' ] == $group_rank ) ? ' selected="selected"' : '' ;
$rank_options .= '<option value="' . $row [ 'rank_id' ] . '"' . $selected . '>' . $row [ 'rank_title' ] . '</option>' ;
2005-12-04 20:25:51 +00:00
}
$db -> sql_freeresult ( $result );
$type_free = ( $group_type == GROUP_FREE ) ? ' checked="checked"' : '' ;
$type_open = ( $group_type == GROUP_OPEN ) ? ' checked="checked"' : '' ;
$type_closed = ( $group_type == GROUP_CLOSED ) ? ' checked="checked"' : '' ;
$type_hidden = ( $group_type == GROUP_HIDDEN ) ? ' checked="checked"' : '' ;
2011-07-04 16:58:35 -07:00
// Load up stuff for avatars
if ( $config [ 'allow_avatar' ])
{
$avatars_enabled = false ;
$focused_driver = request_var ( 'avatar_driver' , $avatar_data [ 'avatar_type' ]);
foreach ( $avatar_drivers as $driver )
{
if ( $config [ " allow_avatar_ $driver " ])
{
$avatars_enabled = true ;
$template -> set_filenames ( array (
'avatar' => " acp_avatar_options_ $driver .html " ,
));
2005-12-04 20:25:51 +00:00
2012-04-08 16:27:09 +02:00
$avatar = $phpbb_avatar_manager -> get_driver ( $driver );
2005-12-04 20:25:51 +00:00
2011-07-04 16:58:35 -07:00
if ( $avatar -> prepare_form ( $template , $avatar_data , $avatar_error ))
{
$driver_u = strtoupper ( $driver );
$template -> assign_block_vars ( 'avatar_drivers' , array (
'L_TITLE' => $user -> lang ( 'AVATAR_DRIVER_' . $driver_u . '_TITLE' ), // @TODO add lang values
'L_EXPLAIN' => $user -> lang ( 'AVATAR_DRIVER_' . $driver_u . '_EXPLAIN' ),
'DRIVER' => $driver ,
'SELECTED' => ( $driver == $focused_driver ),
'OUTPUT' => $template -> assign_display ( 'avatar' ),
));
}
}
}
}
$avatar = get_group_avatar ( $group_row , 'GROUP_AVATAR' , true );
// Merge any avatars errors into the primary error array
// Drivers use lang constants, so we need to map to the actual strings
foreach ( $avatar_error as $e )
2005-12-04 20:25:51 +00:00
{
2011-07-04 16:58:35 -07:00
if ( is_array ( $e ))
{
$key = array_shift ( $e );
$error [] = vsprintf ( $user -> lang ( $key ), $e );
}
else
{
$error [] = $user -> lang (( string ) $e );
}
2005-12-04 20:25:51 +00:00
}
2005-12-21 19:18:42 +00:00
$back_link = request_var ( 'back_link' , '' );
switch ( $back_link )
{
case 'acp_users_groups' :
2006-06-06 20:53:46 +00:00
$u_back = append_sid ( " { $phpbb_admin_path } index. $phpEx " , 'i=users&mode=groups&u=' . request_var ( 'u' , 0 ));
2005-12-21 19:18:42 +00:00
break ;
default :
2006-02-18 13:54:12 +00:00
$u_back = $this -> u_action ;
2005-12-21 19:18:42 +00:00
break ;
}
2005-12-04 20:25:51 +00:00
$template -> assign_vars ( array (
'S_EDIT' => true ,
2006-02-22 21:42:26 +00:00
'S_ADD_GROUP' => ( $action == 'add' ) ? true : false ,
2006-12-27 17:43:55 +00:00
'S_GROUP_PERM' => ( $action == 'add' && $auth -> acl_get ( 'a_authgroups' ) && $auth -> acl_gets ( 'a_aauth' , 'a_fauth' , 'a_mauth' , 'a_uauth' )) ? true : false ,
2005-12-04 20:25:51 +00:00
'S_INCLUDE_SWATCH' => true ,
'S_ERROR' => ( sizeof ( $error )) ? true : false ,
'S_SPECIAL_GROUP' => ( $group_type == GROUP_SPECIAL ) ? true : false ,
2006-11-24 14:59:26 +00:00
'S_USER_FOUNDER' => ( $user -> data [ 'user_type' ] == USER_FOUNDER ) ? true : false ,
2011-07-04 16:58:35 -07:00
'S_AVATARS_ENABLED' => ( $config [ 'allow_avatar' ] && $avatars_enabled ),
2005-12-04 20:25:51 +00:00
'ERROR_MSG' => ( sizeof ( $error )) ? implode ( '<br />' , $error ) : '' ,
'GROUP_NAME' => ( $group_type == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $group_name ] : $group_name ,
2006-01-14 02:51:53 +00:00
'GROUP_INTERNAL_NAME' => $group_name ,
2006-03-25 12:07:13 +00:00
'GROUP_DESC' => $group_desc_data [ 'text' ],
2005-12-04 20:25:51 +00:00
'GROUP_RECEIVE_PM' => ( isset ( $group_row [ 'group_receive_pm' ]) && $group_row [ 'group_receive_pm' ]) ? ' checked="checked"' : '' ,
2006-11-24 14:59:26 +00:00
'GROUP_FOUNDER_MANAGE' => ( isset ( $group_row [ 'group_founder_manage' ]) && $group_row [ 'group_founder_manage' ]) ? ' checked="checked"' : '' ,
2006-03-28 13:47:16 +00:00
'GROUP_LEGEND' => ( isset ( $group_row [ 'group_legend' ]) && $group_row [ 'group_legend' ]) ? ' checked="checked"' : '' ,
2011-02-09 21:05:10 +01:00
'GROUP_TEAMPAGE' => ( isset ( $group_row [ 'group_teampage' ]) && $group_row [ 'group_teampage' ]) ? ' checked="checked"' : '' ,
2005-12-04 20:25:51 +00:00
'GROUP_MESSAGE_LIMIT' => ( isset ( $group_row [ 'group_message_limit' ])) ? $group_row [ 'group_message_limit' ] : 0 ,
2008-09-23 13:03:33 +00:00
'GROUP_MAX_RECIPIENTS' => ( isset ( $group_row [ 'group_max_recipients' ])) ? $group_row [ 'group_max_recipients' ] : 0 ,
2005-12-04 20:25:51 +00:00
'GROUP_COLOUR' => ( isset ( $group_row [ 'group_colour' ])) ? $group_row [ 'group_colour' ] : '' ,
2009-06-19 09:51:50 +00:00
'GROUP_SKIP_AUTH' => ( ! empty ( $group_row [ 'group_skip_auth' ])) ? ' checked="checked"' : '' ,
2006-11-24 14:59:26 +00:00
2006-03-25 12:07:13 +00:00
'S_DESC_BBCODE_CHECKED' => $group_desc_data [ 'allow_bbcode' ],
'S_DESC_URLS_CHECKED' => $group_desc_data [ 'allow_urls' ],
'S_DESC_SMILIES_CHECKED' => $group_desc_data [ 'allow_smilies' ],
2006-06-16 16:54:51 +00:00
2005-12-04 20:25:51 +00:00
'S_RANK_OPTIONS' => $rank_options ,
2006-12-27 17:43:55 +00:00
'S_GROUP_OPTIONS' => group_select_options ( false , false , (( $user -> data [ 'user_type' ] == USER_FOUNDER ) ? false : 0 )),
2011-07-04 16:58:35 -07:00
'AVATAR' => ( empty ( $avatar ) ? '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $avatar ),
2005-12-04 20:25:51 +00:00
'AVATAR_MAX_FILESIZE' => $config [ 'avatar_filesize' ],
2007-03-03 17:41:21 +00:00
'AVATAR_WIDTH' => ( isset ( $group_row [ 'group_avatar_width' ])) ? $group_row [ 'group_avatar_width' ] : '' ,
'AVATAR_HEIGHT' => ( isset ( $group_row [ 'group_avatar_height' ])) ? $group_row [ 'group_avatar_height' ] : '' ,
2005-12-04 20:25:51 +00:00
2006-01-14 02:51:53 +00:00
'GROUP_TYPE_FREE' => GROUP_FREE ,
'GROUP_TYPE_OPEN' => GROUP_OPEN ,
'GROUP_TYPE_CLOSED' => GROUP_CLOSED ,
'GROUP_TYPE_HIDDEN' => GROUP_HIDDEN ,
'GROUP_TYPE_SPECIAL' => GROUP_SPECIAL ,
2005-12-04 20:25:51 +00:00
'GROUP_FREE' => $type_free ,
'GROUP_OPEN' => $type_open ,
'GROUP_CLOSED' => $type_closed ,
'GROUP_HIDDEN' => $type_hidden ,
2005-12-21 19:18:42 +00:00
'U_BACK' => $u_back ,
2006-06-06 20:53:46 +00:00
'U_SWATCH' => append_sid ( " { $phpbb_admin_path } swatch. $phpEx " , 'form=settings&name=group_colour' ),
2006-02-18 13:54:12 +00:00
'U_ACTION' => " { $this -> u_action } &action= $action &g= $group_id " ,
2011-11-30 21:03:29 +01:00
'L_AVATAR_EXPLAIN' => phpbb_avatar_explanation_string (),
2009-06-19 09:51:50 +00:00
));
2005-12-04 20:25:51 +00:00
return ;
break ;
case 'list' :
if ( ! $group_id )
{
2006-08-28 15:50:33 +00:00
trigger_error ( $user -> lang [ 'NO_GROUP' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
2005-12-04 20:25:51 +00:00
}
$this -> page_title = 'GROUP_MEMBERS' ;
2007-02-18 13:42:08 +00:00
// Grab the leaders - always, on every page...
2009-06-19 09:51:50 +00:00
$sql = ' SELECT u . user_id , u . username , u . username_clean , u . user_regdate , u . user_colour , u . user_posts , u . group_id , ug . group_leader , ug . user_pending
2007-10-05 14:36:34 +00:00
FROM ' . USERS_TABLE . ' u , ' . USER_GROUP_TABLE . " ug
WHERE ug . group_id = $group_id
2007-02-18 13:42:08 +00:00
AND u . user_id = ug . user_id
AND ug . group_leader = 1
2006-12-02 13:19:40 +00:00
ORDER BY ug . group_leader DESC , ug . user_pending ASC , u . username_clean " ;
2007-02-18 13:42:08 +00:00
$result = $db -> sql_query ( $sql );
2005-12-04 20:25:51 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
2007-02-18 13:42:08 +00:00
$template -> assign_block_vars ( 'leader' , array (
'U_USER_EDIT' => append_sid ( " { $phpbb_admin_path } index. $phpEx " , " i=users&action=edit&u= { $row [ 'user_id' ] } " ),
2005-12-04 20:25:51 +00:00
2007-02-18 13:42:08 +00:00
'USERNAME' => $row [ 'username' ],
2009-06-19 09:51:50 +00:00
'USERNAME_COLOUR' => $row [ 'user_colour' ],
2007-02-18 13:42:08 +00:00
'S_GROUP_DEFAULT' => ( $row [ 'group_id' ] == $group_id ) ? true : false ,
'JOINED' => ( $row [ 'user_regdate' ]) ? $user -> format_date ( $row [ 'user_regdate' ]) : ' - ' ,
'USER_POSTS' => $row [ 'user_posts' ],
2009-06-19 09:51:50 +00:00
'USER_ID' => $row [ 'user_id' ],
));
2005-12-04 20:25:51 +00:00
}
$db -> sql_freeresult ( $result );
2007-02-18 13:42:08 +00:00
// Total number of group members (non-leaders)
2007-10-05 14:36:34 +00:00
$sql = ' SELECT COUNT ( user_id ) AS total_members
FROM ' . USER_GROUP_TABLE . "
WHERE group_id = $group_id
2007-02-18 13:42:08 +00:00
AND group_leader = 0 " ;
$result = $db -> sql_query ( $sql );
$total_members = ( int ) $db -> sql_fetchfield ( 'total_members' );
$db -> sql_freeresult ( $result );
2005-12-04 20:25:51 +00:00
$s_action_options = '' ;
$options = array ( 'default' => 'DEFAULT' , 'approve' => 'APPROVE' , 'demote' => 'DEMOTE' , 'promote' => 'PROMOTE' , 'deleteusers' => 'DELETE' );
foreach ( $options as $option => $lang )
{
$s_action_options .= '<option value="' . $option . '">' . $user -> lang [ 'GROUP_' . $lang ] . '</option>' ;
}
2012-07-05 18:56:14 +01:00
$base_url = $this -> u_action . " &action= $action &g= $group_id " ;
2012-07-12 02:36:00 +01:00
phpbb_generate_template_pagination ( $template , $base_url , 'pagination' , 'start' , $total_members , $config [ 'topics_per_page' ], $start );
2012-07-04 23:19:59 +01:00
2005-12-04 20:25:51 +00:00
$template -> assign_vars ( array (
'S_LIST' => true ,
'S_GROUP_SPECIAL' => ( $group_row [ 'group_type' ] == GROUP_SPECIAL ) ? true : false ,
'S_ACTION_OPTIONS' => $s_action_options ,
2012-07-08 21:07:28 +01:00
'S_ON_PAGE' => phpbb_on_page ( $template , $user , $base_url , $total_members , $config [ 'topics_per_page' ], $start ),
2006-07-09 16:23:57 +00:00
'GROUP_NAME' => ( $group_row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $group_row [ 'group_name' ]] : $group_row [ 'group_name' ],
2005-12-04 20:25:51 +00:00
2006-02-18 13:54:12 +00:00
'U_ACTION' => $this -> u_action . " &g= $group_id " ,
'U_BACK' => $this -> u_action ,
2006-07-09 16:23:57 +00:00
'U_FIND_USERNAME' => append_sid ( " { $phpbb_root_path } memberlist. $phpEx " , 'mode=searchuser&form=list&field=usernames' ),
2007-09-22 18:31:50 +00:00
'U_DEFAULT_ALL' => " { $this -> u_action } &action=default&g= $group_id " ,
));
2005-12-04 20:25:51 +00:00
2007-02-18 13:42:08 +00:00
// Grab the members
2009-06-19 09:51:50 +00:00
$sql = ' SELECT u . user_id , u . username , u . username_clean , u . user_colour , u . user_regdate , u . user_posts , u . group_id , ug . group_leader , ug . user_pending
2007-10-05 14:36:34 +00:00
FROM ' . USERS_TABLE . ' u , ' . USER_GROUP_TABLE . " ug
WHERE ug . group_id = $group_id
2007-02-18 13:42:08 +00:00
AND u . user_id = ug . user_id
AND ug . group_leader = 0
ORDER BY ug . group_leader DESC , ug . user_pending ASC , u . username_clean " ;
$result = $db -> sql_query_limit ( $sql , $config [ 'topics_per_page' ], $start );
2005-12-04 20:25:51 +00:00
$pending = false ;
2007-02-18 13:42:08 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2005-12-04 20:25:51 +00:00
{
if ( $row [ 'user_pending' ] && ! $pending )
{
$template -> assign_block_vars ( 'member' , array (
'S_PENDING' => true )
);
$pending = true ;
}
$template -> assign_block_vars ( 'member' , array (
2006-06-06 20:53:46 +00:00
'U_USER_EDIT' => append_sid ( " { $phpbb_admin_path } index. $phpEx " , " i=users&action=edit&u= { $row [ 'user_id' ] } " ),
2005-12-04 20:25:51 +00:00
'USERNAME' => $row [ 'username' ],
2009-06-19 09:51:50 +00:00
'USERNAME_COLOUR' => $row [ 'user_colour' ],
2005-12-04 20:25:51 +00:00
'S_GROUP_DEFAULT' => ( $row [ 'group_id' ] == $group_id ) ? true : false ,
2006-03-22 18:48:46 +00:00
'JOINED' => ( $row [ 'user_regdate' ]) ? $user -> format_date ( $row [ 'user_regdate' ]) : ' - ' ,
2005-12-04 20:25:51 +00:00
'USER_POSTS' => $row [ 'user_posts' ],
'USER_ID' => $row [ 'user_id' ])
);
}
2007-02-18 13:42:08 +00:00
$db -> sql_freeresult ( $result );
2005-12-04 20:25:51 +00:00
return ;
break ;
}
$template -> assign_vars ( array (
2006-02-18 13:54:12 +00:00
'U_ACTION' => $this -> u_action ,
2006-02-22 21:42:26 +00:00
'S_GROUP_ADD' => ( $auth -> acl_get ( 'a_groupadd' )) ? true : false )
2005-12-04 20:25:51 +00:00
);
2007-03-02 19:46:24 +00:00
// Get us all the groups
$sql = ' SELECT g . group_id , g . group_name , g . group_type
2005-12-04 20:25:51 +00:00
FROM ' . GROUPS_TABLE . ' g
ORDER BY g . group_type ASC , g . group_name ' ;
$result = $db -> sql_query ( $sql );
2007-03-03 21:54:11 +00:00
$lookup = $cached_group_data = array ();
2007-03-02 19:46:24 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
$type = ( $row [ 'group_type' ] == GROUP_SPECIAL ) ? 'special' : 'normal' ;
2007-03-31 12:35:44 +00:00
2007-03-02 19:46:24 +00:00
// used to determine what type a group is
$lookup [ $row [ 'group_id' ]] = $type ;
2007-03-31 12:35:44 +00:00
2007-03-02 19:46:24 +00:00
// used for easy access to the data within a group
$cached_group_data [ $type ][ $row [ 'group_id' ]] = $row ;
2007-03-31 12:35:44 +00:00
$cached_group_data [ $type ][ $row [ 'group_id' ]][ 'total_members' ] = 0 ;
2007-03-02 19:46:24 +00:00
}
$db -> sql_freeresult ( $result );
// How many people are in which group?
$sql = ' SELECT COUNT ( ug . user_id ) AS total_members , ug . group_id
FROM ' . USER_GROUP_TABLE . ' ug
WHERE ' . $db->sql_in_set(' ug . group_id ', array_keys($lookup)) . '
GROUP BY ug . group_id ' ;
$result = $db -> sql_query ( $sql );
2005-12-04 20:25:51 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
2007-03-02 19:46:24 +00:00
$type = $lookup [ $row [ 'group_id' ]];
2007-03-03 21:54:11 +00:00
$cached_group_data [ $type ][ $row [ 'group_id' ]][ 'total_members' ] = $row [ 'total_members' ];
2005-12-04 20:25:51 +00:00
}
$db -> sql_freeresult ( $result );
2007-03-31 12:35:44 +00:00
// The order is... normal, then special
2007-04-01 17:03:05 +00:00
ksort ( $cached_group_data );
2007-03-31 12:35:44 +00:00
2007-03-03 21:54:11 +00:00
foreach ( $cached_group_data as $type => $row_ary )
2005-12-04 20:25:51 +00:00
{
if ( $type == 'special' )
{
$template -> assign_block_vars ( 'groups' , array (
'S_SPECIAL' => true )
);
}
2007-03-03 21:54:11 +00:00
foreach ( $row_ary as $group_id => $row )
2005-12-04 20:25:51 +00:00
{
$group_name = ( ! empty ( $user -> lang [ 'G_' . $row [ 'group_name' ]])) ? $user -> lang [ 'G_' . $row [ 'group_name' ]] : $row [ 'group_name' ];
2008-11-09 15:10:40 +00:00
2005-12-04 20:25:51 +00:00
$template -> assign_block_vars ( 'groups' , array (
2006-02-18 13:54:12 +00:00
'U_LIST' => " { $this -> u_action } &action=list&g= $group_id " ,
'U_EDIT' => " { $this -> u_action } &action=edit&g= $group_id " ,
2006-02-22 21:42:26 +00:00
'U_DELETE' => ( $auth -> acl_get ( 'a_groupdel' )) ? " { $this -> u_action } &action=delete&g= $group_id " : '' ,
2005-12-04 20:25:51 +00:00
'S_GROUP_SPECIAL' => ( $row [ 'group_type' ] == GROUP_SPECIAL ) ? true : false ,
2008-11-09 15:10:40 +00:00
2005-12-04 20:25:51 +00:00
'GROUP_NAME' => $group_name ,
'TOTAL_MEMBERS' => $row [ 'total_members' ],
2009-06-19 09:51:50 +00:00
));
2005-12-04 20:25:51 +00:00
}
}
}
2011-02-09 21:05:10 +01:00
public function manage_position ()
{
global $config , $db , $template , $user ;
$this -> tpl_name = 'acp_groups_position' ;
$this -> page_title = 'ACP_GROUPS_POSITION' ;
$field = request_var ( 'field' , '' );
$action = request_var ( 'action' , '' );
$group_id = request_var ( 'g' , 0 );
if ( $field && ! in_array ( $field , array ( 'legend' , 'teampage' )))
{
// Invalid mode
trigger_error ( $user -> lang [ 'NO_MODE' ] . adm_back_link ( $this -> u_action ), E_USER_WARNING );
}
2011-02-14 16:09:09 +01:00
else if ( $field )
{
2011-02-14 16:43:56 +01:00
$group_position = new phpbb_group_positions ( $db , $field , $this -> u_action );
2011-02-14 16:09:09 +01:00
}
2011-02-09 21:05:10 +01:00
switch ( $action )
{
case 'set_config_legend' :
set_config ( 'legend_sort_groupname' , request_var ( 'legend_sort_groupname' , 0 ));
break ;
case 'set_config_teampage' :
set_config ( 'teampage_forums' , request_var ( 'teampage_forums' , 0 ));
2011-10-14 00:54:11 +02:00
set_config ( 'teampage_memberships' , request_var ( 'teampage_memberships' , 0 ));
2011-02-09 21:05:10 +01:00
break ;
case 'add' :
2011-02-14 16:09:09 +01:00
$group_position -> add_group ( $group_id );
2011-02-09 21:05:10 +01:00
break ;
case 'delete' :
2011-02-14 16:09:09 +01:00
$group_position -> delete_group ( $group_id );
2011-02-09 21:05:10 +01:00
break ;
case 'move_up' :
2011-02-14 16:09:09 +01:00
$group_position -> move_up ( $group_id );
2011-02-09 21:05:10 +01:00
break ;
case 'move_down' :
2011-02-14 16:09:09 +01:00
$group_position -> move_down ( $group_id );
2011-02-09 21:05:10 +01:00
break ;
}
$sql = ' SELECT group_id , group_name , group_colour , group_type , group_legend
FROM ' . GROUPS_TABLE . '
ORDER BY group_legend , group_name ASC ' ;
$result = $db -> sql_query ( $sql );
$s_group_select_legend = '' ;
while ( $row = $db -> sql_fetchrow ( $result ))
{
$group_name = ( $row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $row [ 'group_name' ]] : $row [ 'group_name' ];
if ( $row [ 'group_legend' ])
{
$template -> assign_block_vars ( 'legend' , array (
'GROUP_NAME' => $group_name ,
'GROUP_COLOUR' => ( $row [ 'group_colour' ]) ? ' style="color: #' . $row [ 'group_colour' ] . '"' : '' ,
'GROUP_TYPE' => $user -> lang [ phpbb_group_positions :: group_type_language ( $row [ 'group_type' ])],
'U_MOVE_DOWN' => " { $this -> u_action } &field=legend&action=move_down&g= " . $row [ 'group_id' ],
'U_MOVE_UP' => " { $this -> u_action } &field=legend&action=move_up&g= " . $row [ 'group_id' ],
'U_DELETE' => " { $this -> u_action } &field=legend&action=delete&g= " . $row [ 'group_id' ],
));
}
else
{
$s_group_select_legend .= '<option value="' . ( int ) $row [ 'group_id' ] . '">' . $group_name . '</option>' ;
}
}
$db -> sql_freeresult ( $result );
$sql = ' SELECT group_id , group_name , group_colour , group_type , group_teampage
FROM ' . GROUPS_TABLE . '
ORDER BY group_teampage , group_name ASC ' ;
$result = $db -> sql_query ( $sql );
$s_group_select_teampage = '' ;
while ( $row = $db -> sql_fetchrow ( $result ))
{
$group_name = ( $row [ 'group_type' ] == GROUP_SPECIAL ) ? $user -> lang [ 'G_' . $row [ 'group_name' ]] : $row [ 'group_name' ];
if ( $row [ 'group_teampage' ])
{
$template -> assign_block_vars ( 'teampage' , array (
'GROUP_NAME' => $group_name ,
'GROUP_COLOUR' => ( $row [ 'group_colour' ]) ? ' style="color: #' . $row [ 'group_colour' ] . '"' : '' ,
'GROUP_TYPE' => $user -> lang [ phpbb_group_positions :: group_type_language ( $row [ 'group_type' ])],
'U_MOVE_DOWN' => " { $this -> u_action } &field=teampage&action=move_down&g= " . $row [ 'group_id' ],
'U_MOVE_UP' => " { $this -> u_action } &field=teampage&action=move_up&g= " . $row [ 'group_id' ],
'U_DELETE' => " { $this -> u_action } &field=teampage&action=delete&g= " . $row [ 'group_id' ],
));
}
else
{
$s_group_select_teampage .= '<option value="' . ( int ) $row [ 'group_id' ] . '">' . $group_name . '</option>' ;
}
}
$db -> sql_freeresult ( $result );
$template -> assign_vars ( array (
'U_ACTION' => $this -> u_action ,
'U_ACTION_LEGEND' => $this -> u_action . '&field=legend' ,
'U_ACTION_TEAMPAGE' => $this -> u_action . '&field=teampage' ,
2011-10-14 00:54:11 +02:00
'S_GROUP_SELECT_LEGEND' => $s_group_select_legend ,
'S_GROUP_SELECT_TEAMPAGE' => $s_group_select_teampage ,
'DISPLAY_FORUMS' => ( $config [ 'teampage_forums' ]) ? true : false ,
'DISPLAY_MEMBERSHIPS' => $config [ 'teampage_memberships' ],
'LEGEND_SORT_GROUPNAME' => ( $config [ 'legend_sort_groupname' ]) ? true : false ,
2011-02-09 21:05:10 +01:00
));
}
2005-12-04 20:25:51 +00:00
}