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

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

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

Thanx
вы удалили код, ответственный за закрытие темы

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

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

наш форум http://forum.aeroion.ru/cat1.html
Аватара пользователя
ETZel
phpBB 1.4.3
Сообщения: 93
Стаж: 19 лет 4 месяца
Откуда: Челябинск

Сообщение ETZel »

Thanx
Судя по ошибке, вы либо не выполнили SQL

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

ALTER TABLE `phpbb_posts` ADD `post_locked` tinyint(1) unsigned NOT NULL default '0';
либо пропустили действие в posting.php

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

#FIND
		$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "
#INLINE FIND
" . $select_sql . "
#INLINE BEFORE ADD
, p.post_locked
А приведенный кусок кода запрещает редактирование поста (не всей темы!) кем бы то ни было, после того, как его отредактирует модер/админ.
Это нужно для защиты от недобросовестных пользователей, чтобы предупреждения сохраняли адекватность.
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

ETZel,

спасибо за комментарий,

по первому пункту все в порядке, вот строчка у posts:

post_locked, tinyint(1), UNSIGNED, Нет, 0

по второму пункту тоже все в порядке, вот строчка из posting.php:

$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id, p.post_locked" . $select_sql . "

Так что ошибки нет ни в первом, ни в другом случае. Однако, после Вашего объяснения мне стало жаль эту удаленную часть кода, но вернув ее, я лишаюсь возможности корректно отредактировать первое сообщение темы, т.к. название темы изменит, а название сообщения - не изменит.

Добавлено спустя 7 часов 1 минуту 32 секунды:

ETZel,

я вот что сделал в файле functions_post.php.

Вместо оригинального:

////democracy/////
...
$sql = 'UPDATE ' . POSTS_TABLE . '
SET post_locked = ' . $post_data['post_locked'] . '
WHERE post_id = ' . $post_id;
...
/////////////

я написал

////democracy/////
...
$sql = 'UPDATE ' . POSTS_TABLE . '
SET post_locked = -1
WHERE post_id = ' . $post_id;
...
/////////////

раз уж все равно, как Вы говорите "приведенный кусок кода запрещает редактирование поста", и, кстати, протестировал, теперь все работает. В общем, почему-то в functions.php не видна была переменная ' . $post_data['post_locked'] . ' Однако я уверен, что я все корректно устанавливал! Сейчас посмотрю в phpMyAdmin, что там со строчкой в соответствующей в таблице post произошло.

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

Хм... запрос

SELECT *
FROM `posts`
WHERE post_locked<>0

не дал ни одной строчки.
Таки set не установил значение "-1".

