[BETA] Democracy MOD 0.2.1 (reputation + warnings + reports)
-
- Former team member
- Сообщения: 3942
- Стаж: 19 лет 11 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Thanx
вы удалили код, ответственный за закрытие темы
Добавлено спустя 1 минуту 8 секунд:
а вот интересно, почему он у вас не работает. Вы случаем, не накосячили при установке?
вы удалили код, ответственный за закрытие темы
Добавлено спустя 1 минуту 8 секунд:
а вот интересно, почему он у вас не работает. Вы случаем, не накосячили при установке?
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 4 месяца
- Откуда: Челябинск
Thanx
Судя по ошибке, вы либо не выполнили SQL
либо пропустили действие в posting.php
А приведенный кусок кода запрещает редактирование поста (не всей темы!) кем бы то ни было, после того, как его отредактирует модер/админ.
Это нужно для защиты от недобросовестных пользователей, чтобы предупреждения сохраняли адекватность.
Судя по ошибке, вы либо не выполнили SQL
Код: Выделить всё
ALTER TABLE `phpbb_posts` ADD `post_locked` tinyint(1) unsigned NOT NULL default '0';
Код: Выделить всё
#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
Это нужно для защиты от недобросовестных пользователей, чтобы предупреждения сохраняли адекватность.
-
- phpBB 2.0.2
- Сообщения: 334
- Стаж: 19 лет 4 месяца
- Благодарил (а): 15 раз
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".
Что делать?
спасибо за комментарий,
по первому пункту все в порядке, вот строчка у 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".
Что делать?
-
- phpBB 2.0.7
- Сообщения: 573
- Стаж: 19 лет 11 месяцев
- Откуда: Moscow
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 4 месяца
- Откуда: Челябинск
Thanx
Поле post_locked есть unsigned, поэтому -1 в него вставить не получится.
Для блокировки надо вставить 1, а не -1.
post_locked инициализируется в posting.php
Iftin
Конечно лучше.
Вы нашли глюк, поскольку строка 'Этот пользователь не имеет предупреждений' в моде есть, но, похоже, не используется.
Поле post_locked есть unsigned, поэтому -1 в него вставить не получится.
Для блокировки надо вставить 1, а не -1.
post_locked инициализируется в posting.php
Код: Выделить всё
$post_data['post_locked'] = ( !empty($HTTP_POST_VARS['lock_post']) ? 1 : 0 );
Конечно лучше.
Вы нашли глюк, поскольку строка 'Этот пользователь не имеет предупреждений' в моде есть, но, похоже, не используется.
-
- phpBB 2.0.2
- Сообщения: 334
- Стаж: 19 лет 4 месяца
- Благодарил (а): 15 раз
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 секунды:
Добавлено спустя 3 минуты 58 секунд:
ETZel, и вопрос, а говорили ли Вы с автором о кратности репутации? Это очень серьезно, посмотрите форум forum.searchengines.ru. Там влияние некоторых товарищей может быть по +50/-50, а некоторые, у которых репутация меньше 50, вообще не могут повлиять на репутацию другого. Это очень важно!
Добавлено спустя 20 минут 48 секунд:
ETZel
Да, посмотрел таблицу posts в phpMyAdmin, там у конкретного поста в поле post_locked стало значение "1". Что это значит? Я по-прежнему могу редактировать это сообщение, а что изменилось? Теперь автор этого сообщения уже не сможет отредактировать это сообщение? Так?
Да, все правильно. Во-первых "-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 секунды:
Этот блок у меня в posting.php есть, однако, в functions_post.php почему-то инициализированная переменная не видна. И тут вопрос, инициализирована ли она и не видна или была бы видна, но не инициализирована...ETZel писал(а):post_locked инициализируется в posting.phpКод: Выделить всё
$post_data['post_locked'] = ( !empty($HTTP_POST_VARS['lock_post']) ? 1 : 0 );
Добавлено спустя 3 минуты 58 секунд:
ETZel, и вопрос, а говорили ли Вы с автором о кратности репутации? Это очень серьезно, посмотрите форум forum.searchengines.ru. Там влияние некоторых товарищей может быть по +50/-50, а некоторые, у которых репутация меньше 50, вообще не могут повлиять на репутацию другого. Это очень важно!
Добавлено спустя 20 минут 48 секунд:
ETZel
Да, посмотрел таблицу posts в phpMyAdmin, там у конкретного поста в поле post_locked стало значение "1". Что это значит? Я по-прежнему могу редактировать это сообщение, а что изменилось? Теперь автор этого сообщения уже не сможет отредактировать это сообщение? Так?
-
- phpBB 2.0.7
- Сообщения: 573
- Стаж: 19 лет 11 месяцев
- Откуда: Moscow
Реально с системой репутацией и написанием отзывов, нужно бы как-то защититься от пользователей НОВИЧКОВ.
Предложение доработать и сделать возможность запрещать новичкам, писать отзывы. Например, по количеству оставленных сообщений в конференции или же срока (кол-во дней) с момента регистрации в конференции. Например, после месяца, после регистрации пользователь может писать отзывы. Как идея?
Предложение доработать и сделать возможность запрещать новичкам, писать отзывы. Например, по количеству оставленных сообщений в конференции или же срока (кол-во дней) с момента регистрации в конференции. Например, после месяца, после регистрации пользователь может писать отзывы. Как идея?
-
- Поддержка
- Сообщения: 5427
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Iftin
Читайте первую страницу темы.
Читайте первую страницу темы.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.2
- Сообщения: 334
- Стаж: 19 лет 4 месяца
- Благодарил (а): 15 раз
Iftin
решение - кратность.
Так как Вы можете быть долго участником форума, а все еще новичком ;-) Другой же может недолго на форуме, а репутация его очевидно высока.
Кратность - чем больше репутация участника, тем большую репутацию он может дать другому. К примеру, на форуме forum.searchengines.ru так
при репутации <50 Вы не можете повлиять на репутацию другого участника,
при репутации 50<= и <100 Вы можете повлиять на репутацию другого участника как +/- 1,
при репутации 100<= и <150 Вы можете повлиять на репутацию другого участника как +/- 2,
при репутации 150<= и <200 Вы можете повлиять на репутацию другого участника как +/- 3,
и т.д.
К примеру, Вы написали пост, двум моодым понравилось, они дали Вам по +1. Старичок же с высокой репутацией поставил Вам -56. В итоге у Вас -54. Каково?
Добавлено спустя 9 минут 20 секунд:
Siava,
на первой странице темы ничего не сказано о кратности или подобном ей.
решение - кратность.
Так как Вы можете быть долго участником форума, а все еще новичком ;-) Другой же может недолго на форуме, а репутация его очевидно высока.
Кратность - чем больше репутация участника, тем большую репутацию он может дать другому. К примеру, на форуме forum.searchengines.ru так
при репутации <50 Вы не можете повлиять на репутацию другого участника,
при репутации 50<= и <100 Вы можете повлиять на репутацию другого участника как +/- 1,
при репутации 100<= и <150 Вы можете повлиять на репутацию другого участника как +/- 2,
при репутации 150<= и <200 Вы можете повлиять на репутацию другого участника как +/- 3,
и т.д.
К примеру, Вы написали пост, двум моодым понравилось, они дали Вам по +1. Старичок же с высокой репутацией поставил Вам -56. В итоге у Вас -54. Каково?
Добавлено спустя 9 минут 20 секунд:
Siava,
на первой странице темы ничего не сказано о кратности или подобном ей.
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 4 месяца
- Откуда: Челябинск
Iftin
названные вами фичи в следующей версии будут. + еще ограничения на изменение репутации по кол-ву активных предупреждений и по кол-ву имеющейся репутации.
Thanx
Добавьте var_dump в нескольких метсах и найдите, почему она не инициализирована. Может вы пропустили какой-то действие, может это глюк. У меня сейчас не установлен 0.1.14, поэтому конкретно ничего не скажу.
Про масштабирование (кратность) - еще не говорил.
Судя по строке в posting.php
if ( $post_info['post_locked'] == 1 && !$is_auth['auth_mod'] )
модеры все-же могут редактировать блокированный пост.
названные вами фичи в следующей версии будут. + еще ограничения на изменение репутации по кол-ву активных предупреждений и по кол-ву имеющейся репутации.
Thanx
Добавьте var_dump в нескольких метсах и найдите, почему она не инициализирована. Может вы пропустили какой-то действие, может это глюк. У меня сейчас не установлен 0.1.14, поэтому конкретно ничего не скажу.
Про масштабирование (кратность) - еще не говорил.
Судя по строке в posting.php
if ( $post_info['post_locked'] == 1 && !$is_auth['auth_mod'] )
модеры все-же могут редактировать блокированный пост.
-
- Поддержка
- Сообщения: 5427
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Thanx
Addon Поручика. Там не кратность, а от числа сообщений зависит.
Addon Поручика. Там не кратность, а от числа сообщений зависит.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.2
- Сообщения: 334
- Стаж: 19 лет 4 месяца
- Благодарил (а): 15 раз
Siava,
в том то и дело, что у меня на форуме есть те, кто пишут много сообщений, но я бы не хотел, чтобы у них была возможность сильно влиять на величину репутаии. Я бы хотел, чтобы на величину репутации именно влиял тот, кто имеет большую репутацию. По моему, это справедливо. Ведь согласитесь, есть пользователи, кторые много пишут, но их читать почти что не хочется, а уж давать им какие-то права - и вовсе неправильно!
Добавлено спустя 4 минуты 39 секунд:
ETZel,
то, что модеры могут редактировать - это нормально. Это ведь и запрограммировано. И думаю, я не буду заниматься отладкой с помощью var_dump, ведь явное указание единицы "1" и так делает необходимую работу. Я вообще думаю, а зачем там переменная? Может в исходнике и прописать цифру "1" вместо переменной? Простота в программровании - великое дело.
в том то и дело, что у меня на форуме есть те, кто пишут много сообщений, но я бы не хотел, чтобы у них была возможность сильно влиять на величину репутаии. Я бы хотел, чтобы на величину репутации именно влиял тот, кто имеет большую репутацию. По моему, это справедливо. Ведь согласитесь, есть пользователи, кторые много пишут, но их читать почти что не хочется, а уж давать им какие-то права - и вовсе неправильно!
Добавлено спустя 4 минуты 39 секунд:
ETZel,
то, что модеры могут редактировать - это нормально. Это ведь и запрограммировано. И думаю, я не буду заниматься отладкой с помощью var_dump, ведь явное указание единицы "1" и так делает необходимую работу. Я вообще думаю, а зачем там переменная? Может в исходнике и прописать цифру "1" вместо переменной? Простота в программровании - великое дело.
-
- phpBB 2.0.7
- Сообщения: 574
- Стаж: 19 лет
-
- phpBB 2.0.7
- Сообщения: 573
- Стаж: 19 лет 11 месяцев
- Откуда: Moscow
-
- phpBB 2.0.2
- Сообщения: 334
- Стаж: 19 лет 4 месяца
- Благодарил (а): 15 раз
На первой странице только один AddOn Поручика: "Предлагаю дополнить мод возможностью запрета изменять репутацию пользователям, не имеющим определенного количества сообщений и имеющих предупреждения". AddOn, увеличивающий влияние на репутацию в зависимости от количества сообщений я не нашел. Где он? Установлю хотя бы его, раз уж нет зависимости от репутации.Siava писал(а):Iftin
Читайте первую страницу темы.

