diff --git a/upload/ajax/edit_group_profile.php b/upload/ajax/edit_group_profile.php
index bc9a4f453..5a0ac6912 100644
--- a/upload/ajax/edit_group_profile.php
+++ b/upload/ajax/edit_group_profile.php
@@ -25,7 +25,7 @@ switch ($mode)
case 'group_name':
case 'group_signature':
case 'group_description':
- $value = htmlCHR($value);
+ $value = htmlCHR($value, false, ENT_NOQUOTES);
$this->response['new_value'] = $value;
break;
diff --git a/upload/groupcp.php b/upload/groupcp.php
index 718042fdc..11866e252 100644
--- a/upload/groupcp.php
+++ b/upload/groupcp.php
@@ -22,7 +22,7 @@ function generate_user_info(&$row, $date_format, $group_mod, &$from, &$posts, &$
$user_time = ( !empty($row['user_time']) ) ? bb_date($row['user_time']) : $lang['NONE'];
$posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;
$pm = ($bb_cfg['text_buttons']) ? ''. $lang['SEND_PM_TXTB'] .'' : '';
- $avatar = get_avatar($row['user_id'], $row['avatar_ext_id'], !bf($row['user_opt'], 'user_opt', 'dis_avatar'), true, 50, 50);
+ $avatar = get_avatar($row['user_id'], $row['avatar_ext_id'], !bf($row['user_opt'], 'user_opt', 'dis_avatar'), 50, 50);
if (bf($row['user_opt'], 'user_opt', 'user_viewemail') || $group_mod)
{
@@ -47,6 +47,7 @@ set_die_append_msg();
$group_id = isset($_REQUEST[POST_GROUPS_URL]) ? intval($_REQUEST[POST_GROUPS_URL]) : null;
$start = isset($_REQUEST['start']) ? abs(intval($_REQUEST['start'])) : 0;
$per_page = $bb_cfg['groupcp_members_per_page'];
+$view_mode = isset($_REQUEST['view']) ? $_REQUEST['view'] : null;
$group_info = array();
$is_moderator = false;
@@ -380,51 +381,6 @@ else
WHERE user_id = ". $group_info['group_moderator'] ."
");
- // Members
- $count_members = DB()->fetch_rowset("
- SELECT u.username, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
- FROM ". BB_USER_GROUP ." ug, ". BB_USERS ." u
- WHERE ug.group_id = $group_id
- AND ug.user_pending = 0
- AND ug.user_id <> ". $group_moderator['user_id'] ."
- AND u.user_id = ug.user_id
- ORDER BY u.username
- ");
- $count_members = count($count_members);
-
- // Get user information for this group
- $modgroup_pending_count = 0;
-
- // Members
- $group_members = DB()->fetch_rowset("
- SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
- FROM ". BB_USER_GROUP ." ug, ". BB_USERS ." u
- WHERE ug.group_id = $group_id
- AND ug.user_pending = 0
- AND ug.user_id <> ". $group_moderator['user_id'] ."
- AND u.user_id = ug.user_id
- ORDER BY u.username
- LIMIT $start, $per_page
- ");
- $members_count = count($group_members);
-
- generate_pagination(GROUP_URL . $group_id, $count_members, $per_page, $start);
-
- // Pending
- if ($is_moderator)
- {
- $modgroup_pending_list = DB()->fetch_rowset("
- SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email
- FROM ". BB_USER_GROUP ." ug, ". BB_USERS ." u
- WHERE ug.group_id = $group_id
- AND ug.user_pending = 1
- AND u.user_id = ug.user_id
- ORDER BY u.username
- LIMIT 200
- ");
- $modgroup_pending_count = count($modgroup_pending_list);
- }
-
// Current user membership
$is_group_member = $is_group_pending_member = false;
@@ -527,6 +483,9 @@ else
'MOD_TIME' => (!empty($group_info['mod_time'])) ? bb_date($group_info['mod_time']) : $lang['NONE'],
'U_SEARCH_USER' => "search.php?mode=searchuser",
+ 'U_GROUP_RELEASES' => "groupcp.php?view=releases&". POST_GROUPS_URL ."=$group_id",
+ 'U_GROUP_MEMBERS' => "groupcp.php?view=members&". POST_GROUPS_URL ."=$group_id",
+
'U_GROUP_CONFIG' => "group_config.php?g=$group_id",
'RELEASE_GROUP' => ($group_info['release_group']) ? true : false,
'GROUP_TYPE' => $group_type,
@@ -543,84 +502,189 @@ else
'S_GROUPCP_ACTION' => "groupcp.php?" . POST_GROUPS_URL . "=$group_id",
));
- // Dump out the remaining users
- foreach ($group_members as $i => $member)
- {
- $user_id = $member['user_id'];
+ switch($view_mode)
+ {
+ case 'releases':
- generate_user_info($member, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar);
+ // TODO Correct SQL to posts with attach and limit them, optimization
- if ($group_info['group_type'] != GROUP_HIDDEN || $is_group_member || $is_moderator)
- {
- $row_class = !($i % 2) ? 'row1' : 'row2';
+ // Count releases for pagination
+ $all_releases = DB()->fetch_rowset("
+ SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank
+ FROM ". BB_POSTS ." p
+ LEFT JOIN ". BB_TOPICS ." t ON(p.topic_id = t.topic_id)
+ LEFT JOIN ". BB_FORUMS ." f ON(p.forum_id= f.forum_id)
+ LEFT JOIN ". BB_USERS ." u ON(p.poster_id = u.user_id)
+ WHERE p.poster_rg_id = $group_id
+ ORDER BY t.topic_time DESC
+ ");
- $template->assign_block_vars('member', array(
- 'ROW_NUMBER' => $i + ( $start + 1 ),
- 'ROW_CLASS' => $row_class,
- 'USER' => profile_url($member),
- 'AVATAR_IMG' => $avatar,
- 'FROM' => $from,
- 'JOINED' => $joined,
- 'POSTS' => $posts,
- 'USER_ID' => $user_id,
- 'PM' => $pm,
- 'EMAIL' => $email,
- 'WWW' => $www,
- 'TIME' => $user_time,
- ));
+ $count_releases = count($all_releases);
- if ($is_moderator)
- {
- $template->assign_block_vars('member.switch_mod_option', array());
- }
- }
- }
+ generate_pagination(GROUP_URL . $group_id ."&view=releases", $count_releases, $per_page, $start);
- // No group members
- if (!$members_count)
- {
- $template->assign_block_vars('switch_no_members', array());
- }
+ $sql = "SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank
+ FROM ". BB_POSTS ." p
+ LEFT JOIN ". BB_TOPICS ." t ON(p.topic_id = t.topic_id)
+ LEFT JOIN ". BB_FORUMS ." f ON(p.forum_id= f.forum_id)
+ LEFT JOIN ". BB_USERS ." u ON(p.poster_id = u.user_id)
+ WHERE p.poster_rg_id = $group_id
+ ORDER BY t.topic_time DESC
+ LIMIT $start, $per_page";
- // No group members
- if ($group_info['group_type'] == GROUP_HIDDEN && !$is_group_member && !$is_moderator)
- {
- $template->assign_block_vars('switch_hidden_group', array());
- }
+ if (!$releases = DB()->fetch_rowset($sql))
+ {
+ bb_die('Could not get releases data');
+ }
- //
- // We've displayed the members who belong to the group, now we
- // do that pending memebers...
- //
- if ($is_moderator && $modgroup_pending_list)
- {
- foreach ($modgroup_pending_list as $i => $member)
- {
- $user_id = $member['user_id'];
+ foreach ($releases as $i => $release)
+ {
+ $row_class = !($i % 2) ? 'row1' : 'row2';
- generate_user_info($member, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar);
+ $template->assign_block_vars('releases', array(
+ 'ROW_NUMBER' => $i + ( $start + 1 ),
+ 'ROW_CLASS' => $row_class,
+ 'RELEASER' => profile_url(array('user_id' => $release['poster_id'], 'username' => $release['username'], 'user_rank' => $release['user_rank'])),
+ 'AVATAR_IMG' => get_avatar($release['poster_id'], $release['avatar_ext_id'], !bf($release['user_opt'], 'user_opt', 'dis_avatar'), 50, 50),
+ 'RELEASE_NAME' => sprintf('%s', TOPIC_URL . $release['topic_id'], htmlCHR($release['topic_title'])),
+ 'RELEASE_TIME' => bb_date($release['topic_time']),
+ 'RELEASE_FORUM' => sprintf('%s', FORUM_URL . $release['forum_id'], htmlCHR($release['forum_name'])),
+ ));
+ }
- $row_class = !($i % 2) ? 'row1' : 'row2';
+ $template->assign_vars(array('RELEASES' => true));
- $user_select = '';
+ break;
+ case 'members':
+ default:
- $template->assign_block_vars('pending', array(
- 'ROW_CLASS' => $row_class,
- 'AVATAR_IMG'=> $avatar,
- 'USER' => profile_url($member),
- 'FROM' => $from,
- 'JOINED' => $joined,
- 'POSTS' => $posts,
- 'USER_ID' => $user_id,
- 'PM' => $pm,
- 'EMAIL' => $email,
- ));
- }
+ // Members
+ $count_members = DB()->fetch_rowset("
+ SELECT u.username, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
+ FROM ". BB_USER_GROUP ." ug, ". BB_USERS ." u
+ WHERE ug.group_id = $group_id
+ AND ug.user_pending = 0
+ AND ug.user_id <> ". $group_moderator['user_id'] ."
+ AND u.user_id = ug.user_id
+ ORDER BY u.username
+ ");
+ $count_members = count($count_members);
- $template->assign_vars(array(
- 'PENDING_USERS' => true,
- ));
- }
+ // Get user information for this group
+ $modgroup_pending_count = 0;
+
+ // Members
+ $group_members = DB()->fetch_rowset("
+ SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
+ FROM ". BB_USER_GROUP ." ug, ". BB_USERS ." u
+ WHERE ug.group_id = $group_id
+ AND ug.user_pending = 0
+ AND ug.user_id <> ". $group_moderator['user_id'] ."
+ AND u.user_id = ug.user_id
+ ORDER BY u.username
+ LIMIT $start, $per_page
+ ");
+ $members_count = count($group_members);
+
+ generate_pagination(GROUP_URL . $group_id, $count_members, $per_page, $start);
+
+ // Dump out the remaining users
+ foreach ($group_members as $i => $member)
+ {
+ $user_id = $member['user_id'];
+
+ generate_user_info($member, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar);
+
+ if ($group_info['group_type'] != GROUP_HIDDEN || $is_group_member || $is_moderator)
+ {
+ $row_class = !($i % 2) ? 'row1' : 'row2';
+
+ $template->assign_block_vars('member', array(
+ 'ROW_NUMBER' => $i + ( $start + 1 ),
+ 'ROW_CLASS' => $row_class,
+ 'USER' => profile_url($member),
+ 'AVATAR_IMG' => $avatar,
+ 'FROM' => $from,
+ 'JOINED' => $joined,
+ 'POSTS' => $posts,
+ 'USER_ID' => $user_id,
+ 'PM' => $pm,
+ 'EMAIL' => $email,
+ 'WWW' => $www,
+ 'TIME' => $user_time,
+ ));
+
+ if ($is_moderator)
+ {
+ $template->assign_block_vars('member.switch_mod_option', array());
+ }
+ }
+ }
+
+ // No group members
+ if (!$members_count)
+ {
+ $template->assign_block_vars('switch_no_members', array());
+ }
+
+ // No group members
+ if ($group_info['group_type'] == GROUP_HIDDEN && !$is_group_member && !$is_moderator)
+ {
+ $template->assign_block_vars('switch_hidden_group', array());
+ }
+
+ //
+ // We've displayed the members who belong to the group, now we
+ // do that pending memebers...
+ //
+
+ // Pending
+ if ($is_moderator)
+ {
+ $modgroup_pending_list = DB()->fetch_rowset("
+ SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email
+ FROM ". BB_USER_GROUP ." ug, ". BB_USERS ." u
+ WHERE ug.group_id = $group_id
+ AND ug.user_pending = 1
+ AND u.user_id = ug.user_id
+ ORDER BY u.username
+ LIMIT 200
+ ");
+ $modgroup_pending_count = count($modgroup_pending_list);
+ }
+
+ if ($is_moderator && $modgroup_pending_list)
+ {
+ foreach ($modgroup_pending_list as $i => $member)
+ {
+ $user_id = $member['user_id'];
+
+ generate_user_info($member, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar);
+
+ $row_class = !($i % 2) ? 'row1' : 'row2';
+
+ $user_select = '';
+
+ $template->assign_block_vars('pending', array(
+ 'ROW_CLASS' => $row_class,
+ 'AVATAR_IMG'=> $avatar,
+ 'USER' => profile_url($member),
+ 'FROM' => $from,
+ 'JOINED' => $joined,
+ 'POSTS' => $posts,
+ 'USER_ID' => $user_id,
+ 'PM' => $pm,
+ 'EMAIL' => $email,
+ ));
+ }
+
+ $template->assign_vars(array(
+ 'PENDING_USERS' => true,
+ ));
+ }
+
+ $template->assign_vars(array('MEMBERS' => true));
+ }
if ($is_moderator)
{
diff --git a/upload/language/en/main.php b/upload/language/en/main.php
index 714b543c1..8b6289bd4 100644
--- a/upload/language/en/main.php
+++ b/upload/language/en/main.php
@@ -778,6 +778,7 @@ $lang['POST_RELEASE_FROM_GROUP'] = 'Post release from group';
$lang['CHOOSE_RELEASE_GROUP'] = 'Select release group';
$lang['ATTACH_RG_SIG'] = 'Attach release group signature';
$lang['RELEASE_FROM_RG'] = 'Release was prepared by';
+$lang['GROUPS_RELEASES'] = 'Group\'s releases';
//
// Search
diff --git a/upload/language/ru/main.php b/upload/language/ru/main.php
index cd140982d..8c6d3f859 100644
--- a/upload/language/ru/main.php
+++ b/upload/language/ru/main.php
@@ -778,6 +778,7 @@ $lang['POST_RELEASE_FROM_GROUP'] = 'Создать релиз от группы'
$lang['CHOOSE_RELEASE_GROUP'] = 'Выбрать релиз группу';
$lang['ATTACH_RG_SIG'] = 'Добавить подпись релиз группы';
$lang['RELEASE_FROM_RG'] = 'Релиз подготовлен';
+$lang['GROUPS_RELEASES'] = 'Релизы группы';
//
// Search
diff --git a/upload/language/ua/main.php b/upload/language/ua/main.php
index fb5b9cd84..f9222b787 100644
--- a/upload/language/ua/main.php
+++ b/upload/language/ua/main.php
@@ -778,6 +778,7 @@ $lang['POST_RELEASE_FROM_GROUP'] = 'Создать релиз от группы'
$lang['CHOOSE_RELEASE_GROUP'] = 'Выбрать релиз группу';
$lang['ATTACH_RG_SIG'] = 'Добавить подпись релиз группы';
$lang['RELEASE_FROM_RG'] = 'Релиз подготовлен';
+$lang['GROUPS_RELEASES'] = 'Релизы групи';
//
// Search
diff --git a/upload/templates/default/groupcp.tpl b/upload/templates/default/groupcp.tpl
index 83760cc52..1732aa940 100644
--- a/upload/templates/default/groupcp.tpl
+++ b/upload/templates/default/groupcp.tpl
@@ -93,12 +93,15 @@
# | +{L_AVATAR} | +{L_USERNAME} | +{L_TOPIC} | +{L_FORUM} | +{L_BT_CREATED} | +|||
---|---|---|---|---|---|---|---|---|
{L_GROUPS_RELEASES} | +||||||||
{releases.ROW_NUMBER} | +{releases.AVATAR_IMG} | +{releases.RELEASER} | +{releases.RELEASE_NAME} | +{releases.RELEASE_FORUM} | +{releases.RELEASE_TIME} | +|||
+ |