diff --git a/phpBB/groupcp.php b/phpBB/groupcp.php
index 1db56614cd..ac39f53cb6 100644
--- a/phpBB/groupcp.php
+++ b/phpBB/groupcp.php
@@ -52,14 +52,23 @@ include($phpbb_root_path . 'includes/page_header.'.$phpEx);
//
// What shall we do? hhmmmm
//
-if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) && isset($HTTP_POST_VARS['viewinfo']) ) )
+if( isset($HTTP_POST_VARS['joingroup']) )
+{
+
+
+}
+else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_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];
+ //
+ // Get group details
+ //
$sql = "SELECT *
FROM " . GROUPS_TABLE . "
- WHERE group_id = $group_id";
+ WHERE group_id = $group_id
+ AND group_single_user = 0";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Error getting group information", "", __LINE__, __FILE__, $sql);
@@ -70,6 +79,26 @@ if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || ( isset($HTTP_POST_VARS[POST_GROUP
}
$group_info = $db->sql_fetchrow($result);
+ //
+ // 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, u.user_avatar
+ FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
+ WHERE ug.group_id = $group_id
+ 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 list for group", "", __LINE__, __FILE__, $sql);
+ }
+ if( $members_count = $db->sql_numrows($result) )
+ {
+ $group_members = $db->sql_fetchrowset($result);
+ }
+
+ //
+ // Load templates
+ //
$template->set_filenames(array(
"info" => "groupcp_info_body.tpl",
"list" => "groupcp_list_body.tpl",
@@ -83,26 +112,61 @@ if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || ( isset($HTTP_POST_VARS[POST_GROUP
);
$template->assign_var_from_handle("JUMPBOX", "jumpbox");
+ $is_group_member = 0;
+ if($members_count)
+ {
+ for($i = 0; $i < $members_count; $i++)
+ {
+ if($group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'])
+ {
+ $is_group_member = TRUE;
+ }
+ }
+ }
+
+ if( $userdata['user_id'] == $group_info['group_moderator'] )
+ {
+ $group_details = $lang['Are_group_moderator'];
+ $s_hidden_fields = "";
+ }
+ else if($is_group_member)
+ {
+ $group_details = $lang['Member_this_group'] . " ";
+ $s_hidden_fields = "";
+ }
+ else
+ {
+ if($group_info['group_type'])
+ {
+ //
+ // I don't like this being here ...
+ //
+ $group_details = $lang['This_open_group'] . " ";
+ $s_hidden_fields = "";
+ }
+ else
+ {
+ $group_details = $lang['This_closed_group'];
+ $s_hidden_fields = "";
+ }
+ }
+
$template->assign_vars(array(
- "L_GROUP_NAME" => "Group Name",
- "L_GROUP_DESC" => "Group Description",
+ "L_GROUP_INFORMATION" => $lang['Group_Information'],
+ "L_GROUP_NAME" => $lang['Group_name'],
+ "L_GROUP_DESC" => $lang['Group_description'],
+ "L_GROUP_MEMBERSHIP" => $lang['Group_membership'],
+ "L_SUBSCRIBE" => $lang['Subscribe'],
+ "L_UNSUBSCRIBE" => $lang['Unsubscribe'],
"GROUP_NAME" => $group_info['group_name'],
"GROUP_DESC" => $group_info['group_description'],
- "GROUP_MEMBERSHIP_DETAILS" => "")
+ "GROUP_DETAILS" => $group_details,
+
+ "S_GROUP_INFO_ACTION" => append_sid("groupcp.$phpEx"),
+ "S_HIDDEN_FIELDS" => $s_hidden_fields)
);
-
- $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, u.user_avatar
- FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
- WHERE ug.group_id = $group_id
- 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 list for group", "", __LINE__, __FILE__, $sql);
- }
-
//
// Parse group info output
//
@@ -111,10 +175,8 @@ if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || ( isset($HTTP_POST_VARS[POST_GROUP
//
// Generate memberlist if there any!
//
- if( ( $users_list = $db->sql_numrows($result) ) > 0 )
+ if( $members_count )
{
- $group_members = $db->sql_fetchrowset($result);
-
$template->assign_vars(array(
"L_SELECT_SORT_METHOD" => $lang['Select_sort_method'],
"L_EMAIL" => $lang['Email'],
@@ -133,7 +195,7 @@ if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || ( isset($HTTP_POST_VARS[POST_GROUP
"S_MODE_ACTION" => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id"))
);
- for($i = 0; $i < $users_list; $i++)
+ for($i = 0; $i < $members_count; $i++)
{
$username = stripslashes($group_members[$i]['username']);
$user_id = $group_members[$i]['user_id'];
@@ -158,15 +220,7 @@ if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || ( isset($HTTP_POST_VARS[POST_GROUP
if($group_members[$i]['user_website'] != "")
{
- if(!eregi("^http\:\/\/", $group_members[$i]['user_website']))
- {
- $website_url = "http://" . stripslashes($group_members[$i]['user_website']);
- }
- else
- {
- $website_url = stripslashes($group_members[$i]['user_website']);
- }
- $www_img = "
";
+ $www_img = "
";
}
else
{
@@ -315,35 +369,59 @@ else
);
$template->assign_var_from_handle("JUMPBOX", "jumpbox");
-
- $s_group_list = '";
-
$s_member_groups = '";
+ if($s_member_groups_opt == "")
+ {
+ $s_member_groups_opt = "";
+ }
+ if($s_pending_groups_opt == "")
+ {
+ $s_pending_groups_opt = "";
+ }
+ $s_pending_groups .= $s_pending_groups_opt . "";
+ $s_member_groups .= $s_member_groups_opt . "";
+ //
+ // Remaining groups
+ //
+ $s_group_list = '';
+ for($i = 0; $i < count($group_list); $i++)
+ {
+ if( !strstr($s_pending_groups, $group_list[$i]['group_name']) && !strstr($s_member_groups, $group_list[$i]['group_name']) )
+ {
+ $s_group_list_opt .= '';
+ }
+ }
+ if($s_group_list_opt == "")
+ {
+ $s_group_list_opt = "";
+ }
+ $s_group_list .= $s_group_list_opt . "";
$template->assign_vars(array(
- "L_YOU_BELONG_GROUPS" => "You belong to the following usergroups",
- "L_SELECT_A_GROUP" => "To join a usergroup select one from the list",
- "L_PENDING_GROUPS" => "You have memberships pending on these groups",
+ "L_GROUP_MEMBERSHIP_DETAILS" => $lang['Group_member_details'],
+ "L_JOIN_A_GROUP" => $lang['Group_member_join'],
+ "L_YOU_BELONG_GROUPS" => $lang['Current_memberships'],
+ "L_SELECT_A_GROUP" => $lang['Non_member_groups'],
+ "L_PENDING_GROUPS" => $lang['Memberships_pending'],
+ "L_SUBSCRIBE" => $lang['Subscribe'],
+ "L_UNSUBSCRIBE" => $lang['Unsubscribe'],
+ "L_VIEW_INFORMATION" => $lang['View_Information'],
"GROUP_LIST_SELECT" => $s_group_list,
"GROUP_PENDING_SELECT" => $s_pending_groups,
@@ -351,8 +429,6 @@ else
);
$template->pparse("user");
-
-
}
//
diff --git a/phpBB/language/lang_english.php b/phpBB/language/lang_english.php
index 38f499ea4b..66b3307cf0 100755
--- a/phpBB/language/lang_english.php
+++ b/phpBB/language/lang_english.php
@@ -447,6 +447,33 @@ $lang['Ascending'] = "Ascending";
$lang['Descending'] = "Descending";
$lang['Order'] = "Order";
+//
+// Usergroups
+//
+$lang['Group_member_details'] = "Group Membership Details";
+$lang['Group_member_join'] = "Join a Group";
+
+$lang['Group_Information'] = "Group Information";
+$lang['Group_name'] = "Group name";
+$lang['Group_description'] = "Group description";
+$lang['Group_membership'] = "Group membership";
+
+$lang['Current_memberships'] = "Current memberships";
+$lang['Non_member_groups'] = "Non-member groups";
+$lang['Memberships_pending'] = "Memberships pending";
+
+$lang['Join_group'] = "Join Group";
+
+$lang['This_open_group'] = "This is an open group, click to request membership";
+$lang['This_closed_group'] = "This is a closed group, no more users accepted";
+$lang['Member_this_group'] = "You are a member of this group";
+$lang['Are_group_moderator'] = "You are the group moderator";
+$lang['None'] = "None";
+
+$lang['Subscribe'] = "Subscribe";
+$lang['Unsubscribe'] = "Unsubscribe";
+$lang['View_Information'] = "View Information";
+
//
// Search <= Should be blank for now
//
diff --git a/phpBB/profile.php b/phpBB/profile.php
index 2d4c4908b8..13d50421f3 100644
--- a/phpBB/profile.php
+++ b/phpBB/profile.php
@@ -91,10 +91,11 @@ function template_select($default)
}
function theme_select($default)
{
- global $db, $lang;
+ global $db, $board_config, $lang;
$sql = "SELECT themes_id, themes_name
FROM " . THEMES_TABLE . "
+ WHERE themes_name LIKE '" . $board_config['default_template'] . "-%'
ORDER BY themes_name";
if($result = $db->sql_query($sql))
{
diff --git a/phpBB/templates/PSO/groupcp_info_body.tpl b/phpBB/templates/PSO/groupcp_info_body.tpl
index 0db2350ca5..794fdae48f 100644
--- a/phpBB/templates/PSO/groupcp_info_body.tpl
+++ b/phpBB/templates/PSO/groupcp_info_body.tpl
@@ -5,10 +5,10 @@
diff --git a/phpBB/templates/PSO/groupcp_user_body.tpl b/phpBB/templates/PSO/groupcp_user_body.tpl
new file mode 100644
index 0000000000..eaca001104
--- /dev/null
+++ b/phpBB/templates/PSO/groupcp_user_body.tpl
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ {L_GROUP_MEMBERSHIP_DETAILS} |
+
+
+ {L_YOU_BELONG_GROUPS} |
+ |
+
+
+ {L_PENDING_GROUPS} |
+ |
+
+
+ {L_JOIN_A_GROUP} |
+
+
+ {L_SELECT_A_GROUP} |
+ |
+
+ |
+
+