Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

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

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

наш форум http://forum.aeroion.ru/cat1.html
lusever
phpBB 1.4.2
Сообщения: 66
Стаж: 19 лет 1 месяц

Сообщение lusever »

Отлично, видно прогресс. Но.

Функция db_query если честно взбесила! Зачем навязывать свой стиль кодирования, туда где есть станадртные метóды???
Приходится всё переписывать - бред какой-то.

Добавлено спустя 4 минуты 49 секунд:

Кстати, в инструкции:

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

#-----[ FIND ]------------------------------------------
#
		$sql = "UPDATE " . REPUTATION_TABLE . "
			SET post_id = -1
			WHERE post_id = $post_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in deleting post references', '', __LINE__, __FILE__, $sql);
		}

#
#-----[ REPLACE WITH ]------------------------------------------
#
		db_query('UPDATE {REPUTATION_TABLE} SET post_id = {NO_ID} WHERE post_id = %d', $post_id);
		db_query('DELETE FROM {POST_REPORTS_TABLE} WHERE post_id = %d', $post_id);

#
Надо поменять на

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

#-----[ FIND ]------------------------------------------
#
		$sql = "UPDATE " . REPUTATION_TABLE . "
			SET post_id = -1
			WHERE post_id = $post_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in deleting post references', '', __LINE__, __FILE__, $sql);
		}
		$sql = "DELETE FROM " . POST_REPORTS_TABLE . " 
			WHERE post_id = $post_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in deleting post reports', '', __LINE__, __FILE__, $sql);
		}

#
#-----[ REPLACE WITH ]------------------------------------------
#
		db_query('UPDATE {REPUTATION_TABLE} SET post_id = {NO_ID} WHERE post_id = %d', $post_id);
		db_query('DELETE FROM {POST_REPORTS_TABLE} WHERE post_id = %d', $post_id);

#
Добавлено спустя 4 часа 51 минуту 10 секунд:

А еще:
function input_var($name, $default, $required_msg = null)

Просто из колеи выбило. Если на то уж пошло, то reqvest_var из phpbb3
Аватара пользователя
Whity
phpBB 1.0.0
Сообщения: 7
Стаж: 17 лет 9 месяцев
Откуда: Москва

Сообщение Whity »

Поручик писал(а):Что значит не принимает? Вы где запросы делали?
Создал файлик с таким содержанием:

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

<?php  


$hostname="*****";  // адресс:порт базы данных
$dbuser="*****"; // имя пользователя базы данных
$dbpass="*****"; // пароль базы данных
$dbname="******"; // имя базы данных

$link=mysql_connect($hostname,$dbuser,$dbpass);
mysql_select_db($dbname);
//$result=mysql_query("SELECT * FROM phpbb_users;",$link);
//$count=mysql_num_rows($result);
//for ($x=0;$x<=$count;$x++){
//$data=mysql_fetch_assoc($result);
//echo $data['user_id'];
//}

$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 '-1','forum_id' smallint(5) NOT NULL default '-1','poster_ip' char(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 'voter_id' ('voter_id'),KEY 'post_id' ('post_id'),KEY 'date' ('date'),KEY 'expire' ('expire'));";

$sql[]="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'));";

$sql[]="CREATE TABLE 'phpbb_post_reports' ('report_id' mediumint(8) NOT NULL auto_increment,'post_id' mediumint(8) NOT NULL default '-1','review_id' mediumint(8) NOT NULL default '-1','forum_id' mediumint(9) NOT NULL default '-1','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'));";

$sql[]="ALTER TABLE 'phpbb_users' ADD 'user_reputation' smallint(8) NOT NULL default '0';";
$sql[]="ALTER TABLE 'phpbb_users' ADD 'user_reputation_plus' smallint(8) NOT NULL default '0';";
$sql[]="ALTER TABLE 'phpbb_users' ADD 'user_warnings' tinyint(4) unsigned NOT NULL default '0';";

$sql[]="ALTER TABLE 'phpbb_posts' ADD 'post_reviews' smallint(8) unsigned NOT NULL default '0';";
$sql[]="ALTER TABLE 'phpbb_posts' ADD 'post_locked' tinyint(1) unsigned NOT NULL default '0';";

