[BETA] Democracy MOD 0.2.1 (reputation + warnings + reports)
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
IncominG
Аккуратнее на поворотах... Информация ETZel действительно очень интересна и важна. О его компетентности судить не тебе.
Аккуратнее на поворотах... Информация ETZel действительно очень интересна и важна. О его компетентности судить не тебе.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 3 месяца
- Откуда: Челябинск
Carbofos нас рассудитIncominG писал(а):У меня тож стоит и все замечателдьно работает. Переменная объявлена - не стоит спорить...

Можно поподробней? оч любопытно...IncominG писал(а):фу как невежливо А местами я что, безграмотный?
Есть чуток
Немножко фиксов НЕ в usercp_reputation.php:
Код: Выделить всё
#OPEN post_report.php
#FIND
$confirm = false;
$confirm = isset($HTTP_POST_VARS['confirm']);
#REPLACE
$confirm = isset($HTTP_POST_VARS['confirm']);
#OPEN page_header.php
#FIND
$set = REPUTATION_BAN_EXPIRED;
#AFTER ADD
# Снимает expired баны когда включена опция "помечать как прошлые"
$sql = 'DELETE FROM ' . BANLIST_TABLE . "
WHERE ban_userid = '" . $row['user_id'] . "'";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql);
}

Это файл из democracy012 + все вышеописанный фиксы с свмого начала темы + несколько изменений:
1) добавил в function display_details($type, $forums_auth) параметр $forums_auth и соотв. код в блок REPUTATION_VIEW, чтобы модеры видели кнопки IP, Delete и Edit только если отзыв сделан в их форуме.
2) изменил код вычисления значения $approve в блоках REPUTATION_EDIT и REPUTATION_DELETE. Наконец-то полностью разобрался с $user_id и $voter_id. Это также и багфикс.
Код: Выделить всё
#FIND
if ( !$post_deleted )
{
$is_auth = array();
$is_auth = auth(AUTH_ALL, $forum_id, $userdata);
if ( $is_auth['auth_mod'] )
{
$approve = true;
}
else if ( !$board_config['reputation_users_can_delete'] ) // зачем тут отрицание ???
{
if ( $user_id == $userdata['user_id'] )
{
$approve = true;
}
}
}
else
{
if ( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD )
{
message_die(GENERAL_MESSAGE, $lang['reputation_deleted_no_edit']);
}
}
#REPLACE
# это косметика + $approved всегда будет определен
if ( !$post_deleted )
{
$is_auth = auth(AUTH_ALL, $forum_id, $userdata);
$approve = $is_auth['auth_mod'] || ($board_config['reputation_users_can_delete'] && $user_id == $userdata['user_id']);
}
else
{
if ( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD )
{
message_die(GENERAL_MESSAGE, $lang['reputation_deleted_no_edit']);
}
$approve = false;
}
#FIND только первое вхождение
$user_id = intval($forum_topic_data['user_id']);
#AFTER ADD
$voter_id = intval($forum_topic_data['voter_id']);
#FIND
if ( !$post_deleted )
{
$is_auth = array();
$is_auth = auth(AUTH_ALL, $forum_id, $userdata);
if ( $is_auth['auth_mod'] )
{
$approve = true;
}
else if ( !$board_config['reputation_users_can_delete'] ) // зачем тут отрицание ???
{
if ( $user_id == $userdata['user_id'] )
{
$approve = true;
}
}
}
else
{
if ( $userdata['user_level'] == MOD )
{
if ( $user_id == $userdata['user_id'] )
{
$approve = true;
}
}
else if ( $userdata['user_level'] == ADMIN )
{
$approve = true;
}
}
#REPLACE
# модератор может удалять отзывы на удаленные посты из его форума, почему нет?
$is_auth = auth(AUTH_ALL, $forum_id, $userdata);
$approve = $is_auth['auth_mod'] || ($board_config['reputation_users_can_delete'] && $voter_id == $userdata['user_id']);
На тех, кто использует графические кнопки (в т.ч. subSilver), это не влияет.
4) объединил блоки 'warn' и 'rep' в profile_view_reputation.tpl. Для этого пришлось малость переделать переменную $expire (постить код уже не буду, "Total Commander -> Files -> Compare by content" и все видно)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось ETZel 07.01.2006 11:42, всего редактировалось 2 раза.
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 3 месяца
- Откуда: Челябинск
IncominG
Про неправ: ГДЕ? А могу ошибиться - поправьте и не парьтесь
Про дружбу: с тов. Xpert не знаком ни в реале ни виртуально.
Про $poster_id: я же привел код, где она используется ДО объявления. Не в profile.php же она объявлена? Я вставлял там error_reporting(E_ALL) - выводился Notice: undefined var, я вставлял там var_dump($poster_id) - выводился NULL. Мне что, приснилось все это? Покажите пожалуйста, где она объявлена ДО строки
PS. перекачайте democracy_fixes.zip, я первый раз закачал с ошибкой (не убрал совместимость с модом "Always show edited by")
Про неправ: ГДЕ? А могу ошибиться - поправьте и не парьтесь

