IncominG
Аккуратнее на поворотах... Информация ETZel действительно очень интересна и важна. О его компетентности судить не тебе.
Carbofos нас рассудитIncominG писал(а):У меня тож стоит и все замечателдьно работает. Переменная объявлена - не стоит спорить...
Можно поподробней? оч любопытно...IncominG писал(а):фу как невежливо А местами я что, безграмотный?
Есть чуток
#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);
}#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']);if ( $poster_id == ANONYMOUS )ETZel писал(а):Можно поподробней? оч любопытно...
ETZel писал(а):Про $poster_id: я же привел код, где она используется ДО объявления. Не в profile.php же она объявлена? Я вставлял там error_reporting(E_ALL) - выводился Notice: undefined var, я вставлял там var_dump($poster_id) - выводился NULL. Мне что, приснилось все это? Покажите пожалуйста, где она объявлена ДО строки
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);
}
IncominG писал(а):Че твой дружбан чтоль? Ну дык и вешай объяву типа не обижайте ETZel'я!
kosjak писал(а):IncominG, ты че, дурак

Я не совсем понял вопрос. Код может и не очень изячно, но баг исправляет. Главное тут идея (бан надо снять независимо от опций). Предложите, пожалуйста, свой вариант.IncominG писал(а):г-н ETZel
вы хотите чтоб было так?
глядя на этот код:
#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'];Участник - Утверждение 1
Вы - Да ты че ты не прав
Участник - Это доказано следущим: ...
Вы: Не прав сто пудов, не гони волну...
Участник: Смотрите внимательно сюда: ...
Вы: Ой, да, ошибся, ой-ой-ой...
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
}Я тоже так думаю, что их лучше оставить раздельноETZel писал(а):К размышлению: блоки 'warn' и 'rep' в profile_view_reputation.tpl, наверное, не стоило объединять
Вернуться в Бета-версии модов для phpBB 2.0.x
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0