diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2001-11-03 19:17:06 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2001-11-03 19:17:06 +0000 |
commit | 7844a5fa7fe9359b2bbb4134a149651dfe49c666 (patch) | |
tree | 169af49c5d04e3dbb10de1c24e011037ab74e124 /phpBB | |
parent | 93ee34b2a3e057ad9d461f42b82b4d9ce5738062 (diff) | |
download | forums-7844a5fa7fe9359b2bbb4134a149651dfe49c666.tar forums-7844a5fa7fe9359b2bbb4134a149651dfe49c666.tar.gz forums-7844a5fa7fe9359b2bbb4134a149651dfe49c666.tar.bz2 forums-7844a5fa7fe9359b2bbb4134a149651dfe49c666.tar.xz forums-7844a5fa7fe9359b2bbb4134a149651dfe49c666.zip |
Group control panel updates and mods + hidden group ability
git-svn-id: file:///svn/phpbb/trunk@1268 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB')
-rw-r--r-- | phpBB/admin/admin_groups.php | 16 | ||||
-rw-r--r-- | phpBB/groupcp.php | 1167 | ||||
-rw-r--r-- | phpBB/includes/constants.php | 15 | ||||
-rw-r--r-- | phpBB/language/lang_english/lang_main.php | 6 | ||||
-rw-r--r-- | phpBB/templates/subSilver/admin/group_edit_body.tpl | 5 | ||||
-rw-r--r-- | phpBB/templates/subSilver/groupcp_info_body.tpl | 140 | ||||
-rw-r--r-- | phpBB/templates/subSilver/groupcp_pending_info.tpl | 36 | ||||
-rw-r--r-- | phpBB/templates/subSilver/groupcp_user_body.tpl | 58 |
8 files changed, 859 insertions, 584 deletions
diff --git a/phpBB/admin/admin_groups.php b/phpBB/admin/admin_groups.php index 727f18346e..85a9c73ee4 100644 --- a/phpBB/admin/admin_groups.php +++ b/phpBB/admin/admin_groups.php @@ -36,14 +36,13 @@ require('pagestart.inc'); if( isset($HTTP_POST_VARS[POST_GROUPS_URL]) || isset($HTTP_GET_VARS[POST_GROUPS_URL]) ) { - $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? $HTTP_POST_VARS[POST_GROUPS_URL] : $HTTP_GET_VARS[POST_GROUPS_URL]; + $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? intval($HTTP_POST_VARS[POST_GROUPS_URL]) : intval($HTTP_GET_VARS[POST_GROUPS_URL]); } else { $group_id = ""; } - if( isset($HTTP_POST_VARS['edit']) || isset($HTTP_POST_VARS['new']) ) { // @@ -77,8 +76,7 @@ if( isset($HTTP_POST_VARS['edit']) || isset($HTTP_POST_VARS['new']) ) "group_name" => "", "group_description" => "", "group_moderator" => "", - "group_type" => "1" - ); + "group_type" => GROUP_OPEN); $group_open = "checked=\"checked\""; $mode = "newgroup"; @@ -107,8 +105,9 @@ if( isset($HTTP_POST_VARS['edit']) || isset($HTTP_POST_VARS['new']) ) } $select_list .= "</select>"; - $group_open = ( !empty($group_info['group_type']) ) ? "checked=\"checked\"" : ""; - $group_closed = ( empty($group_info['group_type']) ) ? "checked=\"checked\"" : ""; + $group_open = ( $group_info['group_type'] == GROUP_OPEN ) ? "checked=\"checked\"" : ""; + $group_closed = ( $group_info['group_type'] == GROUP_CLOSED ) ? "checked=\"checked\"" : ""; + $group_hidden = ( $group_info['group_type'] == GROUP_HIDDEN ) ? "checked=\"checked\"" : ""; $template->set_filenames(array( "body" => "admin/group_edit_body.tpl") @@ -128,6 +127,7 @@ if( isset($HTTP_POST_VARS['edit']) || isset($HTTP_POST_VARS['new']) ) "L_GROUP_STATUS" => $lang['group_status'], "L_GROUP_OPEN" => $lang['group_open'], "L_GROUP_CLOSED" => $lang['group_closed'], + "L_GROUP_HIDDEN" => $lang['group_hidden'], "L_GROUP_DELETE" => $lang['group_delete'], "L_GROUP_DELETE_CHECK" => $lang['group_delete_check'], "L_SUBMIT" => $lang['submit_group_changes'], @@ -137,8 +137,12 @@ if( isset($HTTP_POST_VARS['edit']) || isset($HTTP_POST_VARS['new']) ) "L_YES" => $lang['Yes'], "S_SELECT_MODERATORS" => $select_list, + "S_GROUP_OPEN_TYPE" => GROUP_OPEN, + "S_GROUP_CLOSED_TYPE" => GROUP_CLOSED, + "S_GROUP_HIDDEN_TYPE" => GROUP_HIDDEN, "S_GROUP_OPEN_CHECKED" => $group_open, "S_GROUP_CLOSED_CHECKED" => $group_closed, + "S_GROUP_HIDDEN_CHECKED" => $group_hidden, "S_GROUP_ACTION" => append_sid("admin_groups.$phpEx"), "S_HIDDEN_FIELDS" => $s_hidden_fields) ); diff --git a/phpBB/groupcp.php b/phpBB/groupcp.php index acc96b3b98..de36828a9b 100644 --- a/phpBB/groupcp.php +++ b/phpBB/groupcp.php @@ -23,7 +23,6 @@ $phpbb_root_path = "./"; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); -include($phpbb_root_path . 'includes/emailer.'.$phpEx); // // Start session management @@ -34,312 +33,471 @@ init_userprefs($userdata); // End session management // -if(!isset($HTTP_GET_VARS['start'])) +if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) { - $start = 0; + $group_id = ( isset($HTTP_GET_VARS[POST_GROUPS_URL]) ) ? intval($HTTP_GET_VARS[POST_GROUPS_URL]) : intval($HTTP_POST_VARS[POST_GROUPS_URL]); } +else +{ + $group_id = ""; +} + +$confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : 0; +$cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : 0; + +$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0; -$page_title = $lang['Group_Control_Panel']; $is_moderator = FALSE; -// -// First, joining a group -// -if( isset($HTTP_POST_VARS['joingroup']) ) +if( isset($HTTP_POST_VARS['groupstatus']) && $group_id ) { - include($phpbb_root_path . 'includes/page_header.'.$phpEx); + if( !$userdata['session_logged_in'] ) + { + header("Location: " . append_sid("login.$phpEx?redirect=groupcp.$phpEx", true)); + } + + $sql = "SELECT group_moderator + FROM " . GROUPS_TABLE . " + WHERE group_id = $group_id"; + if( !$result = $db->sql_query($sql) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain user and group information", "", __LINE__, __FILE__, $sql); + } + + $row = $db->sql_fetchrow($result); + + if( $row['user_id'] != $userdata['user_id'] && $userdata['user_level'] != ADMIN ) + { + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') + ); + + $message = $lang["Not_group_moderator"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); + + message_die(GENERAL_MESSAGE, $message); + } + + $sql = "UPDATE " . GROUPS_TABLE . " + SET group_type = " . intval($HTTP_POST_VARS['group_type']) . " + WHERE group_id = $group_id"; + if( !$result = $db->sql_query($sql) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain user and group information", "", __LINE__, __FILE__, $sql); + } + + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') + ); + + $message = $lang["Group_type_updated"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); + + message_die(GENERAL_MESSAGE, $message); + +} +else if( isset($HTTP_POST_VARS['joingroup']) && $group_id ) +{ + // + // First, joining a group + // - // If the user isn't logged in give them an error - if(!$userdata['session_logged_in']) + // + // If the user isn't logged in redirect them to login + // + if( !$userdata['session_logged_in'] ) { - message_die(GENERAL_ERROR, $lang['Not_logged_in'], $lang['Error'], __LINE__, __FILE__); + header("Location: " . append_sid("login.$phpEx?redirect=groupcp.$phpEx", true)); } - $sql = "INSERT INTO ".USER_GROUP_TABLE." (group_id, user_id, user_pending) values (".$HTTP_POST_VARS[POST_GROUPS_URL].", ".$userdata['user_id'].", 1)"; - if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION)) + + $sql = "SELECT ug.user_id, g.group_type + FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g + WHERE g.group_id = $group_id + AND ug.group_id = g.group_id"; + if( !$result = $db->sql_query($sql) ) { - message_die(GENERAL_ERROR, "Error inserting user group subscription", "Error", __LINE__, __FILE__, $sql); + message_die(GENERAL_ERROR, "Couldn't obtain user and group information", "", __LINE__, __FILE__, $sql); } - $sql = "SELECT u.user_email, u.username, g.group_name FROM ".USERS_TABLE . " u, " . GROUPS_TABLE . " g - WHERE u.user_id = g.group_moderator AND g.group_id = ".$HTTP_POST_VARS[POST_GROUPS_URL]; - if(!$result = $db->sql_query($sql, END_TRANSACTION)) + $rowset = $db->sql_fetchrowset($result); + + if( $rowset[0]['group_type'] == GROUP_OPEN ) { - message_die(GENERAL_ERROR, "Error getting group moderator data", "Error", __LINE__, __FILE__, $sql); + for($i = 0; $i < count($rowset); $i++ ) + { + if( $userdata['user_id'] == $rowset[$i]['user_id'] ) + { + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') + ); + + $message = $lang["Already_member_group"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); + + message_die(GENERAL_MESSAGE, $message); + } + } } + else + { + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') + ); - $moderator = $db->sql_fetchrowset($result); + $message = $lang["This_closed_group"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); - $email_headers = "From: " . $board_config['board_email'] . "\r\n"; + message_die(GENERAL_MESSAGE, $message); + } + $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending) + VALUES ($group_id, " . $userdata['user_id'] . ", 1)"; + if( !$result = $db->sql_query($sql) ) + { + message_die(GENERAL_ERROR, "Error inserting user group subscription", "", __LINE__, __FILE__, $sql); + } + $sql = "SELECT u.user_email, u.username, g.group_name + FROM ".USERS_TABLE . " u, " . GROUPS_TABLE . " g + WHERE u.user_id = g.group_moderator + AND g.group_id = $group_id"; + if( !$result = $db->sql_query($sql) ) + { + message_die(GENERAL_ERROR, "Error getting group moderator data", "", __LINE__, __FILE__, $sql); + } + + $moderator = $db->sql_fetchrow($result); + + include($phpbb_root_path . 'includes/emailer.'.$phpEx); $emailer = new emailer($board_config['smtp_delivery']); - - $email_headers = "From: " . $board_config['board_email'] . "\r\n"; + + $email_headers = "From: " . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\r\n"; + + $path = (dirname($HTTP_SERVER_VARS['REQUEST_URI']) == "/") ? "" : dirname($HTTP_SERVER_VARS['REQUEST_URI']); + $server_name = ( isset($HTTP_SERVER_VARS['HTTP_HOST']) ) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_SERVER_VARS['SERVER_NAME']; + $emailer->use_template("group_request"); - $emailer->email_address($moderator[0]['user_email']); + $emailer->email_address($moderator['user_email']); $emailer->set_subject($lang['Group_request']); $emailer->extra_headers($email_headers); $emailer->assign_vars(array( - "SITENAME" => $board_config['sitename'], - "GROUP_MODERATOR" => $moderator[0]['username'], - "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=".$HTTP_POST_VARS[POST_GROUPS_URL], - "EMAIL_SIG" => $board_config['board_email_sig']) + "SITENAME" => $board_config['sitename'], + "GROUP_MODERATOR" => $moderator['username'], + "EMAIL_SIG" => str_replace("<br />", "\n", "-- \n" . $board_config['board_email_sig']), + + "U_GROUPCP" => "http://" . $server_name . $path . "/groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") ); $emailer->send(); $emailer->reset(); - message_die(GENERAL_MESSAGE, $lang["Group_joined"], $lang['Subscribe']); + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') + ); + + $message = $lang["Group_joined"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); + + message_die(GENERAL_MESSAGE, $message); } -// -// Second, unsubscribing from a group -// -else if( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending']) ) +else if( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending']) && $group_id ) { // - // Check for confirmation of unsub. + // Second, unsubscribing from a group // - $confirm = ($HTTP_POST_VARS['confirm']) ? TRUE : FALSE; - $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? $HTTP_POST_VARS[POST_GROUPS_URL] : $HTTP_GET_VARS[POST_GROUPS_URL]; - if($HTTP_POST_VARS['not_confirm']) + // + // Check for confirmation of unsub. + // + if( $cancel ) { - header("Location: groupcp.$phpEx"); + header("Location: " . append_sid("groupcp.$phpEx", true)); } - if($confirm) + if( !$userdata['session_logged_in'] ) { - include($phpbb_root_path . 'includes/page_header.'.$phpEx); - - $sql = "DELETE FROM ".USER_GROUP_TABLE." WHERE user_id = ".$userdata['user_id']." AND group_id = $group_id"; + header("Location: " . append_sid("login.$phpEx?redirect=groupcp.$phpEx", true)); + } - if(!$result = $db->sql_query($sql)) + if( $confirm ) + { + $sql = "DELETE FROM " . USER_GROUP_TABLE . " + WHERE user_id = " . $userdata['user_id'] . " + AND group_id = $group_id"; + if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not delete group memebership data", "Error", __LINE__, __FILE__, $sql); } - else - { - message_die(GENERAL_MESSAGE, $lang['Usub_success'], $lang['Unsubscribe']); - } + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') + ); + + $message = $lang["Usub_success"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); - include($phpbb_root_path . 'includes/page_tail.'.$phpEx); + message_die(GENERAL_MESSAGE, $message); } else { + $unsub_msg = ( isset($HTTP_POST_VARS['unsub']) ) ? $lang['Confirm_unsub'] : $lang['Confirm_unsub_pending']; + + $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" /><input type="hidden" name="unsub" value="1" />'; + + $page_title = $lang['Group_Control_Panel']; include($phpbb_root_path . 'includes/page_header.'.$phpEx); - $template->set_filenames(array("confirm" => "confirm_body.tpl")); + $template->set_filenames(array( + "confirm" => "confirm_body.tpl") + ); + + $template->assign_vars(array( + "MESSAGE_TITLE" => $lang['Confirm'], + "MESSAGE_TEXT" => $unsub_msg, + "L_YES" => $lang['Yes'], + "L_NO" => $lang['No'], + "S_CONFIRM_ACTION" => append_sid("groupcp.$phpEx"), + "S_HIDDEN_FIELDS" => $s_hidden_fields) + ); - $hidden_fields = '<input type="hidden" name="'.POST_GROUPS_URL.'" value="'.$group_id.'" /><input type="hidden" name="unsub" value="1" />'; - if(isset($HTTP_POST_VARS['unsub'])) - { - $unsub_msg = $lang['Confirm_unsub']; - } - else - { - $unsub_msg = $lang['Confirm_unsub_pending']; - } - $template->assign_vars(array("MESSAGE_TITLE" => $lang['Confirm'], - "MESSAGE_TEXT" => $unsub_msg, - "L_YES" => $lang['Yes'], - "L_NO" => $lang['No'], - "S_CONFIRM_ACTION" => append_sid("groupcp.$phpEx"), - "S_HIDDEN_FIELDS" => $hidden_fields)); $template->pparse("confirm"); - include($phpbb_root_path . 'includes/page_tail.'.$phpEx); + include($phpbb_root_path . 'includes/page_tail.'.$phpEx); } - } -// -// Third, everything else -// -else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) +else if( $group_id ) { - - // - // Include page header here because we might need to send a header redirect from the unsub section - // - include($phpbb_root_path . 'includes/page_header.'.$phpEx); - $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? $HTTP_POST_VARS[POST_GROUPS_URL] : $HTTP_GET_VARS[POST_GROUPS_URL]; - // // For security, get the ID of the group moderator. // - $sql = "SELECT group_moderator FROM " . GROUPS_TABLE . " WHERE group_id = $group_id"; - + $sql = "SELECT group_moderator + FROM " . GROUPS_TABLE . " + WHERE group_id = $group_id"; if(!$result = $db->sql_query($sql)) { message_die(GENERAL_ERROR, "Could not get moderator information", $lang['Error'], __LINE__, __FILE__, $sql); } - $row = $db->sql_fetchrow($result); + $group_moderator = $row['group_moderator']; - if($group_moderator == $userdata['user_id'] || $userdata['user_level'] == ADMIN) + if( $group_moderator == $userdata['user_id'] || $userdata['user_level'] == ADMIN ) { $is_moderator = TRUE; } - // // Handle Additions, removals, approvals and denials // - if(isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) || $HTTP_POST_VARS['add'] || $HTTP_POST_VARS['remove']) + if( $HTTP_POST_VARS['add'] || $HTTP_POST_VARS['remove'] || isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) { - - if(!$is_moderator) + if( !$is_moderator ) { - message_die(GENERAL_ERROR, $lang['Not_group_moderator'], $lang['Error']); - } - + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') + ); - $members = $HTTP_POST_VARS['member']; + $message = $lang["Not_group_moderator"] . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); - if(isset($HTTP_POST_VARS['add'])) + message_die(GENERAL_MESSAGE, $message); + } + + if( isset($HTTP_POST_VARS['add']) ) { - $username = $HTTP_POST_VARS['username']; + $username = ( isset($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : ""; - $sql = "SELECT user_id, user_email FROM " . USERS_TABLE . " WHERE username = '$username'"; - - if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION)) + $sql = "SELECT user_id, user_email + FROM " . USERS_TABLE . " + WHERE username = '$username'"; + if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get user information", $lang['Error'], __LINE__, __FILE__, $sql); } - $row = $db->sql_fetchrow($result); - if(!$row) - { - message_die(GENERAL_ERROR, $lang['Could_not_add_user'], $lang['Error']); - } - - $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) VALUES (" . $row['user_id'] . ", $group_id, 0)"; - if(!$result = $db->sql_query($sql, END_TRANSACTION)) + if( !$db->sql_numrows($result) ) { - message_die(GENERAL_ERROR, "Could not add user to group", "Error", __LINE__, __FILE__, $sql); - } - - // Email the user and tell them they're in the group + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') + ); - // - // Get the group name - // - $group_sql = "SELECT group_name FROM ".GROUPS_TABLE." WHERE group_id = $group_id"; - if(!$result = $db->sql_query($group_sql)) - { - message_die(GENERAL_ERROR, "Could not get group information", "Error", __LINE__, __FILE__, $group_sql); - } - $group_name_row = $db->sql_fetchrow($result); - $group_name = $group_name_row['group_name']; + $message = $lang["Could_not_add_user"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); - $emailer = new emailer($board_config['smtp_delivery']); - - $emailer->use_template("group_added"); - $emailer->email_address($row['user_email']); - $emailer->set_subject($lang['Group_added']); - $emailer->extra_headers($email_headers); - - $emailer->assign_vars(array( - "SITENAME" => $board_config['sitename'], - "GROUP_NAME" => $group_name, - "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=".$HTTP_POST_VARS[POST_GROUPS_URL], - "EMAIL_SIG" => $board_config['board_email_sig']) - ); - $emailer->send(); - $emailer->reset(); - - - } - else - { - if(isset($HTTP_POST_VARS['approve'])) - { - $sql_select = "SELECT user_email FROM ". USERS_TABLE . " WHERE "; - $sql = "UPDATE ".USER_GROUP_TABLE." SET user_pending = 0 WHERE "; + message_die(GENERAL_MESSAGE, $message); } - else if(isset($HTTP_POST_VARS['deny']) || isset($HTTP_POST_VARS['remove'])) + + $sql = "SELECT ug.user_id + FROM " . USER_GROUP_TABLE . " ug + WHERE ug.user_id = " . $row['user_id'] . " + AND ug.group_id = $group_id"; + if( !$result = $db->sql_query($sql) ) { - $sql = "DELETE FROM ".USER_GROUP_TABLE." WHERE "; + message_die(GENERAL_ERROR, "Could not get user information", $lang['Error'], __LINE__, __FILE__, $sql); } - for($x = 0; $x < count($members); $x++) + if( !$db->sql_numrows($result) ) { - if($x > 0) - { - $sql_select .= " OR "; - $sql .= " OR "; - } - $sql .= "user_id = ".$members[$x]; - $sql_select .= "user_id = ".$members[$x]; - } - - if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION)) - { - message_die(GENERAL_ERROR, "Could not update user group table.", "Error", __LINE__, __FILE__, $sql); - } - - // Email user when they'er approved - if(isset($HTTP_POST_VARS['approve'])) - { - if(!$result = $db->sql_query($sql_select)) + $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) + VALUES (" . $row['user_id'] . ", $group_id, 0)"; + + if( !$result = $db->sql_query($sql) ) { - message_die(GENERAL_ERROR, "Could not get user email information", "Error", __LINE__, __FILE__, $sql); + message_die(GENERAL_ERROR, "Could not add user to group", "Error", __LINE__, __FILE__, $sql); } - $email_rowset = $db->sql_fetchrowset($result); - $members_count = $db->sql_numrows($result); - + + // Email the user and tell them they're in the group + // // Get the group name // - $group_sql = "SELECT group_name FROM ".GROUPS_TABLE." WHERE group_id = $group_id"; + $group_sql = "SELECT group_name + FROM " . GROUPS_TABLE . " + WHERE group_id = $group_id"; if(!$result = $db->sql_query($group_sql)) { message_die(GENERAL_ERROR, "Could not get group information", "Error", __LINE__, __FILE__, $group_sql); } $group_name_row = $db->sql_fetchrow($result); + $group_name = $group_name_row['group_name']; - + include($phpbb_root_path . 'includes/emailer.'.$phpEx); $emailer = new emailer($board_config['smtp_delivery']); - - $email_headers = "From: " . $board_config['board_email'] . "\r\n"; - $emailer->use_template("group_approved"); + + $email_headers = "From: " . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\r\n"; + + $path = (dirname($HTTP_SERVER_VARS['REQUEST_URI']) == "/") ? "" : dirname($HTTP_SERVER_VARS['REQUEST_URI']); + $server_name = ( isset($HTTP_SERVER_VARS['HTTP_HOST']) ) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_SERVER_VARS['SERVER_NAME']; + + $emailer->use_template("group_added"); + $emailer->email_address($row['user_email']); + $emailer->set_subject($lang['Group_added']); $emailer->extra_headers($email_headers); - $emailer->set_subject($lang['Group_approved']); - - for($x = 0; $x < $members_count; $x++) - { - if($x > 0) - { - $email_address .= ", "; - } - $email_address .= $email_rowset[$x]['user_email']; - } - $emailer->email_address($email_address); + $emailer->assign_vars(array( - "SITENAME" => $board_config['sitename'], - "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=$group_id", - "GROUP_NAME" => $group_name, - "EMAIL_SIG" => $board_config['board_email_sig']) + "SITENAME" => $board_config['sitename'], + "GROUP_NAME" => $group_name, + "EMAIL_SIG" => str_replace("<br />", "\n", "-- \n" . $board_config['board_email_sig']), + + "U_GROUPCP" => "http://" . $server_name . $path . "/groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") ); $emailer->send(); $emailer->reset(); } + else + { + $template->assign_vars(array( + "META" => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') + ); + + $message = $lang["User_is_member_group"] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); + + message_die(GENERAL_MESSAGE, $message); + } } + else + { + if( ( ( isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) && isset($HTTP_POST_VARS['pending_members']) ) || ( isset($HTTP_POST_VARS['remove']) && isset($HTTP_POST_VARS['members']) ) ) + { + + $members = ( isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) ? $HTTP_POST_VARS['pending_members'] : $HTTP_POST_VARS['members']; + + $sql_in = ""; + for($i = 0; $i < count($members); $i++) + { + if($i > 0) + { + $sql_in .= ", "; + } + $sql_in .= $members[$i]; + } + + if( isset($HTTP_POST_VARS['approve']) ) + { + $sql = "UPDATE " . USER_GROUP_TABLE . " + SET user_pending = 0 + WHERE user_id IN ($sql_in) + AND group_id = $group_id"; + + $sql_select = "SELECT user_email + FROM ". USERS_TABLE . " + WHERE user_id IN ($sql_in)"; + } + else if( isset($HTTP_POST_VARS['deny']) || isset($HTTP_POST_VARS['remove']) ) + { + $sql = "DELETE FROM + " . USER_GROUP_TABLE . " + WHERE user_id IN ($sql_in) + AND group_id = $group_id"; + } + if( !$result = $db->sql_query($sql) ) + { + message_die(GENERAL_ERROR, "Could not update user group table.", "Error", __LINE__, __FILE__, $sql); + } + + // + // Email users when they are approved + // + if( isset($HTTP_POST_VARS['approve']) ) + { + if( !$result = $db->sql_query($sql_select) ) + { + message_die(GENERAL_ERROR, "Could not get user email information", "Error", __LINE__, __FILE__, $sql); + } + $email_rowset = $db->sql_fetchrowset($result); + + $members_count = $db->sql_numrows($result); + + // + // Get the group name + // + $group_sql = "SELECT group_name + FROM " . GROUPS_TABLE . " + WHERE group_id = $group_id"; + if(!$result = $db->sql_query($group_sql)) + { + message_die(GENERAL_ERROR, "Could not get group information", "Error", __LINE__, __FILE__, $group_sql); + } + $group_name_row = $db->sql_fetchrow($result); + + $group_name = $group_name_row['group_name']; + + $email_addresses = ""; + for($i = 0; $i < $members_count; $i++) + { + if($i > 0) + { + $email_addresses .= ", "; + } + $email_addresses .= $email_rowset[$i]['user_email']; + } + + include($phpbb_root_path . 'includes/emailer.'.$phpEx); + $emailer = new emailer($board_config['smtp_delivery']); + + $email_headers = "From: " . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\r\n"; + + $path = (dirname($HTTP_SERVER_VARS['REQUEST_URI']) == "/") ? "" : dirname($HTTP_SERVER_VARS['REQUEST_URI']); + $server_name = ( isset($HTTP_SERVER_VARS['HTTP_HOST']) ) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_SERVER_VARS['SERVER_NAME']; + + $emailer->use_template("group_approved"); + $emailer->email_address($email_addresses); + $emailer->set_subject($lang['Group_approved']); + $emailer->extra_headers($email_headers); + + $emailer->assign_vars(array( + "SITENAME" => $board_config['sitename'], + "GROUP_NAME" => $group_name, + "EMAIL_SIG" => str_replace("<br />", "\n", "-- \n" . $board_config['board_email_sig']), + + "U_GROUPCP" => "http://" . $server_name . $path . "/groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") + ); + $emailer->send(); + $emailer->reset(); + } + } + } } // // END approve or deny // - - $start = ( isset($HTTP_GET_VARS['start']) ) ? $HTTP_GET_VARS['start'] : 0; - - $is_moderator = FALSE; - // // Get group details // @@ -351,6 +509,7 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR { message_die(GENERAL_ERROR, "Error getting group information", "", __LINE__, __FILE__, $sql); } + if( !$db->sql_numrows($result) ) { message_die(GENERAL_MESSAGE, "That user group does not exist"); @@ -360,7 +519,7 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR // // Get user information for this group // - $sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm + $sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, ug.user_pending FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND u.user_id = ug.user_id @@ -371,210 +530,275 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR { message_die(GENERAL_ERROR, "Error getting user list for group", "", __LINE__, __FILE__, $sql); } + if( $members_count = $db->sql_numrows($result) ) { - $group_members = $db->sql_fetchrowset($result); + $group_members = $db->sql_fetchrowset($result); } - // - // Load templates - // - $template->set_filenames(array( - "info" => "groupcp_info_body.tpl", - "jumpbox" => "jumpbox.tpl") - ); + $sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm + FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u + WHERE ug.group_id = $group_id + AND g.group_id = ug.group_id + AND ug.user_pending = 1 + AND u.user_id = ug.user_id + ORDER BY u.user_regdate"; + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Error getting user pending information", "", __LINE__, __FILE__, $sql); + } - $jumpbox = make_jumpbox(); - $template->assign_vars(array( - "L_GO" => $lang['Go'], - "L_JUMP_TO" => $lang['Jump_to'], - "L_SELECT_FORUM" => $lang['Select_forum'], - - "S_JUMPBOX_LIST" => $jumpbox, - "S_JUMPBOX_ACTION" => append_sid("viewforum.$phpEx")) - ); - $template->assign_var_from_handle("JUMPBOX", "jumpbox"); + if( $modgroup_pending_count = $db->sql_numrows($result) ) + { + $modgroup_pending_list = $db->sql_fetchrowset($result); + } $is_group_member = 0; - if($members_count) + if( $members_count ) { for($i = 0; $i < $members_count; $i++) { - if($group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in']) + if( $group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] ) + { + $is_group_member = TRUE; + } + } + } + + $is_group_pending_member = 0; + if( $modgroup_pending_count ) + { + for($i = 0; $i < $modgroup_pending_count; $i++) + { + if( $modgroup_pending_list[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] ) { - $is_group_member = TRUE; + $is_group_pending_member = TRUE; } } } - if( $userdata['user_id'] == $group_info['group_moderator']) + if( $userdata['user_level'] == ADMIN ) + { + $is_moderator = TRUE; + } + + if( $userdata['user_id'] == $group_info['group_moderator'] ) { $is_moderator = TRUE; + $group_details = $lang['Are_group_moderator']; + $s_hidden_fields = "<input type=\"hidden\" name=\"" . POST_GROUPS_URL . "\" value=\"$group_id\" />"; } - else if($is_group_member) + else if( $is_group_member || $is_group_pending_member ) { - if($userdata['user_level'] == ADMIN) - { - $is_moderator = TRUE; - } - $group_details = $lang['Member_this_group'] . " <input type=\"submit\" name=\"unsub\" value=\"" . $lang['Unsubscribe'] . "\" .>"; + $template->assign_block_vars("switch_unsubscribe_group_input", array()); + + $group_details = ( $is_group_pending_member ) ? $lang['Pending_this_group'] : $lang['Member_this_group']; + $s_hidden_fields = "<input type=\"hidden\" name=\"" . POST_GROUPS_URL . "\" value=\"$group_id\" />"; } + else if( $userdata['user_id'] == ANONYMOUS ) + { + $group_details = $lang['Login_to_join']; + $s_hidden_fields = ""; + } else { - if($group_info['group_type']) + if( $group_info['group_type'] == GROUP_OPEN ) { - if($userdata['user_level'] == ADMIN) - { - $is_moderator = TRUE; - } + $template->assign_block_vars("switch_subscribe_group_input", array()); - // - // I don't like this being here ... - // - $group_details = $lang['This_open_group'] . " <input type=\"submit\" name=\"joingroup\" value=\"" . $lang['Join_group'] . "\" />"; + $group_details = $lang['This_open_group']; $s_hidden_fields = "<input type=\"hidden\" name=\"" . POST_GROUPS_URL . "\" value=\"$group_id\" />"; - } - else + else if( $group_info['group_type'] == GROUP_CLOSED ) { - if($userdata['user_level'] == ADMIN) - { - $is_moderator = TRUE; - } - $group_details = $lang['This_closed_group']; $s_hidden_fields = ""; } + else if( $group_info['group_type'] == GROUP_HIDDEN ) + { + $group_details = $lang['This_hidden_group']; + $s_hidden_fields = ""; + } } + $page_title = $lang['Group_Control_Panel']; + include($phpbb_root_path . 'includes/page_header.'.$phpEx); + + // + // Load templates + // + $template->set_filenames(array( + "info" => "groupcp_info_body.tpl", + "pendinginfo" => "groupcp_pending_info.tpl", + "jumpbox" => "jumpbox.tpl") + ); + + $jumpbox = make_jumpbox(); + $template->assign_vars(array( + "L_GO" => $lang['Go'], + "L_JUMP_TO" => $lang['Jump_to'], + "L_SELECT_FORUM" => $lang['Select_forum'], + + "S_JUMPBOX_LIST" => $jumpbox, + "S_JUMPBOX_ACTION" => append_sid("viewforum.$phpEx")) + ); + $template->assign_var_from_handle("JUMPBOX", "jumpbox"); + $template->assign_vars(array( "L_GROUP_INFORMATION" => $lang['Group_Information'], "L_GROUP_NAME" => $lang['Group_name'], "L_GROUP_DESC" => $lang['Group_description'], + "L_GROUP_STATUS" => $lang['group_status'], "L_GROUP_MEMBERSHIP" => $lang['Group_membership'], "L_SUBSCRIBE" => $lang['Subscribe'], "L_UNSUBSCRIBE" => $lang['Unsubscribe'], + "L_JOIN_GROUP" => $lang['Join_group'], + "L_UNSUBSCRIBE_GROUP" => $lang['Unsubscribe'], + "L_GROUP_OPEN" => $lang['group_open'], + "L_GROUP_CLOSED" => $lang['group_closed'], + "L_GROUP_HIDDEN" => $lang['group_hidden'], + "L_UPDATE" => $lang['Update'], "GROUP_NAME" => $group_info['group_name'], "GROUP_DESC" => $group_info['group_description'], "GROUP_DETAILS" => $group_details, + "S_GROUP_OPEN_TYPE" => GROUP_OPEN, + "S_GROUP_CLOSED_TYPE" => GROUP_CLOSED, + "S_GROUP_HIDDEN_TYPE" => GROUP_HIDDEN, + "S_GROUP_OPEN_CHECKED" => ( $group_info['group_type'] == GROUP_OPEN ) ? "checked=\"checked\"" : "", + "S_GROUP_CLOSED_CHECKED" => ( $group_info['group_type'] == GROUP_CLOSED ) ? "checked=\"checked\"" : "", + "S_GROUP_HIDDEN_CHECKED" => ( $group_info['group_type'] == GROUP_HIDDEN ) ? "checked=\"checked\"" : "", "S_GROUP_INFO_ACTION" => append_sid("groupcp.$phpEx"), - "S_HIDDEN_FIELDS" => $s_hidden_fields, - "S_PENDING_HIDDEN_FIELDS" => $s_hidden_fields) + "S_HIDDEN_FIELDS" => $s_hidden_fields) ); // // Generate memberlist if there any! // - if( $members_count ) + $template->assign_vars(array( + "L_GROUP_MODERATOR" => $lang['Group_Moderator'], + "L_GROUP_MEMBERS" => $lang['Group_Members'], + "L_PENDING_MEMBERS" => $lang['Pending_members'], + "L_SELECT_SORT_METHOD" => $lang['Select_sort_method'], + "L_PM" => $lang['Private_Message'], + "L_EMAIL" => $lang['Email'], + "L_WEBSITE" => $lang['Website'], + "L_FROM" => $lang['From'], + "L_ORDER" => $lang['Order'], + "L_SORT" => $lang['Sort'], + "L_SUBMIT" => $lang['Sort'], + "L_AIM" => $lang['AIM'], + "L_YIM" => $lang['YIM'], + "L_MSNM" => $lang['MSNM'], + "L_ICQ" => $lang['ICQ'], + "L_SELECT" => $lang['Select'], + "L_REMOVE_SELECTED" => $lang['Remove_selected'], + "L_ADD_MEMBER" => $lang['Add_member'], + "L_FIND_USERNAME" => $lang['Find_username'], + + "U_SEARCH_USER" => append_sid("search.$phpEx?mode=searchuser"), + + "S_MODE_SELECT" => $select_sort_mode, + "S_ORDER_SELECT" => $select_sort_order, + "S_MODE_ACTION" => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id")) + ); + + for($i = 0; $i < $members_count; $i++) { - $template->assign_vars(array( - "L_SELECT_SORT_METHOD" => $lang['Select_sort_method'], - "L_EMAIL" => $lang['Email'], - "L_WEBSITE" => $lang['Website'], - "L_FROM" => $lang['From'], - "L_ORDER" => $lang['Order'], - "L_SORT" => $lang['Sort'], - "L_SUBMIT" => $lang['Sort'], - "L_AIM" => $lang['AIM'], - "L_YIM" => $lang['YIM'], - "L_MSNM" => $lang['MSNM'], - "L_ICQ" => $lang['ICQ'], - "L_SELECT" => $lang['Select'], - "L_REMOVESELECTED" => $lang['Remove_selected'], - "L_ADDMEMBER" => $lang['Add_member'], - "L_FIND_USERNAME" => $lang['Find_username'], - - "S_MODE_SELECT" => $select_sort_mode, - "S_ORDER_SELECT" => $select_sort_order, - "S_MODE_ACTION" => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id")) - ); + $username = $group_members[$i]['username']; + $user_id = $group_members[$i]['user_id']; - for($i = 0; $i < $members_count; $i++) - { - $username = stripslashes($group_members[$i]['username']); - $user_id = $group_members[$i]['user_id']; + $from = $group_members[$i]['user_from']; - $from = stripslashes($group_members[$i]['user_from']); + $joined = create_date($board_config['default_dateformat'], $group_members[$i]['user_regdate'], $board_config['board_timezone']); - $joined = create_date($board_config['default_dateformat'], $group_members[$i]['user_regdate'], $board_config['board_timezone']); + $posts = ($group_members[$i]['user_posts']) ? $group_members[$i]['user_posts'] : 0; - $posts = ($group_members[$i]['user_posts']) ? $group_members[$i]['user_posts'] : 0; - if( !empty($group_members[$i]['user_viewemail']) ) - { - $altered_email = str_replace("@", " at ", $group_members[$i]['user_email']); - $email_img = "<a href=\"mailto:$altered_email\"><img src=\"" . $images['icon_email'] . "\" border=\"0\" alt=\"" . $lang['Send_an_email'] . "\" .></a>"; - } - else - { - $email_img = " "; - } + $profile_img = "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id") . "\"><img src=\"" . $images['icon_profile'] . "\" alt=\"" . $lang['Read_profile'] . " $poster\" border=\"0\" /></a>"; - $pm_img = "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=" . $group_members[$i]['user_id']) . "\"><img src=\"" . $images['icon_pm'] . "\" border=\"0\" alt=\"" . $lang['Send_private_message'] . "\"></a>"; + $pm_img = "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=$user_id") . "\"><img src=\"". $images['icon_pm'] . "\" alt=\"" . $lang['Private_messaging'] . "\" border=\"0\" /></a>"; - if($group_members[$i]['user_website'] != "") - { - $www_img = "<a href=\"" . stripslashes($group_members[$i]['user_website']) . "\" target=\"_userwww\"><img src=\"" . $images['icon_www'] . "\" border=\"0\"/></a>"; - } - else - { - $www_img = " "; - } + if( !empty($group_members[$i]['user_viewemail']) ) + { + $email_addr = str_replace("@", " at ", $group_members[$i]['user_email']); + $email_img = ( $group_members[$i]['user_viewemail'] ) ? "<a href=\"mailto:$email_addr\"><img src=\"" . $images['icon_email'] . "\" alt=\"" . $lang['Send_email'] . " $poster\" border=\"0\" /></a>" : ""; + } + else + { + $email_img = " "; + } - if($group_members[$i]['user_icq']) - { - $icq_status_img = "<a href=\"http://wwp.icq.com/" . $group_members[$i]['user_icq'] . "#pager\"><img src=\"http://online.mirabilis.com/scripts/online.dll?icq=" . $group_members[$i]['user_icq'] . "&img=5\" border=\"0\"></a>"; + $www_img = ( $group_members[$i]['user_website'] ) ? "<a href=\"" . $group_members[$i]['user_website'] . "\" target=\"_userwww\"><img src=\"" . $images['icon_www'] . "\" alt=\"" . $lang['Visit_website'] . "\" border=\"0\" /></a>" : " "; + + if( !empty($postrow[$i]['user_icq']) ) + { + $icq_status_img = "<a href=\"http://wwp.icq.com/" . $group_members[$i]['user_icq'] . "#pager\"><img src=\"http://web.icq.com/whitepages/online?icq=" . $group_members[$i]['user_icq'] . "&img=5\" width=\"18\" height=\"18\" border=\"0\" /></a>"; - $icq_add_img = "<a href=\"http://wwp.icq.com/scripts/search.dll?to=" . $group_members[$i]['user_icq'] . "\"><img src=\"" . $images['icon_icq'] . "\" alt=\"". $lang['ICQ'] . "\" border=\"0\"></a>"; + // + // This cannot stay like this, it needs a 'proper' solution, eg a separate + // template for overlaying the ICQ icon, or we just do away with the icq status + // display (which is after all somewhat a pain in the rear :D + // + if( $theme['template_name'] == "subSilver" ) + { + $icq_add_img = '<table width="59" border="0" cellspacing="0" cellpadding="0"><tr><td nowrap="nowrap" class="icqback"><img src="images/spacer.gif" width="3" height="18" alt = "">' . $icq_status_img . '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $group_members[$i]['user_icq'] . '"><img src="images/spacer.gif" width="35" height="18" border="0" alt="' . $lang['ICQ'] . '" /></a></td></tr></table>'; + $icq_status_img = ""; } else { - $icq_status_img = " "; - $icq_add_img = " "; + $icq_add_img = "<a href=\"http://wwp.icq.com/scripts/search.dll?to=" . $group_members[$i]['user_icq'] . "\"><img src=\"" . $images['icon_icq'] . "\" alt=\"" . $lang['ICQ'] . "\" border=\"0\" /></a>"; } + } + else + { + $icq_status_img = ""; + $icq_add_img = ""; + } - $aim_img = ($group_members[$i]['user_aim']) ? "<a href=\"aim:goim?screenname=" . $group_members[$i]['user_aim'] . "&message=Hello+Are+you+there?\"><img src=\"" . $images['icon_aim'] . "\" border=\"0\"></a>" : " "; + $aim_img = ( $group_members[$i]['user_aim'] ) ? "<a href=\"aim:goim?screenname=" . $group_members[$i]['user_aim'] . "&message=Hello+Are+you+there?\"><img src=\"" . $images['icon_aim'] . "\" border=\"0\" alt=\"" . $lang['AIM'] . "\" /></a>" : ""; - $msn_img = ($group_members[$i]['user_msnm']) ? "<a href=\"profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$poster_id\"><img src=\"" . $images['icon_msnm'] . "\" border=\"0\"></a>" : " "; + $msn_img = ( $group_members[$i]['user_msnm'] ) ? "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $group_members[$i]['user_id']) . "\"><img src=\"" . $images['icon_msnm'] . "\" border=\"0\" alt=\"" . $lang['MSNM'] . "\" /></a>" : ""; - $yim_img = ($group_members[$i]['user_yim']) ? "<a href=\"http://edit.yahoo.com/config/send_webmesg?.target=" . $group_members[$i]['user_yim'] . "&.src=pg\"><img src=\"" . $images['icon_yim'] . "\" border=\"0\"></a>" : " "; + $yim_img = ( $group_members[$i]['user_yim'] ) ? "<a href=\"http://edit.yahoo.com/config/send_webmesg?.target=" . $group_members[$i]['user_yim'] . "&.src=pg\"><img src=\"" . $images['icon_yim'] . "\" border=\"0\" alt=\"" . $lang['YIM'] . "\" /></a>" : ""; - $search_img = "<a href=\"" . append_sid("search.$phpEx?a=" . urlencode($group_members[$i]['username']) . "&f=all&b=0&d=DESC&c=100&dosearch=1") . "\"><img src=\"" . $images['icon_search'] . "\" border=\"0\"></a>"; + $search_img = "<a href=\"" . append_sid("search.$phpEx?search_author=" . urlencode($group_members[$i]['username']) . "&showresults=topics") . "\"><img src=\"" . $images['icon_search'] . "\" border=\"0\" alt=\"" . $lang['Search_user_posts'] . "\" /></a>"; - if($user_id == $group_info['group_moderator']) - { - $template->assign_vars(array( - "U_MOD_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id), - - "MOD_ROW_COLOR" => "#" . $theme['td_color1'], - "MOD_ROW_CLASS" => $theme['td_class1'], - "MOD_USERNAME" => $username, - "MOD_FROM" => $from, - "MOD_JOINED" => $joined, - "MOD_POSTS" => $posts, - - "MOD_EMAIL_IMG" => $email_img, - "MOD_PM_IMG" => $pm_img, - "MOD_WWW_IMG" => $www_img, - "MOD_ICQ_STATUS_IMG" => $icq_status_img, - "MOD_ICQ_ADD_IMG" => $icq_add_img, - "MOD_AIM_IMG" => $aim_img, - "MOD_YIM_IMG" => $yim_img, - "MOD_MSN_IMG" => $msn_img, - "MOD_SEARCH_IMG" => $search) - ); - } - else + if( $user_id == $group_info['group_moderator'] ) + { + $template->assign_vars(array( + "U_MOD_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id), + + "MOD_ROW_COLOR" => "#" . $theme['td_color1'], + "MOD_ROW_CLASS" => $theme['td_class1'], + "MOD_USERNAME" => $username, + "MOD_FROM" => $from, + "MOD_JOINED" => $joined, + "MOD_POSTS" => $posts, + + "MOD_EMAIL_IMG" => $email_img, + "MOD_PM_IMG" => $pm_img, + "MOD_WWW_IMG" => $www_img, + "MOD_ICQ_STATUS_IMG" => $icq_status_img, + "MOD_ICQ_ADD_IMG" => $icq_add_img, + "MOD_AIM_IMG" => $aim_img, + "MOD_YIM_IMG" => $yim_img, + "MOD_MSN_IMG" => $msn_img, + "MOD_SEARCH_IMG" => $search) + ); + } + else + { + if( $group_info['group_type'] != GROUP_HIDDEN || $is_group_member ) { $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; - $template->assign_block_vars("memberrow", array( + $template->assign_block_vars("member_row", array( "ROW_COLOR" => "#" . $row_color, "ROW_CLASS" => $row_class, "USERNAME" => $username, @@ -582,6 +806,8 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR "JOINED" => $joined, "POSTS" => $posts, + "USER_ID" => $user_id, + "EMAIL_IMG" => $email_img, "PM_IMG" => $pm_img, "WWW_IMG" => $www_img, @@ -592,156 +818,161 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR "MSN_IMG" => $msn_img, "SEARCH_IMG" => $search, - "U_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id)) + "U_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id)) ); - if($is_moderator) + + if( $is_moderator ) { - $template->assign_block_vars("memberrow.memberselect", array( - "USER_ID" => $group_members[$i]['user_id'])); + $template->assign_block_vars("member_row.switch_mod_option", array()); } } } - if($is_moderator) - { - $template->assign_block_vars("modoption", array()); - $template->assign_block_vars("addmember", array()); - } - -/* - $pagination = generate_pagination("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id", $users_list, $board_config['topics_per_page'], $start)." "; - - $template->assign_vars(array( - "PAGINATION" => $pagination, - "ON_PAGE" => ( floor( $start / $board_config['topics_per_page'] ) + 1 ), - "TOTAL_PAGES" => ceil( $users_list / $board_config['topics_per_page'] ), - - "L_OF" => $lang['of'], - "L_PAGE" => $lang['Page'], - "L_GOTO_PAGE" => $lang['Goto_page']) - ); -*/ - } - else + + if( $members_count == 1 ) { // // No group members // - $template->assign_block_vars("nomembers", array() ); + $template->assign_block_vars("switch_no_members", array()); $template->assign_vars(array( "L_NO_MEMBERS" => $lang['No_group_members']) ); } - // We've displayed the members who belong to the group, now we do that pending memebers... There's probably a better way of doing this.. - $sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm - FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u - WHERE ug.group_id = $group_id - AND g.group_id = ug.group_id - AND ug.user_pending = 1 - AND g.group_moderator = " . $userdata['user_id'] . " - AND u.user_id = ug.user_id - ORDER BY u.user_regdate"; - if(!$result = $db->sql_query($sql)) + if( $group_info['group_type'] == GROUP_HIDDEN && !$is_group_member ) { - message_die(GENERAL_ERROR, "Error getting user pending information", "", __LINE__, __FILE__, $sql); - } - if( $modgroup_pending_count = $db->sql_numrows($result) ) - { - $modgroup_pending_list = $db->sql_fetchrowset($result); + // + // No group members + // + $template->assign_block_vars("switch_hidden_group", array()); + + $template->assign_vars(array( + "L_HIDDEN_MEMBERS" => $lang['Group_hidden_members']) + ); } + // - // Users pending in ONLY THIS GROUP (which is moderated by this user) + // We've displayed the members who belong to the group, now we + // do that pending memebers... // - if($modgroup_pending_count) + if( $is_moderator ) { - - $template->assign_vars(array("L_SELECT" => $lang['Select'], - "L_APPROVESELECTED" => $lang['Approve_selected'], - "L_DENYSELECTED" => $lang['Deny_selected'], - "S_PENDING_ACTION" => append_sid($PHP_SELF . "?" . POST_GROUPS_URL . "=" . $group_id))); - $template->assign_block_vars("pendingmembers", array() ); - for($i = 0; $i < $modgroup_pending_count; $i++) + // + // Users pending in ONLY THIS GROUP (which is moderated by this user) + // + if( $modgroup_pending_count ) { - $username = stripslashes($modgroup_pending_list[$i]['username']); - $user_id = $modgroup_pending_list[$i]['user_id']; + for($i = 0; $i < $modgroup_pending_count; $i++) + { + $username = $modgroup_pending_list[$i]['username']; + $user_id = $modgroup_pending_list[$i]['user_id']; - $from = stripslashes($modgroup_pending_list[$i]['user_from']); + $from = $modgroup_pending_list[$i]['user_from']; - $joined = create_date($board_config['default_dateformat'], $modgroup_pending_list[$i]['user_regdate'], $board_config['board_timezone']); + $joined = create_date($board_config['default_dateformat'], $modgroup_pending_list[$i]['user_regdate'], $board_config['board_timezone']); - $posts = ($modgroup_pending_list[$i]['user_posts']) ? $modgroup_pending_list[$i]['user_posts'] : 0; + $posts = ( $modgroup_pending_list[$i]['user_posts'] ) ? $modgroup_pending_list[$i]['user_posts'] : 0; - if( !empty($modgroup_pending_list[$i]['user_viewemail']) ) - { - $altered_email = str_replace("@", " at ", $modgroup_pending_list[$i]['user_email']); - $email_img = "<a href=\"mailto:$altered_email\"><img src=\"" . $images['icon_email'] . "\" border=\"0\" alt=\"" . $lang['Send_an_email'] . "\"></a>"; - } - else - { - $email_img = " "; - } + $profile_img = "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id") . "\"><img src=\"" . $images['icon_profile'] . "\" alt=\"" . $lang['Read_profile'] . " $poster\" border=\"0\" /></a>"; - $pm_img = "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=" . $modgroup_pending_list[$i]['user_id']) . "\"><img src=\"" . $images['icon_pm'] . "\" border=\"0\" alt=\"" . $lang['Send_private_message'] . "\"></a>"; + $pm_img = "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=$user_id") . "\"><img src=\"". $images['icon_pm'] . "\" alt=\"" . $lang['Private_messaging'] . "\" border=\"0\" /></a>"; - if($modgroup_pending_list[$i]['user_website'] != "") - { - $www_img = "<a href=\"" . stripslashes($modgroup_pending_list[$i]['user_website']) . "\" target=\"_userwww\"><img src=\"" . $images['icon_www'] . "\" border=\"0\"/></a>"; - } - else - { - $www_img = " "; - } + if( !empty($modgroup_pending_list[$i]['user_viewemail']) ) + { + $email_addr = str_replace("@", " at ", $modgroup_pending_list[$i]['user_email']); + $email_img = ( $modgroup_pending_list[$i]['user_viewemail'] ) ? "<a href=\"mailto:$email_addr\"><img src=\"" . $images['icon_email'] . "\" alt=\"" . $lang['Send_email'] . " $poster\" border=\"0\" /></a>" : ""; + } + else + { + $email_img = " "; + } - if($modgroup_pending_list[$i]['user_icq']) - { - $icq_status_img = "<a href=\"http://wwp.icq.com/" . $modgroup_pending_list[$i]['user_icq'] . "#pager\"><img src=\"http://online.mirabilis.com/scripts/online.dll?icq=" . $modgroup_pending_list[$i]['user_icq'] . "&img=5\" border=\"0\"></a>"; + $www_img = ( $modgroup_pending_list[$i]['user_website'] ) ? "<a href=\"" . $modgroup_pending_list[$i]['user_website'] . "\" target=\"_userwww\"><img src=\"" . $images['icon_www'] . "\" alt=\"" . $lang['Visit_website'] . "\" border=\"0\" /></a>" : ""; - $icq_add_img = "<a href=\"http://wwp.icq.com/scripts/search.dll?to=" . $modgroup_pending_list[$i]['user_icq'] . "\"><img src=\"" . $images['icon_icq'] . "\" alt=\"". $lang['ICQ'] . "\" border=\"0\"></a>"; - } - else - { - $icq_status_img = " "; - $icq_add_img = " "; - } + if( !empty($postrow[$i]['user_icq']) ) + { + $icq_status_img = "<a href=\"http://wwp.icq.com/" . $modgroup_pending_list[$i]['user_icq'] . "#pager\"><img src=\"http://web.icq.com/whitepages/online?icq=" . $modgroup_pending_list[$i]['user_icq'] . "&img=5\" width=\"18\" height=\"18\" border=\"0\" /></a>"; + + // + // This cannot stay like this, it needs a 'proper' solution, eg a separate + // template for overlaying the ICQ icon, or we just do away with the icq status + // display (which is after all somewhat a pain in the rear :D + // + if( $theme['template_name'] == "subSilver" ) + { + $icq_add_img = '<table width="59" border="0" cellspacing="0" cellpadding="0"><tr><td nowrap="nowrap" class="icqback"><img src="images/spacer.gif" width="3" height="18" alt = "">' . $icq_status_img . '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $modgroup_pending_list[$i]['user_icq'] . '"><img src="images/spacer.gif" width="35" height="18" border="0" alt="' . $lang['ICQ'] . '" /></a></td></tr></table>'; + $icq_status_img = ""; + } + else + { + $icq_add_img = "<a href=\"http://wwp.icq.com/scripts/search.dll?to=" . $modgroup_pending_list[$i]['user_icq'] . "\"><img src=\"" . $images['icon_icq'] . "\" alt=\"" . $lang['ICQ'] . "\" border=\"0\" /></a>"; + } + } + else + { + $icq_status_img = ""; + $icq_add_img = ""; + } + + $aim_img = ( $modgroup_pending_list[$i]['user_aim'] ) ? "<a href=\"aim:goim?screenname=" . $modgroup_pending_list[$i]['user_aim'] . "&message=Hello+Are+you+there?\"><img src=\"" . $images['icon_aim'] . "\" border=\"0\" alt=\"" . $lang['AIM'] . "\" /></a>" : ""; - $aim_img = ($modgroup_pending_list[$i]['user_aim']) ? "<a href=\"aim:goim?screenname=" . $modgroup_pending_list[$i]['user_aim'] . "&message=Hello+Are+you+there?\"><img src=\"" . $images['icon_aim'] . "\" border=\"0\"></a>" : " "; + $msn_img = ( $modgroup_pending_list[$i]['user_msnm'] ) ? "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $modgroup_pending_list[$i]['user_id']) . "\"><img src=\"" . $images['icon_msnm'] . "\" border=\"0\" alt=\"" . $lang['MSNM'] . "\" /></a>" : ""; - $msn_img = ($modgroup_pending_list[$i]['user_msnm']) ? "<a href=\"profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id\"><img src=\"" . $images['icon_msnm'] . "\" border=\"0\"></a>" : " "; + $yim_img = ( $modgroup_pending_list[$i]['user_yim'] ) ? "<a href=\"http://edit.yahoo.com/config/send_webmesg?.target=" . $modgroup_pending_list[$i]['user_yim'] . "&.src=pg\"><img src=\"" . $images['icon_yim'] . "\" border=\"0\" alt=\"" . $lang['YIM'] . "\" /></a>" : ""; - $yim_img = ($modgroup_pending_list[$i]['user_yim']) ? "<a href=\"http://edit.yahoo.com/config/send_webmesg?.target=" . $modgroup_pending_list[$i]['user_yim'] . "&.src=pg\"><img src=\"" . $images['icon_yim'] . "\" border=\"0\"></a>" : " "; + $search_img = "<a href=\"" . append_sid("search.$phpEx?search_author=" . urlencode($modgroup_pending_list[$i]['username']) . "&showresults=topics") . "\"><img src=\"" . $images['icon_search'] . "\" border=\"0\" alt=\"" . $lang['Search_user_posts'] . "\" /></a>"; - $search_img = "<a href=\"" . append_sid("search.$phpEx?a=" . urlencode($modgroup_pending_list[$i]['username']) . "&f=all&b=0&d=DESC&c=100&dosearch=1") . "\"><img src=\"" . $images['icon_search'] . "\" border=\"0\"></a>"; + $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; - $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; - $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; + $user_select = '<input type="checkbox" name="member[]" value="' . $user_id . '">'; - $user_select = '<input type="checkbox" name="member[]" value="'.$user_id.'">'; + $template->assign_block_vars("pending_members_row", array( + "U_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id), - $template->assign_block_vars("pendingmembersrow", array( - "U_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id), + "ROW_CLASS" => $row_class, + "USERNAME" => $username, + "FROM" => $from, + "JOINED" => $joined, + "POSTS" => $posts, - "ROW_CLASS" => $row_class, - "USERNAME" => $username, - "FROM" => $from, - "JOINED" => $joined, - "POSTS" => $posts, + "USER_ID" => $user_id, - "EMAIL_IMG" => $email_img, - "PM_IMG" => $pm_img, - "WWW_IMG" => $www_img, - "ICQ_STATUS_IMG" => $icq_status_img, - "ICQ_ADD_IMG" => $icq_add_img, - "AIM_IMG" => $aim_img, - "YIM_IMG" => $yim_img, - "MSN_IMG" => $msn_img, - "SELECT" => $user_select, - "SEARCH_IMG" => $search) + "EMAIL_IMG" => $email_img, + "PM_IMG" => $pm_img, + "SEARCH_IMG" => $search, + "WWW_IMG" => $www_img, + "ICQ_STATUS_IMG" => $icq_status_img, + "ICQ_ADD_IMG" => $icq_add_img, + "AIM_IMG" => $aim_img, + "YIM_IMG" => $yim_img, + "MSN_IMG" => $msn_img, + "SELECT" => $user_select) + ); + } + + $template->assign_block_vars("switch_pending_members", array() ); + + $template->assign_vars(array( + "L_SELECT" => $lang['Select'], + "L_APPROVE_SELECTED" => $lang['Approve_selected'], + "L_DENY_SELECTED" => $lang['Deny_selected'], + + "S_PENDING_ACTION" => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id)) ); + + $template->assign_var_from_handle("PENDING_USER_BOX", "pendinginfo"); + } } + if( $is_moderator ) + { + $template->assign_block_vars("switch_mod_option", array()); + $template->assign_block_vars("switch_add_member", array()); + } // // Parse group info output @@ -751,8 +982,6 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR } else { - include($phpbb_root_path . 'includes/page_header.'.$phpEx); - $sql = "SELECT group_id, group_name FROM " . GROUPS_TABLE . " WHERE group_single_user <> " . TRUE . " @@ -761,6 +990,7 @@ else { message_die(GENERAL_ERROR, "Error getting group information", "", __LINE__, __FILE__, $sql); } + if( !$db->sql_numrows($result) ) { message_die(GENERAL_MESSAGE, "No groups exist"); @@ -777,23 +1007,12 @@ else { message_die(GENERAL_ERROR, "Error getting group information", "", __LINE__, __FILE__, $sql); } + if($db->sql_numrows($result)) { $membergroup_list = $db->sql_fetchrowset($result); } - $template->set_filenames(array( - "user" => "groupcp_user_body.tpl", - "jumpbox" => "jumpbox.tpl") - ); - - $jumpbox = make_jumpbox(); - $template->assign_vars(array( - "JUMPBOX_LIST" => $jumpbox, - "SELECT_NAME" => POST_FORUM_URL) - ); - $template->assign_var_from_handle("JUMPBOX", "jumpbox"); - $s_member_groups = '<select name="' . POST_GROUPS_URL . '">'; $s_member_groups_opt = ""; $s_pending_groups = '<select name="' . POST_GROUPS_URL . '">'; @@ -801,7 +1020,7 @@ else for($i = 0; $i < count($membergroup_list); $i++) { - if($membergroup_list[$i]['user_pending']) + if( $membergroup_list[$i]['user_pending'] ) { $s_pending_groups_opt .= '<option value="' . $membergroup_list[$i]['group_id'] . '">' . $membergroup_list[$i]['group_name'] . '</option>'; } @@ -810,28 +1029,6 @@ else $s_member_groups_opt .= '<option value="' . $membergroup_list[$i]['group_id'] . '">' . $membergroup_list[$i]['group_name'] . '</option>'; } } - if($s_pending_groups_opt != "" || $s_member_groups_opt != "") - { - $template->assign_block_vars("group_joined", array() ); - } - - if($s_member_groups_opt == "") - { - $s_member_groups_opt = "<option>" . $lang['None'] . "</option>"; - } - else - { - $template->assign_block_vars("group_joined.group_member", array() ); - } - - if($s_pending_groups_opt == "") - { - $s_pending_groups_opt = "<option>" . $lang['None'] . "</option>"; - } - else - { - $template->assign_block_vars("group_joined.group_pending", array() ); - } $s_pending_groups .= $s_pending_groups_opt . "</select>"; $s_member_groups .= $s_member_groups_opt . "</select>"; @@ -846,16 +1043,48 @@ else $s_group_list_opt .= '<option value="' . $group_list[$i]['group_id'] . '">' . $group_list[$i]['group_name'] . '</option>'; } } + $s_group_list .= $s_group_list_opt . "</select>"; - if($s_group_list_opt == "") + // + // Load and process templates + // + include($phpbb_root_path . 'includes/page_header.'.$phpEx); + + $template->set_filenames(array( + "user" => "groupcp_user_body.tpl", + "jumpbox" => "jumpbox.tpl") + ); + + $jumpbox = make_jumpbox(); + $template->assign_vars(array( + "L_GO" => $lang['Go'], + "L_JUMP_TO" => $lang['Jump_to'], + "L_SELECT_FORUM" => $lang['Select_forum'], + + "S_JUMPBOX_LIST" => $jumpbox, + "S_JUMPBOX_ACTION" => append_sid("viewforum.$phpEx")) + ); + $template->assign_var_from_handle("JUMPBOX", "jumpbox"); + + if($s_pending_groups_opt != "" || $s_member_groups_opt != "") { - $s_group_list_opt = "<option>" . $lang['None'] . "</option>"; + $template->assign_block_vars("groups_joined", array() ); } - else + + if( $s_member_groups_opt != "" ) { - $template->assign_block_vars("group_subscribe", array() ); + $template->assign_block_vars("groups_joined.groups_member", array() ); + } + + if( $s_pending_groups_opt != "" ) + { + $template->assign_block_vars("groups_joined.groups_pending", array() ); + } + + if( $s_group_list_opt != "") + { + $template->assign_block_vars("groups_remaining", array() ); } - $s_group_list .= $s_group_list_opt . "</select>"; $template->assign_vars(array( "L_GROUP_MEMBERSHIP_DETAILS" => $lang['Group_member_details'], @@ -881,4 +1110,4 @@ else // include($phpbb_root_path . 'includes/page_tail.'.$phpEx); -?> +?>
\ No newline at end of file diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 2c664542d9..8af243322d 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -47,6 +47,12 @@ define(USER_AVATAR_REMOTE, 2); define(USER_AVATAR_GALLERY, 3); +// Group settings +define(GROUP_OPEN, 0); +define(GROUP_CLOSED, 1); +define(GROUP_HIDDEN, 2); + + // Forum state define(FORUM_UNLOCKED, 0); define(FORUM_LOCKED, 1); @@ -78,13 +84,6 @@ define(GENERAL_ERROR, 202); define(CRITICAL_MESSAGE, 203); define(CRITICAL_ERROR, 204); -define(SQL_CONNECT, 1); -define(BANNED, 2); -define(QUERY_ERROR, 3); -define(SESSION_CREATE, 4); -define(NO_TOPICS, 5); -define(LOGIN_FAILED, 7); - // Private messaging define(PRIVMSGS_READ_MAIL, 0); @@ -133,13 +132,11 @@ define(AUTH_MOD, 3); define(AUTH_ADMIN, 5); define(AUTH_VIEW, 1); - define(AUTH_READ, 2); define(AUTH_POST, 3); define(AUTH_REPLY, 4); define(AUTH_EDIT, 5); define(AUTH_DELETE, 6); - define(AUTH_ANNOUNCE, 7); define(AUTH_STICKY, 8); define(AUTH_POLLCREATE, 9); diff --git a/phpBB/language/lang_english/lang_main.php b/phpBB/language/lang_english/lang_main.php index ad90d75003..954e78ab24 100644 --- a/phpBB/language/lang_english/lang_main.php +++ b/phpBB/language/lang_english/lang_main.php @@ -337,6 +337,7 @@ $lang['Click_return_login'] = "Click %sHere%s to try again"; $lang['Click_return_forum'] = "Click %sHere%s to return to the forum"; $lang['Click_view_message'] = "Click %sHere%s to view your message"; $lang['Click_return_modcp'] = "Click %sHere%s to return to the Moderator Control Panel"; +$lang['Click_return_group'] = "Click %sHere%s to return to group information"; $lang['Topic_reply_notification'] = "Topic Reply Notification"; @@ -561,7 +562,10 @@ $lang['No_pending_group_members'] = "This group has no pending members"; $lang["Group_joined"] = "You have successfully subscribed to this group<br />You will be notifed when your subscription is approved by the group moderator"; $lang['Group_request'] = "A request to join your group has been made"; $lang['Group_approved'] = "Your request has been approved"; -$lang['Group_added'] = "You have been added to this usergroup"; +$lang['Group_added'] = "You have been added to this usergroup"; +$lang['Already_member_group'] = "You are already a member of this group"; +$lang['User_is_member_group'] = "User is already a member of this group"; +$lang['Group_type_updated'] = "Successfully updated group type"; $lang['Could_not_add_user'] = "The user you selected does not exist"; diff --git a/phpBB/templates/subSilver/admin/group_edit_body.tpl b/phpBB/templates/subSilver/admin/group_edit_body.tpl index 0f587aec4e..0b99c7ab6e 100644 --- a/phpBB/templates/subSilver/admin/group_edit_body.tpl +++ b/phpBB/templates/subSilver/admin/group_edit_body.tpl @@ -35,10 +35,7 @@ <tr> <td class="row1" width="38%"><span class="gen">{L_GROUP_STATUS}:</span></td> <td class="row2" width="62%"> - <input type="radio" name="group_type" value="1" {S_GROUP_OPEN_CHECKED} /> - {L_GROUP_OPEN} - <input type="radio" name="group_type" value="0" {S_GROUP_CLOSED_CHECKED} /> - {L_GROUP_CLOSED}</td> + <input type="radio" name="group_type" value="{S_GROUP_OPEN_TYPE}" {S_GROUP_OPEN_CHECKED} /> {L_GROUP_OPEN} <input type="radio" name="group_type" value="{S_GROUP_CLOSED_TYPE}" {S_GROUP_CLOSED_CHECKED} /> {L_GROUP_CLOSED} <input type="radio" name="group_type" value="{S_GROUP_HIDDEN_TYPE}" {S_GROUP_HIDDEN_CHECKED} /> {L_GROUP_HIDDEN}</td> </tr> <tr> <td class="row1" width="38%"><span class="gen">{L_GROUP_DELETE}:</span></td> diff --git a/phpBB/templates/subSilver/groupcp_info_body.tpl b/phpBB/templates/subSilver/groupcp_info_body.tpl index 11f484f624..d9bf7c3c55 100644 --- a/phpBB/templates/subSilver/groupcp_info_body.tpl +++ b/phpBB/templates/subSilver/groupcp_info_body.tpl @@ -1,10 +1,11 @@ +<form method="POST" action="{S_GROUP_INFO_ACTION}"> <table width="100%" cellspacing="2" cellpadding="2" border="0" align="center"> <tr> <td align="left"><span class="nav"><a href="{U_INDEX}" class="nav">{SITENAME} {L_INDEX}</a></span></td> </tr> </table> -<form method="POST" action="{S_GROUP_INFO_ACTION}"> + <table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline"> <tr> <th colspan="7" class="thHead" height="25"><span class="tableTitle">{L_GROUP_INFORMATION}</span></th> @@ -19,16 +20,29 @@ </tr> <tr> <td class="row1" width="20%"><span class="gen">{L_GROUP_MEMBERSHIP}:</span></td> - <td class="row2"><span class="gen">{GROUP_DETAILS}{S_HIDDEN_FIELDS}</span></td> + <td class="row2"><span class="gen">{GROUP_DETAILS} + <!-- BEGIN switch_subscribe_group_input --> + <input class="mainoption" type="submit" name="joingroup" value="{L_JOIN_GROUP}" /> + <!-- END switch_subscribe_group_input --> + <!-- BEGIN switch_unsubscribe_group_input --> + <input class="mainoption" type="submit" name="unsub" value="{L_UNSUBSCRIBE_GROUP}" /> + <!-- END switch_unsubscribe_group_input --> + </span></td> + </tr> + <!-- BEGIN switch_mod_option --> + <tr> + <td class="row1" width="20%"><span class="gen">{L_GROUP_STATUS}:</span></td> + <td class="row2"><span class="gen"><span class="gen"><input type="radio" name="group_type" value="{S_GROUP_OPEN_TYPE}" {S_GROUP_OPEN_CHECKED} /> {L_GROUP_OPEN} <input type="radio" name="group_type" value="{S_GROUP_CLOSED_TYPE}" {S_GROUP_CLOSED_CHECKED} /> {L_GROUP_CLOSED} <input type="radio" name="group_type" value="{S_GROUP_HIDDEN_TYPE}" {S_GROUP_HIDDEN_CHECKED} /> {L_GROUP_HIDDEN} <input class="mainoption" type="submit" name="groupstatus" value="{L_UPDATE}" /></span></td> </tr> + <!-- END switch_mod_option --> </table> +{S_HIDDEN_FIELDS} </form> -<form action="{S_PENDING_ACTION}" method="POST" name="post"> -{S_PENDING_HIDDEN_FIELDS} - <table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline"> +<form action="{S_PENDING_ACTION}" method="post" name="post"> +<table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline"> <tr> - <th class="thCornerL" height="25">Private Message</th> + <th class="thCornerL" height="25">{L_PM}</th> <th class="thTop">{L_USERNAME}</th> <th class="thTop">{L_POSTS}</th> <th class="thTop">{L_FROM}</th> @@ -36,92 +50,78 @@ <th class="thTop">{L_WEBSITE}</th> <th class="thCornerR">{L_SELECT}</th> </tr> + <tr> - <td class="catSides" colspan="7" height="28"><span class="cattitle">Group Moderator</span></td> + <td class="catSides" colspan="8" height="28"><span class="cattitle">{L_GROUP_MODERATOR}</span></td> </tr> + <tr> <td class="row1" align="center"> {MOD_PM_IMG} </td> <td class="row1" align="center"><span class="gen"><a href="{U_MOD_VIEWPROFILE}" class="gen">{MOD_USERNAME}</a></span></td> <td class="row1" align="center" valign="middle"><span class="gen">{MOD_POSTS}</span></td> <td class="row1" align="center" valign="middle"><span class="gen">{MOD_FROM}</span></td> <td class="row1" align="center" valign="middle"><span class="gen">{MOD_EMAIL_IMG}</span></td> - <td class="row1" align="center" colspan="2">{MOD_WWW_IMG}</td> + <td class="row1" align="center">{MOD_WWW_IMG}</td> + <td class="row1" align="center"> </td> </tr> + <tr> - <td class="catSides" colspan="8" height="28"><span class="cattitle">Group Members</span></td> + <td class="catSides" colspan="8" height="28"><span class="cattitle">{L_GROUP_MEMBERS}</span></td> </tr> - <!-- BEGIN memberrow --> + + <!-- BEGIN member_row --> <tr> - <td class="{memberrow.ROW_CLASS}" align="center"> {memberrow.PM_IMG} </td> - <td class="{memberrow.ROW_CLASS}" align="center"><span class="gen"><a href="{memberrow.U_VIEWPROFILE}" class="gen">{memberrow.USERNAME}</a></span></td> - <td class="{memberrow.ROW_CLASS}" align="center"><span class="gen">{memberrow.POSTS}</span></td> - <td class="{memberrow.ROW_CLASS}" align="center"><span class="gen"> {memberrow.FROM} + <td class="{member_row.ROW_CLASS}" align="center"> {member_row.PM_IMG} </td> + <td class="{member_row.ROW_CLASS}" align="center"><span class="gen"><a href="{member_row.U_VIEWPROFILE}" class="gen">{member_row.USERNAME}</a></span></td> + <td class="{member_row.ROW_CLASS}" align="center"><span class="gen">{member_row.POSTS}</span></td> + <td class="{member_row.ROW_CLASS}" align="center"><span class="gen"> {member_row.FROM} </span></td> - <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen">{memberrow.EMAIL_IMG}</span></td> - <td class="{memberrow.ROW_CLASS}" align="center"> {memberrow.WWW_IMG}</td> - <td class="{memberrow.ROW_CLASS}" align="center"> - <!-- BEGIN memberselect --> - <input type="checkbox" name="member[]" value="{memberrow.memberselect.USER_ID}" /> <span class="gen">{L_SELECT}</span> - <!-- END memberselect --> + <td class="{member_row.ROW_CLASS}" align="center" valign="middle"><span class="gen">{member_row.EMAIL_IMG}</span></td> + <td class="{member_row.ROW_CLASS}" align="center"> {member_row.WWW_IMG}</td> + <td class="{member_row.ROW_CLASS}" align="center"> + <!-- BEGIN switch_mod_option --> + <input type="checkbox" name="members[]" value="{member_row.USER_ID}" /> + <!-- END switch_mod_option --> </td> </tr> - <!-- END memberrow --> - <!-- BEGIN modoption --> - <tr> - <td class="cat" colspan="8" align="right"><span class="cattitle"> - <input type="submit" name="remove" value="{L_REMOVESELECTED}" class="mainoption" /> - </td> - </tr> - <!-- END modoption --> - <!-- BEGIN pendingmembers --> - <tr> - <td class="catSides" colspan="6" height="28"><span class="cattitle">Pending Members</span></td> - <td class="catSides" align="center"><span class="gen"><b>Action</b></span></td> - </tr> - <!-- END pendingmembers --> - <!-- BEGIN pendingmembersrow --> + <!-- END member_row --> + + <!-- BEGIN switch_no_members --> <tr> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"> {pendingmembersrow.PM_IMG} - </td> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"><span class="gen"><a href="{pendingmembersrow.U_VIEWPROFILE}" class="gen">{pendingmembersrow.USERNAME}</a></span></td> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"><span class="gen">{pendingmembersrow.POSTS}</span></td> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"><span class="gen">{pendingmembersrow.FROM}</span></td> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"><span class="gen">{pendingmembersrow.EMAIL_IMG}</span></td> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"><span class="gen">{pendingmembersrow.WWW_IMG}</span></td> - <td class="{pendingmembersrow.ROW_CLASS}" align="center"><span class="gensmall">{pendingmembersrow.SELECT} - {L_SELECT}</span></td> + <td class="row1" colspan="7" align="center"><span class="gen">{L_NO_MEMBERS}</span></td> </tr> - <!-- END pendingmembersrow --> - <!-- BEGIN pendingmembers --> + <!-- END switch_no_members --> + + <!-- BEGIN switch_hidden_group --> <tr> - <td class="cat" colspan="8" align="right"><span class="cattitle"> - <input type="submit" name="approve" value="{L_APPROVESELECTED}" class="mainoption" /> - - <input type="submit" name="deny" value="{L_DENYSELECTED}" class="liteoption" /> - </span></td> + <td class="row1" colspan="7" align="center"><span class="gen">{L_HIDDEN_MEMBERS}</span></td> </tr> - <!-- END pendingmembers --> - <!-- BEGIN nomembers --> - <tr> - <td class="row1" colspan="7" align="center">{L_NO_MEMBERS}</td> + <!-- END switch_hidden_group --> + + <!-- BEGIN switch_mod_option --> + <tr> + <td class="cat" colspan="8" align="right"><span class="cattitle"> + <input type="submit" name="remove" value="{L_REMOVE_SELECTED}" class="mainoption" /> + </td> </tr> - <!-- END nomembers --> - </table> - <table width="100%" cellspacing="2" border="0" align="center" cellpadding="2"> + <!-- END switch_mod_option --> +</table> + +<table width="100%" cellspacing="2" border="0" align="center" cellpadding="2"> <tr> - <td align="left" valign="top"><span class="genmed"> - <!-- BEGIN addmember --> - <input type="text" class="post" name="username" maxlength="50" size="20" /> - - <input type="submit" name="usersubmit" value="{L_FIND_USERNAME}" class="liteoption" onClick="window.open('privmsg.php?mode=searchuser', '_phpbbsearch', 'HEIGHT=250,resizable=yes,WIDTH=400');return false;" /> - <input type="submit" name="add" value="{L_ADDMEMBER}" class="mainoption" /> - </span> - <!-- END addmember --> - </td> - <td align="right" valign="top"><span class="gensmall">{S_TIMEZONE}</span></td> + <td align="left" valign="top"> + <!-- BEGIN switch_mod_option --> + <span class="genmed"><input type="text" class="post" name="username" maxlength="50" size="20" /> <input type="submit" name="add" value="{L_ADD_MEMBER}" class="mainoption" /> <input type="submit" name="usersubmit" value="{L_FIND_USERNAME}" class="liteoption" onClick="window.open('{U_SEARCH_USER}', '_phpbbsearch', 'HEIGHT=250,resizable=yes,WIDTH=400');return false;" /></span> + <!-- END switch_mod_option --> + </td> + <td align="right" valign="top"><span class="gensmall">{S_TIMEZONE}</span></td> </tr> - </table> -</form> +</table> + +{PENDING_USER_BOX} + +{S_HIDDEN_FIELDS}</form> + <table width="100%" cellspacing="2" border="0" align="center"> <tr> <td valign="top" align="right">{JUMPBOX}</td> diff --git a/phpBB/templates/subSilver/groupcp_pending_info.tpl b/phpBB/templates/subSilver/groupcp_pending_info.tpl new file mode 100644 index 0000000000..41d47d0487 --- /dev/null +++ b/phpBB/templates/subSilver/groupcp_pending_info.tpl @@ -0,0 +1,36 @@ + +<br clear="all" /> + +<table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline"> + <tr> + <th class="thCornerL" height="25">{L_PM}</th> + <th class="thTop">{L_USERNAME}</th> + <th class="thTop">{L_POSTS}</th> + <th class="thTop">{L_FROM}</th> + <th class="thTop">{L_EMAIL}</th> + <th class="thTop">{L_WEBSITE}</th> + <th class="thCornerR">{L_SELECT}</th> + </tr> + <tr> + <td class="catSides" colspan="8" height="28"><span class="cattitle">{L_PENDING_MEMBERS}</span></td> + </tr> + <!-- BEGIN pending_members_row --> + <tr> + <td class="{pending_members_row.ROW_CLASS}" align="center"> {pending_members_row.PM_IMG} + </td> + <td class="{pending_members_row.ROW_CLASS}" align="center"><span class="gen"><a href="{pending_members_row.U_VIEWPROFILE}" class="gen">{pending_members_row.USERNAME}</a></span></td> + <td class="{pending_members_row.ROW_CLASS}" align="center"><span class="gen">{pending_members_row.POSTS}</span></td> + <td class="{pending_members_row.ROW_CLASS}" align="center"><span class="gen">{pending_members_row.FROM}</span></td> + <td class="{pending_members_row.ROW_CLASS}" align="center"><span class="gen">{pending_members_row.EMAIL_IMG}</span></td> + <td class="{pending_members_row.ROW_CLASS}" align="center"><span class="gen">{pending_members_row.WWW_IMG}</span></td> + <td class="{pending_members_row.ROW_CLASS}" align="center"><span class="gensmall"> <input type="checkbox" name="pending_members[]" value="{pending_members_row.USER_ID}" /></span></td> + </tr> + <!-- END pending_members_row --> + <tr> + <td class="cat" colspan="8" align="right"><span class="cattitle"> + <input type="submit" name="approve" value="{L_APPROVE_SELECTED}" class="mainoption" /> + + <input type="submit" name="deny" value="{L_DENY_SELECTED}" class="liteoption" /> + </span></td> + </tr> +</table> diff --git a/phpBB/templates/subSilver/groupcp_user_body.tpl b/phpBB/templates/subSilver/groupcp_user_body.tpl index 0e8428d67b..94976321fa 100644 --- a/phpBB/templates/subSilver/groupcp_user_body.tpl +++ b/phpBB/templates/subSilver/groupcp_user_body.tpl @@ -4,65 +4,73 @@ <td align="left"><span class="nav"><a href="{U_INDEX}" class="nav">{SITENAME} {L_INDEX}</a></span></td> </tr> </table> + <table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline"> + <!-- BEGIN groups_joined --> <tr> <th colspan="2" align="center" class="thHead" height="25">{L_GROUP_MEMBERSHIP_DETAILS}</th> </tr> + <!-- BEGIN groups_member --> <tr> <td class="row1"><span class="gen">{L_YOU_BELONG_GROUPS}</span></td> <td class="row2" align="right"> <table width="90%" cellspacing="0" cellpadding="0" border="0"> - <tr> - <form method="post" action="{S_USERGROUP_ACTION}"> + <tr><form method="get" action="{S_USERGROUP_ACTION}"> <td width="40%"><span class="gensmall">{GROUP_MEMBER_SELECT}</span></td> <td align="center" width="30%"> - <input type="submit" name="viewinfo" value="{L_VIEW_INFORMATION}" class="liteoption" /> + <input type="submit" value="{L_VIEW_INFORMATION}" class="liteoption" /> </td> - <td align="center" width="30%"> - <input type="submit" name="unsubjoin" value="{L_UNSUBSCRIBE}" class="liteoption" /> - </td> - </form> - </tr> + </form></tr> </table> </td> </tr> + <!-- END groups_member --> + <!-- BEGIN groups_pending --> <tr> <td class="row1"><span class="gen">{L_PENDING_GROUPS}</span></td> <td class="row2" align="right"> <table width="90%" cellspacing="0" cellpadding="0" border="0"> - <tr> - <form method="post" action="{S_USERGROUP_ACTION}"> + <tr><form method="get" action="{S_USERGROUP_ACTION}"> <td width="40%"><span class="gensmall">{GROUP_PENDING_SELECT}</span></td> <td align="center" width="30%"> - <input type="submit" name="viewinfo2" value="{L_VIEW_INFORMATION}" class="liteoption" /> - </td> - <td align="center" width="30%"> - <input type="submit" name="unsubpending" value="{L_UNSUBSCRIBE}" class="liteoption" /> + <input type="submit" value="{L_VIEW_INFORMATION}" class="liteoption" /> </td> - </form> - </tr> + </form></tr> </table> </td> </tr> + <!-- END groups_pending --> + <!-- END groups_joined --> + <!-- BEGIN groups_remaining --> <tr> - <td class="catSides" colspan="2" align="center" height="28"><span class="cattitle"><b>{L_JOIN_A_GROUP}</b></span></td> + <th colspan="2" align="center" class="thHead" height="25">{L_JOIN_A_GROUP}</th> </tr> <tr> <td class="row1"><span class="gen">{L_SELECT_A_GROUP}</span></td> <td class="row2" align="right"> <table width="90%" cellspacing="0" cellpadding="0" border="0"> - <tr> - <form method="post" action="{S_USERGROUP_ACTION}"> + <tr><form method="get" action="{S_USERGROUP_ACTION}"> <td width="40%"><span class="gensmall">{GROUP_LIST_SELECT}</span></td> <td align="center" width="30%"> - <input type="submit" name="viewinfo2" value="{L_VIEW_INFORMATION}" class="liteoption" /> - </td> - <td align="center" width="30%"> - <input type="submit" name="subnew" value="{L_SUBSCRIBE}" class="liteoption" /> + <input type="submit" value="{L_VIEW_INFORMATION}" class="liteoption" /> </td> - </form> - </tr> + </form></tr> </table> </td> </tr> + <!-- END groups_remaining --> +</table> + +<table width="100%" cellspacing="2" border="0" align="center" cellpadding="2"> + <tr> + <td align="right" valign="top"><span class="gensmall">{S_TIMEZONE}</span></td> + </tr> +</table> + +<br clear="all" /> + +<table width="100%" cellspacing="2" border="0" align="center"> + <tr> + <td valign="top" align="right">{JUMPBOX}</td> + </tr> </table> |