mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-14 18:48:21 -07:00
r369
Исправление даты вступления модератора в группу 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
This commit is contained in:
parent
1a8d68aa3d
commit
4235ca8446
9 changed files with 188 additions and 16 deletions
|
@ -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 '',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = '<a href="'. $href .'" class="'. $class .'" target="_blank">'. htmlCHR($row['group_name']) .'</a>';
|
||||
$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 = '<a href="'. $href .'" class="'. $class .'" target="_blank">'. htmlCHR($row['group_name']) .'</a>';
|
||||
$html[] = $link;
|
||||
}
|
||||
}
|
||||
if ($html)
|
||||
{
|
||||
$this->response['group_list_html'] = '<ul><li>'. join('</li><li>', $html) .'</li></ul>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->response['group_list_html'] = 'не член, либо у вас нет прав на просмотр скрытых групп';
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$this->ajax_die("invalid mode: $mode");
|
||||
}
|
||||
}
|
||||
|
||||
function view_post ()
|
||||
{
|
||||
require(AJAX_DIR .'view_post.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';
|
||||
|
|
|
@ -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']) ? '<a class="txtb" href="'. append_sid("privmsg.php?mode=post&". POST_USERS_URL ."=".$row['user_id']) .'">'. $lang['SEND_PM_TXTB'] .'</a>' : '<a href="' . append_sid("privmsg.php?mode=post&". POST_USERS_URL ."=".$row['user_id']) .'"><img src="' . $images['icon_pm'] . '" alt="' . $lang['SEND_PRIVATE_MESSAGE'] . '" title="' . $lang['SEND_PRIVATE_MESSAGE'] . '" border="0" /></a>';
|
||||
|
||||
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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[] = "участник: <b>$member</b>";
|
||||
if ($pending) $group_membership[] = "кандидат: <b>$pending</b>";
|
||||
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
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
|
||||
<!-- BEGIN switch_no_members -->
|
||||
<tr>
|
||||
<td colspan="10" class="row1 tCenter">{L_NO_GROUP_MEMBERS}</td>
|
||||
<td colspan="10" class="row1 tCenter pad_10">{L_NO_GROUP_MEMBERS}</td>
|
||||
</tr>
|
||||
<!-- END switch_no_members -->
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
ajax.group_membership = function(mode) {
|
||||
$('#gr-mem-list').html('<i class="loading-1">загружается...</i>');
|
||||
ajax.exec({
|
||||
action : 'group_membership',
|
||||
mode : mode,
|
||||
user_id : {PROFILE_USER_ID}
|
||||
});
|
||||
}
|
||||
ajax.callback.group_membership = function(data) {
|
||||
$('#gr-mem-list').html(data.group_list_html);
|
||||
}
|
||||
</script>
|
||||
<!-- ENDIF / IS_AM -->
|
||||
|
||||
<style type="text/css">
|
||||
#gr-mem-list ul { margin: 2px 4px; }
|
||||
#gr-mem-list li { margin-bottom: 2px; }
|
||||
a.selfMod, a.selfMod:visited { color: #0000FF; }
|
||||
</style>
|
||||
<!-- ENDIF / IS_AM -->
|
||||
|
||||
<a name="editprofile"></a>
|
||||
<h1 class="pagetitle">{L_VIEWING_PROFILE}</h1>
|
||||
|
@ -145,7 +163,7 @@ ajax.callback.mod_action = function(data) {
|
|||
</script>
|
||||
<div id="rank-msg" class="mrg_6"></div>
|
||||
<!-- ELSE IF POSTER_RANK -->
|
||||
{POSTER_RANK}
|
||||
{RANK_IMAGE}
|
||||
<!-- ENDIF -->
|
||||
</p>
|
||||
<h4 class="cat border bw_TB" id="username">{L_CONTACT} <span class="editable bold">{USERNAME}</span></h4>
|
||||
|
@ -205,6 +223,25 @@ ajax.callback.mod_action = function(data) {
|
|||
<!-- ENDIF -->
|
||||
|
||||
<table class="user_details borderless w100">
|
||||
<!-- IF SHOW_ROLE -->
|
||||
<tr>
|
||||
<th>Роль:</th>
|
||||
<td id="role">
|
||||
<b>{POSTER_RANK}</b>
|
||||
<!-- IF GROUP_MEMBERSHIP and IS_MOD -->
|
||||
<span id="gr-mod-a">[ <a href="#" class="med" onclick="ajax.group_membership('get_group_list'); $('#gr-mem-tr').show(); $('#gr-mod-a').hide(); return false;">членство в группах</a> ]</span>
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF GROUP_MEMBERSHIP -->
|
||||
<tr id="gr-mem-tr"<!-- IF IS_MOD --> style="display: none;"<!-- ENDIF -->>
|
||||
<th>Членство в группах:</th>
|
||||
<td id="gr-mem-list">
|
||||
<!-- IF IS_ADMIN --><a href="#" class="med" onclick="ajax.group_membership('get_group_list'); return false;">{GROUP_MEMBERSHIP_TXT}</a><!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<tr>
|
||||
<th>{L_JOINED}:</th>
|
||||
<td id="user_regdate">
|
||||
|
@ -308,11 +345,11 @@ ajax.callback.mod_action = function(data) {
|
|||
<th>{L_ACCESS}:</th>
|
||||
<td id="ignore_srv_load">{L_ACCESS_SRV_LOAD}: <b class="editable">{IGNORE_SRV_LOAD}</b></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</table><!--/user_details-->
|
||||
|
||||
<!-- IF IS_AM --><span id="ip_list"></span><!-- ENDIF -->
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<!-- IF SIGNATURE -->
|
||||
|
@ -411,7 +448,7 @@ ajax.callback.mod_action = function(data) {
|
|||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<th colspan="4" class="thHead">{L_CUR_ACTIVE_DLS}</th>
|
||||
</tr>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue