From 4235ca844671d3c570edfa269aab1721bfddf2a1 Mon Sep 17 00:00:00 2001 From: nanosimbiot Date: Sat, 11 Feb 2012 05:10:55 +0000 Subject: [PATCH] r369 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправление даты вступления модератора в группу ALTER TABLE `bb_groups` ADD `group_time` INT( 11 ) NOT NULL DEFAULT '0' AFTER `group_id`; git-svn-id: https://torrentpier2.googlecode.com/svn/trunk@369 a8ac35ab-4ca4-ca47-4c2d-a49a94f06293 --- install/sql/mysql.sql | 1 + upload/admin/admin_groups.php | 2 + upload/ajax.php | 78 ++++++++++++++++++- upload/config.php | 4 +- upload/groupcp.php | 10 ++- upload/includes/ucp/usercp_register.php | 7 ++ upload/includes/ucp/usercp_viewprofile.php | 51 +++++++++++- upload/templates/default/groupcp.tpl | 2 +- .../templates/default/usercp_viewprofile.tpl | 49 ++++++++++-- 9 files changed, 188 insertions(+), 16 deletions(-) diff --git a/install/sql/mysql.sql b/install/sql/mysql.sql index 47b445ab7..ad29264ac 100644 --- a/install/sql/mysql.sql +++ b/install/sql/mysql.sql @@ -862,6 +862,7 @@ INSERT INTO `bb_forums` VALUES (1, 1, 'Ваш первый форум', 'Опи CREATE TABLE `bb_groups` ( `group_id` mediumint(8) NOT NULL auto_increment, + `group_time` int(11) NOT NULL default '0', `group_type` tinyint(4) NOT NULL default '1', `group_name` varchar(40) NOT NULL default '', `group_description` varchar(255) NOT NULL default '', diff --git a/upload/admin/admin_groups.php b/upload/admin/admin_groups.php index 7cd2a7c2b..16093fdcc 100644 --- a/upload/admin/admin_groups.php +++ b/upload/admin/admin_groups.php @@ -129,6 +129,7 @@ else if (!empty($_POST['group_update'])) { // Create user_group for new group's moderator add_user_into_group($group_id, $group_moderator); + $sql_ary['group_time'] = TIMENOW; // Delete old moderator's user_group if (isset($_POST['delete_old_moderator'])) @@ -150,6 +151,7 @@ else if (!empty($_POST['group_update'])) } else if ($mode == 'newgroup') { + $sql_ary['group_time'] = TIMENOW; $sql_args = DB()->build_array('INSERT', $sql_ary); // Create new group diff --git a/upload/ajax.php b/upload/ajax.php index 5ac160a3d..c38623cb4 100644 --- a/upload/ajax.php +++ b/upload/ajax.php @@ -46,6 +46,10 @@ switch ($ajax->action) case 'manage_user': require(INC_DIR .'functions_admin.php'); break; + + case 'group_membership': + require(INC_DIR .'functions_group.php'); + break; } // position in $ajax->valid_actions['xxx'] @@ -72,6 +76,7 @@ class ajax_common 'change_tor_status' => array('mod'), 'mod_action' => array('mod'), 'topic_tpl' => array('mod'), + 'group_membership' => array('mod'), 'gen_passkey' => array('user'), 'change_torrent' => array('user'), @@ -82,8 +87,8 @@ class ajax_common 'user_register' => array('guest'), 'posts' => array('guest'), 'birthday_list' => array('guest'), - 'get_forum_mods' => array('guest'), - + 'get_forum_mods' => array('guest'), + ); var $action = null; @@ -456,6 +461,75 @@ class ajax_common $datastore->rm('moderators'); } + // User groups membership + function group_membership () + { + global $user; + + if (!$user_id = intval($this->request['user_id']) OR !$profiledata = get_userdata($user_id)) + { + $this->ajax_die("invalid user_id: $user_id"); + } + if (!$mode = (string) $this->request['mode']) + { + $this->ajax_die('invalid mode (empty)'); + } + + switch ($mode) + { + case 'get_group_list': + $sql = " + SELECT ug.user_pending, g.group_id, g.group_type, g.group_name, g.group_moderator, self.user_id AS can_view + FROM ". BB_USER_GROUP ." ug + INNER JOIN ". BB_GROUPS ." g ON(g.group_id = ug.group_id AND g.group_single_user = 0) + LEFT JOIN ". BB_USER_GROUP ." self ON(self.group_id = g.group_id AND self.user_id = {$user->id} AND self.user_pending = 0) + WHERE ug.user_id = $user_id + ORDER BY g.group_name + "; + $html = array(); + foreach (DB()->fetch_rowset($sql) as $row) + { + $class = ($row['user_pending']) ? 'med' : 'med bold'; + $class .= ($row['group_moderator'] == $user_id) ? ' colorMod' : ''; + $href = "groupcp.php?g={$row['group_id']}"; + + if (IS_ADMIN) + { + $href .= "&u=$user_id"; + $link = ''. htmlCHR($row['group_name']) .''; + $html[] = $link; + } + else + { + // скрытая группа и сам юзер не является её членом + if ($row['group_type'] == GROUP_HIDDEN && !$row['can_view']) + { + continue; + } + if ($row['group_moderator'] == $user->id) + { + $class .= ' selfMod'; + $href .= "&u=$user_id"; // сам юзер модератор этой группы + } + $link = ''. htmlCHR($row['group_name']) .''; + $html[] = $link; + } + } + if ($html) + { + $this->response['group_list_html'] = ''; + } + else + { + $this->response['group_list_html'] = 'не член, либо у вас нет прав на просмотр скрытых групп'; + } + break; + + default: + $this->ajax_die("invalid mode: $mode"); + } + } + function view_post () { require(AJAX_DIR .'view_post.php'); diff --git a/upload/config.php b/upload/config.php index 22deb70a5..c6c58c1b6 100644 --- a/upload/config.php +++ b/upload/config.php @@ -53,8 +53,8 @@ $bb_cfg = $tr_cfg = $page_cfg = array(); // Increase number of revision after update $bb_cfg['tp_version'] = '2.4 (beta)'; -$bb_cfg['tp_release_state'] = 'R367'; -$bb_cfg['tp_release_date'] = '10-02-2012'; +$bb_cfg['tp_release_state'] = 'R369'; +$bb_cfg['tp_release_date'] = '11-02-2012'; // Database $charset = 'utf8'; diff --git a/upload/groupcp.php b/upload/groupcp.php index 8b487a8d7..3eab8a833 100644 --- a/upload/groupcp.php +++ b/upload/groupcp.php @@ -16,8 +16,8 @@ function generate_user_info(&$row, $date_format, $group_mod, &$from, &$posts, &$ global $lang, $images, $bb_cfg; $from = ( !empty($row['user_from']) ) ? $row['user_from'] : ''; - $joined = bb_date($row['user_regdate'], $lang['DATE_FORMAT']); - $user_time = ( !empty($row['user_time']) ) ? bb_date($row['user_time'], $lang['DATE_FORMAT']) : $lang['NO']; + $joined = bb_date($row['user_regdate']); + $user_time = ( !empty($row['user_time']) ) ? bb_date($row['user_time']) : $lang['NO']; $posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0; $pm = ($bb_cfg['text_buttons']) ? ''. $lang['SEND_PM_TXTB'] .'' : '' . $lang['SEND_PRIVATE_MESSAGE'] . ''; @@ -175,7 +175,9 @@ if (!$group_id) } else { - bb_die($lang['NO_GROUPS_EXIST']); + if(IS_ADMIN) + { redirect('admin/admin_groups.php'); } + else bb_die($lang['NO_GROUPS_EXIST']); } } else if (!empty($_POST['groupstatus'])) @@ -554,7 +556,7 @@ else 'MOD_PM' => $pm, 'MOD_EMAIL' => $email, 'MOD_WWW' => $www, - 'MOD_TIME' => $user_time, + 'MOD_TIME' => ( !empty($group_info['group_time']) ) ? bb_date($group_info['group_time']) : $lang['NO'], 'U_SEARCH_USER' => "search.php?mode=searchuser", 'GROUP_TYPE' => $group_type, 'S_GROUP_OPEN_TYPE' => GROUP_OPEN, diff --git a/upload/includes/ucp/usercp_register.php b/upload/includes/ucp/usercp_register.php index 3f36a104a..c64f2e9b9 100644 --- a/upload/includes/ucp/usercp_register.php +++ b/upload/includes/ucp/usercp_register.php @@ -12,6 +12,13 @@ if (IS_ADMIN) { require(LANG_ROOT_DIR ."lang_{$userdata['user_lang']}/lang_admin.php"); $bb_cfg['require_activation'] = false; + + $new_user = (int) request_var('admin', ''); + if($new_user) $gen_simple_header = true; + + $template->assign_vars(array( + 'NEW_USER' => $new_user, + )); } $can_register = (IS_GUEST || IS_ADMIN); diff --git a/upload/includes/ucp/usercp_viewprofile.php b/upload/includes/ucp/usercp_viewprofile.php index aa7f26c43..806331a40 100644 --- a/upload/includes/ucp/usercp_viewprofile.php +++ b/upload/includes/ucp/usercp_viewprofile.php @@ -100,7 +100,7 @@ $template->assign_vars(array( 'USERNAME' => $profiledata['username'], 'PROFILE_USER_ID' => $profiledata['user_id'], 'USER_REGDATE' => bb_date($profiledata['user_regdate'], 'Y-m-d H:i', 'false'), - 'POSTER_RANK' => $poster_rank, + 'POSTER_RANK' => ($poster_rank) ? $poster_rank : 'User', 'RANK_IMAGE' => $rank_image, 'RANK_SELECT' => $rank_select, 'POSTS' => $profiledata['user_posts'], @@ -132,8 +132,57 @@ $template->assign_vars(array( 'S_PROFILE_ACTION' => "profile.php", 'SIGNATURE' => $signature, + + 'SHOW_ROLE' => (IS_AM || $profile_user_id || $profiledata['user_active']), + 'GROUP_MEMBERSHIP' => false, )); +if (IS_ADMIN) +{ + $group_membership = array(); + $sql = " + SELECT COUNT(g.group_id) AS groups_cnt, g.group_single_user, ug.user_pending + FROM ". BB_USER_GROUP ." ug + LEFT JOIN ". BB_GROUPS ." g USING(group_id) + WHERE ug.user_id = {$profiledata['user_id']} + GROUP BY ug.user_id, g.group_single_user, ug.user_pending + ORDER BY NULL + "; + if ($rowset = DB()->fetch_rowset($sql)) + { + $member = $pending = $single = 0; + foreach ($rowset as $row) + { + if (!$row['group_single_user'] && !$row['user_pending']) + { + $member = $row['groups_cnt']; + } + else if (!$row['group_single_user'] && $row['user_pending']) + { + $pending = $row['groups_cnt']; + } + else if ($row['group_single_user']) + { + $single = $row['groups_cnt']; + } + } + if ($member) $group_membership[] = "участник: $member"; + if ($pending) $group_membership[] = "кандидат: $pending"; + if ($single) $group_membership[] = "имеет индивидуальные права"; + $group_membership = join(', ', $group_membership); + } + $template->assign_vars(array( + 'GROUP_MEMBERSHIP' => (bool) $group_membership, + 'GROUP_MEMBERSHIP_TXT' => $group_membership, + )); +} +else if (IS_MOD) +{ + $template->assign_vars(array( + 'SHOW_GROUP_MEMBERSHIP' => ($profiledata['user_level'] != USER), + )); +} + if (!bf($profiledata['user_opt'], 'user_opt', 'allow_dls') || (IS_AM || $profile_user_id)) { // Show users torrent-profile diff --git a/upload/templates/default/groupcp.tpl b/upload/templates/default/groupcp.tpl index aa0ab21d2..d7744787d 100644 --- a/upload/templates/default/groupcp.tpl +++ b/upload/templates/default/groupcp.tpl @@ -154,7 +154,7 @@ - {L_NO_GROUP_MEMBERS} + {L_NO_GROUP_MEMBERS} diff --git a/upload/templates/default/usercp_viewprofile.tpl b/upload/templates/default/usercp_viewprofile.tpl index 31617249c..7c8084628 100644 --- a/upload/templates/default/usercp_viewprofile.tpl +++ b/upload/templates/default/usercp_viewprofile.tpl @@ -110,11 +110,29 @@ ajax.mod_action = function(mode) { }); } ajax.callback.mod_action = function(data) { - $('#ip_list').html(data.ip_list_html); + $('#ip_list').toggle().html(data.ip_list_html); +} + + - + +

{L_VIEWING_PROFILE}

@@ -145,7 +163,7 @@ ajax.callback.mod_action = function(data) {
- {POSTER_RANK} + {RANK_IMAGE}

{L_CONTACT} {USERNAME}

@@ -205,6 +223,25 @@ ajax.callback.mod_action = function(data) { + + + + + + + + style="display: none;"> + + + + - +
Роль: + {POSTER_RANK} + + [ членство в группах ] + +
Членство в группах: + {GROUP_MEMBERSHIP_TXT} +
{L_JOINED}: @@ -308,11 +345,11 @@ ajax.callback.mod_action = function(data) { {L_ACCESS}: {L_ACCESS_SRV_LOAD}: {IGNORE_SRV_LOAD}
- + @@ -411,7 +448,7 @@ ajax.callback.mod_action = function(data) { - + {L_CUR_ACTIVE_DLS}