Что делать?
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 19 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Заметил один косяк.
Заходим в профиль пользователя и нажимаю на ссылку
Предупреждения: 0 [ Подробности...


выдаёт сообщение, что "Этот пользователь не имеет репутации" может лучше писать "предупреждений нету"? ведь проверку реутации, ниже.
Аватара пользователя
ETZel
phpBB 1.4.3
Сообщения: 93
Стаж: 19 лет 4 месяца
Откуда: Челябинск

Сообщение ETZel »

Thanx
Поле post_locked есть unsigned, поэтому -1 в него вставить не получится.
Для блокировки надо вставить 1, а не -1.

post_locked инициализируется в posting.php

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

$post_data['post_locked'] = ( !empty($HTTP_POST_VARS['lock_post']) ? 1 : 0 );
Iftin
Конечно лучше.
Вы нашли глюк, поскольку строка 'Этот пользователь не имеет предупреждений' в моде есть, но, похоже, не используется.
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

ETZel
Да, все правильно. Во-первых "-1" не вставляется, а во-вторых, "-1" и не нужно вставлять, т.к. в posting.php следующий код:

////democracy/////
if ( $post_info['post_locked'] == 1 && !$is_auth['auth_mod'] )
{
message_die(GENERAL_MESSAGE, $lang['Post_locked'] . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>'));
}
/////////////

т.е. идет проверка на "1", а не на "-1". Это я уже разобрался.

Добавлено спустя 5 минут 53 секунды:
ETZel писал(а):post_locked инициализируется в posting.php

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

$post_data['post_locked'] = ( !empty($HTTP_POST_VARS['lock_post']) ? 1 : 0 );
Этот блок у меня в posting.php есть, однако, в functions_post.php почему-то инициализированная переменная не видна. И тут вопрос, инициализирована ли она и не видна или была бы видна, но не инициализирована...

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

ETZel, и вопрос, а говорили ли Вы с автором о кратности репутации? Это очень серьезно, посмотрите форум forum.searchengines.ru. Там влияние некоторых товарищей может быть по +50/-50, а некоторые, у которых репутация меньше 50, вообще не могут повлиять на репутацию другого. Это очень важно!

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

ETZel

Да, посмотрел таблицу posts в phpMyAdmin, там у конкретного поста в поле post_locked стало значение "1". Что это значит? Я по-прежнему могу редактировать это сообщение, а что изменилось? Теперь автор этого сообщения уже не сможет отредактировать это сообщение? Так?
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 19 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Реально с системой репутацией и написанием отзывов, нужно бы как-то защититься от пользователей НОВИЧКОВ.

Предложение доработать и сделать возможность запрещать новичкам, писать отзывы. Например, по количеству оставленных сообщений в конференции или же срока (кол-во дней) с момента регистрации в конференции. Например, после месяца, после регистрации пользователь может писать отзывы. Как идея?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5427
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

Сообщение Siava »

Iftin
Читайте первую страницу темы.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

Iftin

решение - кратность.

Так как Вы можете быть долго участником форума, а все еще новичком ;-) Другой же может недолго на форуме, а репутация его очевидно высока.

Кратность - чем больше репутация участника, тем большую репутацию он может дать другому. К примеру, на форуме forum.searchengines.ru так

при репутации <50 Вы не можете повлиять на репутацию другого участника,

при репутации 50<= и <100 Вы можете повлиять на репутацию другого участника как +/- 1,

при репутации 100<= и <150 Вы можете повлиять на репутацию другого участника как +/- 2,

при репутации 150<= и <200 Вы можете повлиять на репутацию другого участника как +/- 3,

и т.д.

К примеру, Вы написали пост, двум моодым понравилось, они дали Вам по +1. Старичок же с высокой репутацией поставил Вам -56. В итоге у Вас -54. Каково?

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

Siava,

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

Сообщение ETZel »

Iftin
названные вами фичи в следующей версии будут. + еще ограничения на изменение репутации по кол-ву активных предупреждений и по кол-ву имеющейся репутации.

Thanx
Добавьте var_dump в нескольких метсах и найдите, почему она не инициализирована. Может вы пропустили какой-то действие, может это глюк. У меня сейчас не установлен 0.1.14, поэтому конкретно ничего не скажу.

Про масштабирование (кратность) - еще не говорил.

Судя по строке в posting.php
if ( $post_info['post_locked'] == 1 && !$is_auth['auth_mod'] )
модеры все-же могут редактировать блокированный пост.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5427
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

Сообщение Siava »

Thanx
Addon Поручика. Там не кратность, а от числа сообщений зависит.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

Siava,

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

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

ETZel,

то, что модеры могут редактировать - это нормально. Это ведь и запрограммировано. И думаю, я не буду заниматься отладкой с помощью var_dump, ведь явное указание единицы "1" и так делает необходимую работу. Я вообще думаю, а зачем там переменная? Может в исходнике и прописать цифру "1" вместо переменной? Простота в программровании - великое дело.
Lektor
phpBB 2.0.7
Сообщения: 574
Стаж: 19 лет

Сообщение Lektor »

Кстате хорошая идея, чтоб зависимость шла не от постинга, а от репутации.
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 19 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Siava
нашёл спасибо. установил :idea:
Thanx
phpBB 2.0.2
Сообщения: 334
Стаж: 19 лет 4 месяца
Благодарил (а): 15 раз

Сообщение Thanx »

Siava писал(а):Iftin
Читайте первую страницу темы.
На первой странице только один AddOn Поручика: "Предлагаю дополнить мод возможностью запрета изменять репутацию пользователям, не имеющим определенного количества сообщений и имеющих предупреждения". AddOn, увеличивающий влияние на репутацию в зависимости от количества сообщений я не нашел. Где он? Установлю хотя бы его, раз уж нет зависимости от репутации. :( Пусть будет хотя бы зависимость от количества сообщений. :)

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