############################################################## ## MOD Title: Репутация на ajax (_Xz_ aka Log) ## MOD Author: _Xz_ aka Log ## Adapted MOD TP II: Boec ## MOD Version: 1.0 ## Система репутаци на ajax ## Installation Level: Easy ## Installation Time: 5 Minutes ## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2 #=== Запрос в БД ===# CREATE TABLE IF NOT EXISTS `bb_reputation` ( `user_id` mediumint(8) NOT NULL default '0', `poster_id` mediumint(8) default '0', `mode` varchar(10) default NULL, `time` int(11) default '0' ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE `bb_users` ADD `user_reputation` tinyint( 5 )not null default 0; #=== Открыть ajax.php ===# #=== Найти ===# case 'view_post': require(INC_DIR .'bbcode.php'); break; #=== Добавить после ===# case 'user_reputation': if($bb_cfg['reputation']['disabled']) $this->ajax_die('Репутация отключена.'); $repa = $this->request['value']; if($repa > $bb_cfg['reputation']['max_repa']) $repa = $bb_cfg['reputation']['max_repa']; if($repa < $bb_cfg['reputation']['min_repa']) $repa = $bb_cfg['reputation']['min_repa']; $this->response['new_value'] = ($repa); break; #=== Найти ===# 'change_torrent' => array('user'), #=== Добавить после ===# 'reputation' => array('user'), #=== Перед последней }(скобкой!) вставить ===# function reputation() { global $bb_cfg, $lang, $userdata; if($bb_cfg['reputation']['disabled']) $this->ajax_die('Репутация отключена.'); $user_id = (int) $this->request['user_id']; if($user_id < 0) $this->ajax_die('Данному пользователю запрещено выдавать запрет.'); if($userdata['user_id'] == $user_id) $this->ajax_die('Самому себе запрещено изменять репутацию.'); $mode = (string) $this->request['mode']; if(!$mode || !$user_id) $this->ajax_die('Убейся, кривые руки.'); $repa = $userdata['user_reputation']; $repa_out = '1'; //репутация < 500 имеют вес голоса = 1 и т.д. if(($repa >= 500) && ($repa < 5000)) $repa_out = '2'; if(($repa >= 5000) && ($repa < 10000)) $repa_out = '3'; if($repa >= 10000) $repa_out = '4'; if($repa < $bb_cfg['reputation']['min_repa_out']) $this->ajax_die('Ошибка. Вы не может менять репутацию пользователей.'); if(IS_AM) { if($userdata['user_level'] == MOD) $repa_out = '5'; if($userdata['user_level'] == ADMIN) $repa_out = '10'; } else { if($userdata['user_posts'] < $bb_cfg['reputation']['min_posts']) $this->ajax_die('Ошибка. Пользователям с количеством сообщений менее '. $bb_cfg['reputation']['min_posts'] .' голосовать запрещено.'); if($userdata['user_regdate'] > (TIMENOW - 2592000)) $this->ajax_die('Ошибка. Пользователям со стажем меньше месяца голосовать запрещено.'); } if(!IS_ADMIN) { //Проверка на повторную выдачу репы $row = DB() ->fetch_row("SELECT user_id FROM ". BB_REPUTATION ." WHERE user_id = $user_id AND poster_id = ". $userdata['user_id'] ." AND time > ". (TIMENOW - 86400)); if($row) $this->ajax_die('Ошибка. Голосовать за одного и того же пользователя можно только раз в сутки.'); //Проверка на кол-во выданной репы за день $row = DB() ->fetch_row("SELECT COUNT(user_id) AS count FROM ". BB_REPUTATION ." WHERE poster_id = ". $userdata['user_id'] ." AND time > ". (TIMENOW - 86400)); if($row['count'] > $bb_cfg['reputation']['vote']) $this->ajax_die('Ошибка. Голосовать можно только '. declension($bb_cfg['reputation']['vote'], 'times') .' в сутки.'); //Проверка на запреты //$warning = DB() ->fetch_row("SELECT id FROM ". BB_WARNINGS ." WHERE user_id = ". $userdata['user_id'] ." AND auth IN(1,3)"); //if($warning) $this->ajax_die('Вам запрещено менять репутацию, пока есть активные запреты.'); // Проверка на рейтинг, чтобы включить $bb_cfg['reputation']['ratio'] = true. if(!IS_MOD && $bb_cfg['reputation']['ratio']) { $btu = get_bt_userdata ($userdata['user_id']); if(!$btu) $this->ajax_die('Ошибка. Духам без passkey голосовать запрещено.'); if(get_bt_ratio($btu) < $bb_cfg['reputation']['min_ratio']) $this->ajax_die('Ошибка. Чтобы менять репутацию пользователей, поднимите свой рейтинг до '. $bb_cfg['reputation']['min_ratio']); } } //Проверка репутации пользователя $row = DB() ->fetch_row("SELECT user_level, user_reputation FROM ". BB_USERS ." WHERE user_id = $user_id LIMIT 1"); if($mode == 'add') { //Репутация может иметь значение до $bb_cfg['reputation']['max_repa']. $repa_out = (($row['user_reputation'] + $repa_out) > $bb_cfg['reputation']['max_repa']) ? $this->ajax_die('Ошибка. Данному пользователю больше нельзя повышать репутацию.') : $repa_out; if(!IS_ADMIN) DB() ->query("INSERT INTO ". BB_REPUTATION ." (user_id, poster_id, mode, time) VALUES ('$user_id', '". $userdata['user_id'] ."', '$mode', '". TIMENOW ."')"); DB() ->query("UPDATE ". BB_USERS ." SET user_reputation = user_reputation + $repa_out WHERE user_id = $user_id"); $this->response['info'] = 'Спасибо'; $this->response['html'] = ($row['user_reputation'] + $repa_out); } elseif($mode == 'del') { //Минимальная репутация администратора и модератора - 0 (ноль). if(($row['user_level'] == ADMIN) || ($row['user_level'] == MOD)) { $repa_out = (($row['user_reputation'] - $repa_out) < 0) ? $this->ajax_die('Ошибка. Данному пользователю больше нельзя понижать репутацию.') : $repa_out; } //Репутация может иметь значение от $bb_cfg['reputation']['min_repa']. $repa_out = (($row['user_reputation'] - $repa_out) < $bb_cfg['reputation']['min_repa']) ? $this->ajax_die('Ошибка. Данному пользователю больше нельзя понижать репутацию.') : $repa_out; if(!IS_ADMIN) DB() ->query("INSERT INTO ". BB_REPUTATION ." (user_id, poster_id, mode, time) VALUES ('$user_id', '". $userdata['user_id'] ."', '$mode', '". TIMENOW ."')"); DB() ->query("UPDATE ". BB_USERS ." SET user_reputation = user_reputation - $repa_out WHERE user_id = $user_id"); $this->response['info'] = 'Спасибо жлобяра!'; $this->response['html'] = ($row['user_reputation'] - $repa_out); } $this->response['user_id'] = $user_id; } #=== Открыть config.php ===# #=== В самый конец вставить ===# $bb_cfg['reputation'] = array( 'disabled' => false, 'vote' => 10, 'min_posts' => 2, 'min_repa_out' => '0', 'min_repa' => '-100', 'max_repa' => '30000', 'ratio' => false, 'min_ratio' => '1.00', ); #=== Открыть viewtopic.php ===# #=== Найти ===# $first_post = DB()->fetch_rowset( #=== Ниже найти в запросе ===# u.user_opt, #=== На линии вставить ===# u.user_reputation, #=== Найти ===# // 2. All others posts #=== Ниже найти в запросе ===# u.user_opt, #=== На линии вставить ===# u.user_reputation, #=== Найти ===# 'U_SEARCH_SELF' => "search.php?uid={$userdata['user_id']}&t=$topic_id&dm=1", #=== Добавить после ===# 'REPUTATION_ON' => $bb_cfg['reputation']['disabled'] ? false : true, #=== Найти ===# 'SIGNATURE' => $user_sig, #=== Добавить после ===# 'REPUTATION' => $postrow[$i]['user_reputation'], 'REPUTATION_COLOR' => ($postrow[$i]['user_reputation'] < 0) ? 'red' : 'green', #=== Открыть lang_main.php ===# #=== В самый конец вставить ===# $lang['REPUTATION'] = 'Репутация'; #=== Открыть init_bb.php ===# #=== Найти ===# define('BB_REPORTS_REASONS', 'bb_reports_reasons'); #=== Добавить после ===# define('BB_REPUTATION', 'bb_reputation'); #=== Открыть viewtopic.tpl ===# #=== Найти ===# #=== Добавить после ===# #=== Найти ===#

{L_POSTS}: {postrow.POSTER_POSTS}

#=== Добавить после ===#

{L_REPUTATION}: {postrow.REPUTATION}

[+] [-] # #-----[ SAVE/CLOSE ALL FILES ]-------------------------------- # # EoM