Файл: includes/usercp_reputation.php
Строк: 492
<?php
/*******************************************************
* Разработка: Carbofos.
* Оптимизация под WAP: Гутник Игорь ( чел ).
* 2009 год
*******************************************************/
if (!defined('IN_PHPBB'))
{
die('Hacking attempt');
}
include($phpbb_root_path . 'includes/functions_reputation.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
$page_title = $lang['Reputation'];
$mode = input_var('mode', 'reputation');
$user_id = $voter_id = input_var(POST_USERS_URL, 0);
$post_id = input_var(POST_POST_URL, 0);
$review_id = input_var(POST_REVIEWS_URL, 0);
$post_order = input_var('postorder', array('desc', 'asc'));
$start = input_var('start', 0);
if ($post_id)
{
$mode = 'post';
}
else
{
if ($review_id)
{
$result = db_query('SELECT * FROM {REPUTATION_TABLE} WHERE id = %d', $review_id);
if ($row = $db->sql_fetchrow($result))
{
$user_id = $row['user_id'];
$voter_id = $row['voter_id'];
$post_id = $row['post_id'];
switch ($row['modification'])
{
case REPUTATION_WARNING:
case REPUTATION_BAN:
$mode = 'warnings';
break;
case REPUTATION_WARNING_EXPIRED:
case REPUTATION_BAN_EXPIRED:
$mode = 'expired';
break;
default:
$mode = 'reputation';
}
}
else
{
message_die(GENERAL_MESSAGE, $lang['reputation_no_review_spec']);
}
}
elseif (!$user_id)
{
message_die(GENERAL_MESSAGE, $lang['reputation_no_user_spec']);
}
}
switch ($mode)
{
case 'given':
$cond = "r.voter_id = $voter_id";
$view_param = POST_USERS_URL . '=' . $voter_id;
break;
case 'post':
$cond = "r.post_id = $post_id";
$view_param = POST_POST_URL . '=' . $post_id;
break;
default:
$cond = "r.user_id = $user_id";
$view_param = POST_USERS_URL . '=' . $user_id;
}
switch ($mode)
{
case 'warnings':
$cond .= ' AND (r.modification = {REPUTATION_WARNING} OR r.modification = {REPUTATION_BAN})';
break;
case 'expired':
$cond .= $board_config['reputation_delete_expried'] ? 'FALSE' : ' AND (r.modification = {REPUTATION_WARNING_EXPIRED} OR r.modification = {REPUTATION_BAN_EXPIRED})';
break;
default:
$cond .= $board_config['reputation_positive_only'] ? ' AND r.modification = {REPUTATION_INC}' : ' AND (r.modification = {REPUTATION_INC} OR r.modification = {REPUTATION_DEC})';
}
$ban_expired = $warnings_expired = $ban = $warnings = $plus = $minus = 0;
$result = db_query("SELECT modification, COUNT(modification) cnt FROM {REPUTATION_TABLE} r
WHERE $cond
GROUP BY modification");
while ($row = $db->sql_fetchrow($result))
{
switch ($row['modification'])
{
case REPUTATION_INC: $plus = $row['cnt']; break;
case REPUTATION_DEC: $minus = $row['cnt']; break;
case REPUTATION_WARNING: $warnings = $row['cnt']; break;
case REPUTATION_WARNING_EXPIRED: $warnings_expired = $row['cnt']; break;
case REPUTATION_BAN: $ban = $row['cnt']; break;
case REPUTATION_BAN_EXPIRED: $ban_expired = $row['cnt']; break;
}
}
$reputation = $plus - $minus;
include($phpbb_root_path . 'includes/page_header.' . $phpEx);
$template->set_filenames(array('body' => 'profile_view_reputation.tpl'));
if ($mode == 'post')
{
$result = db_query('SELECT u.username, u.user_id, u.user_level, u.user_sig, u.user_sig_bbcode_uid, u.user_allowsmile, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid, u.user_reputation, u.user_reputation_plus, u.user_warnings
FROM {POSTS_TABLE} p, {USERS_TABLE} u, {POSTS_TEXT_TABLE} pt
WHERE p.post_id = %d
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id', $post_id);
if (!$postrow = $db->sql_fetchrow($result))
{
message_die(GENERAL_MESSAGE, $lang['Topic_post_not_exist']);
}
if ($postrow['poster_id'] == ANONYMOUS)
{
message_die(GENERAL_MESSAGE, $lang['reputation_anonymous_no_reviews']);
}
if (!$plus && !$minus)
{
message_die(GENERAL_MESSAGE, $lang['reputation_no_reviews'] . '<br /><br />' . sprintf($lang['reputation_msg_back_to_topic'], "<a href="" . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=$post_id") . "#$post_id">", "</a>"));
}
$num_reviews = $plus + $minus;
$is_auth = reputation_auth($postrow['forum_id'], $userdata);
$forums_auth = array($postrow['forum_id'] => $is_auth);
if (!$is_auth['auth_view_rep'])
{
if (!$userdata['session_logged_in'])
{
redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=$mode&start=$start&postorder=$post_order&$view_param", true));
}
message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
}
$post_id = $postrow['post_id'];
if ($userdata['session_logged_in'] && $postrow['post_time'] > $userdata['user_lastvisit'])
{
$mini_post_img = $images['icon_minipost_new'];
$mini_post_alt = $lang['New_post'];
}
else
{
$mini_post_img = $images['icon_minipost'];
$mini_post_alt = $lang['Post'];
}
$mini_post_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $post_id) . '#' . $post_id;
$bani_img = $bani = $warn_img = $warn = $edit_img = $edit = $delpost_img = $delpost = $ip_img = $ip = $reportpost_img = $reportpost = $user_sig = $l_edited_by = $user_warnings = $user_reputation = $temp_url = '';
$is_auth = reputation_auth($is_auth, $userdata, $postrow, true);
if ($board_config['reputation_enabled'])
{
$user_reputation = reputation_display($postrow, $is_auth, true);
}
if ($board_config['warnings_enabled'])
{
$result = db_query('SELECT *
FROM {BANLIST_TABLE}
WHERE ban_userid = %d', $postrow['user_id']);
$user_warnings = reputation_warnings($postrow, (bool) $db->sql_fetchrow($result), $is_auth);
}
if ($board_config['warnings_enabled'])
{
if ($is_auth['auth_warn'])
{
$temp_url = "reputation.$phpEx?mode=warning&" . POST_POST_URL . "=" . $post_id . "&sid=" . $userdata['session_id'];
$warn_img = '<a href="' . $temp_url . '">' . $lang['reputation_warn_user'] . '</a>';
$warn = '<a href="' . $temp_url . '">' . $lang['reputation_warn_user'] . '</a>';
}
if ($is_auth['auth_ban'])
{
$temp_url = "reputation.$phpEx?mode=ban&" . POST_POST_URL . "=" . $post_id . "&sid=" . $userdata['session_id'];
$bani_img = '<a href="' . $temp_url . '">' . $lang['reputation_ban_user'] . '</a>';
$bani = '<a href="' . $temp_url . '">' . $lang['reputation_ban_user'] . '</a>';
}
}
if (($userdata['user_id'] == $postrow['user_id'] && $is_auth['auth_edit']) || $is_auth['auth_mod'])
{
$temp_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $post_id);
$edit = '<a href="' . $temp_url . '" title="' . $lang['Edit_delete_post'] . '">' . $lang['Edit'] . '</a>';
}
if (($userdata['user_id'] == $postrow['user_id'] && $is_auth['auth_delete'] && $forum_topic_data['topic_last_post_id'] == $post_id) || $is_auth['auth_mod'])
{
$temp_url = "posting.$phpEx?mode=delete&" . POST_POST_URL . "=" . $post_id . "&sid=" . $userdata['session_id'];
$delpost = '<a href="' . $temp_url . '" title="' . $lang['Delete_post'] . '">' . $lang['Delete'] . '</a>';
}
if ($is_auth['auth_mod'])
{
$temp_url = "modcp.$phpEx?mode=ip&" . POST_POST_URL . "=" . $post_id . "&" . POST_TOPIC_URL . "=" . $postrow['topic_id'] . "&sid=" . $userdata['session_id'];
$ip = '<a href="' . $temp_url . '" title="' . $lang['View_IP'] . '">IP</a>';
}
else
{
if ($board_config['reports_enabled'] && $userdata['session_logged_in'] && $userdata['user_level'] == USER)
{
$temp_url = "post_report.$phpEx?mode=report&" . POST_POST_URL . "=" . $post_id . "&sid=" . $userdata['session_id'];
$reportpost = '<a href="' . $temp_url . '" title="' . $lang['reputation_report_post'] . '">' . $lang['reputation_report'] . '</a>';
}
}
$user_profile = $user_profile_img = '';
$message = prepare_display($postrow['post_text'], $postrow['bbcode_uid'], $postrow['enable_html'], $postrow['enable_smilies']);
$post_subject = censor($postrow['post_subject']);
if ($postrow['enable_sig'] && $postrow['user_sig'] && $board_config['allow_sig'])
{
$user_sig = prepare_display($postrow['user_sig'], $postrow['user_sig_bbcode_uid'], true, true);
$user_sig = '<br clear="all" />_________________<br />' . $user_sig;
}
if ($postrow['post_edit_count'])
{
$l_edit_time_total = ($postrow['post_edit_count'] == 1) ? $lang['Edited_time_total'] : $lang['Edited_times_total'];
$l_edited_by = '<br /><br />' . sprintf($l_edit_time_total, $postrow['username'], create_date($board_config['default_dateformat'], $postrow['post_edit_time'], $board_config['board_timezone']), $postrow['post_edit_count']);
}
$template->assign_block_vars('postrow', array(
'POSTER_NAME' => $postrow['username'],
'POST_DATE' => $post_date,
'POST_SUBJECT' => $post_subject,
'MESSAGE' => $message,
'SIGNATURE' => $user_sig,
'EDITED_MESSAGE' => $l_edited_by,
'POSTER_REPUTATION' => $user_reputation,
'POSTER_WARNINGS' => $user_warnings,
'REPORTPOST' => $reportpost,
'REPORTPOST_IMG' => $reportpost_img,
'RED' => $bani,
'RED_IMG' => $bani_img,
'YELLOW' => $warn,
'YELLOW_IMG' => $warn_img,
'MINI_POST_IMG' => $mini_post_img,
'EDIT_IMG' => $edit_img,
'EDIT' => $edit,
'IP_IMG' => $ip_img,
'IP' => $ip,
'DELETE_IMG' => $delpost_img,
'DELETE' => $delpost,
'L_POST' => $lang['Post'],
'L_POST_SUBJECT' => $lang['Post_subject'],
'L_MINI_POST_ALT' => $mini_post_alt,
'U_RETURN_TOPIC' => sprintf($lang['reputation_msg_back_to_topic'], '<a class="nav" href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $post_id) . '#' . $post_id . '">', '</a>'),
'U_MINI_POST' => $mini_post_url,
'U_POST_ID' => $post_id)
);
if ($board_config['warnings_enabled'])
{
$result = db_query('SELECT r.*, rt.*, u.username FROM {REPUTATION_TABLE} r, {REPUTATION_TEXT_TABLE} rt, {USERS_TABLE} u
WHERE r.post_id = %d
AND r.modification IN ({REPUTATION_WARNING}, {REPUTATION_BAN}, {REPUTATION_WARNING_EXPIRED}, {REPUTATION_BAN_EXPIRED})
AND r.id = rt.id
AND r.voter_id = u.user_id
LIMIT 1', $post_id);
if ($post_warning = $db->sql_fetchrow($result))
{
$template->assign_block_vars('postrow.warning', reputation_warning_tpl($post_warning));
}
}
if ($board_config['reputation_positive_only'])
{
$block_title = $lang['reputation_post_reviews'] . ": $thumb_up_img $plus";
}
else
{
$block_title = $lang['reputation_post_reviews'] . ": $thumb_up_img $plus $thumb_dn_img $minus (" . $lang['reputation_total'] . ': ' . ($reputation > 0 ? '+' : '') . $reputation . ')';
}
$block = 'rep';
}
else
{
$result = db_query('SELECT username, user_reputation, user_warnings FROM {USERS_TABLE} WHERE user_id = %d', $user_id);
if (!($user = $db->sql_fetchrow($result)))
{
message_die(GENERAL_ERROR, $lang['reputation_no_user_spec']);
}
$forums_auth = reputation_auth(AUTH_LIST_ALL, $userdata);
$temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
$user_profile = '<a href="' . $temp_url . '">' . $lang['Read_profile'] . '</a>';
$user_link = '<a href="' . $temp_url . '">' . $user['username'] . '</a>';
if ($mode == 'warnings')
{
if ($warnings || $ban)
{
$warnings_data = ($warnings ? $warned_img . $warnings : '') . ($ban ? ' ' . $banned_img : '');
$num_reviews = $warnings + $ban;
$block_title = sprintf($lang['reputation_warnings_to'], $user_link) . ': ' . $warnings_data;
}
else
{
$message = $lang['reputation_no_warnings'];
if ($warnings_expired || $ban_expired)
{
$message .= '<br /><br /><a href="' . append_sid("profile.$phpEx?mode=expired&m=" . 'expired' . '&' . POST_USERS_URL . "=$user_id") . '">' . $lang['reputation_display_expired'] . '</a>';
}
else
{
$message .= '<br /><br />' . sprintf($lang['reputation_msg_view_profile'], '<a href="' . $temp_url . '">', '</a>');
}
message_die(GENERAL_MESSAGE, $message);
}
$block = 'warn';
}
elseif ($mode == 'expired')
{
if ($warnings_expired || $ban_expired)
{
$num_reviews = $warnings_expired + $ban_expired;
$block_title = sprintf($lang['reputation_warnings_expired'], $user_link) . ': ' . $warnings_expired;
}
else
{
$message = $lang['reputation_no_warnings'] . '<br /><br />' . sprintf($lang['reputation_msg_view_profile'], '<a href="' . $temp_url . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
$block = 'warn';
}
else
{
if ($plus || $minus)
{
$num_reviews = $plus + $minus;
$block_title = sprintf($lang['reputation_of'], $user_link);
if ($board_config['reputation_positive_only'])
{
$block_title .= ': +'.$plus;
}
else
{
$block_title .= ': +'.$plus.'/-'.$minus;
}
}
else
{
message_die(GENERAL_MESSAGE, $lang['reputation_no_details'] . '<br /><br />' . sprintf($lang['reputation_msg_view_profile'], '<a href="' . $temp_url . '">', '</a>'));
}
$block = 'rep';
}
}
$self = "profile.$phpEx?mode=$mode&start=$start&postorder=$post_order&$view_param";
$pagination = generate_pagination($self, $num_reviews, $board_config['topics_per_page'], $start);
if ($mode == 'warnings' || $mode == 'expired')
{
$l_expire = ($mode == 'warnings') ? $lang['reputation_expire'] : $lang['reputation_expired'];
$l_read = $lang['Warning'];
$l_unread = $lang['New_warning'];
$auth_edit_key = 'auth_edit_warn';
$auth_delete_key = 'auth_delete_warn';
}
else
{
$l_expire = '';
$l_read = $lang['Review'];
$l_unread = $lang['New_review'];
$auth_edit_key = 'auth_edit_rep';
$auth_delete_key = 'auth_delete_rep';
}
$select_post_order = html_select('postorder', array('asc', 'desc'), array('Oldest_First', 'Newest_First'), $post_order);
$template->assign_vars(array(
'L_DISPLAY_POSTS' => $lang['reputation_display'],
'L_GO' => $lang['Go'],
'L_BACK_TO_TOP' => $lang['Back_to_top'],
'L_REASON' => $lang['reputation_reason'],
'L_AUTHOR' => $lang['Author'],
'L_OFFICIAL' => $lang['Official'],
'L_WARNING' => $lang['Warning'],
'L_REVIEW' => $lang['Review'],
'L_ISSUED' => $lang['reputation_issued'],
'L_POST_REF' => $lang['reputation_post_ref'],
'L_EXPIRE' => $l_expire,
'L_POSTED' => $lang['Posted'],
'S_REVIEW_OREDR_ACTION' => append_sid($self),
'S_SELECT_POST_ORDER' => $select_post_order,
'PAGINATION' => $pagination
));
$template->assign_block_vars($block, array(
'BLOCK_TITLE' => $block_title,
'U_VIEWPROFILE' => $user_profile,
'U_VIEWPROFILE_IMG' => $user_profile_img,
));
$review_images = array(REPUTATION_INC => 'положительный', REPUTATION_DEC => 'отрицательный', REPUTATION_WARNING => 'предупреждение', REPUTATION_WARNING_EXPIRED => 'предупреждение', REPUTATION_BAN => 'бан', REPUTATION_BAN_EXPIRED => 'бан');
$result = db_query("SELECT r.*, rt.*, u.* FROM {REPUTATION_TABLE} r, {REPUTATION_TEXT_TABLE} rt, {USERS_TABLE} u
WHERE $cond
AND r.id = rt.id
AND r.voter_id = u.user_id
ORDER BY r.date %s
LIMIT %d, %d",
($post_order == 'desc') ? 'DESC' : 'ASC', $start, $board_config['topics_per_page'], 0, $board_config['topics_per_page']);
$report_button = $board_config['reports_enabled'] && $userdata['session_logged_in'] && $userdata['user_level'] == USER && ($mode == 'reputation' || $mode == 'given');
for ($i = true; $row = $db->sql_fetchrow($result); $i = !$i)
{
$is_auth = reputation_auth($forums_auth[$row['forum_id']], $userdata, $row, true);
if ($row['post_id'] != NO_ID)
{
$post_reference = '<a href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $row['post_id']) . '#' . $row['post_id'] . '">' . $lang['reputation_post_ref'] . '</a>';
}
elseif ($row['forum_id'] != NO_ID)
{
$post_reference = $lang['reputation_post_deleted'];
}
else
{
$post_reference = $lang['No'];
}
$review = $review_images[$row['modification']];
$expire = is_null($row['expire']) ? $lang['reputation_expire_never'] : create_date($board_config['default_dateformat'], $row['expire'], $board_config['board_timezone']);
$ip_img = $ip = $delpost_img = $delpost = $edit_img = $edit = $reportpost_img = $reportpost = $l_edited_by = '';
if ($is_auth['auth_mod'])
{
//$temp_url = "modcp.$phpEx?mode=ip&" . POST_REVIEWS_URL . '=' . $row['id'] . "&sid=" . $userdata['session_id'];
$temp_url = 'http://www.dnsstuff.com/tools/whois.ch?ip=' . decode_ip($row['poster_ip']);
$ip = '<a href="' . $temp_url . '" title="' . $lang['View_IP'] . '">IP</a>';
}
if ($is_auth[$auth_delete_key])
{
$temp_url = "reputation.$phpEx?mode=delete&" . POST_REVIEWS_URL . '=' . $row['id'] . '&ret=' . $mode . '&sid=' . $userdata['session_id'];
$delpost = ' <a href="' . $temp_url . '" title="' . $lang['reputation_delete_review'] . '">удал</a>';
}
if ($is_auth[$auth_edit_key])
{
$temp_url = "reputation.$phpEx?mode=edit&" . POST_REVIEWS_URL . '=' . $row['id'] . '&ret=' . $mode . '&sid=' . $userdata['session_id'];
$edit = ' <a href="' . $temp_url . '" title="' . $lang['reputation_edit_review'] . '">изм</a>';
}
if ($report_button)
{
$temp_url = "post_report.$phpEx?mode=report&" . POST_REVIEWS_URL . '=' . $row['id'] . '&sid=' . $userdata['session_id'];
$reportpost = '<a href="' . $temp_url . '" title="' . $lang['reputation_report_post'] . '">' . $lang['reputation_report_post'] . '</a>';
}
if ($userdata['session_logged_in'] && $row['date'] > $userdata['user_lastvisit'])
{
$mini_post_img = $images['icon_minipost_new'];
$mini_post_alt = $l_unread;
}
else
{
$mini_post_img = $images['icon_minipost'];
$mini_post_alt = $l_read;
}
$mini_post_url = append_sid("profile.$phpEx?mode=$mode&" . POST_REVIEWS_URL . '=' . $row['id'] . "&postorder=$post_order");
if ($row['edit_count'])
{
$l_edit_time_total = ($row['edit_count'] == 1) ? $lang['Edited_time_total'] : $lang['Edited_times_total'];
$l_edited_by = '<br />' . sprintf($l_edit_time_total, $row['username'], create_date($board_config['default_dateformat'], $row['edit_time'], $board_config['board_timezone']), $row['edit_count']);
}
$message = prepare_display($row['text'], $row['bbcode_uid'], true, true);
$class = ( !($i % 2) ) ? 'row_hard' : 'row_easy';
$template->assign_block_vars("$block.rows", array(
'L_MINI_POST_ALT' => $mini_post_alt,
'U_MINI_POST' => $mini_post_url,
'COMMENTS' => $message,
'EDITED_COMMENTS' => $l_edited_by,
'REVIEWER_NAME' => '<a href="'.append_sid('profile.'.$phpEx.'?mode=viewprofile&u='.$row['user_id']).'">'.$row['username'].'</a>',
'REVIEW' => $review,
'ROW_CLASS' => $class,
'EXPIRE' => $expire,
'POST_REF' => $post_reference,
'POST_DATE' => create_date($board_config['default_dateformat'], $row['date'], $board_config['board_timezone']),
'REPORTPOST' => $reportpost,
'REPORTPOST_IMG' => $reportpost_img,
'EDIT_IMG' => $edit_img,
'EDIT' => $edit,
'IP_IMG' => $ip_img,
'IP' => $ip,
'DELETE_IMG' => $delpost_img,
'DELETE' => $delpost,
'MINI_POST_IMG' => $mini_post_img
));
}
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.' . $phpEx);
?>