[BETA] Democracy MOD 0.2.1 (reputation + warnings + reports)

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 21 год 1 месяц
Откуда: СССР
Благодарил (а): 4 раза
Поблагодарили: 94 раза

Сообщение Mr. Anderson »

Siava, SoftCreator
А по мозгам?
Аватара пользователя
ETZel
phpBB 1.4.3
Сообщения: 93
Стаж: 19 лет 4 месяца
Откуда: Челябинск

Сообщение ETZel »

SoftCreator
Скорее всего, вы не загрузили новые файлы, которые добавляет мод (секция "COPY" в файле мода).
Если присутствует файл admin/admin_democracy.php, то под ссылкой "Автоцензор" обязательно появляется ссылка "Демократия".
SoftCreator
phpBB 1.0.0
Сообщения: 9
Стаж: 19 лет 6 месяцев
Откуда: Павлодар, Казахстан

Сообщение SoftCreator »

Из описания в файле MOD`а скопировал соответственно 20 файлов, и внес исправления в 15-ти файлах… Ребят, ну не настолько я тормоз как можно себе позволить… Все-таки я не просто так спрашиваю. Просто надо для форума компании, в которой я работаю, такой мод, это не просто форум на домашней страничке…Поэтому серьезно спрашиваю. Простите, если это оффтоп, но нервы-то не железные…

Файл admin_democracy.php присутствует…
Никто не проиграл, пока никто не выиграл...
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

Ребята, утановил этот мод у себя - отличный мод. Все прекрасно работает! Однако, как Вы знаете, нет предела совершенству.

Не подскажете, где нужно внести изменения, чтобы первоначальная репутация была не ноль, а, к примеру, "5". И еще, хотелось бы увидеть такую добавочку к этому моду:

Если у участника репутация становится выше "50", то этот участник может уже не единичку прибавить к репутации, а двойку. Если репутация выше сотни, то чтоб уже мог тройку или четверку прибавить к репутации другого участника. Можно это число сделать кратным, как на форуме forum.searchengines.ru. Правда там не phpbb, но это не важно, так как у меня phpbb, которым я доволен, нужно только немного дорабоать. :-)
Аватара пользователя
ETZel
phpBB 1.4.3
Сообщения: 93
Стаж: 19 лет 4 месяца
Откуда: Челябинск

Сообщение ETZel »

Начальная репутация - это очень легко. Надо выполнить запрос (число 5 в обеих строках - начальная репутация):

Код: Выделить всё

ALTER TABLE phpbb_users ALTER reputation SET DEFAULT 5;
UPDATE phpbb_users SET reputation = 5 WHERE user_id <> -1;
А вот масштабирование возможности менять репутацию - это серьезно, надо обсудить с автором.
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

Спасибо за SQL код!
Я же думал, что начальная репутация где-то в php проставляется, наподобие мода, который запрещает прописывание адреса сайта в профиле, пока не наберется нужное количество сообщений. У меня, например, пока пользователь пять сообщений не напишет, - он не может прописать адрес своего сайта в профиле. Начальная установка количества необходимых сообщений прописывается в php. Я вот и думал, что здесь тоже в php, а оказывается в SQL! Приятно слышать, действительно легко.

Масштабирование - это очень нужная вещь, ведь новички будут стремиться получить положительный отзыв именно от старичков и одновременно не смогут серьезно заминусовать какой-то нормальный пост, а вот старички получают много приятных возможностей!

Нужно подумать как это сделать!
SoftCreator
phpBB 1.0.0
Сообщения: 9
Стаж: 19 лет 6 месяцев
Откуда: Павлодар, Казахстан

Сообщение SoftCreator »

Такой вопрос: когда заходишь в профиль выдается ошибка

Код: Выделить всё

Parse error: parse error, unexpected T_ELSE in /home/uborevich/www.g-net.forum/profile.php on line 108
Подскажите пожалуйста в чем проблема?
Никто не проиграл, пока никто не выиграл...
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 19 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

Проблема в руках, которые устанавливали этот мод

Добавлено спустя 9 минут 35 секунд:

возможно типа таких, хоть это и другой мод
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
SoftCreator
phpBB 1.0.0
Сообщения: 9
Стаж: 19 лет 6 месяцев
Откуда: Павлодар, Казахстан

Сообщение SoftCreator »

Спасибо конечно за "оказанную" помощь, но я уже разобрался во всем.
Никто не проиграл, пока никто не выиграл...
Аватара пользователя
severnet
phpBB 2.0.5
Сообщения: 490
Стаж: 20 лет 5 месяцев
Откуда: Санкт-Петербург

Сообщение severnet »

Возможно ли отключить пользователю репутацию?
Также нашел косяк - у админа всегда показывается "0" в репутации, хотя комментарии сообщений есть.
Изображение
crzy
phpBB 1.0.0
Сообщения: 1
Стаж: 19 лет

Сообщение crzy »

Код: Выделить всё

SQL
CREATE TABLE `phpbb_reputation` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `modification` tinyint(1) NOT NULL default '0',
  `user_id` mediumint(8) NOT NULL default '0',
  `voter_id` mediumint(8) NOT NULL default '0',
  `post_id` mediumint(8) NOT NULL default '0',
  `forum_id` smallint(5) unsigned NOT NULL default '0',
  `poster_ip` varchar(8) NOT NULL default '',
  `date` int(11) default NULL,
  `expire` int(11) default NULL,
  `edit_time` int(11) default NULL,
  `edit_count` smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `user_id` (`user_id`),
  KEY `voter_id` (`voter_id`),
  KEY `post_id` (`post_id`),
  KEY `forum_id` (`forum_id`),
  KEY `date` (`date`)
);

CREATE TABLE `phpbb_reputation_text` (
  `id` mediumint(8) unsigned NOT NULL default '0',
  `text` text,
  `bbcode_uid` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`id`)
);

CREATE TABLE `phpbb_post_reports` (
  `report_id` mediumint(8) NOT NULL auto_increment,
  `post_id` mediumint(8) NOT NULL default '0',
  `review_id` mediumint(8) NOT NULL default '0',
  `forum_id` smallint(5) unsigned NOT NULL default '0',
  `user_id` mediumint(8) NOT NULL default '0',
  `report_time` int(11) NOT NULL default '0',
  `reports_num` mediumint(8) NOT NULL default '0',
  PRIMARY KEY  (`report_id`),
  KEY `post_id` (`post_id`),
  KEY `review_id` (`review_id`),
  KEY `forum_id` (`forum_id`)
);

ALTER TABLE `phpbb_users` ADD `reputation` smallint(8) NOT NULL default '0';
ALTER TABLE `phpbb_users` ADD `warnings` tinyint(4) unsigned NOT NULL default '0';

ALTER TABLE `phpbb_posts` ADD `post_reviews` smallint(8) unsigned NOT NULL default '0';
ALTER TABLE `phpbb_posts` ADD `post_locked` tinyint(1) unsigned NOT NULL default '0';

INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES
('reputation_last_check_time', '0'),
('warnings_enabled', '0'),
('reputation_enabled', '0'),
('reputation_mode', '1'),
('reputation_users_can_edit', '0'),
('reputation_users_can_delete', '0'),
('reputation_anonymous_can_view', '0'),
('reputation_enable_reports', '1'),
('reputation_reports_per_page', '20'),
('reputation_reviews_per_page', '20'),
('reputation_moderators_can_ban', '1'),
('reputation_expire_mod_defined', '1'),
('reputation_expire_lower', '1'),
('reputation_expire_upper', '-1'),
('reputation_expire_default', '30'),
('reputation_check_rate', '3600'),
('reputation_delete_expired', '0'),
('reputation_auto_ban', '1'),
('reputation_num_warnings', '2'),
('reputation_check_reports', '1'),
('reputation_reports_color', 'FF0000'),
('reputation_ban_expire', '0'),
('reputation_ban_expire_lower', '0'),
('reputation_ban_expire_upper', '-1'),
('reputation_ban_expire_default', '3');

#
#-----[ OPEN ]------------------------------------------
#
index.php
#
#-----[ FIND ]------------------------------------------
#
$newest_uid = $newest_userdata['user_id'];

#
#-----[ AFTER, ADD ]------------------------------------------
#
//////////democracy///////////////////////////////
//
// Get user(s) with the most reputation points
//
if ( $board_config['reputation_enabled'] )
{
	$sql = 'SELECT MAX(reputation) AS maxrep FROM ' . USERS_TABLE;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Couldn\'t retrieve the reputation stats', '', __LINE__, __FILE__, $sql);
	}
	$reputation_max = $db->sql_fetchrow($result);

	if ( $reputation_max['maxrep'] > 0 )
	{
		$sql = 'SELECT username, user_id, reputation FROM ' . USERS_TABLE . '
			WHERE user_id <> ' . ANONYMOUS . '
				AND reputation = ' . $reputation_max['maxrep'];

		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Couldn\'t retrieve the reputation stats', '', __LINE__, __FILE__, $sql);
		}

		$respect_set = $db->sql_fetchrowset($result);

		if ( count($respect_set) > 1 )
		{
			$l_respected_user_s = $lang['reputation_most_respected_users'];
		}
		else
		{
			$l_respected_user_s = $lang['reputation_most_respected_user'];
		}
		for ( $i = 0; $i < count($respect_set); $i++ )
		{
			$respected_user_link = '<b><a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $respect_set[$i]['user_id']) . '">' . $respect_set[$i]['username'] . '</a></b>';
			$s_respected_user_s .= ( $s_respected_user_s != '' ) ? ', ' . $respected_user_link : $respected_user_link;
		}
		$s_respected_user_s .= '<br />';
	}
}
//
// Check for post reports
//
if ( $board_config['reputation_check_reports'] == 1 && ( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD || $userdata['user_level'] == GLOBAL_MOD || $userdata['user_level'] == MAIN_MOD ) )
{
	switch ( $userdata['user_level'] )
	{
		case ADMIN:
			// Select all reports
			$from = POST_REPORTS_TABLE . ' r';
			$where = '1';
			break;
		case MOD:
			// Select reports from only those forums user can moderate
			$from = POST_REPORTS_TABLE . ' r, ' . USER_GROUP_TABLE . ' g, ' . AUTH_ACCESS_TABLE . ' a';
			$where = 'a.auth_mod = 1
					AND a.forum_id = r.forum_id
					AND a.group_id = g.group_id
					AND g.user_id = ' . $userdata['user_id'];
			break;
	}

	//
	// Get reports count
	//
	$sql = 'SELECT COUNT(r.report_id) AS num_reports
		FROM ' . $from . '
		WHERE ' . $where;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain limited reports count information", '', __LINE__, __FILE__, $sql);
	}
	$total_post_reports = ( $row = $db->sql_fetchrow($result) ) ? intval($row['num_reports']) : 0;
}
///////////////////////////////////////////////

#
#-----[ FIND ]------------------------------------------
#
	include($phpbb_root_path . 'includes/page_header.'.$phpEx);

#
#-----[ AFTER, ADD ]------------------------------------------
#
///////democracy///////
	//
	// Make a link to reported posts (for authorized ppl only)
	//
	if ( $board_config['reputation_enable_reports'] == 1 && ( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD || $userdata['user_level'] == GLOBAL_MOD || $userdata['user_level'] == MAIN_MOD ) )
	{
		$link_color = '';
		if ( isset($total_post_reports) )
		{
			$l_reported_posts = $lang['reputation_reported_posts'] . ': ' . ( $total_post_reports == 0 ? '0' : "<b>$total_post_reports</b>" );
			if ( $board_config['reputation_reports_color'] != '' && $total_post_reports > 0 )
			{
				$link_color = ' style="color:#' . $board_config['reputation_reports_color'] . '"';
			}
		}
		else
		{
			$l_reported_posts = $lang['reputation_view_reported_posts'];
		}
		$u_reported_posts = '<a href="' . append_sid("post_report.$phpEx?mode=view") . '" class="gensmall"' . $link_color . '>' . $l_reported_posts . '</a><br />';
	}
//////////////


#
#-----[ FIND ]------------------------------------------
#
		'FORUM_LOCKED_IMG' => $images['forum_locked'],
		'L_FORUM' => $lang['Forum'],

#
#-----[ AFTER, ADD ]------------------------------------------
#
////////////////democracy//////////////////////
		'RESPECTED_USERS' => $l_respected_user_s . $s_respected_user_s,
		'U_VIEW_REPORTED' => $u_reported_posts,
///////////////////////////////////////////


Could not obtain limited reports count information

DEBUG MODE

SQL Error : 1146 Table 'mycity.POST_REPORTS_TABLE' doesn't exist

SELECT COUNT(r.report_id) AS num_reports FROM POST_REPORTS_TABLE r WHERE 1

Line : 154
File : index.php

:(

help pls

inde.php

154==> message_die(GENERAL_ERROR, "Could not obtain limited reports count information", '', __LINE__, __FILE__, $sql);
}

phpmyadmin 2.6.4 pl4
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 4.0.26
MYSQL_MODULE_TYPE external
PHPBB 2.0.19
Аватара пользователя
ETZel
phpBB 1.4.3
Сообщения: 93
Стаж: 19 лет 4 месяца
Откуда: Челябинск

Сообщение ETZel »

crzy
Ошибка в том, что не определена константа POST_REPORTS_TABLE, в которой должно быть имя таблицы с репортами.
Вы изменили файл constants.php ? В нем присутствует строка

Код: Выделить всё

define('POST_REPORTS_TABLE', $table_prefix.'post_reports');
?
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 19 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

Что-то знакомое. Случайно не это
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
Аватара пользователя
Carbofos
phpBB 1.4.4
Сообщения: 158
Стаж: 20 лет 1 месяц

Сообщение Carbofos »

crzy
Нет нужды писать в обоих форумах (phpbb.com и здесь), я их читаю оба ;)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5426
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

Сообщение Siava »

Заметил один косячок.. хотя реальной возможности проверить пока нет.
Когда пользователь получает последнюю жёлтую карточку, то отправляется в бан.. так вот со следующим заходом в форум этого пользователя последнее выданное замечание куда-то пропадает и пользователь снова разбанен.
Попробую протестировать на тестовом форуме.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)

Вернуться в «Бета-версии модов для phpBB 2.0.x»