$sql[]="INSERT INTO 'phpbb_config' ('config_name', 'config_value') VALUES ('warnings_enabled', '1'),('reputation_enabled', '1'),('reports_enabled', '1'),('reputation_least_respected', '0'),('reputation_ban_warnings', '5'),('reputation_delete_expired', '-1'),('reputation_warning_expire', '3,30'),('reputation_ban_expire', '3,30'),('reputation_perms', '0,0,1,3,3,3,3,5,3,5,3,3,3'),('reputation_none', '0,0'),('reputation_mod_norep', '0'),('reputation_reviews_per_page', '25'),('reputation_reports_per_page', '25'),('reputation_display', '1'),('reputation_most_respected', '1'),('reputation_days_req', '0'),('reputation_posts_req', '0'),('reputation_points_req', '-100000'),('reputation_warnings_req', '100000'),('reputation_rotation_limit', '0'),('reputation_time_limit', '0'),('reputation_check_rate', '60'),('reputation_last_check_time', '1152884749'),('reputation_empty_reviews', '0'),('reputation_positive_only', '0'),('reputation_check_reports', '1'),('reputation_reports_color', ''),('reputation_admin_norep', '0');";
for ($x=0;$x<=9;$x++) {
mysql_query($sql[$x],$link);
echo $sql[$x]."<hr><br>";
}
mysql_close($link);
//echo $sql;
?>
И запустил,
mysql говорит что неправильный синтаксис
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

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

Гм, что-типа этого?

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

9 Warning(s) Reported:
Identifier "date" is a reserved keyword (reference: SQL 99), statement: 1, table: "phpbb_reputation"
Identifier "date" is a reserved keyword (reference: SQL 99), statement: 1, table: "phpbb_reputation"
Identifier "date" is a reserved keyword (reference: SQL 99), statement: 1, table: "phpbb_reputation"
Identifier "text" is a reserved keyword (reference: MySQL), statement: 2, table: "phpbb_reputation_text"
Inconsistent display width specified "MEDIUMINT(9)" in column "forum_id", statement: 3, table: "phpbb_post_reports"
Inconsistent display width specified "SMALLINT(8)" in column "user_reputation", statement: 4, table: "phpbb_users"
Inconsistent display width specified "SMALLINT(8)" in column "user_reputation_plus", statement: 5, table: "phpbb_users"
Inconsistent display width specified "SMALLINT(8) UNSIGNED" in column "post_reviews", statement: 7, table: "phpbb_posts"
Column "forum_id" has been found using 2 different data types in 2 tables: SMALLINT(5) in phpbb_reputation; MEDIUMINT(9) in phpbb_post_reports.
или чего? Полный текст ошибки в студию

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

А ведь действительно херня получается (см. хотя бы последнюю строку)
разные типы данных для одного поля в разных таблицах.

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

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

наш форум http://forum.aeroion.ru/cat1.html
Xrymz
phpBB 1.0.0
Сообщения: 1
Стаж: 17 лет 7 месяцев

Сообщение Xrymz »

когда нажимаю "сообщить модеру", а потом "нет"

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