Про дружбу: с тов. Xpert не знаком ни в реале ни виртуально.
Про $poster_id: я же привел код, где она используется ДО объявления. Не в profile.php же она объявлена? Я вставлял там error_reporting(E_ALL) - выводился Notice: undefined var, я вставлял там var_dump($poster_id) - выводился NULL. Мне что, приснилось все это? Покажите пожалуйста, где она объявлена ДО строки
Код: Выделить всё
if ( $poster_id == ANONYMOUS )
Я же вам писал уже...ETZel писал(а):Можно поподробней? оч любопытно...
Млин я мало того твоего поста не заметил да еще пошел твои фиксы ставить



Добавлено спустя 1 минуту 45 секунд:
Ой действительно... Убедили...ETZel писал(а):Про $poster_id: я же привел код, где она используется ДО объявления. Не в profile.php же она объявлена? Я вставлял там error_reporting(E_ALL) - выводился Notice: undefined var, я вставлял там var_dump($poster_id) - выводился NULL. Мне что, приснилось все это? Покажите пожалуйста, где она объявлена ДО строки

Как фиксить будем?

Добавлено спустя 15 минут 45 секунд:
Код: Выделить всё
else
{
$set = REPUTATION_BAN_EXPIRED;
$sql = 'DELETE FROM ' . BANLIST_TABLE . "
WHERE ban_userid = '" . $row['user_id'] . "'";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql);
}
}
вы хотите чтоб было так?
глядя на этот код:
Код: Выделить всё
if ( $row['modification'] == REPUTATION_WARNING )
{
$set = REPUTATION_WARNING_EXPIRED;
}
else
{
$set = REPUTATION_BAN_EXPIRED;
$sql = 'DELETE FROM ' . BANLIST_TABLE . "
WHERE ban_userid = '" . $row['user_id'] . "'";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql);
}
}
$sql = 'UPDATE ' . REPUTATION_TABLE . '
SET modification = ' . $set . '
WHERE id = ' . $row['id'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn\'t cancel expired warnings', '', __LINE__, __FILE__, $sql);
}
-
- Former team member
- Сообщения: 3942
- Стаж: 19 лет 11 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
IncominG писал(а):Че твой дружбан чтоль? Ну дык и вешай объяву типа не обижайте ETZel'я!
Скажи спасибо, что нашелся человек, досконально изучивший полезный мод.kosjak писал(а):IncominG, ты че, дурак
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор 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.2
- Сообщения: 66
- Стаж: 20 лет 1 месяц
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 3 месяца
- Откуда: Челябинск
Я не совсем понял вопрос. Код может и не очень изячно, но баг исправляет. Главное тут идея (бан надо снять независимо от опций). Предложите, пожалуйста, свой вариант.IncominG писал(а):г-н ETZel
вы хотите чтоб было так?
глядя на этот код:
Баги с редиректом в usercp_democracy.php
Код: Выделить всё
#FIND в 2-х местах
redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=reputation&m=$rep_mode&" . POST_POST_URL . "$post_id", true));
#REPLACE
# не хватает '=' перед $post_id
redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=reputation&m=$rep_mode&" . POST_POST_URL . "=$post_id", true));
#FIND
$post_append = "#$review_id";
redirect(append_sid($redirect, true) . $post_append);
#REPLACE
# косметика
redirect(append_sid($redirect, true) . "#$review_id");
# решение вопроса о необъявленном $poster_id
#FIND
if ( $poster_id == ANONYMOUS )
#BEFORE ADD
$poster_id = $postrow['user_id'];
#FIND
$poster_id = $postrow['user_id'];
$poster = ( $poster_id == ANONYMOUS ) ? $lang['Guest'] : $postrow['username'];
#REPLACE
$poster = ( $poster_id == ANONYMOUS ) ? $lang['Guest'] : $postrow['username'];
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
IncominG
Я вам еще раз могу повторить - мое терпение небезгранично. Если вы досконально не изучали код мода, то не надо пытаться что-либо утверждать. Пока вы будете вести себя подобно этому:
Я вам еще раз могу повторить - мое терпение небезгранично. Если вы досконально не изучали код мода, то не надо пытаться что-либо утверждать. Пока вы будете вести себя подобно этому:
... к вам и отношение будет соотвествующее. Хотя к вам многие пытаются относиться нормально, но вы не можете отрицать что подобную репутацию вы создали себе сами. Вообще, можете с такоми заскоками скоро влететь в бессрочный бан...Участник - Утверждение 1
Вы - Да ты че ты не прав
Участник - Это доказано следущим: ...
Вы: Не прав сто пудов, не гони волну...
Участник: Смотрите внимательно сюда: ...
Вы: Ой, да, ошибся, ой-ой-ой...
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 3 месяца
- Откуда: Челябинск
IncominG, кусок кода, который вы приводили, с комментариями.Больше пояснять ничего не буду. Ваше отношение - это кошмар.
Код: Выделить всё
else
{
// стоит опция сохранять истекшие баны/предупреждения
if ( $row['modification'] == REPUTATION_WARNING )
{
// истекло предупреждение - надо сменить его состояние (поле phpbb_reputation.modification)
// с REPUTATION_WARNING на REPUTATION_WARNING_EXPIRED
$set = REPUTATION_WARNING_EXPIRED;
}
else // $row['modification'] == REPUTATION_BAN
{
// если бан - надо сменить REPUTATION_BAN на REPUTATION_BAN_EXPIRED
$set = REPUTATION_BAN_EXPIRED;
}
// собсно, меняем состояние
$sql = 'UPDATE ' . REPUTATION_TABLE . '
SET modification = ' . $set . '
WHERE id = ' . $row['id'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn\'t cancel expired warnings', '', __LINE__, __FILE__, $sql);
}
// ВОПРОС!!! почему не удаляем пользователя из BANLIST_TABLE, хотя бан истек???
// ОТВЕТ: это баг, если $row['modification'] == REPUTATION_BAN, то надо добавить код удаления юзера из банлиста, что я и сделал выше, в блоке else
}
-
- phpBB Guru
- Сообщения: 7522
- Стаж: 21 год 1 месяц
- Откуда: СССР
- Благодарил (а): 4 раза
- Поблагодарили: 94 раза
IncominG
И после этого ты ждешь к себе хотя бы нормального отношения? Как ты к людям, так и они к тебе, знаешь ли...
И после этого ты ждешь к себе хотя бы нормального отношения? Как ты к людям, так и они к тебе, знаешь ли...
Правила конференции (30.05.2011) | Общие ошибки новичков (07.11.2005) | Шаблон запроса | FAQ (phpBB 3.0.x) / Мини [FAQ] по phpBB 3.1.x
Последние и единственно актуальные на сегодня версии - 3.1.12 и 3.2.2!
Небесплатно накачаю ваш VPS/VDS/DS стероидами и заставлю ваши CMS летать =)
phpBB Guru blog | Тестируем phpBB 3.3 здесь! |
Последние и единственно актуальные на сегодня версии - 3.1.12 и 3.2.2!
Небесплатно накачаю ваш VPS/VDS/DS стероидами и заставлю ваши CMS летать =)
phpBB Guru blog | Тестируем phpBB 3.3 здесь! |
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 19 лет 3 месяца
- Откуда: Челябинск
Уж полночь близится, а Carbofos'а все нет
К размышлению: блоки 'warn' и 'rep' в profile_view_reputation.tpl, наверное, не стоило объединять. Они по-разному должны выглядеть! (в 'warn' - адский огонь, черти, котлы с кипящей смолой и горящая надпись: позор на 30 суток; а 'rep' можно раскрасить в 2 цвета, в зависимости от направления изменения репутации, как это делает мод для IPB). Может их даже по разным страницам разнести? Мало ли что они на одном движке. С точки зрения юзера - это две разных системы. Мнения?

К размышлению: блоки 'warn' и 'rep' в profile_view_reputation.tpl, наверное, не стоило объединять. Они по-разному должны выглядеть! (в 'warn' - адский огонь, черти, котлы с кипящей смолой и горящая надпись: позор на 30 суток; а 'rep' можно раскрасить в 2 цвета, в зависимости от направления изменения репутации, как это делает мод для IPB). Может их даже по разным страницам разнести? Мало ли что они на одном движке. С точки зрения юзера - это две разных системы. Мнения?
-
- phpBB 1.4.2
- Сообщения: 60
- Стаж: 19 лет 7 месяцев