Warning: Cannot modify header information - headers already sent by (output started at z:\home\127.0.0.1\www\forum\includes\template.php(127) : eval()'d code:1) in z:\home\127.0.0.1\www\forum\includes\functions.php on line 942
че может быть?
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

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

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

наш форум http://forum.aeroion.ru/cat1.html
obecalp
phpBB 1.2.0
Сообщения: 11
Стаж: 17 лет 11 месяцев

Сообщение obecalp »

Вопрос: модераторы в текущей версии могут банить? Если должны, но не могут, куда смотреть (может конфликт с уже установленными модами)?

Проинсталлировал вроде правильно, права дал, но модеры не видят кнопочек для бана.
Moscow
phpBB 1.2.1
Сообщения: 25
Стаж: 17 лет 7 месяцев

Сообщение Moscow »

У меня такой вопрос : можно ли как нибудь включить предупреждения и для модераторов ? в v0.2.0 ( чтоб им можно было вручать предупреждения )
Sanek508
phpBB 1.0.0
Сообщения: 2
Стаж: 17 лет 7 месяцев

Сообщение Sanek508 »

Xrymz писал(а):когда нажимаю "сообщить модеру", а потом "нет"

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

Warning: Cannot modify header information - headers already sent by (output started at z:\home\127.0.0.1\www\forum\includes\template.php(127) : eval()'d code:1) in z:\home\127.0.0.1\www\forum\includes\functions.php on line 942
че может быть?
У меня была такая же проблема, исправил так:

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

#OPEN 
post_report.php

#FIND
$page_title = $lang['reputation_report'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
	$post_id = input_var(POST_POST_URL, NO_ID);
if ($post_id != NO_ID)
{
	$review_id = NO_ID;
	$back_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=$post_id") . "#$post_id";
}
else
{
	$review_id = input_var(POST_REVIEWS_URL, NO_ID, $lang['reputation_no_post_spec']);
	$back_url = append_sid("profile.$phpEx?mode=reputation&" . POST_REVIEWS_URL . "=$review_id") . "#$review_id";
}

if (isset($HTTP_POST_VARS['cancel']))
{
	redirect(str_replace('&', '&', $back_url), true);
}

#REPLACE WITH
$post_id = input_var(POST_POST_URL, NO_ID);
if ($post_id != NO_ID)
{
	$review_id = NO_ID;
	$back_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=$post_id") . "#$post_id";
}
else
{
	$review_id = input_var(POST_REVIEWS_URL, NO_ID, $lang['reputation_no_post_spec']);
	$back_url = append_sid("profile.$phpEx?mode=reputation&" . POST_REVIEWS_URL . "=$review_id") . "#$review_id";
}

if (isset($HTTP_POST_VARS['cancel']))
{
	redirect(str_replace('&', '&', $back_url), true);
}

$page_title = $lang['reputation_report'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
т.е.

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

$page_title = $lang['reputation_report'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
поставить после

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

if (isset($HTTP_POST_VARS['cancel']))
	{
		redirect(str_replace('&', '&', $back_url), true);
	}
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 18 лет 3 месяца
Благодарил (а): 16 раз

Сообщение Thanx »

Вот такой вот косяк у меня в коде democracy:

http://phpbbguru.net/community/viewtopic.php?p=102317

Что я сделал не так?
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

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

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

наш форум http://forum.aeroion.ru/cat1.html
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 18 лет 3 месяца
Благодарил (а): 16 раз

Сообщение Thanx »

Поручик,

что-то странное. У меня отлично работающий democracy, но вот нашел код

///democracy///
$sql = 'SELECT r.id
FROM ' . REPUTATION_TABLE . ' r, ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
WHERE r.post_id = p.post_id
AND p.topic_id = t.topic_id
AND t.topic_id IN (' . $topic_list . ')
AND t.topic_status <> ' . TOPIC_MOVED;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not select post reviews ids', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
$reviews_list = '';
for($i = 0; $i < count($row); $i++)
{
$reviews_list .= ( ( $reviews_list != '' ) ? ', ' : '' ) . $row[$i]['id'];
}

$sql = 'UPDATE ' . REPUTATION_TABLE . '
SET forum_id = ' . $new_forum_id . '
WHERE id IN (' . $reviews_list . ')';
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update post reviews', '', __LINE__, __FILE__, $sql);
}

///////////////

и почему-то этот код находится в modcp.php

Самое смешное, что я не нахожу в инсталляционном файле этого кода вообще, а не только в modcp.php. Какие-то дикости. Где я мог взять кусок этого кода, да еще и в modcp.php прописать?

Добавлено спустя 22 минуты 13 секунд:

Поручик, спасибо за подсказку. Естественно, кусок этого кода я удалил из modcp.php, но я всегда очень внимательно отношусь к процессу инсталляции. Где же я мог взять этот код, когда я его даже в инсталляционном файле не нахожу. Может, этот кусок кода должен принадлежать какому другому файлу?
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

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

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

наш форум http://forum.aeroion.ru/cat1.html
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 18 лет 3 месяца
Благодарил (а): 16 раз

Сообщение Thanx »

Какой-то страшный сон.

Я еще и такой код в modcp.php нашел у себя:

///democracy///
$sql_where_rep = (!empty($HTTP_POST_VARS['split_type_beyond'])) ? " p.post_time >= $post_time AND p.topic_id = $topic_id" : "p.post_id IN ($post_id_sql)";

$sql = 'SELECT r.id
FROM ' . REPUTATION_TABLE . ' r, ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
WHERE r.post_id = p.post_id
AND ' . $sql_where_rep;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not select post reviews ids', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
$reviews_list = '';
for($i = 0; $i < count($row); $i++)
{
$reviews_list .= ( ( $reviews_list != '' ) ? ', ' : '' ) . $row[$i]['id'];
}

$sql = 'UPDATE ' . REPUTATION_TABLE . '
SET forum_id = ' . $new_forum_id . '
WHERE id IN (' . $reviews_list . ')';
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update post reviews', '', __LINE__, __FILE__, $sql);
}
///////////

Так этот кусок кода тоже удалить?
Откуда же я взял всю эту нелепость!
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

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

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

наш форум http://forum.aeroion.ru/cat1.html

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